From deca5a3881217014c12fd35cdcbd1f4d1de74254 Mon Sep 17 00:00:00 2001 From: X123M3-256 Date: Wed, 6 Jan 2021 20:10:15 +0000 Subject: [PATCH] Add "Single Rail Roller Coaster" ride type --- OpenRCT2.xcodeproj/project.pbxproj | 4 + data/language/en-GB.txt | 2 + distribution/changelog.txt | 1 + resources/g2/sprites.json | 4400 +++++ .../g2/track/raptor/barrel_roll_left_1_1.png | Bin 0 -> 222 bytes .../g2/track/raptor/barrel_roll_left_1_2.png | Bin 0 -> 191 bytes .../g2/track/raptor/barrel_roll_left_1_3.png | Bin 0 -> 861 bytes .../g2/track/raptor/barrel_roll_left_1_4.png | Bin 0 -> 809 bytes .../g2/track/raptor/barrel_roll_left_1_5.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_left_1_6.png | Bin 0 -> 732 bytes .../g2/track/raptor/barrel_roll_left_2_1.png | Bin 0 -> 171 bytes .../g2/track/raptor/barrel_roll_left_2_2.png | Bin 0 -> 197 bytes .../g2/track/raptor/barrel_roll_left_2_3.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_left_2_4.png | Bin 0 -> 212 bytes .../g2/track/raptor/barrel_roll_left_2_5.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_left_2_6.png | Bin 0 -> 687 bytes .../g2/track/raptor/barrel_roll_left_3_1.png | Bin 0 -> 1425 bytes .../g2/track/raptor/barrel_roll_left_3_2.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_left_3_3.png | Bin 0 -> 1390 bytes .../g2/track/raptor/barrel_roll_left_3_4.png | Bin 0 -> 146 bytes .../g2/track/raptor/barrel_roll_left_3_5.png | Bin 0 -> 114 bytes .../g2/track/raptor/barrel_roll_left_3_6.png | Bin 0 -> 249 bytes .../g2/track/raptor/barrel_roll_left_4_1.png | Bin 0 -> 242 bytes .../g2/track/raptor/barrel_roll_left_4_2.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_left_4_3.png | Bin 0 -> 283 bytes .../g2/track/raptor/barrel_roll_left_4_4.png | Bin 0 -> 119 bytes .../g2/track/raptor/barrel_roll_left_4_5.png | Bin 0 -> 148 bytes .../g2/track/raptor/barrel_roll_left_4_6.png | Bin 0 -> 255 bytes .../g2/track/raptor/barrel_roll_right_1_1.png | Bin 0 -> 732 bytes .../g2/track/raptor/barrel_roll_right_1_2.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_right_1_3.png | Bin 0 -> 756 bytes .../g2/track/raptor/barrel_roll_right_1_4.png | Bin 0 -> 878 bytes .../g2/track/raptor/barrel_roll_right_1_5.png | Bin 0 -> 170 bytes .../g2/track/raptor/barrel_roll_right_1_6.png | Bin 0 -> 250 bytes .../g2/track/raptor/barrel_roll_right_2_1.png | Bin 0 -> 242 bytes .../g2/track/raptor/barrel_roll_right_2_2.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_right_2_3.png | Bin 0 -> 656 bytes .../g2/track/raptor/barrel_roll_right_2_4.png | Bin 0 -> 570 bytes .../g2/track/raptor/barrel_roll_right_2_5.png | Bin 0 -> 563 bytes .../g2/track/raptor/barrel_roll_right_2_6.png | Bin 0 -> 690 bytes .../g2/track/raptor/barrel_roll_right_3_1.png | Bin 0 -> 186 bytes .../g2/track/raptor/barrel_roll_right_3_2.png | Bin 0 -> 206 bytes .../g2/track/raptor/barrel_roll_right_3_3.png | Bin 0 -> 115 bytes .../g2/track/raptor/barrel_roll_right_3_4.png | Bin 0 -> 955 bytes .../g2/track/raptor/barrel_roll_right_3_5.png | Bin 0 -> 870 bytes .../g2/track/raptor/barrel_roll_right_3_6.png | Bin 0 -> 726 bytes .../g2/track/raptor/barrel_roll_right_4_1.png | Bin 0 -> 224 bytes .../g2/track/raptor/barrel_roll_right_4_2.png | Bin 0 -> 184 bytes .../g2/track/raptor/barrel_roll_right_4_3.png | Bin 0 -> 117 bytes .../g2/track/raptor/barrel_roll_right_4_4.png | Bin 0 -> 282 bytes .../g2/track/raptor/barrel_roll_right_4_5.png | Bin 0 -> 860 bytes .../g2/track/raptor/barrel_roll_right_4_6.png | Bin 0 -> 713 bytes resources/g2/track/raptor/block_brake_1.png | Bin 0 -> 246 bytes resources/g2/track/raptor/block_brake_2.png | Bin 0 -> 262 bytes resources/g2/track/raptor/brake_1.png | Bin 0 -> 240 bytes resources/g2/track/raptor/brake_2.png | Bin 0 -> 255 bytes .../g2/track/raptor/corkscrew_left_1_1.png | Bin 0 -> 349 bytes .../g2/track/raptor/corkscrew_left_1_2.png | Bin 0 -> 282 bytes .../g2/track/raptor/corkscrew_left_1_3.png | Bin 0 -> 306 bytes .../g2/track/raptor/corkscrew_left_2_1.png | Bin 0 -> 189 bytes .../g2/track/raptor/corkscrew_left_2_2.png | Bin 0 -> 336 bytes .../g2/track/raptor/corkscrew_left_2_3.png | Bin 0 -> 264 bytes .../g2/track/raptor/corkscrew_left_3_1.png | Bin 0 -> 285 bytes .../g2/track/raptor/corkscrew_left_3_2.png | Bin 0 -> 189 bytes .../g2/track/raptor/corkscrew_left_3_3.png | Bin 0 -> 991 bytes .../g2/track/raptor/corkscrew_left_4_1.png | Bin 0 -> 345 bytes .../g2/track/raptor/corkscrew_left_4_2.png | Bin 0 -> 269 bytes .../g2/track/raptor/corkscrew_left_4_3.png | Bin 0 -> 234 bytes .../g2/track/raptor/corkscrew_right_1_1.png | Bin 0 -> 335 bytes .../g2/track/raptor/corkscrew_right_1_2.png | Bin 0 -> 260 bytes .../g2/track/raptor/corkscrew_right_1_3.png | Bin 0 -> 228 bytes .../g2/track/raptor/corkscrew_right_2_1.png | Bin 0 -> 281 bytes .../g2/track/raptor/corkscrew_right_2_2.png | Bin 0 -> 203 bytes .../g2/track/raptor/corkscrew_right_2_3.png | Bin 0 -> 258 bytes .../g2/track/raptor/corkscrew_right_3_1.png | Bin 0 -> 208 bytes .../g2/track/raptor/corkscrew_right_3_2.png | Bin 0 -> 343 bytes .../g2/track/raptor/corkscrew_right_3_3.png | Bin 0 -> 275 bytes .../g2/track/raptor/corkscrew_right_4_1.png | Bin 0 -> 348 bytes .../g2/track/raptor/corkscrew_right_4_2.png | Bin 0 -> 291 bytes .../g2/track/raptor/corkscrew_right_4_3.png | Bin 0 -> 314 bytes resources/g2/track/raptor/flat_1.png | Bin 0 -> 181 bytes resources/g2/track/raptor/flat_2.png | Bin 0 -> 199 bytes resources/g2/track/raptor/flat_diag_1.png | Bin 0 -> 110 bytes resources/g2/track/raptor/flat_diag_2.png | Bin 0 -> 114 bytes resources/g2/track/raptor/flat_diag_3.png | Bin 0 -> 110 bytes resources/g2/track/raptor/flat_diag_4.png | Bin 0 -> 110 bytes .../g2/track/raptor/flat_diag_lift_1.png | Bin 0 -> 124 bytes .../g2/track/raptor/flat_diag_lift_2.png | Bin 0 -> 134 bytes .../g2/track/raptor/flat_diag_lift_3.png | Bin 0 -> 124 bytes .../g2/track/raptor/flat_diag_lift_4.png | Bin 0 -> 147 bytes resources/g2/track/raptor/flat_lift_1.png | Bin 0 -> 228 bytes resources/g2/track/raptor/flat_lift_2.png | Bin 0 -> 240 bytes resources/g2/track/raptor/flat_lift_3.png | Bin 0 -> 228 bytes resources/g2/track/raptor/flat_lift_4.png | Bin 0 -> 243 bytes .../g2/track/raptor/flat_to_gentle_up_1.png | Bin 0 -> 260 bytes .../g2/track/raptor/flat_to_gentle_up_2.png | Bin 0 -> 256 bytes .../g2/track/raptor/flat_to_gentle_up_3.png | Bin 0 -> 242 bytes .../g2/track/raptor/flat_to_gentle_up_4.png | Bin 0 -> 283 bytes .../track/raptor/flat_to_gentle_up_diag_1.png | Bin 0 -> 286 bytes .../track/raptor/flat_to_gentle_up_diag_2.png | Bin 0 -> 140 bytes .../track/raptor/flat_to_gentle_up_diag_3.png | Bin 0 -> 291 bytes .../track/raptor/flat_to_gentle_up_diag_4.png | Bin 0 -> 116 bytes .../raptor/flat_to_gentle_up_diag_lift_1.png | Bin 0 -> 314 bytes .../raptor/flat_to_gentle_up_diag_lift_2.png | Bin 0 -> 163 bytes .../raptor/flat_to_gentle_up_diag_lift_3.png | Bin 0 -> 321 bytes .../raptor/flat_to_gentle_up_diag_lift_4.png | Bin 0 -> 153 bytes .../raptor/flat_to_gentle_up_left_bank_1.png | Bin 0 -> 278 bytes .../flat_to_gentle_up_left_bank_2_1.png | Bin 0 -> 161 bytes .../flat_to_gentle_up_left_bank_2_2.png | Bin 0 -> 210 bytes .../raptor/flat_to_gentle_up_left_bank_3.png | Bin 0 -> 261 bytes .../raptor/flat_to_gentle_up_left_bank_4.png | Bin 0 -> 274 bytes .../track/raptor/flat_to_gentle_up_lift_1.png | Bin 0 -> 300 bytes .../track/raptor/flat_to_gentle_up_lift_2.png | Bin 0 -> 284 bytes .../track/raptor/flat_to_gentle_up_lift_3.png | Bin 0 -> 260 bytes .../track/raptor/flat_to_gentle_up_lift_4.png | Bin 0 -> 320 bytes .../raptor/flat_to_gentle_up_right_bank_1.png | Bin 0 -> 250 bytes .../raptor/flat_to_gentle_up_right_bank_2.png | Bin 0 -> 250 bytes .../flat_to_gentle_up_right_bank_3_1.png | Bin 0 -> 167 bytes .../flat_to_gentle_up_right_bank_3_2.png | Bin 0 -> 223 bytes .../raptor/flat_to_gentle_up_right_bank_4.png | Bin 0 -> 273 bytes .../g2/track/raptor/flat_to_left_bank_1_1.png | Bin 0 -> 255 bytes .../g2/track/raptor/flat_to_left_bank_1_2.png | Bin 0 -> 167 bytes .../g2/track/raptor/flat_to_left_bank_2_1.png | Bin 0 -> 193 bytes .../g2/track/raptor/flat_to_left_bank_2_2.png | Bin 0 -> 220 bytes .../g2/track/raptor/flat_to_left_bank_3.png | Bin 0 -> 287 bytes .../g2/track/raptor/flat_to_left_bank_4.png | Bin 0 -> 986 bytes .../raptor/flat_to_left_bank_diag_1_1.png | Bin 0 -> 161 bytes .../raptor/flat_to_left_bank_diag_1_2.png | Bin 0 -> 206 bytes .../track/raptor/flat_to_left_bank_diag_2.png | Bin 0 -> 219 bytes .../track/raptor/flat_to_left_bank_diag_3.png | Bin 0 -> 193 bytes .../track/raptor/flat_to_left_bank_diag_4.png | Bin 0 -> 961 bytes .../g2/track/raptor/flat_to_right_bank_1.png | Bin 0 -> 286 bytes .../g2/track/raptor/flat_to_right_bank_2.png | Bin 0 -> 275 bytes .../track/raptor/flat_to_right_bank_3_1.png | Bin 0 -> 204 bytes .../track/raptor/flat_to_right_bank_3_2.png | Bin 0 -> 239 bytes .../track/raptor/flat_to_right_bank_4_1.png | Bin 0 -> 251 bytes .../track/raptor/flat_to_right_bank_4_2.png | Bin 0 -> 164 bytes .../raptor/flat_to_right_bank_diag_1.png | Bin 0 -> 190 bytes .../raptor/flat_to_right_bank_diag_2.png | Bin 0 -> 232 bytes .../raptor/flat_to_right_bank_diag_3_1.png | Bin 0 -> 170 bytes .../raptor/flat_to_right_bank_diag_3_2.png | Bin 0 -> 205 bytes .../raptor/flat_to_right_bank_diag_4.png | Bin 0 -> 224 bytes .../g2/track/raptor/flat_to_steep_up_1_1.png | Bin 0 -> 241 bytes .../g2/track/raptor/flat_to_steep_up_1_2.png | Bin 0 -> 252 bytes .../g2/track/raptor/flat_to_steep_up_1_3.png | Bin 0 -> 280 bytes .../g2/track/raptor/flat_to_steep_up_1_4.png | Bin 0 -> 301 bytes .../g2/track/raptor/flat_to_steep_up_2_1.png | Bin 0 -> 226 bytes .../g2/track/raptor/flat_to_steep_up_2_2.png | Bin 0 -> 218 bytes .../g2/track/raptor/flat_to_steep_up_2_3.png | Bin 0 -> 224 bytes .../g2/track/raptor/flat_to_steep_up_2_4.png | Bin 0 -> 302 bytes .../g2/track/raptor/flat_to_steep_up_3_1.png | Bin 0 -> 240 bytes .../g2/track/raptor/flat_to_steep_up_3_2.png | Bin 0 -> 212 bytes .../g2/track/raptor/flat_to_steep_up_3_3.png | Bin 0 -> 975 bytes .../g2/track/raptor/flat_to_steep_up_3_4.png | Bin 0 -> 238 bytes .../g2/track/raptor/flat_to_steep_up_4_1.png | Bin 0 -> 267 bytes .../g2/track/raptor/flat_to_steep_up_4_2.png | Bin 0 -> 262 bytes .../g2/track/raptor/flat_to_steep_up_4_3.png | Bin 0 -> 297 bytes .../g2/track/raptor/flat_to_steep_up_4_4.png | Bin 0 -> 363 bytes resources/g2/track/raptor/gentle_1.png | Bin 0 -> 166 bytes resources/g2/track/raptor/gentle_2.png | Bin 0 -> 172 bytes resources/g2/track/raptor/gentle_3.png | Bin 0 -> 170 bytes resources/g2/track/raptor/gentle_4.png | Bin 0 -> 164 bytes resources/g2/track/raptor/gentle_diag_1.png | Bin 0 -> 199 bytes resources/g2/track/raptor/gentle_diag_2.png | Bin 0 -> 120 bytes resources/g2/track/raptor/gentle_diag_3.png | Bin 0 -> 204 bytes resources/g2/track/raptor/gentle_diag_4.png | Bin 0 -> 121 bytes .../g2/track/raptor/gentle_diag_lift_1.png | Bin 0 -> 225 bytes .../g2/track/raptor/gentle_diag_lift_2.png | Bin 0 -> 137 bytes .../g2/track/raptor/gentle_diag_lift_3.png | Bin 0 -> 225 bytes .../g2/track/raptor/gentle_diag_lift_4.png | Bin 0 -> 161 bytes resources/g2/track/raptor/gentle_lift_1.png | Bin 0 -> 180 bytes resources/g2/track/raptor/gentle_lift_2.png | Bin 0 -> 189 bytes resources/g2/track/raptor/gentle_lift_3.png | Bin 0 -> 183 bytes resources/g2/track/raptor/gentle_lift_4.png | Bin 0 -> 181 bytes .../track/raptor/gentle_to_flat_up_diag_1.png | Bin 0 -> 263 bytes .../track/raptor/gentle_to_flat_up_diag_2.png | Bin 0 -> 114 bytes .../track/raptor/gentle_to_flat_up_diag_3.png | Bin 0 -> 287 bytes .../track/raptor/gentle_to_flat_up_diag_4.png | Bin 0 -> 110 bytes .../raptor/gentle_to_flat_up_diag_lift_1.png | Bin 0 -> 288 bytes .../raptor/gentle_to_flat_up_diag_lift_2.png | Bin 0 -> 147 bytes .../raptor/gentle_to_flat_up_diag_lift_3.png | Bin 0 -> 309 bytes .../raptor/gentle_to_flat_up_diag_lift_4.png | Bin 0 -> 147 bytes .../g2/track/raptor/gentle_to_steep_up_1.png | Bin 0 -> 305 bytes .../track/raptor/gentle_to_steep_up_2_1.png | Bin 0 -> 151 bytes .../track/raptor/gentle_to_steep_up_2_2.png | Bin 0 -> 248 bytes .../track/raptor/gentle_to_steep_up_3_1.png | Bin 0 -> 144 bytes .../track/raptor/gentle_to_steep_up_3_2.png | Bin 0 -> 232 bytes .../g2/track/raptor/gentle_to_steep_up_4.png | Bin 0 -> 374 bytes .../raptor/gentle_to_steep_up_diag_1.png | Bin 0 -> 310 bytes .../raptor/gentle_to_steep_up_diag_2.png | Bin 0 -> 124 bytes .../raptor/gentle_to_steep_up_diag_3.png | Bin 0 -> 361 bytes .../raptor/gentle_to_steep_up_diag_4.png | Bin 0 -> 134 bytes .../raptor/gentle_to_steep_up_diag_lift_1.png | Bin 0 -> 362 bytes .../raptor/gentle_to_steep_up_diag_lift_2.png | Bin 0 -> 127 bytes .../raptor/gentle_to_steep_up_diag_lift_3.png | Bin 0 -> 392 bytes .../raptor/gentle_to_steep_up_diag_lift_4.png | Bin 0 -> 154 bytes .../raptor/gentle_to_steep_up_lift_1.png | Bin 0 -> 386 bytes .../raptor/gentle_to_steep_up_lift_2_1.png | Bin 0 -> 157 bytes .../raptor/gentle_to_steep_up_lift_2_2.png | Bin 0 -> 250 bytes .../raptor/gentle_to_steep_up_lift_3_1.png | Bin 0 -> 153 bytes .../raptor/gentle_to_steep_up_lift_3_2.png | Bin 0 -> 230 bytes .../raptor/gentle_to_steep_up_lift_4.png | Bin 0 -> 420 bytes .../g2/track/raptor/gentle_up_left_bank_1.png | Bin 0 -> 158 bytes .../g2/track/raptor/gentle_up_left_bank_2.png | Bin 0 -> 157 bytes .../g2/track/raptor/gentle_up_left_bank_3.png | Bin 0 -> 149 bytes .../g2/track/raptor/gentle_up_left_bank_4.png | Bin 0 -> 155 bytes .../raptor/gentle_up_left_bank_to_flat_1.png | Bin 0 -> 294 bytes .../gentle_up_left_bank_to_flat_2_1.png | Bin 0 -> 227 bytes .../gentle_up_left_bank_to_flat_2_2.png | Bin 0 -> 179 bytes .../raptor/gentle_up_left_bank_to_flat_3.png | Bin 0 -> 251 bytes .../raptor/gentle_up_left_bank_to_flat_4.png | Bin 0 -> 268 bytes .../gentle_up_left_bank_to_gentle_up_1.png | Bin 0 -> 269 bytes .../gentle_up_left_bank_to_gentle_up_2_1.png | Bin 0 -> 194 bytes .../gentle_up_left_bank_to_gentle_up_2_2.png | Bin 0 -> 164 bytes .../gentle_up_left_bank_to_gentle_up_3.png | Bin 0 -> 220 bytes .../gentle_up_left_bank_to_gentle_up_4.png | Bin 0 -> 263 bytes .../gentle_up_left_bank_to_left_bank_1.png | Bin 0 -> 265 bytes .../gentle_up_left_bank_to_left_bank_2.png | Bin 0 -> 970 bytes .../gentle_up_left_bank_to_left_bank_3.png | Bin 0 -> 259 bytes .../gentle_up_left_bank_to_left_bank_4.png | Bin 0 -> 217 bytes .../track/raptor/gentle_up_right_bank_1.png | Bin 0 -> 161 bytes .../track/raptor/gentle_up_right_bank_2.png | Bin 0 -> 162 bytes .../track/raptor/gentle_up_right_bank_3.png | Bin 0 -> 179 bytes .../track/raptor/gentle_up_right_bank_4.png | Bin 0 -> 156 bytes .../raptor/gentle_up_right_bank_to_flat_1.png | Bin 0 -> 257 bytes .../raptor/gentle_up_right_bank_to_flat_2.png | Bin 0 -> 250 bytes .../gentle_up_right_bank_to_flat_3_1.png | Bin 0 -> 220 bytes .../gentle_up_right_bank_to_flat_3_2.png | Bin 0 -> 196 bytes .../raptor/gentle_up_right_bank_to_flat_4.png | Bin 0 -> 276 bytes .../gentle_up_right_bank_to_gentle_up_1.png | Bin 0 -> 246 bytes .../gentle_up_right_bank_to_gentle_up_2.png | Bin 0 -> 213 bytes .../gentle_up_right_bank_to_gentle_up_3_1.png | Bin 0 -> 180 bytes .../gentle_up_right_bank_to_gentle_up_3_2.png | Bin 0 -> 181 bytes .../gentle_up_right_bank_to_gentle_up_4.png | Bin 0 -> 233 bytes .../gentle_up_right_bank_to_right_bank_1.png | Bin 0 -> 250 bytes .../gentle_up_right_bank_to_right_bank_2.png | Bin 0 -> 234 bytes .../gentle_up_right_bank_to_right_bank_3.png | Bin 0 -> 284 bytes .../gentle_up_right_bank_to_right_bank_4.png | Bin 0 -> 243 bytes .../g2/track/raptor/gentle_up_to_flat_1.png | Bin 0 -> 253 bytes .../g2/track/raptor/gentle_up_to_flat_2.png | Bin 0 -> 255 bytes .../g2/track/raptor/gentle_up_to_flat_3.png | Bin 0 -> 977 bytes .../g2/track/raptor/gentle_up_to_flat_4.png | Bin 0 -> 281 bytes .../track/raptor/gentle_up_to_flat_lift_1.png | Bin 0 -> 305 bytes .../track/raptor/gentle_up_to_flat_lift_2.png | Bin 0 -> 276 bytes .../track/raptor/gentle_up_to_flat_lift_3.png | Bin 0 -> 255 bytes .../track/raptor/gentle_up_to_flat_lift_4.png | Bin 0 -> 316 bytes .../gentle_up_to_gentle_up_left_bank_1.png | Bin 0 -> 262 bytes .../gentle_up_to_gentle_up_left_bank_2_1.png | Bin 0 -> 132 bytes .../gentle_up_to_gentle_up_left_bank_2_2.png | Bin 0 -> 205 bytes .../gentle_up_to_gentle_up_left_bank_3.png | Bin 0 -> 222 bytes .../gentle_up_to_gentle_up_left_bank_4.png | Bin 0 -> 252 bytes .../gentle_up_to_gentle_up_right_bank_1.png | Bin 0 -> 233 bytes .../gentle_up_to_gentle_up_right_bank_2.png | Bin 0 -> 218 bytes .../gentle_up_to_gentle_up_right_bank_3_1.png | Bin 0 -> 137 bytes .../gentle_up_to_gentle_up_right_bank_3_2.png | Bin 0 -> 219 bytes .../gentle_up_to_gentle_up_right_bank_4.png | Bin 0 -> 236 bytes .../raptor/gentle_up_to_left_bank_1_1.png | Bin 0 -> 283 bytes .../raptor/gentle_up_to_left_bank_1_2.png | Bin 0 -> 159 bytes .../raptor/gentle_up_to_left_bank_2_1.png | Bin 0 -> 151 bytes .../raptor/gentle_up_to_left_bank_2_2.png | Bin 0 -> 221 bytes .../track/raptor/gentle_up_to_left_bank_3.png | Bin 0 -> 269 bytes .../track/raptor/gentle_up_to_left_bank_4.png | Bin 0 -> 277 bytes .../gentle_up_to_left_bank_diag_1_1.png | Bin 0 -> 939 bytes .../gentle_up_to_left_bank_diag_1_2.png | Bin 0 -> 981 bytes .../raptor/gentle_up_to_left_bank_diag_2.png | Bin 0 -> 208 bytes .../raptor/gentle_up_to_left_bank_diag_3.png | Bin 0 -> 279 bytes .../raptor/gentle_up_to_left_bank_diag_4.png | Bin 0 -> 251 bytes .../raptor/gentle_up_to_right_bank_1.png | Bin 0 -> 271 bytes .../raptor/gentle_up_to_right_bank_2.png | Bin 0 -> 251 bytes .../raptor/gentle_up_to_right_bank_3_1.png | Bin 0 -> 171 bytes .../raptor/gentle_up_to_right_bank_3_2.png | Bin 0 -> 958 bytes .../raptor/gentle_up_to_right_bank_4_1.png | Bin 0 -> 261 bytes .../raptor/gentle_up_to_right_bank_4_2.png | Bin 0 -> 153 bytes .../raptor/gentle_up_to_right_bank_diag_1.png | Bin 0 -> 262 bytes .../raptor/gentle_up_to_right_bank_diag_2.png | Bin 0 -> 221 bytes .../gentle_up_to_right_bank_diag_3_1.png | Bin 0 -> 209 bytes .../gentle_up_to_right_bank_diag_3_2.png | Bin 0 -> 970 bytes .../raptor/gentle_up_to_right_bank_diag_4.png | Bin 0 -> 222 bytes resources/g2/track/raptor/half_loop_1_1.png | Bin 0 -> 218 bytes resources/g2/track/raptor/half_loop_1_2.png | Bin 0 -> 288 bytes resources/g2/track/raptor/half_loop_1_3.png | Bin 0 -> 347 bytes resources/g2/track/raptor/half_loop_1_4.png | Bin 0 -> 222 bytes resources/g2/track/raptor/half_loop_2_1.png | Bin 0 -> 199 bytes resources/g2/track/raptor/half_loop_2_2.png | Bin 0 -> 256 bytes resources/g2/track/raptor/half_loop_2_3.png | Bin 0 -> 413 bytes resources/g2/track/raptor/half_loop_2_4.png | Bin 0 -> 280 bytes resources/g2/track/raptor/half_loop_3_1.png | Bin 0 -> 201 bytes resources/g2/track/raptor/half_loop_3_2.png | Bin 0 -> 245 bytes resources/g2/track/raptor/half_loop_3_3.png | Bin 0 -> 342 bytes resources/g2/track/raptor/half_loop_3_4.png | Bin 0 -> 251 bytes resources/g2/track/raptor/half_loop_4_1.png | Bin 0 -> 964 bytes resources/g2/track/raptor/half_loop_4_2.png | Bin 0 -> 382 bytes resources/g2/track/raptor/half_loop_4_3.png | Bin 0 -> 382 bytes resources/g2/track/raptor/half_loop_4_4.png | Bin 0 -> 215 bytes .../track/raptor/large_half_loop_left_1_1.png | Bin 0 -> 226 bytes .../track/raptor/large_half_loop_left_1_2.png | Bin 0 -> 298 bytes .../track/raptor/large_half_loop_left_1_3.png | Bin 0 -> 289 bytes .../track/raptor/large_half_loop_left_1_4.png | Bin 0 -> 298 bytes .../track/raptor/large_half_loop_left_1_5.png | Bin 0 -> 296 bytes .../track/raptor/large_half_loop_left_1_6.png | Bin 0 -> 275 bytes .../track/raptor/large_half_loop_left_1_7.png | Bin 0 -> 986 bytes .../track/raptor/large_half_loop_left_2_1.png | Bin 0 -> 205 bytes .../track/raptor/large_half_loop_left_2_2.png | Bin 0 -> 201 bytes .../track/raptor/large_half_loop_left_2_3.png | Bin 0 -> 232 bytes .../track/raptor/large_half_loop_left_2_4.png | Bin 0 -> 337 bytes .../track/raptor/large_half_loop_left_2_5.png | Bin 0 -> 435 bytes .../track/raptor/large_half_loop_left_2_6.png | Bin 0 -> 335 bytes .../track/raptor/large_half_loop_left_2_7.png | Bin 0 -> 308 bytes .../track/raptor/large_half_loop_left_3_1.png | Bin 0 -> 195 bytes .../track/raptor/large_half_loop_left_3_2.png | Bin 0 -> 238 bytes .../track/raptor/large_half_loop_left_3_3.png | Bin 0 -> 239 bytes .../track/raptor/large_half_loop_left_3_4.png | Bin 0 -> 272 bytes .../track/raptor/large_half_loop_left_3_5.png | Bin 0 -> 340 bytes .../track/raptor/large_half_loop_left_3_6.png | Bin 0 -> 261 bytes .../track/raptor/large_half_loop_left_3_7.png | Bin 0 -> 281 bytes .../track/raptor/large_half_loop_left_4_1.png | Bin 0 -> 970 bytes .../track/raptor/large_half_loop_left_4_2.png | Bin 0 -> 273 bytes .../track/raptor/large_half_loop_left_4_3.png | Bin 0 -> 361 bytes .../track/raptor/large_half_loop_left_4_4.png | Bin 0 -> 427 bytes .../track/raptor/large_half_loop_left_4_5.png | Bin 0 -> 270 bytes .../track/raptor/large_half_loop_left_4_6.png | Bin 0 -> 294 bytes .../track/raptor/large_half_loop_left_4_7.png | Bin 0 -> 251 bytes .../raptor/large_half_loop_right_1_1.png | Bin 0 -> 222 bytes .../raptor/large_half_loop_right_1_2.png | Bin 0 -> 240 bytes .../raptor/large_half_loop_right_1_3.png | Bin 0 -> 290 bytes .../raptor/large_half_loop_right_1_4.png | Bin 0 -> 335 bytes .../raptor/large_half_loop_right_1_5.png | Bin 0 -> 276 bytes .../raptor/large_half_loop_right_1_6.png | Bin 0 -> 283 bytes .../raptor/large_half_loop_right_1_7.png | Bin 0 -> 240 bytes .../raptor/large_half_loop_right_2_1.png | Bin 0 -> 206 bytes .../raptor/large_half_loop_right_2_2.png | Bin 0 -> 232 bytes .../raptor/large_half_loop_right_2_3.png | Bin 0 -> 254 bytes .../raptor/large_half_loop_right_2_4.png | Bin 0 -> 259 bytes .../raptor/large_half_loop_right_2_5.png | Bin 0 -> 348 bytes .../raptor/large_half_loop_right_2_6.png | Bin 0 -> 329 bytes .../raptor/large_half_loop_right_2_7.png | Bin 0 -> 312 bytes .../raptor/large_half_loop_right_3_1.png | Bin 0 -> 200 bytes .../raptor/large_half_loop_right_3_2.png | Bin 0 -> 209 bytes .../raptor/large_half_loop_right_3_3.png | Bin 0 -> 232 bytes .../raptor/large_half_loop_right_3_4.png | Bin 0 -> 330 bytes .../raptor/large_half_loop_right_3_5.png | Bin 0 -> 407 bytes .../raptor/large_half_loop_right_3_6.png | Bin 0 -> 286 bytes .../raptor/large_half_loop_right_3_7.png | Bin 0 -> 274 bytes .../raptor/large_half_loop_right_4_1.png | Bin 0 -> 241 bytes .../raptor/large_half_loop_right_4_2.png | Bin 0 -> 315 bytes .../raptor/large_half_loop_right_4_3.png | Bin 0 -> 360 bytes .../raptor/large_half_loop_right_4_4.png | Bin 0 -> 342 bytes .../raptor/large_half_loop_right_4_5.png | Bin 0 -> 312 bytes .../raptor/large_half_loop_right_4_6.png | Bin 0 -> 259 bytes .../raptor/large_half_loop_right_4_7.png | Bin 0 -> 259 bytes .../raptor/large_turn_left_to_diag_1_1.png | Bin 0 -> 228 bytes .../raptor/large_turn_left_to_diag_1_2.png | Bin 0 -> 208 bytes .../raptor/large_turn_left_to_diag_1_3.png | Bin 0 -> 162 bytes .../raptor/large_turn_left_to_diag_1_4.png | Bin 0 -> 192 bytes .../raptor/large_turn_left_to_diag_2_1.png | Bin 0 -> 251 bytes .../raptor/large_turn_left_to_diag_2_2.png | Bin 0 -> 208 bytes .../raptor/large_turn_left_to_diag_2_3.png | Bin 0 -> 196 bytes .../raptor/large_turn_left_to_diag_2_4.png | Bin 0 -> 178 bytes .../raptor/large_turn_left_to_diag_3_1.png | Bin 0 -> 231 bytes .../raptor/large_turn_left_to_diag_3_2.png | Bin 0 -> 208 bytes .../raptor/large_turn_left_to_diag_3_3.png | Bin 0 -> 144 bytes .../raptor/large_turn_left_to_diag_3_4.png | Bin 0 -> 169 bytes .../raptor/large_turn_left_to_diag_4_1.png | Bin 0 -> 969 bytes .../raptor/large_turn_left_to_diag_4_2.png | Bin 0 -> 975 bytes .../raptor/large_turn_left_to_diag_4_3.png | Bin 0 -> 120 bytes .../raptor/large_turn_left_to_diag_4_4.png | Bin 0 -> 188 bytes .../large_turn_left_to_diag_bank_1_1.png | Bin 0 -> 256 bytes .../large_turn_left_to_diag_bank_1_2.png | Bin 0 -> 217 bytes .../large_turn_left_to_diag_bank_1_3.png | Bin 0 -> 163 bytes .../large_turn_left_to_diag_bank_1_4.png | Bin 0 -> 239 bytes .../large_turn_left_to_diag_bank_2_1.png | Bin 0 -> 236 bytes .../large_turn_left_to_diag_bank_2_2.png | Bin 0 -> 279 bytes .../large_turn_left_to_diag_bank_2_3.png | Bin 0 -> 860 bytes .../large_turn_left_to_diag_bank_2_4.png | Bin 0 -> 204 bytes .../large_turn_left_to_diag_bank_3_1.png | Bin 0 -> 218 bytes .../large_turn_left_to_diag_bank_3_2.png | Bin 0 -> 246 bytes .../large_turn_left_to_diag_bank_3_3.png | Bin 0 -> 114 bytes .../large_turn_left_to_diag_bank_3_4.png | Bin 0 -> 205 bytes .../large_turn_left_to_diag_bank_4_1.png | Bin 0 -> 237 bytes .../large_turn_left_to_diag_bank_4_2.png | Bin 0 -> 966 bytes .../large_turn_left_to_diag_bank_4_3.png | Bin 0 -> 85 bytes .../large_turn_left_to_diag_bank_4_4.png | Bin 0 -> 187 bytes .../raptor/large_turn_right_to_diag_1_1.png | Bin 0 -> 222 bytes .../raptor/large_turn_right_to_diag_1_2.png | Bin 0 -> 237 bytes .../raptor/large_turn_right_to_diag_1_3.png | Bin 0 -> 123 bytes .../raptor/large_turn_right_to_diag_1_4.png | Bin 0 -> 190 bytes .../raptor/large_turn_right_to_diag_2_1.png | Bin 0 -> 247 bytes .../raptor/large_turn_right_to_diag_2_2.png | Bin 0 -> 230 bytes .../raptor/large_turn_right_to_diag_2_3.png | Bin 0 -> 147 bytes .../raptor/large_turn_right_to_diag_2_4.png | Bin 0 -> 177 bytes .../raptor/large_turn_right_to_diag_3_1.png | Bin 0 -> 245 bytes .../raptor/large_turn_right_to_diag_3_2.png | Bin 0 -> 210 bytes .../raptor/large_turn_right_to_diag_3_3.png | Bin 0 -> 194 bytes .../raptor/large_turn_right_to_diag_3_4.png | Bin 0 -> 188 bytes .../raptor/large_turn_right_to_diag_4_1.png | Bin 0 -> 245 bytes .../raptor/large_turn_right_to_diag_4_2.png | Bin 0 -> 219 bytes .../raptor/large_turn_right_to_diag_4_3.png | Bin 0 -> 166 bytes .../raptor/large_turn_right_to_diag_4_4.png | Bin 0 -> 200 bytes .../large_turn_right_to_diag_bank_1_1.png | Bin 0 -> 260 bytes .../large_turn_right_to_diag_bank_1_2.png | Bin 0 -> 985 bytes .../large_turn_right_to_diag_bank_1_3.png | Bin 0 -> 85 bytes .../large_turn_right_to_diag_bank_1_4.png | Bin 0 -> 182 bytes .../large_turn_right_to_diag_bank_2_1.png | Bin 0 -> 199 bytes .../large_turn_right_to_diag_bank_2_2.png | Bin 0 -> 225 bytes .../large_turn_right_to_diag_bank_2_3.png | Bin 0 -> 111 bytes .../large_turn_right_to_diag_bank_2_4.png | Bin 0 -> 201 bytes .../large_turn_right_to_diag_bank_3_1.png | Bin 0 -> 280 bytes .../large_turn_right_to_diag_bank_3_2.png | Bin 0 -> 1034 bytes .../large_turn_right_to_diag_bank_3_3.png | Bin 0 -> 860 bytes .../large_turn_right_to_diag_bank_3_4.png | Bin 0 -> 198 bytes .../large_turn_right_to_diag_bank_4_1.png | Bin 0 -> 272 bytes .../large_turn_right_to_diag_bank_4_2.png | Bin 0 -> 202 bytes .../large_turn_right_to_diag_bank_4_3.png | Bin 0 -> 154 bytes .../large_turn_right_to_diag_bank_4_4.png | Bin 0 -> 231 bytes resources/g2/track/raptor/left_bank_1.png | Bin 0 -> 204 bytes resources/g2/track/raptor/left_bank_2.png | Bin 0 -> 177 bytes resources/g2/track/raptor/left_bank_3.png | Bin 0 -> 179 bytes resources/g2/track/raptor/left_bank_4.png | Bin 0 -> 173 bytes .../g2/track/raptor/left_bank_diag_1.png | Bin 0 -> 121 bytes .../g2/track/raptor/left_bank_diag_2.png | Bin 0 -> 193 bytes .../g2/track/raptor/left_bank_diag_3.png | Bin 0 -> 95 bytes .../g2/track/raptor/left_bank_diag_4.png | Bin 0 -> 159 bytes .../raptor/left_bank_to_gentle_up_1_1.png | Bin 0 -> 232 bytes .../raptor/left_bank_to_gentle_up_1_2.png | Bin 0 -> 224 bytes .../raptor/left_bank_to_gentle_up_2_1.png | Bin 0 -> 226 bytes .../raptor/left_bank_to_gentle_up_2_2.png | Bin 0 -> 155 bytes .../track/raptor/left_bank_to_gentle_up_3.png | Bin 0 -> 262 bytes .../track/raptor/left_bank_to_gentle_up_4.png | Bin 0 -> 292 bytes .../left_bank_to_gentle_up_diag_1_1.png | Bin 0 -> 188 bytes .../left_bank_to_gentle_up_diag_1_2.png | Bin 0 -> 232 bytes .../raptor/left_bank_to_gentle_up_diag_2.png | Bin 0 -> 223 bytes .../raptor/left_bank_to_gentle_up_diag_3.png | Bin 0 -> 280 bytes .../raptor/left_bank_to_gentle_up_diag_4.png | Bin 0 -> 237 bytes .../left_bank_to_gentle_up_left_bank_1.png | Bin 0 -> 269 bytes .../left_bank_to_gentle_up_left_bank_2.png | Bin 0 -> 239 bytes .../left_bank_to_gentle_up_left_bank_3.png | Bin 0 -> 259 bytes .../left_bank_to_gentle_up_left_bank_4.png | Bin 0 -> 239 bytes .../track/raptor/medium_helix_left_up_1_1.png | Bin 0 -> 124 bytes .../track/raptor/medium_helix_left_up_1_2.png | Bin 0 -> 228 bytes .../track/raptor/medium_helix_left_up_1_3.png | Bin 0 -> 205 bytes .../track/raptor/medium_helix_left_up_1_4.png | Bin 0 -> 219 bytes .../track/raptor/medium_helix_left_up_1_5.png | Bin 0 -> 221 bytes .../track/raptor/medium_helix_left_up_1_6.png | Bin 0 -> 234 bytes .../track/raptor/medium_helix_left_up_2_1.png | Bin 0 -> 244 bytes .../track/raptor/medium_helix_left_up_2_2.png | Bin 0 -> 136 bytes .../track/raptor/medium_helix_left_up_2_3.png | Bin 0 -> 254 bytes .../track/raptor/medium_helix_left_up_2_4.png | Bin 0 -> 108 bytes .../track/raptor/medium_helix_left_up_2_5.png | Bin 0 -> 296 bytes .../track/raptor/medium_helix_left_up_3_1.png | Bin 0 -> 253 bytes .../track/raptor/medium_helix_left_up_3_2.png | Bin 0 -> 219 bytes .../track/raptor/medium_helix_left_up_3_3.png | Bin 0 -> 221 bytes .../track/raptor/medium_helix_left_up_3_4.png | Bin 0 -> 167 bytes .../track/raptor/medium_helix_left_up_3_5.png | Bin 0 -> 860 bytes .../track/raptor/medium_helix_left_up_3_6.png | Bin 0 -> 206 bytes .../track/raptor/medium_helix_left_up_4_1.png | Bin 0 -> 233 bytes .../track/raptor/medium_helix_left_up_4_2.png | Bin 0 -> 967 bytes .../track/raptor/medium_helix_left_up_4_3.png | Bin 0 -> 151 bytes .../track/raptor/medium_helix_left_up_4_4.png | Bin 0 -> 253 bytes .../track/raptor/medium_helix_left_up_4_5.png | Bin 0 -> 238 bytes .../raptor/medium_helix_right_up_1_1.png | Bin 0 -> 262 bytes .../raptor/medium_helix_right_up_1_2.png | Bin 0 -> 976 bytes .../raptor/medium_helix_right_up_1_3.png | Bin 0 -> 151 bytes .../raptor/medium_helix_right_up_1_4.png | Bin 0 -> 222 bytes .../raptor/medium_helix_right_up_1_5.png | Bin 0 -> 219 bytes .../raptor/medium_helix_right_up_2_1.png | Bin 0 -> 225 bytes .../raptor/medium_helix_right_up_2_2.png | Bin 0 -> 218 bytes .../raptor/medium_helix_right_up_2_3.png | Bin 0 -> 225 bytes .../raptor/medium_helix_right_up_2_4.png | Bin 0 -> 174 bytes .../raptor/medium_helix_right_up_2_5.png | Bin 0 -> 860 bytes .../raptor/medium_helix_right_up_2_6.png | Bin 0 -> 233 bytes .../raptor/medium_helix_right_up_3_1.png | Bin 0 -> 287 bytes .../raptor/medium_helix_right_up_3_2.png | Bin 0 -> 146 bytes .../raptor/medium_helix_right_up_3_3.png | Bin 0 -> 277 bytes .../raptor/medium_helix_right_up_3_4.png | Bin 0 -> 108 bytes .../raptor/medium_helix_right_up_3_5.png | Bin 0 -> 251 bytes .../raptor/medium_helix_right_up_4_1.png | Bin 0 -> 872 bytes .../raptor/medium_helix_right_up_4_2.png | Bin 0 -> 217 bytes .../raptor/medium_helix_right_up_4_3.png | Bin 0 -> 187 bytes .../raptor/medium_helix_right_up_4_4.png | Bin 0 -> 200 bytes .../raptor/medium_helix_right_up_4_5.png | Bin 0 -> 208 bytes .../raptor/medium_helix_right_up_4_6.png | Bin 0 -> 267 bytes .../g2/track/raptor/medium_turn_left_1_1.png | Bin 0 -> 215 bytes .../g2/track/raptor/medium_turn_left_1_2.png | Bin 0 -> 177 bytes .../g2/track/raptor/medium_turn_left_1_3.png | Bin 0 -> 178 bytes .../g2/track/raptor/medium_turn_left_1_4.png | Bin 0 -> 197 bytes .../g2/track/raptor/medium_turn_left_1_5.png | Bin 0 -> 252 bytes .../g2/track/raptor/medium_turn_left_2_1.png | Bin 0 -> 251 bytes .../g2/track/raptor/medium_turn_left_2_2.png | Bin 0 -> 178 bytes .../g2/track/raptor/medium_turn_left_2_3.png | Bin 0 -> 226 bytes .../g2/track/raptor/medium_turn_left_2_4.png | Bin 0 -> 172 bytes .../g2/track/raptor/medium_turn_left_2_5.png | Bin 0 -> 243 bytes .../g2/track/raptor/medium_turn_left_3_1.png | Bin 0 -> 240 bytes .../g2/track/raptor/medium_turn_left_3_2.png | Bin 0 -> 184 bytes .../g2/track/raptor/medium_turn_left_3_3.png | Bin 0 -> 183 bytes .../g2/track/raptor/medium_turn_left_3_4.png | Bin 0 -> 199 bytes .../g2/track/raptor/medium_turn_left_3_5.png | Bin 0 -> 238 bytes .../g2/track/raptor/medium_turn_left_4_1.png | Bin 0 -> 254 bytes .../g2/track/raptor/medium_turn_left_4_2.png | Bin 0 -> 218 bytes .../g2/track/raptor/medium_turn_left_4_3.png | Bin 0 -> 179 bytes .../g2/track/raptor/medium_turn_left_4_4.png | Bin 0 -> 223 bytes .../g2/track/raptor/medium_turn_left_4_5.png | Bin 0 -> 240 bytes .../raptor/medium_turn_left_bank_1_1.png | Bin 0 -> 108 bytes .../raptor/medium_turn_left_bank_1_2.png | Bin 0 -> 249 bytes .../raptor/medium_turn_left_bank_1_3.png | Bin 0 -> 211 bytes .../raptor/medium_turn_left_bank_1_4.png | Bin 0 -> 208 bytes .../raptor/medium_turn_left_bank_1_5.png | Bin 0 -> 944 bytes .../raptor/medium_turn_left_bank_1_6.png | Bin 0 -> 211 bytes .../raptor/medium_turn_left_bank_2_1.png | Bin 0 -> 251 bytes .../raptor/medium_turn_left_bank_2_2.png | Bin 0 -> 174 bytes .../raptor/medium_turn_left_bank_2_3.png | Bin 0 -> 232 bytes .../raptor/medium_turn_left_bank_2_4.png | Bin 0 -> 188 bytes .../raptor/medium_turn_left_bank_2_5.png | Bin 0 -> 291 bytes .../raptor/medium_turn_left_bank_3_1.png | Bin 0 -> 252 bytes .../raptor/medium_turn_left_bank_3_2.png | Bin 0 -> 217 bytes .../raptor/medium_turn_left_bank_3_3.png | Bin 0 -> 213 bytes .../raptor/medium_turn_left_bank_3_4.png | Bin 0 -> 194 bytes .../raptor/medium_turn_left_bank_3_5.png | Bin 0 -> 105 bytes .../raptor/medium_turn_left_bank_3_6.png | Bin 0 -> 232 bytes .../raptor/medium_turn_left_bank_4_1.png | Bin 0 -> 234 bytes .../raptor/medium_turn_left_bank_4_2.png | Bin 0 -> 216 bytes .../raptor/medium_turn_left_bank_4_3.png | Bin 0 -> 147 bytes .../raptor/medium_turn_left_bank_4_4.png | Bin 0 -> 233 bytes .../raptor/medium_turn_left_bank_4_5.png | Bin 0 -> 262 bytes .../medium_turn_left_bank_gentle_up_1_1.png | Bin 0 -> 289 bytes .../medium_turn_left_bank_gentle_up_1_2.png | Bin 0 -> 256 bytes .../medium_turn_left_bank_gentle_up_1_3.png | Bin 0 -> 860 bytes .../medium_turn_left_bank_gentle_up_1_4.png | Bin 0 -> 298 bytes .../medium_turn_left_bank_gentle_up_1_5.png | Bin 0 -> 237 bytes .../medium_turn_left_bank_gentle_up_2_1.png | Bin 0 -> 245 bytes .../medium_turn_left_bank_gentle_up_2_2.png | Bin 0 -> 211 bytes .../medium_turn_left_bank_gentle_up_2_3.png | Bin 0 -> 946 bytes .../medium_turn_left_bank_gentle_up_2_4.png | Bin 0 -> 232 bytes .../medium_turn_left_bank_gentle_up_2_5.png | Bin 0 -> 255 bytes .../medium_turn_left_bank_gentle_up_3_1.png | Bin 0 -> 708 bytes .../medium_turn_left_bank_gentle_up_3_2.png | Bin 0 -> 860 bytes .../medium_turn_left_bank_gentle_up_3_3.png | Bin 0 -> 860 bytes .../medium_turn_left_bank_gentle_up_3_4.png | Bin 0 -> 163 bytes .../medium_turn_left_bank_gentle_up_3_5.png | Bin 0 -> 208 bytes .../medium_turn_left_bank_gentle_up_4_1.png | Bin 0 -> 237 bytes .../medium_turn_left_bank_gentle_up_4_2.png | Bin 0 -> 261 bytes .../medium_turn_left_bank_gentle_up_4_3.png | Bin 0 -> 187 bytes .../medium_turn_left_bank_gentle_up_4_4.png | Bin 0 -> 962 bytes .../medium_turn_left_bank_gentle_up_4_5.png | Bin 0 -> 256 bytes .../raptor/medium_turn_left_gentle_up_1_1.png | Bin 0 -> 238 bytes .../raptor/medium_turn_left_gentle_up_1_2.png | Bin 0 -> 225 bytes .../raptor/medium_turn_left_gentle_up_1_3.png | Bin 0 -> 860 bytes .../raptor/medium_turn_left_gentle_up_1_4.png | Bin 0 -> 246 bytes .../raptor/medium_turn_left_gentle_up_1_5.png | Bin 0 -> 279 bytes .../raptor/medium_turn_left_gentle_up_2_1.png | Bin 0 -> 975 bytes .../raptor/medium_turn_left_gentle_up_2_2.png | Bin 0 -> 945 bytes .../raptor/medium_turn_left_gentle_up_2_3.png | Bin 0 -> 202 bytes .../raptor/medium_turn_left_gentle_up_2_4.png | Bin 0 -> 224 bytes .../raptor/medium_turn_left_gentle_up_2_5.png | Bin 0 -> 253 bytes .../raptor/medium_turn_left_gentle_up_3_1.png | Bin 0 -> 240 bytes .../raptor/medium_turn_left_gentle_up_3_2.png | Bin 0 -> 860 bytes .../raptor/medium_turn_left_gentle_up_3_3.png | Bin 0 -> 177 bytes .../raptor/medium_turn_left_gentle_up_3_4.png | Bin 0 -> 860 bytes .../raptor/medium_turn_left_gentle_up_3_5.png | Bin 0 -> 209 bytes .../raptor/medium_turn_left_gentle_up_4_1.png | Bin 0 -> 298 bytes .../raptor/medium_turn_left_gentle_up_4_2.png | Bin 0 -> 265 bytes .../raptor/medium_turn_left_gentle_up_4_3.png | Bin 0 -> 195 bytes .../raptor/medium_turn_left_gentle_up_4_4.png | Bin 0 -> 220 bytes .../raptor/medium_turn_left_gentle_up_4_5.png | Bin 0 -> 223 bytes .../medium_turn_right_bank_gentle_up_1_1.png | Bin 0 -> 260 bytes .../medium_turn_right_bank_gentle_up_1_2.png | Bin 0 -> 239 bytes .../medium_turn_right_bank_gentle_up_1_3.png | Bin 0 -> 172 bytes .../medium_turn_right_bank_gentle_up_1_4.png | Bin 0 -> 929 bytes .../medium_turn_right_bank_gentle_up_1_5.png | Bin 0 -> 224 bytes .../medium_turn_right_bank_gentle_up_2_1.png | Bin 0 -> 699 bytes .../medium_turn_right_bank_gentle_up_2_2.png | Bin 0 -> 860 bytes .../medium_turn_right_bank_gentle_up_2_3.png | Bin 0 -> 860 bytes .../medium_turn_right_bank_gentle_up_2_4.png | Bin 0 -> 161 bytes .../medium_turn_right_bank_gentle_up_2_5.png | Bin 0 -> 216 bytes .../medium_turn_right_bank_gentle_up_3_1.png | Bin 0 -> 299 bytes .../medium_turn_right_bank_gentle_up_3_2.png | Bin 0 -> 237 bytes .../medium_turn_right_bank_gentle_up_3_3.png | Bin 0 -> 237 bytes .../medium_turn_right_bank_gentle_up_3_4.png | Bin 0 -> 236 bytes .../medium_turn_right_bank_gentle_up_3_5.png | Bin 0 -> 236 bytes .../medium_turn_right_bank_gentle_up_4_1.png | Bin 0 -> 259 bytes .../medium_turn_right_bank_gentle_up_4_2.png | Bin 0 -> 241 bytes .../medium_turn_right_bank_gentle_up_4_3.png | Bin 0 -> 860 bytes .../medium_turn_right_bank_gentle_up_4_4.png | Bin 0 -> 316 bytes .../medium_turn_right_bank_gentle_up_4_5.png | Bin 0 -> 295 bytes .../medium_turn_right_gentle_up_1_1.png | Bin 0 -> 285 bytes .../medium_turn_right_gentle_up_1_2.png | Bin 0 -> 252 bytes .../medium_turn_right_gentle_up_1_3.png | Bin 0 -> 174 bytes .../medium_turn_right_gentle_up_1_4.png | Bin 0 -> 197 bytes .../medium_turn_right_gentle_up_1_5.png | Bin 0 -> 242 bytes .../medium_turn_right_gentle_up_2_1.png | Bin 0 -> 977 bytes .../medium_turn_right_gentle_up_2_2.png | Bin 0 -> 860 bytes .../medium_turn_right_gentle_up_2_3.png | Bin 0 -> 162 bytes .../medium_turn_right_gentle_up_2_4.png | Bin 0 -> 860 bytes .../medium_turn_right_gentle_up_2_5.png | Bin 0 -> 185 bytes .../medium_turn_right_gentle_up_3_1.png | Bin 0 -> 254 bytes .../medium_turn_right_gentle_up_3_2.png | Bin 0 -> 226 bytes .../medium_turn_right_gentle_up_3_3.png | Bin 0 -> 235 bytes .../medium_turn_right_gentle_up_3_4.png | Bin 0 -> 246 bytes .../medium_turn_right_gentle_up_3_5.png | Bin 0 -> 246 bytes .../medium_turn_right_gentle_up_4_1.png | Bin 0 -> 259 bytes .../medium_turn_right_gentle_up_4_2.png | Bin 0 -> 245 bytes .../medium_turn_right_gentle_up_4_3.png | Bin 0 -> 860 bytes .../medium_turn_right_gentle_up_4_4.png | Bin 0 -> 235 bytes .../medium_turn_right_gentle_up_4_5.png | Bin 0 -> 254 bytes resources/g2/track/raptor/preview_support.png | Bin 0 -> 168 bytes resources/g2/track/raptor/preview_track.png | Bin 0 -> 194 bytes .../g2/track/raptor/quarter_loop_up_1_1.png | Bin 0 -> 290 bytes .../g2/track/raptor/quarter_loop_up_1_2.png | Bin 0 -> 951 bytes .../g2/track/raptor/quarter_loop_up_1_3.png | Bin 0 -> 277 bytes .../g2/track/raptor/quarter_loop_up_2_1.png | Bin 0 -> 428 bytes .../g2/track/raptor/quarter_loop_up_2_2.png | Bin 0 -> 368 bytes .../g2/track/raptor/quarter_loop_up_2_3.png | Bin 0 -> 962 bytes .../g2/track/raptor/quarter_loop_up_3_1.png | Bin 0 -> 348 bytes .../g2/track/raptor/quarter_loop_up_3_2.png | Bin 0 -> 324 bytes .../g2/track/raptor/quarter_loop_up_3_3.png | Bin 0 -> 211 bytes .../g2/track/raptor/quarter_loop_up_4_1.png | Bin 0 -> 304 bytes .../g2/track/raptor/quarter_loop_up_4_2.png | Bin 0 -> 193 bytes .../g2/track/raptor/quarter_loop_up_4_3.png | Bin 0 -> 278 bytes .../raptor/right_bank_to_gentle_up_1.png | Bin 0 -> 303 bytes .../raptor/right_bank_to_gentle_up_2.png | Bin 0 -> 970 bytes .../raptor/right_bank_to_gentle_up_3_1.png | Bin 0 -> 229 bytes .../raptor/right_bank_to_gentle_up_3_2.png | Bin 0 -> 178 bytes .../raptor/right_bank_to_gentle_up_4_1.png | Bin 0 -> 217 bytes .../raptor/right_bank_to_gentle_up_4_2.png | Bin 0 -> 218 bytes .../raptor/right_bank_to_gentle_up_diag_1.png | Bin 0 -> 1007 bytes .../raptor/right_bank_to_gentle_up_diag_2.png | Bin 0 -> 230 bytes .../right_bank_to_gentle_up_diag_3_1.png | Bin 0 -> 185 bytes .../right_bank_to_gentle_up_diag_3_2.png | Bin 0 -> 229 bytes .../raptor/right_bank_to_gentle_up_diag_4.png | Bin 0 -> 225 bytes .../right_bank_to_gentle_up_right_bank_1.png | Bin 0 -> 257 bytes .../right_bank_to_gentle_up_right_bank_2.png | Bin 0 -> 232 bytes .../right_bank_to_gentle_up_right_bank_3.png | Bin 0 -> 997 bytes .../right_bank_to_gentle_up_right_bank_4.png | Bin 0 -> 252 bytes resources/g2/track/raptor/s_bend_left_1_1.png | Bin 0 -> 225 bytes resources/g2/track/raptor/s_bend_left_1_2.png | Bin 0 -> 176 bytes resources/g2/track/raptor/s_bend_left_1_3.png | Bin 0 -> 182 bytes resources/g2/track/raptor/s_bend_left_1_4.png | Bin 0 -> 228 bytes resources/g2/track/raptor/s_bend_left_2_1.png | Bin 0 -> 257 bytes resources/g2/track/raptor/s_bend_left_2_2.png | Bin 0 -> 178 bytes resources/g2/track/raptor/s_bend_left_2_3.png | Bin 0 -> 215 bytes resources/g2/track/raptor/s_bend_left_2_4.png | Bin 0 -> 253 bytes .../g2/track/raptor/s_bend_right_1_1.png | Bin 0 -> 235 bytes .../g2/track/raptor/s_bend_right_1_2.png | Bin 0 -> 222 bytes .../g2/track/raptor/s_bend_right_1_3.png | Bin 0 -> 178 bytes .../g2/track/raptor/s_bend_right_1_4.png | Bin 0 -> 250 bytes .../g2/track/raptor/s_bend_right_2_1.png | Bin 0 -> 258 bytes .../g2/track/raptor/s_bend_right_2_2.png | Bin 0 -> 195 bytes .../g2/track/raptor/s_bend_right_2_3.png | Bin 0 -> 200 bytes .../g2/track/raptor/s_bend_right_2_4.png | Bin 0 -> 246 bytes .../track/raptor/small_flat_to_steep_up_1.png | Bin 0 -> 299 bytes .../raptor/small_flat_to_steep_up_2_1.png | Bin 0 -> 175 bytes .../raptor/small_flat_to_steep_up_2_2.png | Bin 0 -> 247 bytes .../raptor/small_flat_to_steep_up_3_1.png | Bin 0 -> 171 bytes .../raptor/small_flat_to_steep_up_3_2.png | Bin 0 -> 228 bytes .../track/raptor/small_flat_to_steep_up_4.png | Bin 0 -> 362 bytes .../raptor/small_flat_to_steep_up_diag_1.png | Bin 0 -> 313 bytes .../raptor/small_flat_to_steep_up_diag_2.png | Bin 0 -> 137 bytes .../raptor/small_flat_to_steep_up_diag_3.png | Bin 0 -> 345 bytes .../raptor/small_flat_to_steep_up_diag_4.png | Bin 0 -> 130 bytes .../small_flat_to_steep_up_diag_lift_1.png | Bin 0 -> 355 bytes .../small_flat_to_steep_up_diag_lift_2.png | Bin 0 -> 158 bytes .../small_flat_to_steep_up_diag_lift_3.png | Bin 0 -> 380 bytes .../small_flat_to_steep_up_diag_lift_4.png | Bin 0 -> 159 bytes .../raptor/small_flat_to_steep_up_lift_1.png | Bin 0 -> 371 bytes .../small_flat_to_steep_up_lift_2_1.png | Bin 0 -> 197 bytes .../small_flat_to_steep_up_lift_2_2.png | Bin 0 -> 247 bytes .../small_flat_to_steep_up_lift_3_1.png | Bin 0 -> 191 bytes .../small_flat_to_steep_up_lift_3_2.png | Bin 0 -> 228 bytes .../raptor/small_flat_to_steep_up_lift_4.png | Bin 0 -> 403 bytes .../track/raptor/small_helix_left_up_1_1.png | Bin 0 -> 177 bytes .../track/raptor/small_helix_left_up_1_2.png | Bin 0 -> 225 bytes .../track/raptor/small_helix_left_up_1_3.png | Bin 0 -> 199 bytes .../track/raptor/small_helix_left_up_1_4.png | Bin 0 -> 227 bytes .../track/raptor/small_helix_left_up_2_1.png | Bin 0 -> 244 bytes .../track/raptor/small_helix_left_up_2_2.png | Bin 0 -> 860 bytes .../track/raptor/small_helix_left_up_2_3.png | Bin 0 -> 321 bytes .../track/raptor/small_helix_left_up_3_1.png | Bin 0 -> 218 bytes .../track/raptor/small_helix_left_up_3_2.png | Bin 0 -> 197 bytes .../track/raptor/small_helix_left_up_3_3.png | Bin 0 -> 114 bytes .../track/raptor/small_helix_left_up_3_4.png | Bin 0 -> 216 bytes .../track/raptor/small_helix_left_up_4_1.png | Bin 0 -> 258 bytes .../track/raptor/small_helix_left_up_4_2.png | Bin 0 -> 175 bytes .../track/raptor/small_helix_left_up_4_3.png | Bin 0 -> 284 bytes .../track/raptor/small_helix_right_up_1_1.png | Bin 0 -> 290 bytes .../track/raptor/small_helix_right_up_1_2.png | Bin 0 -> 151 bytes .../track/raptor/small_helix_right_up_1_3.png | Bin 0 -> 249 bytes .../track/raptor/small_helix_right_up_2_1.png | Bin 0 -> 221 bytes .../track/raptor/small_helix_right_up_2_2.png | Bin 0 -> 202 bytes .../track/raptor/small_helix_right_up_2_3.png | Bin 0 -> 114 bytes .../track/raptor/small_helix_right_up_2_4.png | Bin 0 -> 228 bytes .../track/raptor/small_helix_right_up_3_1.png | Bin 0 -> 292 bytes .../track/raptor/small_helix_right_up_3_2.png | Bin 0 -> 860 bytes .../track/raptor/small_helix_right_up_3_3.png | Bin 0 -> 274 bytes .../track/raptor/small_helix_right_up_4_1.png | Bin 0 -> 160 bytes .../track/raptor/small_helix_right_up_4_2.png | Bin 0 -> 224 bytes .../track/raptor/small_helix_right_up_4_3.png | Bin 0 -> 189 bytes .../track/raptor/small_helix_right_up_4_4.png | Bin 0 -> 267 bytes .../track/raptor/small_steep_to_flat_up_1.png | Bin 0 -> 296 bytes .../raptor/small_steep_to_flat_up_2_1.png | Bin 0 -> 209 bytes .../raptor/small_steep_to_flat_up_2_2.png | Bin 0 -> 194 bytes .../raptor/small_steep_to_flat_up_3_1.png | Bin 0 -> 200 bytes .../raptor/small_steep_to_flat_up_3_2.png | Bin 0 -> 193 bytes .../track/raptor/small_steep_to_flat_up_4.png | Bin 0 -> 351 bytes .../raptor/small_steep_to_flat_up_diag_1.png | Bin 0 -> 327 bytes .../raptor/small_steep_to_flat_up_diag_2.png | Bin 0 -> 132 bytes .../raptor/small_steep_to_flat_up_diag_3.png | Bin 0 -> 355 bytes .../raptor/small_steep_to_flat_up_diag_4.png | Bin 0 -> 106 bytes .../small_steep_to_flat_up_diag_lift_1.png | Bin 0 -> 365 bytes .../small_steep_to_flat_up_diag_lift_2.png | Bin 0 -> 160 bytes .../small_steep_to_flat_up_diag_lift_3.png | Bin 0 -> 383 bytes .../small_steep_to_flat_up_diag_lift_4.png | Bin 0 -> 113 bytes .../raptor/small_steep_to_flat_up_lift_1.png | Bin 0 -> 376 bytes .../small_steep_to_flat_up_lift_2_1.png | Bin 0 -> 236 bytes .../small_steep_to_flat_up_lift_2_2.png | Bin 0 -> 196 bytes .../small_steep_to_flat_up_lift_3_1.png | Bin 0 -> 214 bytes .../small_steep_to_flat_up_lift_3_2.png | Bin 0 -> 191 bytes .../raptor/small_steep_to_flat_up_lift_4.png | Bin 0 -> 396 bytes .../g2/track/raptor/small_turn_left_1_1.png | Bin 0 -> 241 bytes .../g2/track/raptor/small_turn_left_1_2.png | Bin 0 -> 161 bytes .../g2/track/raptor/small_turn_left_1_3.png | Bin 0 -> 236 bytes .../g2/track/raptor/small_turn_left_2_1.png | Bin 0 -> 261 bytes .../g2/track/raptor/small_turn_left_2_2.png | Bin 0 -> 105 bytes .../g2/track/raptor/small_turn_left_2_3.png | Bin 0 -> 258 bytes .../g2/track/raptor/small_turn_left_3_1.png | Bin 0 -> 217 bytes .../g2/track/raptor/small_turn_left_3_2.png | Bin 0 -> 160 bytes .../g2/track/raptor/small_turn_left_3_3.png | Bin 0 -> 987 bytes .../g2/track/raptor/small_turn_left_4_1.png | Bin 0 -> 995 bytes .../g2/track/raptor/small_turn_left_4_2.png | Bin 0 -> 156 bytes .../g2/track/raptor/small_turn_left_4_3.png | Bin 0 -> 255 bytes .../track/raptor/small_turn_left_bank_1_1.png | Bin 0 -> 182 bytes .../track/raptor/small_turn_left_bank_1_2.png | Bin 0 -> 240 bytes .../track/raptor/small_turn_left_bank_1_3.png | Bin 0 -> 203 bytes .../track/raptor/small_turn_left_bank_1_4.png | Bin 0 -> 210 bytes .../track/raptor/small_turn_left_bank_2_1.png | Bin 0 -> 266 bytes .../track/raptor/small_turn_left_bank_2_2.png | Bin 0 -> 108 bytes .../track/raptor/small_turn_left_bank_2_3.png | Bin 0 -> 1019 bytes .../track/raptor/small_turn_left_bank_3_1.png | Bin 0 -> 221 bytes .../track/raptor/small_turn_left_bank_3_2.png | Bin 0 -> 188 bytes .../track/raptor/small_turn_left_bank_3_3.png | Bin 0 -> 161 bytes .../track/raptor/small_turn_left_bank_3_4.png | Bin 0 -> 228 bytes .../track/raptor/small_turn_left_bank_4_1.png | Bin 0 -> 988 bytes .../track/raptor/small_turn_left_bank_4_2.png | Bin 0 -> 137 bytes .../track/raptor/small_turn_left_bank_4_3.png | Bin 0 -> 284 bytes .../small_turn_left_bank_gentle_up_1_1.png | Bin 0 -> 353 bytes .../small_turn_left_bank_gentle_up_1_2.png | Bin 0 -> 243 bytes .../small_turn_left_bank_gentle_up_2_1.png | Bin 0 -> 248 bytes .../small_turn_left_bank_gentle_up_2_2.png | Bin 0 -> 309 bytes .../small_turn_left_bank_gentle_up_3_1.png | Bin 0 -> 228 bytes .../small_turn_left_bank_gentle_up_3_2.png | Bin 0 -> 231 bytes .../small_turn_left_bank_gentle_up_4_1.png | Bin 0 -> 290 bytes .../small_turn_left_bank_gentle_up_4_2.png | Bin 0 -> 302 bytes .../small_turn_left_bank_to_gentle_up_1_1.png | Bin 0 -> 305 bytes .../small_turn_left_bank_to_gentle_up_1_2.png | Bin 0 -> 280 bytes .../small_turn_left_bank_to_gentle_up_2_1.png | Bin 0 -> 124 bytes .../small_turn_left_bank_to_gentle_up_2_2.png | Bin 0 -> 962 bytes .../small_turn_left_bank_to_gentle_up_2_3.png | Bin 0 -> 291 bytes .../small_turn_left_bank_to_gentle_up_3_1.png | Bin 0 -> 221 bytes .../small_turn_left_bank_to_gentle_up_3_2.png | Bin 0 -> 971 bytes .../small_turn_left_bank_to_gentle_up_4_1.png | Bin 0 -> 304 bytes .../small_turn_left_bank_to_gentle_up_4_2.png | Bin 0 -> 251 bytes .../raptor/small_turn_left_gentle_up_1_1.png | Bin 0 -> 300 bytes .../raptor/small_turn_left_gentle_up_1_2.png | Bin 0 -> 277 bytes .../raptor/small_turn_left_gentle_up_2_1.png | Bin 0 -> 245 bytes .../raptor/small_turn_left_gentle_up_2_2.png | Bin 0 -> 300 bytes .../raptor/small_turn_left_gentle_up_3_1.png | Bin 0 -> 202 bytes .../raptor/small_turn_left_gentle_up_3_2.png | Bin 0 -> 248 bytes .../raptor/small_turn_left_gentle_up_4_1.png | Bin 0 -> 306 bytes .../raptor/small_turn_left_gentle_up_4_2.png | Bin 0 -> 255 bytes .../small_turn_right_bank_gentle_up_1_1.png | Bin 0 -> 298 bytes .../small_turn_right_bank_gentle_up_1_2.png | Bin 0 -> 256 bytes .../small_turn_right_bank_gentle_up_2_1.png | Bin 0 -> 229 bytes .../small_turn_right_bank_gentle_up_2_2.png | Bin 0 -> 960 bytes .../small_turn_right_bank_gentle_up_3_1.png | Bin 0 -> 1011 bytes .../small_turn_right_bank_gentle_up_3_2.png | Bin 0 -> 299 bytes .../small_turn_right_bank_gentle_up_4_1.png | Bin 0 -> 286 bytes .../small_turn_right_bank_gentle_up_4_2.png | Bin 0 -> 323 bytes ...small_turn_right_bank_to_gentle_up_1_1.png | Bin 0 -> 314 bytes ...small_turn_right_bank_to_gentle_up_1_2.png | Bin 0 -> 984 bytes ...small_turn_right_bank_to_gentle_up_2_1.png | Bin 0 -> 213 bytes ...small_turn_right_bank_to_gentle_up_2_2.png | Bin 0 -> 226 bytes ...small_turn_right_bank_to_gentle_up_3_1.png | Bin 0 -> 121 bytes ...small_turn_right_bank_to_gentle_up_3_2.png | Bin 0 -> 996 bytes ...small_turn_right_bank_to_gentle_up_3_3.png | Bin 0 -> 289 bytes ...small_turn_right_bank_to_gentle_up_4_1.png | Bin 0 -> 288 bytes ...small_turn_right_bank_to_gentle_up_4_2.png | Bin 0 -> 290 bytes .../raptor/small_turn_right_gentle_up_1_1.png | Bin 0 -> 298 bytes .../raptor/small_turn_right_gentle_up_1_2.png | Bin 0 -> 256 bytes .../raptor/small_turn_right_gentle_up_2_1.png | Bin 0 -> 216 bytes .../raptor/small_turn_right_gentle_up_2_2.png | Bin 0 -> 217 bytes .../raptor/small_turn_right_gentle_up_3_1.png | Bin 0 -> 262 bytes .../raptor/small_turn_right_gentle_up_3_2.png | Bin 0 -> 305 bytes .../raptor/small_turn_right_gentle_up_4_1.png | Bin 0 -> 302 bytes .../raptor/small_turn_right_gentle_up_4_2.png | Bin 0 -> 264 bytes resources/g2/track/raptor/steep_1.png | Bin 0 -> 188 bytes resources/g2/track/raptor/steep_2.png | Bin 0 -> 215 bytes resources/g2/track/raptor/steep_3.png | Bin 0 -> 187 bytes resources/g2/track/raptor/steep_4.png | Bin 0 -> 188 bytes resources/g2/track/raptor/steep_diag_1.png | Bin 0 -> 206 bytes resources/g2/track/raptor/steep_diag_2.png | Bin 0 -> 118 bytes resources/g2/track/raptor/steep_diag_3.png | Bin 0 -> 224 bytes resources/g2/track/raptor/steep_diag_4.png | Bin 0 -> 89 bytes .../g2/track/raptor/steep_diag_lift_1.png | Bin 0 -> 228 bytes .../g2/track/raptor/steep_diag_lift_2.png | Bin 0 -> 121 bytes .../g2/track/raptor/steep_diag_lift_3.png | Bin 0 -> 223 bytes .../g2/track/raptor/steep_diag_lift_4.png | Bin 0 -> 118 bytes resources/g2/track/raptor/steep_lift_1.png | Bin 0 -> 200 bytes resources/g2/track/raptor/steep_lift_2.png | Bin 0 -> 220 bytes resources/g2/track/raptor/steep_lift_3.png | Bin 0 -> 198 bytes resources/g2/track/raptor/steep_lift_4.png | Bin 0 -> 210 bytes .../g2/track/raptor/steep_to_flat_up_1_1.png | Bin 0 -> 289 bytes .../g2/track/raptor/steep_to_flat_up_1_2.png | Bin 0 -> 267 bytes .../g2/track/raptor/steep_to_flat_up_1_3.png | Bin 0 -> 243 bytes .../g2/track/raptor/steep_to_flat_up_1_4.png | Bin 0 -> 239 bytes .../g2/track/raptor/steep_to_flat_up_2_1.png | Bin 0 -> 252 bytes .../g2/track/raptor/steep_to_flat_up_2_2.png | Bin 0 -> 969 bytes .../g2/track/raptor/steep_to_flat_up_2_3.png | Bin 0 -> 211 bytes .../g2/track/raptor/steep_to_flat_up_2_4.png | Bin 0 -> 966 bytes .../g2/track/raptor/steep_to_flat_up_3_1.png | Bin 0 -> 242 bytes .../g2/track/raptor/steep_to_flat_up_3_2.png | Bin 0 -> 225 bytes .../g2/track/raptor/steep_to_flat_up_3_3.png | Bin 0 -> 203 bytes .../g2/track/raptor/steep_to_flat_up_3_4.png | Bin 0 -> 973 bytes .../g2/track/raptor/steep_to_flat_up_4_1.png | Bin 0 -> 350 bytes .../g2/track/raptor/steep_to_flat_up_4_2.png | Bin 0 -> 303 bytes .../g2/track/raptor/steep_to_flat_up_4_3.png | Bin 0 -> 251 bytes .../g2/track/raptor/steep_to_flat_up_4_4.png | Bin 0 -> 268 bytes .../g2/track/raptor/steep_to_gentle_up_1.png | Bin 0 -> 292 bytes .../track/raptor/steep_to_gentle_up_2_1.png | Bin 0 -> 187 bytes .../track/raptor/steep_to_gentle_up_2_2.png | Bin 0 -> 217 bytes .../track/raptor/steep_to_gentle_up_3_1.png | Bin 0 -> 172 bytes .../track/raptor/steep_to_gentle_up_3_2.png | Bin 0 -> 224 bytes .../g2/track/raptor/steep_to_gentle_up_4.png | Bin 0 -> 344 bytes .../raptor/steep_to_gentle_up_diag_1.png | Bin 0 -> 333 bytes .../raptor/steep_to_gentle_up_diag_2.png | Bin 0 -> 128 bytes .../raptor/steep_to_gentle_up_diag_3.png | Bin 0 -> 366 bytes .../raptor/steep_to_gentle_up_diag_4.png | Bin 0 -> 106 bytes .../raptor/steep_to_gentle_up_diag_lift_1.png | Bin 0 -> 361 bytes .../raptor/steep_to_gentle_up_diag_lift_2.png | Bin 0 -> 146 bytes .../raptor/steep_to_gentle_up_diag_lift_3.png | Bin 0 -> 407 bytes .../raptor/steep_to_gentle_up_diag_lift_4.png | Bin 0 -> 116 bytes .../raptor/steep_to_gentle_up_lift_1.png | Bin 0 -> 361 bytes .../raptor/steep_to_gentle_up_lift_2_1.png | Bin 0 -> 212 bytes .../raptor/steep_to_gentle_up_lift_2_2.png | Bin 0 -> 222 bytes .../raptor/steep_to_gentle_up_lift_3_1.png | Bin 0 -> 182 bytes .../raptor/steep_to_gentle_up_lift_3_2.png | Bin 0 -> 220 bytes .../raptor/steep_to_gentle_up_lift_4.png | Bin 0 -> 402 bytes .../track/raptor/steep_to_vertical_up_1.png | Bin 0 -> 319 bytes .../track/raptor/steep_to_vertical_up_2.png | Bin 0 -> 305 bytes .../track/raptor/steep_to_vertical_up_3.png | Bin 0 -> 306 bytes .../track/raptor/steep_to_vertical_up_4.png | Bin 0 -> 363 bytes resources/g2/track/raptor/vertical_1.png | Bin 0 -> 150 bytes resources/g2/track/raptor/vertical_2.png | Bin 0 -> 140 bytes resources/g2/track/raptor/vertical_3.png | Bin 0 -> 164 bytes resources/g2/track/raptor/vertical_4.png | Bin 0 -> 160 bytes .../track/raptor/vertical_to_steep_up_1.png | Bin 0 -> 304 bytes .../track/raptor/vertical_to_steep_up_2.png | Bin 0 -> 319 bytes .../track/raptor/vertical_to_steep_up_3.png | Bin 0 -> 288 bytes .../track/raptor/vertical_to_steep_up_4.png | Bin 0 -> 345 bytes .../track/raptor/vertical_twist_left_up_1.png | Bin 0 -> 309 bytes .../raptor/vertical_twist_left_up_2_1.png | Bin 0 -> 232 bytes .../raptor/vertical_twist_left_up_2_2.png | Bin 0 -> 230 bytes .../track/raptor/vertical_twist_left_up_3.png | Bin 0 -> 1058 bytes .../raptor/vertical_twist_left_up_4_1.png | Bin 0 -> 227 bytes .../raptor/vertical_twist_left_up_4_2.png | Bin 0 -> 239 bytes .../raptor/vertical_twist_right_up_1_1.png | Bin 0 -> 244 bytes .../raptor/vertical_twist_right_up_1_2.png | Bin 0 -> 233 bytes .../raptor/vertical_twist_right_up_2.png | Bin 0 -> 331 bytes .../raptor/vertical_twist_right_up_3_1.png | Bin 0 -> 226 bytes .../raptor/vertical_twist_right_up_3_2.png | Bin 0 -> 247 bytes .../raptor/vertical_twist_right_up_4.png | Bin 0 -> 287 bytes .../very_small_turn_left_steep_up_1_1.png | Bin 0 -> 372 bytes .../very_small_turn_left_steep_up_1_2.png | Bin 0 -> 860 bytes .../very_small_turn_left_steep_up_2_1.png | Bin 0 -> 264 bytes .../very_small_turn_left_steep_up_2_2.png | Bin 0 -> 228 bytes .../very_small_turn_left_steep_up_3_1.png | Bin 0 -> 860 bytes .../very_small_turn_left_steep_up_3_2.png | Bin 0 -> 344 bytes .../very_small_turn_left_steep_up_4_1.png | Bin 0 -> 292 bytes .../very_small_turn_left_steep_up_4_2.png | Bin 0 -> 272 bytes .../very_small_turn_right_steep_up_1_1.png | Bin 0 -> 271 bytes .../very_small_turn_right_steep_up_1_2.png | Bin 0 -> 260 bytes .../very_small_turn_right_steep_up_2_1.png | Bin 0 -> 860 bytes .../very_small_turn_right_steep_up_2_2.png | Bin 0 -> 328 bytes .../very_small_turn_right_steep_up_3_1.png | Bin 0 -> 326 bytes .../very_small_turn_right_steep_up_3_2.png | Bin 0 -> 255 bytes .../very_small_turn_right_steep_up_4_1.png | Bin 0 -> 1102 bytes .../very_small_turn_right_steep_up_4_2.png | Bin 0 -> 860 bytes src/openrct2-ui/windows/NewRide.cpp | 1 + src/openrct2/libopenrct2.vcxproj | 4 +- src/openrct2/localisation/StringIds.h | 2 + src/openrct2/object/RideObject.cpp | 1 + src/openrct2/ride/Ride.h | 1 + src/openrct2/ride/RideData.cpp | 2 + src/openrct2/ride/RideRatings.cpp | 46 + src/openrct2/ride/RideRatings.h | 1 + src/openrct2/ride/TrackPaint.h | 4 + .../ride/coaster/SingleRailRollerCoaster.cpp | 13418 ++++++++++++++++ .../coaster/meta/SingleRailRollerCoaster.h | 54 + src/openrct2/sprites.h | 50 +- test/testpaint/Compat.cpp | 4 + 897 files changed, 17993 insertions(+), 2 deletions(-) create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_1_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_2_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_3_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_left_4_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_1_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_2_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_3_6.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_1.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_2.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_3.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_4.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_5.png create mode 100644 resources/g2/track/raptor/barrel_roll_right_4_6.png create mode 100644 resources/g2/track/raptor/block_brake_1.png create mode 100644 resources/g2/track/raptor/block_brake_2.png create mode 100644 resources/g2/track/raptor/brake_1.png create mode 100644 resources/g2/track/raptor/brake_2.png create mode 100644 resources/g2/track/raptor/corkscrew_left_1_1.png create mode 100644 resources/g2/track/raptor/corkscrew_left_1_2.png create mode 100644 resources/g2/track/raptor/corkscrew_left_1_3.png create mode 100644 resources/g2/track/raptor/corkscrew_left_2_1.png create mode 100644 resources/g2/track/raptor/corkscrew_left_2_2.png create mode 100644 resources/g2/track/raptor/corkscrew_left_2_3.png create mode 100644 resources/g2/track/raptor/corkscrew_left_3_1.png create mode 100644 resources/g2/track/raptor/corkscrew_left_3_2.png create mode 100644 resources/g2/track/raptor/corkscrew_left_3_3.png create mode 100644 resources/g2/track/raptor/corkscrew_left_4_1.png create mode 100644 resources/g2/track/raptor/corkscrew_left_4_2.png create mode 100644 resources/g2/track/raptor/corkscrew_left_4_3.png create mode 100644 resources/g2/track/raptor/corkscrew_right_1_1.png create mode 100644 resources/g2/track/raptor/corkscrew_right_1_2.png create mode 100644 resources/g2/track/raptor/corkscrew_right_1_3.png create mode 100644 resources/g2/track/raptor/corkscrew_right_2_1.png create mode 100644 resources/g2/track/raptor/corkscrew_right_2_2.png create mode 100644 resources/g2/track/raptor/corkscrew_right_2_3.png create mode 100644 resources/g2/track/raptor/corkscrew_right_3_1.png create mode 100644 resources/g2/track/raptor/corkscrew_right_3_2.png create mode 100644 resources/g2/track/raptor/corkscrew_right_3_3.png create mode 100644 resources/g2/track/raptor/corkscrew_right_4_1.png create mode 100644 resources/g2/track/raptor/corkscrew_right_4_2.png create mode 100644 resources/g2/track/raptor/corkscrew_right_4_3.png create mode 100644 resources/g2/track/raptor/flat_1.png create mode 100644 resources/g2/track/raptor/flat_2.png create mode 100644 resources/g2/track/raptor/flat_diag_1.png create mode 100644 resources/g2/track/raptor/flat_diag_2.png create mode 100644 resources/g2/track/raptor/flat_diag_3.png create mode 100644 resources/g2/track/raptor/flat_diag_4.png create mode 100644 resources/g2/track/raptor/flat_diag_lift_1.png create mode 100644 resources/g2/track/raptor/flat_diag_lift_2.png create mode 100644 resources/g2/track/raptor/flat_diag_lift_3.png create mode 100644 resources/g2/track/raptor/flat_diag_lift_4.png create mode 100644 resources/g2/track/raptor/flat_lift_1.png create mode 100644 resources/g2/track/raptor/flat_lift_2.png create mode 100644 resources/g2/track/raptor/flat_lift_3.png create mode 100644 resources/g2/track/raptor/flat_lift_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_3.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_3.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_left_bank_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_left_bank_3.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_left_bank_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_lift_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_lift_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_lift_3.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_lift_4.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_right_bank_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_right_bank_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_1.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_2.png create mode 100644 resources/g2/track/raptor/flat_to_gentle_up_right_bank_4.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_1_1.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_1_2.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_3.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_4.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_diag_1_1.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_diag_1_2.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_diag_2.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_diag_3.png create mode 100644 resources/g2/track/raptor/flat_to_left_bank_diag_4.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_1.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_2.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_3_1.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_3_2.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_4_1.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_4_2.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_diag_1.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_diag_2.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_diag_3_1.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_diag_3_2.png create mode 100644 resources/g2/track/raptor/flat_to_right_bank_diag_4.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_1_1.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_1_2.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_1_3.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_1_4.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_2_1.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_2_2.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_2_3.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_2_4.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_3_1.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_3_2.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_3_3.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_3_4.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_4_1.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_4_2.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_4_3.png create mode 100644 resources/g2/track/raptor/flat_to_steep_up_4_4.png create mode 100644 resources/g2/track/raptor/gentle_1.png create mode 100644 resources/g2/track/raptor/gentle_2.png create mode 100644 resources/g2/track/raptor/gentle_3.png create mode 100644 resources/g2/track/raptor/gentle_4.png create mode 100644 resources/g2/track/raptor/gentle_diag_1.png create mode 100644 resources/g2/track/raptor/gentle_diag_2.png create mode 100644 resources/g2/track/raptor/gentle_diag_3.png create mode 100644 resources/g2/track/raptor/gentle_diag_4.png create mode 100644 resources/g2/track/raptor/gentle_diag_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_diag_lift_2.png create mode 100644 resources/g2/track/raptor/gentle_diag_lift_3.png create mode 100644 resources/g2/track/raptor/gentle_diag_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_lift_2.png create mode 100644 resources/g2/track/raptor/gentle_lift_3.png create mode 100644 resources/g2/track/raptor/gentle_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_1.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_2.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_3.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_4.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/gentle_to_flat_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_2_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_2_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_3_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_3_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_4.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_3.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_4.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_2_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_2_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_3_1.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_3_2.png create mode 100644 resources/g2/track/raptor/gentle_to_steep_up_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_flat_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_flat_2_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_flat_2_2.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_flat_3.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_flat_4.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_3.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_4.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_flat_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_flat_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_flat_3_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_flat_3_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_flat_4.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_4.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_3.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_lift_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_lift_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_lift_3.png create mode 100644 resources/g2/track/raptor/gentle_up_to_flat_lift_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_1_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_1_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_3.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_diag_1_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_diag_1_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_diag_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_diag_3.png create mode 100644 resources/g2/track/raptor/gentle_up_to_left_bank_diag_4.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_3_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_3_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_4_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_4_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_diag_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_diag_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_diag_3_1.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_diag_3_2.png create mode 100644 resources/g2/track/raptor/gentle_up_to_right_bank_diag_4.png create mode 100644 resources/g2/track/raptor/half_loop_1_1.png create mode 100644 resources/g2/track/raptor/half_loop_1_2.png create mode 100644 resources/g2/track/raptor/half_loop_1_3.png create mode 100644 resources/g2/track/raptor/half_loop_1_4.png create mode 100644 resources/g2/track/raptor/half_loop_2_1.png create mode 100644 resources/g2/track/raptor/half_loop_2_2.png create mode 100644 resources/g2/track/raptor/half_loop_2_3.png create mode 100644 resources/g2/track/raptor/half_loop_2_4.png create mode 100644 resources/g2/track/raptor/half_loop_3_1.png create mode 100644 resources/g2/track/raptor/half_loop_3_2.png create mode 100644 resources/g2/track/raptor/half_loop_3_3.png create mode 100644 resources/g2/track/raptor/half_loop_3_4.png create mode 100644 resources/g2/track/raptor/half_loop_4_1.png create mode 100644 resources/g2/track/raptor/half_loop_4_2.png create mode 100644 resources/g2/track/raptor/half_loop_4_3.png create mode 100644 resources/g2/track/raptor/half_loop_4_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_1_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_2_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_3_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_left_4_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_1_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_2_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_3_7.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_1.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_2.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_3.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_4.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_5.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_6.png create mode 100644 resources/g2/track/raptor/large_half_loop_right_4_7.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_1_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_1_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_1_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_1_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_2_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_2_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_2_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_2_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_3_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_3_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_3_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_3_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_4_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_4_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_4_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_4_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_1_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_1_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_1_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_1_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_2_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_2_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_2_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_2_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_3_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_3_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_3_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_3_4.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_4_1.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_4_2.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_4_3.png create mode 100644 resources/g2/track/raptor/large_turn_left_to_diag_bank_4_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_1_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_1_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_1_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_1_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_2_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_2_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_2_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_2_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_3_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_3_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_3_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_3_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_4_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_4_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_4_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_4_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_1_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_1_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_1_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_1_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_2_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_2_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_2_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_2_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_3_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_3_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_3_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_3_4.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_4_1.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_4_2.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_4_3.png create mode 100644 resources/g2/track/raptor/large_turn_right_to_diag_bank_4_4.png create mode 100644 resources/g2/track/raptor/left_bank_1.png create mode 100644 resources/g2/track/raptor/left_bank_2.png create mode 100644 resources/g2/track/raptor/left_bank_3.png create mode 100644 resources/g2/track/raptor/left_bank_4.png create mode 100644 resources/g2/track/raptor/left_bank_diag_1.png create mode 100644 resources/g2/track/raptor/left_bank_diag_2.png create mode 100644 resources/g2/track/raptor/left_bank_diag_3.png create mode 100644 resources/g2/track/raptor/left_bank_diag_4.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_3.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_4.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_diag_1_1.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_diag_1_2.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_diag_2.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_diag_3.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_diag_4.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_1.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_2.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_3.png create mode 100644 resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_4.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_1_6.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_3_6.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_helix_left_up_4_5.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_2_6.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_5.png create mode 100644 resources/g2/track/raptor/medium_helix_right_up_4_6.png create mode 100644 resources/g2/track/raptor/medium_turn_left_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_4_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_1_6.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_3_6.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_4_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_left_gentle_up_4_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_1_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_1_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_1_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_2_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_2_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_2_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_3_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_3_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_3_5.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_4_3.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_4_4.png create mode 100644 resources/g2/track/raptor/medium_turn_right_gentle_up_4_5.png create mode 100644 resources/g2/track/raptor/preview_support.png create mode 100644 resources/g2/track/raptor/preview_track.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_1_1.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_1_2.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_1_3.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_2_1.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_2_2.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_2_3.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_3_1.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_3_2.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_3_3.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_4_1.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_4_2.png create mode 100644 resources/g2/track/raptor/quarter_loop_up_4_3.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_diag_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_diag_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_diag_3_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_diag_3_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_diag_4.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_1.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_2.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_3.png create mode 100644 resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_4.png create mode 100644 resources/g2/track/raptor/s_bend_left_1_1.png create mode 100644 resources/g2/track/raptor/s_bend_left_1_2.png create mode 100644 resources/g2/track/raptor/s_bend_left_1_3.png create mode 100644 resources/g2/track/raptor/s_bend_left_1_4.png create mode 100644 resources/g2/track/raptor/s_bend_left_2_1.png create mode 100644 resources/g2/track/raptor/s_bend_left_2_2.png create mode 100644 resources/g2/track/raptor/s_bend_left_2_3.png create mode 100644 resources/g2/track/raptor/s_bend_left_2_4.png create mode 100644 resources/g2/track/raptor/s_bend_right_1_1.png create mode 100644 resources/g2/track/raptor/s_bend_right_1_2.png create mode 100644 resources/g2/track/raptor/s_bend_right_1_3.png create mode 100644 resources/g2/track/raptor/s_bend_right_1_4.png create mode 100644 resources/g2/track/raptor/s_bend_right_2_1.png create mode 100644 resources/g2/track/raptor/s_bend_right_2_2.png create mode 100644 resources/g2/track/raptor/s_bend_right_2_3.png create mode 100644 resources/g2/track/raptor/s_bend_right_2_4.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_2_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_2_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_3_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_3_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_4.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_3.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_4.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_2_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_2_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_3_1.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_3_2.png create mode 100644 resources/g2/track/raptor/small_flat_to_steep_up_lift_4.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_1_1.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_1_2.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_1_3.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_1_4.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_2_1.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_2_2.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_2_3.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_3_1.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_3_2.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_3_3.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_3_4.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_4_1.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_4_2.png create mode 100644 resources/g2/track/raptor/small_helix_left_up_4_3.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_1_1.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_1_2.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_1_3.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_2_1.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_2_2.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_2_3.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_2_4.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_3_1.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_3_2.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_3_3.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_4_1.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_4_2.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_4_3.png create mode 100644 resources/g2/track/raptor/small_helix_right_up_4_4.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_2_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_2_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_3_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_3_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_4.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_3.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_4.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_2_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_2_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_3_1.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_3_2.png create mode 100644 resources/g2/track/raptor/small_steep_to_flat_up_lift_4.png create mode 100644 resources/g2/track/raptor/small_turn_left_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_1_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_2_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_3_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_4_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_1_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_1_4.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_2_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_3_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_3_4.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_4_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_3.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_left_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_3.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_1_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_1_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_4_1.png create mode 100644 resources/g2/track/raptor/small_turn_right_gentle_up_4_2.png create mode 100644 resources/g2/track/raptor/steep_1.png create mode 100644 resources/g2/track/raptor/steep_2.png create mode 100644 resources/g2/track/raptor/steep_3.png create mode 100644 resources/g2/track/raptor/steep_4.png create mode 100644 resources/g2/track/raptor/steep_diag_1.png create mode 100644 resources/g2/track/raptor/steep_diag_2.png create mode 100644 resources/g2/track/raptor/steep_diag_3.png create mode 100644 resources/g2/track/raptor/steep_diag_4.png create mode 100644 resources/g2/track/raptor/steep_diag_lift_1.png create mode 100644 resources/g2/track/raptor/steep_diag_lift_2.png create mode 100644 resources/g2/track/raptor/steep_diag_lift_3.png create mode 100644 resources/g2/track/raptor/steep_diag_lift_4.png create mode 100644 resources/g2/track/raptor/steep_lift_1.png create mode 100644 resources/g2/track/raptor/steep_lift_2.png create mode 100644 resources/g2/track/raptor/steep_lift_3.png create mode 100644 resources/g2/track/raptor/steep_lift_4.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_1_1.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_1_2.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_1_3.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_1_4.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_2_1.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_2_2.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_2_3.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_2_4.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_3_1.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_3_2.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_3_3.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_3_4.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_4_1.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_4_2.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_4_3.png create mode 100644 resources/g2/track/raptor/steep_to_flat_up_4_4.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_2_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_2_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_3_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_3_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_4.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_3.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_4.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_lift_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_lift_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_lift_3.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_diag_lift_4.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_2_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_2_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_3_1.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_3_2.png create mode 100644 resources/g2/track/raptor/steep_to_gentle_up_lift_4.png create mode 100644 resources/g2/track/raptor/steep_to_vertical_up_1.png create mode 100644 resources/g2/track/raptor/steep_to_vertical_up_2.png create mode 100644 resources/g2/track/raptor/steep_to_vertical_up_3.png create mode 100644 resources/g2/track/raptor/steep_to_vertical_up_4.png create mode 100644 resources/g2/track/raptor/vertical_1.png create mode 100644 resources/g2/track/raptor/vertical_2.png create mode 100644 resources/g2/track/raptor/vertical_3.png create mode 100644 resources/g2/track/raptor/vertical_4.png create mode 100644 resources/g2/track/raptor/vertical_to_steep_up_1.png create mode 100644 resources/g2/track/raptor/vertical_to_steep_up_2.png create mode 100644 resources/g2/track/raptor/vertical_to_steep_up_3.png create mode 100644 resources/g2/track/raptor/vertical_to_steep_up_4.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_1.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_2_1.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_2_2.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_3.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_4_1.png create mode 100644 resources/g2/track/raptor/vertical_twist_left_up_4_2.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_1_1.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_1_2.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_2.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_3_1.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_3_2.png create mode 100644 resources/g2/track/raptor/vertical_twist_right_up_4.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_1_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_1_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_2_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_2_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_3_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_3_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_4_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_left_steep_up_4_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_1_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_1_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_2_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_2_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_3_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_3_2.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_4_1.png create mode 100644 resources/g2/track/raptor/very_small_turn_right_steep_up_4_2.png create mode 100644 src/openrct2/ride/coaster/SingleRailRollerCoaster.cpp create mode 100644 src/openrct2/ride/coaster/meta/SingleRailRollerCoaster.h diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index df74d7f231..72d4eb2437 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -46,6 +46,7 @@ 4C255959244A328B00CE7E45 /* UiExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C255954244A328A00CE7E45 /* UiExtensions.cpp */; }; 4C25595A244A328B00CE7E45 /* CustomWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C255957244A328B00CE7E45 /* CustomWindow.cpp */; }; 4C29DEB3218C6AE500E8707F /* RCT12.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C29DEB2218C6AE500E8707F /* RCT12.cpp */; }; + 4C2BF6C4258FF2FB005CD9A0 /* SingleRailRollerCoaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C2BF6C3258FF2FB005CD9A0 /* SingleRailRollerCoaster.cpp */; }; 4C358E5221C445F700ADE6BC /* ReplayManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C358E5021C445F700ADE6BC /* ReplayManager.cpp */; }; 4C3B4236205914F7000C5BB7 /* InGameConsole.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B4234205914F7000C5BB7 /* InGameConsole.cpp */; }; 4C724B2221F0AD790012ADD0 /* BenchSpriteSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C724B2121F0AD790012ADD0 /* BenchSpriteSort.cpp */; }; @@ -881,6 +882,7 @@ 4C25596E244A330800CE7E45 /* dukexception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dukexception.h; path = src/thirdparty/dukglue/dukexception.h; sourceTree = SOURCE_ROOT; }; 4C25596F244A330800CE7E45 /* detail_typeinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = detail_typeinfo.h; path = src/thirdparty/dukglue/detail_typeinfo.h; sourceTree = SOURCE_ROOT; }; 4C29DEB2218C6AE500E8707F /* RCT12.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RCT12.cpp; sourceTree = ""; }; + 4C2BF6C3258FF2FB005CD9A0 /* SingleRailRollerCoaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SingleRailRollerCoaster.cpp; sourceTree = ""; }; 4C358E5021C445F700ADE6BC /* ReplayManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReplayManager.cpp; sourceTree = ""; }; 4C358E5121C445F700ADE6BC /* ReplayManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReplayManager.h; sourceTree = ""; }; 4C3B4234205914F7000C5BB7 /* InGameConsole.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InGameConsole.cpp; sourceTree = ""; }; @@ -3617,6 +3619,7 @@ 4C93F12E1F8B744400A9330D /* ReverseFreefallCoaster.cpp */, 4C93F12F1F8B744400A9330D /* ReverserRollerCoaster.cpp */, 4C93F1301F8B744400A9330D /* SideFrictionRollerCoaster.cpp */, + 4C2BF6C3258FF2FB005CD9A0 /* SingleRailRollerCoaster.cpp */, 4C93F1311F8B744400A9330D /* StandUpRollerCoaster.cpp */, 4C93F1321F8B744400A9330D /* Steeplechase.cpp */, 4C93F1331F8B744400A9330D /* SuspendedSwingingCoaster.cpp */, @@ -4496,6 +4499,7 @@ C632C81F1F8A445700781F6D /* RideList.cpp in Sources */, C68878C420289B710084B384 /* OpenGLAPI.cpp in Sources */, 933CBDBB20CB1B3F00134678 /* TitleSequencePlayer.cpp in Sources */, + 4C2BF6C4258FF2FB005CD9A0 /* SingleRailRollerCoaster.cpp in Sources */, 930EEA6A24FC00950070314E /* ScenarioSelect.cpp in Sources */, C654DF3C1F69C0430040F43D /* TrackDesignManage.cpp in Sources */, C64645001F3FA4120026AC2D /* ViewClipping.cpp in Sources */, diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index fa8dc310d4..d21a345a05 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -95,6 +95,7 @@ STR_0090 :Mine Ride STR_0091 :Unknown Ride (59) STR_0092 :LIM Launched Roller Coaster STR_0093 :Hybrid Coaster +STR_0094 :Single Rail Roller Coaster STR_0512 :A compact roller coaster with a spiral lift hill and smooth, twisting drops. STR_0513 :A looping roller coaster where the riders ride in a standing position STR_0514 :Trains suspended beneath the roller coaster track swing out to the side around corners @@ -175,6 +176,7 @@ STR_0599 :A compact roller coaster with individual cars and smooth twisting d STR_0600 :Powered mine trains career along a smooth and twisted track layout STR_0602 :Roller coaster trains are accelerated out of the station by linear induction motors to speed through twisting inversions STR_0603 :A wooden style roller coaster with a steel track, allowing for steep drops and inversions. +STR_0604 :Riders ride single file on a narrow monorail track, as they race through tight inversions and direction changes. STR_0767 :Guest {INT32} STR_0768 :Handyman {INT32} STR_0769 :Mechanic {INT32} diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 7ce02a1e92..a8a3794242 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -14,6 +14,7 @@ - Feature: [#13512] [Plugin] Add item separators to list view. - Feature: [#13583] [Plugin] Add allowed_hosts to plugin section of config. - Feature: [#13593] [Plugin] Add ability to read and change the position of ride vehicles. +- Feature: [#13613] Add single-rail roller coaster (Rocky Mountain Construction Raptor). - Feature: [#13614] Add terrain surfaces from RollerCoaster Tycoon 1. - Feature: [#13675] [Plugin] Add context.setInterval and context.setTimeout. - Change: [#13346] [Plugin] Renamed FootpathScenery to FootpathAddition, fix typos. diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index 672959f408..0cf8334f1e 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -7219,5 +7219,4405 @@ "x_offset": -24, "y_offset": -78, "palette": "keep" + }, + { + "path": "track/raptor/preview_track.png", + "x_offset": 9, + "y_offset": 3 + }, + { + "path": "track/raptor/preview_support.png", + "x_offset": 24, + "y_offset": 13 + }, + { + "path": "track/raptor/flat_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/brake_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/brake_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/block_brake_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/block_brake_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_3.png", + "x_offset": -19, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_4.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_flat_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_flat_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_flat_3.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_flat_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_1.png", + "x_offset": -18, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_3.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_4.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_1.png", + "x_offset": -18, + "y_offset": -30 + }, + { + "path": "track/raptor/gentle_to_steep_up_2_1.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_to_steep_up_2_2.png", + "x_offset": -17, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_3_1.png", + "x_offset": 2, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_to_steep_up_3_2.png", + "x_offset": -21, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_4.png", + "x_offset": -21, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_to_gentle_up_1.png", + "x_offset": -18, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_to_gentle_up_2_1.png", + "x_offset": -5, + "y_offset": -15 + }, + { + "path": "track/raptor/steep_to_gentle_up_2_2.png", + "x_offset": -18, + "y_offset": -10 + }, + { + "path": "track/raptor/steep_to_gentle_up_3_1.png", + "x_offset": -19, + "y_offset": -15 + }, + { + "path": "track/raptor/steep_to_gentle_up_3_2.png", + "x_offset": -12, + "y_offset": -10 + }, + { + "path": "track/raptor/steep_to_gentle_up_4.png", + "x_offset": -19, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_1.png", + "x_offset": -18, + "y_offset": -62 + }, + { + "path": "track/raptor/steep_2.png", + "x_offset": -18, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_3.png", + "x_offset": -21, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_4.png", + "x_offset": -21, + "y_offset": -62 + }, + { + "path": "track/raptor/steep_to_vertical_up_1.png", + "x_offset": -18, + "y_offset": -48 + }, + { + "path": "track/raptor/steep_to_vertical_up_2.png", + "x_offset": -18, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_to_vertical_up_3.png", + "x_offset": -6, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_to_vertical_up_4.png", + "x_offset": -6, + "y_offset": -48 + }, + { + "path": "track/raptor/vertical_to_steep_up_1.png", + "x_offset": -2, + "y_offset": -54 + }, + { + "path": "track/raptor/vertical_to_steep_up_2.png", + "x_offset": -2, + "y_offset": -38 + }, + { + "path": "track/raptor/vertical_to_steep_up_3.png", + "x_offset": -21, + "y_offset": -38 + }, + { + "path": "track/raptor/vertical_to_steep_up_4.png", + "x_offset": -21, + "y_offset": -54 + }, + { + "path": "track/raptor/vertical_1.png", + "x_offset": -2, + "y_offset": -24 + }, + { + "path": "track/raptor/vertical_2.png", + "x_offset": -2, + "y_offset": -22 + }, + { + "path": "track/raptor/vertical_3.png", + "x_offset": -6, + "y_offset": -22 + }, + { + "path": "track/raptor/vertical_4.png", + "x_offset": -6, + "y_offset": -24 + }, + { + "path": "track/raptor/small_turn_left_1_1.png", + "x_offset": -18, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_1_2.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_1_3.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_2_2.png", + "x_offset": -4, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_2_3.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_3_1.png", + "x_offset": -4, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_3_2.png", + "x_offset": 25, + "y_offset": 1 + }, + { + "path": "track/raptor/small_turn_left_3_3.png", + "x_offset": -7, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_4_1.png", + "x_offset": -28, + "y_offset": 7 + }, + { + "path": "track/raptor/small_turn_left_4_2.png", + "x_offset": -8, + "y_offset": 23 + }, + { + "path": "track/raptor/small_turn_left_4_3.png", + "x_offset": -18, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_turn_left_1_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_1_2.png", + "x_offset": -28, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_1_3.png", + "x_offset": 9, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_1_4.png", + "x_offset": -24, + "y_offset": 9 + }, + { + "path": "track/raptor/medium_turn_left_1_5.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_2_2.png", + "x_offset": -10, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_2_3.png", + "x_offset": -32, + "y_offset": 15 + }, + { + "path": "track/raptor/medium_turn_left_2_4.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_2_5.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_3_1.png", + "x_offset": -14, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_3_2.png", + "x_offset": 12, + "y_offset": 9 + }, + { + "path": "track/raptor/medium_turn_left_3_3.png", + "x_offset": -20, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_3_4.png", + "x_offset": 13, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_3_5.png", + "x_offset": -11, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_4_1.png", + "x_offset": -23, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_4_2.png", + "x_offset": -30, + "y_offset": 16 + }, + { + "path": "track/raptor/medium_turn_left_4_3.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_4_4.png", + "x_offset": -18, + "y_offset": 16 + }, + { + "path": "track/raptor/medium_turn_left_4_5.png", + "x_offset": -18, + "y_offset": 6 + }, + { + "path": "track/raptor/large_turn_left_to_diag_1_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_left_to_diag_1_2.png", + "x_offset": -26, + "y_offset": 1 + }, + { + "path": "track/raptor/large_turn_left_to_diag_1_3.png", + "x_offset": 17, + "y_offset": 12 + }, + { + "path": "track/raptor/large_turn_left_to_diag_1_4.png", + "x_offset": -8, + "y_offset": 10 + }, + { + "path": "track/raptor/large_turn_left_to_diag_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_left_to_diag_2_2.png", + "x_offset": -12, + "y_offset": 1 + }, + { + "path": "track/raptor/large_turn_left_to_diag_2_3.png", + "x_offset": -24, + "y_offset": 19 + }, + { + "path": "track/raptor/large_turn_left_to_diag_2_4.png", + "x_offset": -30, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_left_to_diag_3_1.png", + "x_offset": -16, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_left_to_diag_3_2.png", + "x_offset": -1, + "y_offset": 7 + }, + { + "path": "track/raptor/large_turn_left_to_diag_3_3.png", + "x_offset": -32, + "y_offset": 11 + }, + { + "path": "track/raptor/large_turn_left_to_diag_3_4.png", + "x_offset": -3, + "y_offset": -1 + }, + { + "path": "track/raptor/large_turn_left_to_diag_4_1.png", + "x_offset": -21, + "y_offset": 6 + }, + { + "path": "track/raptor/large_turn_left_to_diag_4_2.png", + "x_offset": -32, + "y_offset": 11 + }, + { + "path": "track/raptor/large_turn_left_to_diag_4_3.png", + "x_offset": -4, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_left_to_diag_4_4.png", + "x_offset": 0, + "y_offset": 9 + }, + { + "path": "track/raptor/large_turn_right_to_diag_1_1.png", + "x_offset": -18, + "y_offset": 6 + }, + { + "path": "track/raptor/large_turn_right_to_diag_1_2.png", + "x_offset": -20, + "y_offset": 11 + }, + { + "path": "track/raptor/large_turn_right_to_diag_1_3.png", + "x_offset": -6, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_right_to_diag_1_4.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/large_turn_right_to_diag_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_right_to_diag_2_2.png", + "x_offset": -22, + "y_offset": 7 + }, + { + "path": "track/raptor/large_turn_right_to_diag_2_3.png", + "x_offset": 23, + "y_offset": 11 + }, + { + "path": "track/raptor/large_turn_right_to_diag_2_4.png", + "x_offset": -5, + "y_offset": -1 + }, + { + "path": "track/raptor/large_turn_right_to_diag_3_1.png", + "x_offset": -29, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_right_to_diag_3_2.png", + "x_offset": -28, + "y_offset": 1 + }, + { + "path": "track/raptor/large_turn_right_to_diag_3_3.png", + "x_offset": -14, + "y_offset": 19 + }, + { + "path": "track/raptor/large_turn_right_to_diag_3_4.png", + "x_offset": 0, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_right_to_diag_4_1.png", + "x_offset": -12, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_right_to_diag_4_2.png", + "x_offset": 2, + "y_offset": 1 + }, + { + "path": "track/raptor/large_turn_right_to_diag_4_3.png", + "x_offset": -31, + "y_offset": 12 + }, + { + "path": "track/raptor/large_turn_right_to_diag_4_4.png", + "x_offset": -3, + "y_offset": 10 + }, + { + "path": "track/raptor/flat_diag_1.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_diag_3.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_diag_4.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_3.png", + "x_offset": -33, + "y_offset": 1 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_4.png", + "x_offset": -3, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_3.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_4.png", + "x_offset": -3, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_diag_1.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/gentle_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_diag_3.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/gentle_diag_4.png", + "x_offset": -3, + "y_offset": -22 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_1.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_3.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_4.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_1.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_2.png", + "x_offset": -3, + "y_offset": -11 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_3.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_4.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_diag_1.png", + "x_offset": -32, + "y_offset": -55 + }, + { + "path": "track/raptor/steep_diag_2.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_diag_3.png", + "x_offset": -32, + "y_offset": -55 + }, + { + "path": "track/raptor/steep_diag_4.png", + "x_offset": -3, + "y_offset": -70 + }, + { + "path": "track/raptor/flat_to_left_bank_1_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_left_bank_1_2.png", + "x_offset": 1, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_left_bank_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_left_bank_2_2.png", + "x_offset": -17, + "y_offset": 8 + }, + { + "path": "track/raptor/flat_to_left_bank_3.png", + "x_offset": -19, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_left_bank_4.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/flat_to_right_bank_1.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/flat_to_right_bank_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_right_bank_3_1.png", + "x_offset": -13, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_right_bank_3_2.png", + "x_offset": -17, + "y_offset": 8 + }, + { + "path": "track/raptor/flat_to_right_bank_4_1.png", + "x_offset": -16, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_right_bank_4_2.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_1_1.png", + "x_offset": -13, + "y_offset": -6 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_1_2.png", + "x_offset": -17, + "y_offset": 7 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_2_1.png", + "x_offset": -16, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_2_2.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_3.png", + "x_offset": -19, + "y_offset": 0 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_4.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_1.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_3_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_3_2.png", + "x_offset": -5, + "y_offset": 2 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_4_1.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_4_2.png", + "x_offset": -10, + "y_offset": 7 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_1_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_1_2.png", + "x_offset": 3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_2_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_2_2.png", + "x_offset": -16, + "y_offset": 4 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_3.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_4.png", + "x_offset": -17, + "y_offset": -8 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_1.png", + "x_offset": -18, + "y_offset": -8 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_3_1.png", + "x_offset": -13, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_3_2.png", + "x_offset": -17, + "y_offset": 4 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_4_1.png", + "x_offset": -17, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_4_2.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/left_bank_1.png", + "x_offset": -17, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_2.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_3.png", + "x_offset": -19, + "y_offset": 0 + }, + { + "path": "track/raptor/left_bank_4.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/flat_to_left_bank_diag_1_1.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_to_left_bank_diag_1_2.png", + "x_offset": -30, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_to_left_bank_diag_2.png", + "x_offset": -5, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_left_bank_diag_3.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/flat_to_left_bank_diag_4.png", + "x_offset": -3, + "y_offset": -7 + }, + { + "path": "track/raptor/flat_to_right_bank_diag_1.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/flat_to_right_bank_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_right_bank_diag_3_1.png", + "x_offset": -31, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_to_right_bank_diag_3_2.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_to_right_bank_diag_4.png", + "x_offset": -6, + "y_offset": -7 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_diag_1_1.png", + "x_offset": -31, + "y_offset": 1 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_diag_1_2.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_diag_2.png", + "x_offset": -6, + "y_offset": -7 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_diag_3.png", + "x_offset": -33, + "y_offset": 1 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_diag_4.png", + "x_offset": -3, + "y_offset": -14 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_diag_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_diag_2.png", + "x_offset": -3, + "y_offset": -7 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_diag_3_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_diag_3_2.png", + "x_offset": -31, + "y_offset": 8 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_diag_4.png", + "x_offset": -5, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_diag_1_1.png", + "x_offset": -32, + "y_offset": 3 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_diag_1_2.png", + "x_offset": -31, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_diag_2.png", + "x_offset": -5, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_diag_3.png", + "x_offset": -32, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_to_left_bank_diag_4.png", + "x_offset": -3, + "y_offset": -15 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_diag_1.png", + "x_offset": -32, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_diag_3_1.png", + "x_offset": -31, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_diag_3_2.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_right_bank_diag_4.png", + "x_offset": -6, + "y_offset": -15 + }, + { + "path": "track/raptor/left_bank_diag_1.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/left_bank_diag_2.png", + "x_offset": -6, + "y_offset": -7 + }, + { + "path": "track/raptor/left_bank_diag_3.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/left_bank_diag_4.png", + "x_offset": -2, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_left_bank_1_1.png", + "x_offset": -5, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_bank_1_2.png", + "x_offset": -17, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_bank_1_3.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_bank_1_4.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_bank_2_1.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_bank_2_2.png", + "x_offset": -4, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_bank_2_3.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/small_turn_left_bank_3_1.png", + "x_offset": -6, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_bank_3_2.png", + "x_offset": 23, + "y_offset": 1 + }, + { + "path": "track/raptor/small_turn_left_bank_3_3.png", + "x_offset": -8, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_bank_3_4.png", + "x_offset": -9, + "y_offset": -1 + }, + { + "path": "track/raptor/small_turn_left_bank_4_1.png", + "x_offset": -26, + "y_offset": 6 + }, + { + "path": "track/raptor/small_turn_left_bank_4_2.png", + "x_offset": -8, + "y_offset": 22 + }, + { + "path": "track/raptor/small_turn_left_bank_4_3.png", + "x_offset": -19, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_1.png", + "x_offset": 3, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_2.png", + "x_offset": -17, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_3.png", + "x_offset": -26, + "y_offset": 5 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_4.png", + "x_offset": 12, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_5.png", + "x_offset": -22, + "y_offset": 8 + }, + { + "path": "track/raptor/medium_turn_left_bank_1_6.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_2_1.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_bank_2_2.png", + "x_offset": -10, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_2_3.png", + "x_offset": -30, + "y_offset": 16 + }, + { + "path": "track/raptor/medium_turn_left_bank_2_4.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_2_5.png", + "x_offset": -30, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_1.png", + "x_offset": -15, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_2.png", + "x_offset": 9, + "y_offset": 8 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_3.png", + "x_offset": -23, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_4.png", + "x_offset": 11, + "y_offset": 5 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_5.png", + "x_offset": -6, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_left_bank_3_6.png", + "x_offset": -11, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_left_bank_4_1.png", + "x_offset": -20, + "y_offset": 5 + }, + { + "path": "track/raptor/medium_turn_left_bank_4_2.png", + "x_offset": -32, + "y_offset": 15 + }, + { + "path": "track/raptor/medium_turn_left_bank_4_3.png", + "x_offset": -12, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_4_4.png", + "x_offset": -20, + "y_offset": 15 + }, + { + "path": "track/raptor/medium_turn_left_bank_4_5.png", + "x_offset": -19, + "y_offset": 5 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_1_1.png", + "x_offset": -17, + "y_offset": 3 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_1_2.png", + "x_offset": -24, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_1_3.png", + "x_offset": 21, + "y_offset": 13 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_1_4.png", + "x_offset": -11, + "y_offset": 9 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_2_1.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_2_2.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_2_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_2_4.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_3_1.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_3_2.png", + "x_offset": -2, + "y_offset": 7 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_3_3.png", + "x_offset": -32, + "y_offset": 13 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_3_4.png", + "x_offset": -5, + "y_offset": -2 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_4_1.png", + "x_offset": -18, + "y_offset": 5 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_4_2.png", + "x_offset": -32, + "y_offset": 10 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_4_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_left_to_diag_bank_4_4.png", + "x_offset": 0, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_1_1.png", + "x_offset": -19, + "y_offset": 5 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_1_2.png", + "x_offset": -20, + "y_offset": 10 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_1_3.png", + "x_offset": -2, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_1_4.png", + "x_offset": -32, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_2_1.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_2_2.png", + "x_offset": -20, + "y_offset": 7 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_2_3.png", + "x_offset": 26, + "y_offset": 13 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_2_4.png", + "x_offset": -4, + "y_offset": -2 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_3_1.png", + "x_offset": -28, + "y_offset": 2 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_3_2.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_3_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_3_4.png", + "x_offset": 0, + "y_offset": 8 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_4_1.png", + "x_offset": -27, + "y_offset": -10 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_4_2.png", + "x_offset": 1, + "y_offset": 0 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_4_3.png", + "x_offset": -32, + "y_offset": 13 + }, + { + "path": "track/raptor/large_turn_right_to_diag_bank_4_4.png", + "x_offset": -6, + "y_offset": 9 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_1_1.png", + "x_offset": -24, + "y_offset": -32 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_1_2.png", + "x_offset": -13, + "y_offset": -17 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_2_1.png", + "x_offset": -12, + "y_offset": -8 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_2_2.png", + "x_offset": -38, + "y_offset": -17 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_3_1.png", + "x_offset": -13, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_3_2.png", + "x_offset": -1, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_4_1.png", + "x_offset": -26, + "y_offset": -12 + }, + { + "path": "track/raptor/small_turn_left_gentle_up_4_2.png", + "x_offset": -25, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_1_1.png", + "x_offset": -24, + "y_offset": -12 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_1_2.png", + "x_offset": -26, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_2_1.png", + "x_offset": -12, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_2_2.png", + "x_offset": -25, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_3_1.png", + "x_offset": -38, + "y_offset": -8 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_3_2.png", + "x_offset": -13, + "y_offset": -17 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_4_1.png", + "x_offset": -1, + "y_offset": -25 + }, + { + "path": "track/raptor/small_turn_right_gentle_up_4_2.png", + "x_offset": -13, + "y_offset": -17 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_1_1.png", + "x_offset": -18, + "y_offset": -15 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_1_2.png", + "x_offset": -27, + "y_offset": -11 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_1_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_1_4.png", + "x_offset": -27, + "y_offset": -8 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_1_5.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_2_1.png", + "x_offset": -18, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_2_2.png", + "x_offset": 0, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_2_3.png", + "x_offset": 0, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_2_4.png", + "x_offset": -12, + "y_offset": -21 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_2_5.png", + "x_offset": -17, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_3_1.png", + "x_offset": -20, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_3_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_3_3.png", + "x_offset": -20, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_3_4.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_3_5.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_4_1.png", + "x_offset": -26, + "y_offset": -12 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_4_2.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_4_3.png", + "x_offset": -18, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_4_4.png", + "x_offset": -16, + "y_offset": 4 + }, + { + "path": "track/raptor/medium_turn_left_gentle_up_4_5.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_1_1.png", + "x_offset": -18, + "y_offset": -12 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_1_2.png", + "x_offset": -10, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_1_3.png", + "x_offset": 0, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_1_4.png", + "x_offset": -16, + "y_offset": 4 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_1_5.png", + "x_offset": -21, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_2_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_2_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_2_3.png", + "x_offset": 0, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_2_4.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_2_5.png", + "x_offset": -19, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_3_1.png", + "x_offset": -32, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_3_2.png", + "x_offset": -32, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_3_3.png", + "x_offset": -26, + "y_offset": -1 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_3_4.png", + "x_offset": -22, + "y_offset": -24 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_3_5.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_4_1.png", + "x_offset": -12, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_4_2.png", + "x_offset": 12, + "y_offset": -11 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_4_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_4_4.png", + "x_offset": 12, + "y_offset": -7 + }, + { + "path": "track/raptor/medium_turn_right_gentle_up_4_5.png", + "x_offset": -13, + "y_offset": -14 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_1_1.png", + "x_offset": -21, + "y_offset": -62 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_1_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_2_1.png", + "x_offset": -10, + "y_offset": -62 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_2_2.png", + "x_offset": -18, + "y_offset": -31 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_3_1.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_3_2.png", + "x_offset": 6, + "y_offset": -46 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_4_1.png", + "x_offset": -9, + "y_offset": -33 + }, + { + "path": "track/raptor/very_small_turn_left_steep_up_4_2.png", + "x_offset": -21, + "y_offset": -46 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_1_1.png", + "x_offset": -18, + "y_offset": -24 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_1_2.png", + "x_offset": 0, + "y_offset": -46 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_2_1.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_2_2.png", + "x_offset": -21, + "y_offset": -46 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_3_1.png", + "x_offset": -21, + "y_offset": -62 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_3_2.png", + "x_offset": -10, + "y_offset": -33 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_4_1.png", + "x_offset": 6, + "y_offset": -62 + }, + { + "path": "track/raptor/very_small_turn_right_steep_up_4_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/vertical_twist_left_up_1.png", + "x_offset": -6, + "y_offset": -88 + }, + { + "path": "track/raptor/vertical_twist_left_up_2_1.png", + "x_offset": -2, + "y_offset": -88 + }, + { + "path": "track/raptor/vertical_twist_left_up_2_2.png", + "x_offset": -2, + "y_offset": -41 + }, + { + "path": "track/raptor/vertical_twist_left_up_3.png", + "x_offset": -6, + "y_offset": -86 + }, + { + "path": "track/raptor/vertical_twist_left_up_4_1.png", + "x_offset": -6, + "y_offset": -40 + }, + { + "path": "track/raptor/vertical_twist_left_up_4_2.png", + "x_offset": -6, + "y_offset": -86 + }, + { + "path": "track/raptor/vertical_twist_right_up_1_1.png", + "x_offset": -2, + "y_offset": -41 + }, + { + "path": "track/raptor/vertical_twist_right_up_1_2.png", + "x_offset": -2, + "y_offset": -86 + }, + { + "path": "track/raptor/vertical_twist_right_up_2.png", + "x_offset": -6, + "y_offset": -86 + }, + { + "path": "track/raptor/vertical_twist_right_up_3_1.png", + "x_offset": -6, + "y_offset": -88 + }, + { + "path": "track/raptor/vertical_twist_right_up_3_2.png", + "x_offset": -6, + "y_offset": -41 + }, + { + "path": "track/raptor/vertical_twist_right_up_4.png", + "x_offset": -6, + "y_offset": -88 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_left_bank_1.png", + "x_offset": -18, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_left_bank_2_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_left_bank_2_2.png", + "x_offset": -17, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_left_bank_3.png", + "x_offset": -20, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_left_bank_4.png", + "x_offset": -18, + "y_offset": -15 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_right_bank_1.png", + "x_offset": -18, + "y_offset": -15 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_right_bank_2.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_right_bank_3_1.png", + "x_offset": -9, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_right_bank_3_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_gentle_up_right_bank_4.png", + "x_offset": -20, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_gentle_up_1.png", + "x_offset": -17, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_gentle_up_2_1.png", + "x_offset": -16, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_gentle_up_2_2.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_gentle_up_3.png", + "x_offset": -19, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_gentle_up_4.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_gentle_up_1.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_gentle_up_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_gentle_up_3_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_gentle_up_3_2.png", + "x_offset": 0, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_gentle_up_4.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_left_bank_1.png", + "x_offset": -17, + "y_offset": -6 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_left_bank_2.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_left_bank_3.png", + "x_offset": -20, + "y_offset": 0 + }, + { + "path": "track/raptor/left_bank_to_gentle_up_left_bank_4.png", + "x_offset": -18, + "y_offset": -7 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_right_bank_1.png", + "x_offset": -19, + "y_offset": -7 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_right_bank_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_right_bank_3.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/right_bank_to_gentle_up_right_bank_4.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_left_bank_1.png", + "x_offset": -16, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_left_bank_2.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_left_bank_3.png", + "x_offset": -19, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_left_bank_4.png", + "x_offset": -17, + "y_offset": -8 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_right_bank_1.png", + "x_offset": -19, + "y_offset": -8 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_right_bank_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_right_bank_3.png", + "x_offset": -17, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_right_bank_4.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_left_bank_1.png", + "x_offset": -16, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_up_left_bank_2.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_3.png", + "x_offset": -20, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_left_bank_4.png", + "x_offset": -18, + "y_offset": -15 + }, + { + "path": "track/raptor/gentle_up_right_bank_1.png", + "x_offset": -19, + "y_offset": -15 + }, + { + "path": "track/raptor/gentle_up_right_bank_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_right_bank_3.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_right_bank_4.png", + "x_offset": -20, + "y_offset": -14 + }, + { + "path": "track/raptor/flat_to_gentle_up_left_bank_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_left_bank_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_left_bank_2_2.png", + "x_offset": -17, + "y_offset": 7 + }, + { + "path": "track/raptor/flat_to_gentle_up_left_bank_3.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_left_bank_4.png", + "x_offset": -18, + "y_offset": -7 + }, + { + "path": "track/raptor/flat_to_gentle_up_right_bank_1.png", + "x_offset": -18, + "y_offset": -7 + }, + { + "path": "track/raptor/flat_to_gentle_up_right_bank_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_right_bank_3_1.png", + "x_offset": -3, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_right_bank_3_2.png", + "x_offset": -18, + "y_offset": 7 + }, + { + "path": "track/raptor/flat_to_gentle_up_right_bank_4.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_flat_1.png", + "x_offset": -17, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_flat_2_1.png", + "x_offset": -16, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_flat_2_2.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_flat_3.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_left_bank_to_flat_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_flat_1.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_flat_2.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_flat_3_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_flat_3_2.png", + "x_offset": -3, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_right_bank_to_flat_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_1_1.png", + "x_offset": -23, + "y_offset": -32 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_1_2.png", + "x_offset": -12, + "y_offset": -18 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_2_1.png", + "x_offset": -13, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_2_2.png", + "x_offset": -38, + "y_offset": -17 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_3_1.png", + "x_offset": -15, + "y_offset": -3 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_3_2.png", + "x_offset": -3, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_4_1.png", + "x_offset": -26, + "y_offset": -13 + }, + { + "path": "track/raptor/small_turn_left_bank_gentle_up_4_2.png", + "x_offset": -26, + "y_offset": -4 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_1_1.png", + "x_offset": -25, + "y_offset": -13 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_1_2.png", + "x_offset": -26, + "y_offset": -4 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_2_1.png", + "x_offset": -11, + "y_offset": -3 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_2_2.png", + "x_offset": -24, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_3_1.png", + "x_offset": -38, + "y_offset": -7 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_3_2.png", + "x_offset": -14, + "y_offset": -17 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_4_1.png", + "x_offset": -3, + "y_offset": -25 + }, + { + "path": "track/raptor/small_turn_right_bank_gentle_up_4_2.png", + "x_offset": -15, + "y_offset": -18 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_1_1.png", + "x_offset": -17, + "y_offset": -15 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_1_2.png", + "x_offset": -25, + "y_offset": -11 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_1_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_1_4.png", + "x_offset": -25, + "y_offset": -8 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_1_5.png", + "x_offset": -18, + "y_offset": -15 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_2_1.png", + "x_offset": -19, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_2_2.png", + "x_offset": 0, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_2_3.png", + "x_offset": 0, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_2_4.png", + "x_offset": -11, + "y_offset": -21 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_2_5.png", + "x_offset": -16, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_3_1.png", + "x_offset": -22, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_3_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_3_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_3_4.png", + "x_offset": 11, + "y_offset": -2 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_3_5.png", + "x_offset": -15, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_4_1.png", + "x_offset": -24, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_4_2.png", + "x_offset": -32, + "y_offset": -1 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_4_3.png", + "x_offset": -18, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_4_4.png", + "x_offset": -16, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_left_bank_gentle_up_4_5.png", + "x_offset": -20, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_1_1.png", + "x_offset": -19, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_1_2.png", + "x_offset": -11, + "y_offset": -1 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_1_3.png", + "x_offset": 0, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_1_4.png", + "x_offset": -16, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_1_5.png", + "x_offset": -20, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_2_1.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_2_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_2_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_2_4.png", + "x_offset": -32, + "y_offset": -2 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_2_5.png", + "x_offset": -18, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_3_1.png", + "x_offset": -32, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_3_2.png", + "x_offset": -32, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_3_3.png", + "x_offset": -26, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_3_4.png", + "x_offset": -22, + "y_offset": -22 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_3_5.png", + "x_offset": -20, + "y_offset": -14 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_4_1.png", + "x_offset": -13, + "y_offset": -13 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_4_2.png", + "x_offset": 10, + "y_offset": -11 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_4_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_4_4.png", + "x_offset": 9, + "y_offset": -7 + }, + { + "path": "track/raptor/medium_turn_right_bank_gentle_up_4_5.png", + "x_offset": -15, + "y_offset": -15 + }, + { + "path": "track/raptor/s_bend_left_1_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/s_bend_left_1_2.png", + "x_offset": -26, + "y_offset": 6 + }, + { + "path": "track/raptor/s_bend_left_1_3.png", + "x_offset": 11, + "y_offset": 8 + }, + { + "path": "track/raptor/s_bend_left_1_4.png", + "x_offset": -15, + "y_offset": 2 + }, + { + "path": "track/raptor/s_bend_left_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/s_bend_left_2_2.png", + "x_offset": -10, + "y_offset": 0 + }, + { + "path": "track/raptor/s_bend_left_2_3.png", + "x_offset": -30, + "y_offset": 16 + }, + { + "path": "track/raptor/s_bend_left_2_4.png", + "x_offset": -22, + "y_offset": 6 + }, + { + "path": "track/raptor/s_bend_right_1_1.png", + "x_offset": -18, + "y_offset": 6 + }, + { + "path": "track/raptor/s_bend_right_1_2.png", + "x_offset": -19, + "y_offset": 16 + }, + { + "path": "track/raptor/s_bend_right_1_3.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/s_bend_right_1_4.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/s_bend_right_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/s_bend_right_2_2.png", + "x_offset": -23, + "y_offset": 8 + }, + { + "path": "track/raptor/s_bend_right_2_3.png", + "x_offset": 13, + "y_offset": 6 + }, + { + "path": "track/raptor/s_bend_right_2_4.png", + "x_offset": -12, + "y_offset": 2 + }, + { + "path": "track/raptor/small_helix_left_up_1_1.png", + "x_offset": -6, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_left_up_1_2.png", + "x_offset": -17, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_left_up_1_3.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/small_helix_left_up_1_4.png", + "x_offset": -17, + "y_offset": -8 + }, + { + "path": "track/raptor/small_helix_left_up_2_1.png", + "x_offset": -19, + "y_offset": 2 + }, + { + "path": "track/raptor/small_helix_left_up_2_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_left_up_2_3.png", + "x_offset": -32, + "y_offset": -6 + }, + { + "path": "track/raptor/small_helix_left_up_3_1.png", + "x_offset": -7, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_left_up_3_2.png", + "x_offset": 23, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_left_up_3_3.png", + "x_offset": -2, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_left_up_3_4.png", + "x_offset": -7, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_left_up_4_1.png", + "x_offset": -26, + "y_offset": 2 + }, + { + "path": "track/raptor/small_helix_left_up_4_2.png", + "x_offset": -8, + "y_offset": 17 + }, + { + "path": "track/raptor/small_helix_left_up_4_3.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/small_helix_right_up_1_1.png", + "x_offset": -19, + "y_offset": 2 + }, + { + "path": "track/raptor/small_helix_right_up_1_2.png", + "x_offset": -6, + "y_offset": 17 + }, + { + "path": "track/raptor/small_helix_right_up_1_3.png", + "x_offset": -26, + "y_offset": 1 + }, + { + "path": "track/raptor/small_helix_right_up_2_1.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_right_up_2_2.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/small_helix_right_up_2_3.png", + "x_offset": -2, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_right_up_2_4.png", + "x_offset": -17, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_right_up_3_1.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/small_helix_right_up_3_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_right_up_3_3.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/small_helix_right_up_4_1.png", + "x_offset": -6, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_right_up_4_2.png", + "x_offset": -8, + "y_offset": -1 + }, + { + "path": "track/raptor/small_helix_right_up_4_3.png", + "x_offset": 23, + "y_offset": 0 + }, + { + "path": "track/raptor/small_helix_right_up_4_4.png", + "x_offset": -8, + "y_offset": -8 + }, + { + "path": "track/raptor/medium_helix_left_up_1_1.png", + "x_offset": -1, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_helix_left_up_1_2.png", + "x_offset": -17, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_helix_left_up_1_3.png", + "x_offset": -27, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_helix_left_up_1_4.png", + "x_offset": 10, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_left_up_1_5.png", + "x_offset": -20, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_left_up_1_6.png", + "x_offset": -17, + "y_offset": -8 + }, + { + "path": "track/raptor/medium_helix_left_up_2_1.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_helix_left_up_2_2.png", + "x_offset": -6, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_left_up_2_3.png", + "x_offset": -32, + "y_offset": 10 + }, + { + "path": "track/raptor/medium_helix_left_up_2_4.png", + "x_offset": -4, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_left_up_2_5.png", + "x_offset": -32, + "y_offset": -6 + }, + { + "path": "track/raptor/medium_helix_left_up_3_1.png", + "x_offset": -16, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_left_up_3_2.png", + "x_offset": 9, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_left_up_3_3.png", + "x_offset": -22, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_left_up_3_4.png", + "x_offset": 15, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_left_up_3_5.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_left_up_3_6.png", + "x_offset": -6, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_left_up_4_1.png", + "x_offset": -18, + "y_offset": 4 + }, + { + "path": "track/raptor/medium_helix_left_up_4_2.png", + "x_offset": -32, + "y_offset": 12 + }, + { + "path": "track/raptor/medium_helix_left_up_4_3.png", + "x_offset": -8, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_helix_left_up_4_4.png", + "x_offset": -28, + "y_offset": 11 + }, + { + "path": "track/raptor/medium_helix_left_up_4_5.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_helix_right_up_1_1.png", + "x_offset": -19, + "y_offset": 4 + }, + { + "path": "track/raptor/medium_helix_right_up_1_2.png", + "x_offset": -22, + "y_offset": 12 + }, + { + "path": "track/raptor/medium_helix_right_up_1_3.png", + "x_offset": -8, + "y_offset": -5 + }, + { + "path": "track/raptor/medium_helix_right_up_1_4.png", + "x_offset": -32, + "y_offset": 11 + }, + { + "path": "track/raptor/medium_helix_right_up_1_5.png", + "x_offset": -12, + "y_offset": 1 + }, + { + "path": "track/raptor/medium_helix_right_up_2_1.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_right_up_2_2.png", + "x_offset": -21, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_right_up_2_3.png", + "x_offset": 7, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_right_up_2_4.png", + "x_offset": -30, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_right_up_2_5.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_right_up_2_6.png", + "x_offset": -17, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_right_up_3_1.png", + "x_offset": -32, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_helix_right_up_3_2.png", + "x_offset": -10, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_right_up_3_3.png", + "x_offset": -32, + "y_offset": 10 + }, + { + "path": "track/raptor/medium_helix_right_up_3_4.png", + "x_offset": -2, + "y_offset": 0 + }, + { + "path": "track/raptor/medium_helix_right_up_3_5.png", + "x_offset": -20, + "y_offset": -6 + }, + { + "path": "track/raptor/medium_helix_right_up_4_1.png", + "x_offset": -6, + "y_offset": 2 + }, + { + "path": "track/raptor/medium_helix_right_up_4_2.png", + "x_offset": -10, + "y_offset": 3 + }, + { + "path": "track/raptor/medium_helix_right_up_4_3.png", + "x_offset": 13, + "y_offset": 6 + }, + { + "path": "track/raptor/medium_helix_right_up_4_4.png", + "x_offset": -22, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_right_up_4_5.png", + "x_offset": 9, + "y_offset": 7 + }, + { + "path": "track/raptor/medium_helix_right_up_4_6.png", + "x_offset": -18, + "y_offset": -8 + }, + { + "path": "track/raptor/barrel_roll_left_1_1.png", + "x_offset": -18, + "y_offset": 8 + }, + { + "path": "track/raptor/barrel_roll_left_1_2.png", + "x_offset": -5, + "y_offset": 6 + }, + { + "path": "track/raptor/barrel_roll_left_1_3.png", + "x_offset": -21, + "y_offset": 22 + }, + { + "path": "track/raptor/barrel_roll_left_1_4.png", + "x_offset": -20, + "y_offset": -12 + }, + { + "path": "track/raptor/barrel_roll_left_1_5.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_left_1_6.png", + "x_offset": -9, + "y_offset": -21 + }, + { + "path": "track/raptor/barrel_roll_left_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/barrel_roll_left_2_2.png", + "x_offset": -17, + "y_offset": 8 + }, + { + "path": "track/raptor/barrel_roll_left_2_3.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_left_2_4.png", + "x_offset": -28, + "y_offset": -2 + }, + { + "path": "track/raptor/barrel_roll_left_2_5.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_left_2_6.png", + "x_offset": -32, + "y_offset": -13 + }, + { + "path": "track/raptor/barrel_roll_left_3_1.png", + "x_offset": -28, + "y_offset": 1 + }, + { + "path": "track/raptor/barrel_roll_left_3_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_left_3_3.png", + "x_offset": -26, + "y_offset": -8 + }, + { + "path": "track/raptor/barrel_roll_left_3_4.png", + "x_offset": -27, + "y_offset": -6 + }, + { + "path": "track/raptor/barrel_roll_left_3_5.png", + "x_offset": 2, + "y_offset": -14 + }, + { + "path": "track/raptor/barrel_roll_left_3_6.png", + "x_offset": -18, + "y_offset": -19 + }, + { + "path": "track/raptor/barrel_roll_left_4_1.png", + "x_offset": -11, + "y_offset": -9 + }, + { + "path": "track/raptor/barrel_roll_left_4_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_left_4_3.png", + "x_offset": -11, + "y_offset": -19 + }, + { + "path": "track/raptor/barrel_roll_left_4_4.png", + "x_offset": -10, + "y_offset": -21 + }, + { + "path": "track/raptor/barrel_roll_left_4_5.png", + "x_offset": 8, + "y_offset": -7 + }, + { + "path": "track/raptor/barrel_roll_left_4_6.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/barrel_roll_right_1_1.png", + "x_offset": -18, + "y_offset": -9 + }, + { + "path": "track/raptor/barrel_roll_right_1_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_right_1_3.png", + "x_offset": -25, + "y_offset": -19 + }, + { + "path": "track/raptor/barrel_roll_right_1_4.png", + "x_offset": 3, + "y_offset": -21 + }, + { + "path": "track/raptor/barrel_roll_right_1_5.png", + "x_offset": -22, + "y_offset": -14 + }, + { + "path": "track/raptor/barrel_roll_right_1_6.png", + "x_offset": -23, + "y_offset": -21 + }, + { + "path": "track/raptor/barrel_roll_right_2_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/barrel_roll_right_2_2.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_right_2_3.png", + "x_offset": -6, + "y_offset": -8 + }, + { + "path": "track/raptor/barrel_roll_right_2_4.png", + "x_offset": 17, + "y_offset": -6 + }, + { + "path": "track/raptor/barrel_roll_right_2_5.png", + "x_offset": -6, + "y_offset": -14 + }, + { + "path": "track/raptor/barrel_roll_right_2_6.png", + "x_offset": -6, + "y_offset": -19 + }, + { + "path": "track/raptor/barrel_roll_right_3_1.png", + "x_offset": -2, + "y_offset": 2 + }, + { + "path": "track/raptor/barrel_roll_right_3_2.png", + "x_offset": -4, + "y_offset": 8 + }, + { + "path": "track/raptor/barrel_roll_right_3_3.png", + "x_offset": 6, + "y_offset": -2 + }, + { + "path": "track/raptor/barrel_roll_right_3_4.png", + "x_offset": 0, + "y_offset": -2 + }, + { + "path": "track/raptor/barrel_roll_right_3_5.png", + "x_offset": -12, + "y_offset": -2 + }, + { + "path": "track/raptor/barrel_roll_right_3_6.png", + "x_offset": -18, + "y_offset": -13 + }, + { + "path": "track/raptor/barrel_roll_right_4_1.png", + "x_offset": -11, + "y_offset": 8 + }, + { + "path": "track/raptor/barrel_roll_right_4_2.png", + "x_offset": -19, + "y_offset": 6 + }, + { + "path": "track/raptor/barrel_roll_right_4_3.png", + "x_offset": -9, + "y_offset": 1 + }, + { + "path": "track/raptor/barrel_roll_right_4_4.png", + "x_offset": -26, + "y_offset": -12 + }, + { + "path": "track/raptor/barrel_roll_right_4_5.png", + "x_offset": 0, + "y_offset": 0 + }, + { + "path": "track/raptor/barrel_roll_right_4_6.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/half_loop_1_1.png", + "x_offset": -24, + "y_offset": -18 + }, + { + "path": "track/raptor/half_loop_1_2.png", + "x_offset": -19, + "y_offset": -38 + }, + { + "path": "track/raptor/half_loop_1_3.png", + "x_offset": -12, + "y_offset": -82 + }, + { + "path": "track/raptor/half_loop_1_4.png", + "x_offset": -18, + "y_offset": 23 + }, + { + "path": "track/raptor/half_loop_2_1.png", + "x_offset": -12, + "y_offset": -4 + }, + { + "path": "track/raptor/half_loop_2_2.png", + "x_offset": 1, + "y_offset": -31 + }, + { + "path": "track/raptor/half_loop_2_3.png", + "x_offset": -38, + "y_offset": -113 + }, + { + "path": "track/raptor/half_loop_2_4.png", + "x_offset": -18, + "y_offset": 11 + }, + { + "path": "track/raptor/half_loop_3_1.png", + "x_offset": -26, + "y_offset": -4 + }, + { + "path": "track/raptor/half_loop_3_2.png", + "x_offset": -25, + "y_offset": -27 + }, + { + "path": "track/raptor/half_loop_3_3.png", + "x_offset": 2, + "y_offset": -120 + }, + { + "path": "track/raptor/half_loop_3_4.png", + "x_offset": -22, + "y_offset": 3 + }, + { + "path": "track/raptor/half_loop_4_1.png", + "x_offset": -12, + "y_offset": -18 + }, + { + "path": "track/raptor/half_loop_4_2.png", + "x_offset": -12, + "y_offset": -42 + }, + { + "path": "track/raptor/half_loop_4_3.png", + "x_offset": 8, + "y_offset": -91 + }, + { + "path": "track/raptor/half_loop_4_4.png", + "x_offset": 5, + "y_offset": 15 + }, + { + "path": "track/raptor/flat_to_steep_up_1_1.png", + "x_offset": -18, + "y_offset": -2 + }, + { + "path": "track/raptor/flat_to_steep_up_1_2.png", + "x_offset": -19, + "y_offset": -17 + }, + { + "path": "track/raptor/flat_to_steep_up_1_3.png", + "x_offset": -17, + "y_offset": -25 + }, + { + "path": "track/raptor/flat_to_steep_up_1_4.png", + "x_offset": -18, + "y_offset": -46 + }, + { + "path": "track/raptor/flat_to_steep_up_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_steep_up_2_2.png", + "x_offset": -24, + "y_offset": -4 + }, + { + "path": "track/raptor/flat_to_steep_up_2_3.png", + "x_offset": -25, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_steep_up_2_4.png", + "x_offset": -20, + "y_offset": -30 + }, + { + "path": "track/raptor/flat_to_steep_up_3_1.png", + "x_offset": -20, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_steep_up_3_2.png", + "x_offset": -22, + "y_offset": -2 + }, + { + "path": "track/raptor/flat_to_steep_up_3_3.png", + "x_offset": -23, + "y_offset": -13 + }, + { + "path": "track/raptor/flat_to_steep_up_3_4.png", + "x_offset": -21, + "y_offset": -30 + }, + { + "path": "track/raptor/flat_to_steep_up_4_1.png", + "x_offset": -19, + "y_offset": -2 + }, + { + "path": "track/raptor/flat_to_steep_up_4_2.png", + "x_offset": -21, + "y_offset": -17 + }, + { + "path": "track/raptor/flat_to_steep_up_4_3.png", + "x_offset": -20, + "y_offset": -25 + }, + { + "path": "track/raptor/flat_to_steep_up_4_4.png", + "x_offset": -21, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_to_flat_up_1_1.png", + "x_offset": -18, + "y_offset": -41 + }, + { + "path": "track/raptor/steep_to_flat_up_1_2.png", + "x_offset": -20, + "y_offset": -26 + }, + { + "path": "track/raptor/steep_to_flat_up_1_3.png", + "x_offset": -20, + "y_offset": -18 + }, + { + "path": "track/raptor/steep_to_flat_up_1_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/steep_to_flat_up_2_1.png", + "x_offset": -18, + "y_offset": -26 + }, + { + "path": "track/raptor/steep_to_flat_up_2_2.png", + "x_offset": -18, + "y_offset": -13 + }, + { + "path": "track/raptor/steep_to_flat_up_2_3.png", + "x_offset": -13, + "y_offset": -5 + }, + { + "path": "track/raptor/steep_to_flat_up_2_4.png", + "x_offset": -14, + "y_offset": -1 + }, + { + "path": "track/raptor/steep_to_flat_up_3_1.png", + "x_offset": -14, + "y_offset": -25 + }, + { + "path": "track/raptor/steep_to_flat_up_3_2.png", + "x_offset": -13, + "y_offset": -13 + }, + { + "path": "track/raptor/steep_to_flat_up_3_3.png", + "x_offset": -16, + "y_offset": -5 + }, + { + "path": "track/raptor/steep_to_flat_up_3_4.png", + "x_offset": -18, + "y_offset": -3 + }, + { + "path": "track/raptor/steep_to_flat_up_4_1.png", + "x_offset": -18, + "y_offset": -40 + }, + { + "path": "track/raptor/steep_to_flat_up_4_2.png", + "x_offset": -18, + "y_offset": -26 + }, + { + "path": "track/raptor/steep_to_flat_up_4_3.png", + "x_offset": -17, + "y_offset": -16 + }, + { + "path": "track/raptor/steep_to_flat_up_4_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/quarter_loop_up_1_1.png", + "x_offset": -17, + "y_offset": -52 + }, + { + "path": "track/raptor/quarter_loop_up_1_2.png", + "x_offset": 0, + "y_offset": -30 + }, + { + "path": "track/raptor/quarter_loop_up_1_3.png", + "x_offset": -18, + "y_offset": -12 + }, + { + "path": "track/raptor/quarter_loop_up_2_1.png", + "x_offset": -22, + "y_offset": -77 + }, + { + "path": "track/raptor/quarter_loop_up_2_2.png", + "x_offset": -32, + "y_offset": -66 + }, + { + "path": "track/raptor/quarter_loop_up_2_3.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/quarter_loop_up_3_1.png", + "x_offset": -6, + "y_offset": -76 + }, + { + "path": "track/raptor/quarter_loop_up_3_2.png", + "x_offset": -17, + "y_offset": -68 + }, + { + "path": "track/raptor/quarter_loop_up_3_3.png", + "x_offset": 0, + "y_offset": -21 + }, + { + "path": "track/raptor/quarter_loop_up_4_1.png", + "x_offset": -6, + "y_offset": -52 + }, + { + "path": "track/raptor/quarter_loop_up_4_2.png", + "x_offset": -20, + "y_offset": -30 + }, + { + "path": "track/raptor/quarter_loop_up_4_3.png", + "x_offset": -32, + "y_offset": -12 + }, + { + "path": "track/raptor/corkscrew_left_1_1.png", + "x_offset": -18, + "y_offset": -32 + }, + { + "path": "track/raptor/corkscrew_left_1_2.png", + "x_offset": -17, + "y_offset": -29 + }, + { + "path": "track/raptor/corkscrew_left_1_3.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/corkscrew_left_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/corkscrew_left_2_2.png", + "x_offset": -32, + "y_offset": -28 + }, + { + "path": "track/raptor/corkscrew_left_2_3.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/corkscrew_left_3_1.png", + "x_offset": -26, + "y_offset": -4 + }, + { + "path": "track/raptor/corkscrew_left_3_2.png", + "x_offset": 5, + "y_offset": -14 + }, + { + "path": "track/raptor/corkscrew_left_3_3.png", + "x_offset": -19, + "y_offset": -11 + }, + { + "path": "track/raptor/corkscrew_left_4_1.png", + "x_offset": -29, + "y_offset": -32 + }, + { + "path": "track/raptor/corkscrew_left_4_2.png", + "x_offset": -27, + "y_offset": -14 + }, + { + "path": "track/raptor/corkscrew_left_4_3.png", + "x_offset": -18, + "y_offset": -11 + }, + { + "path": "track/raptor/corkscrew_right_1_1.png", + "x_offset": -18, + "y_offset": -32 + }, + { + "path": "track/raptor/corkscrew_right_1_2.png", + "x_offset": -6, + "y_offset": -14 + }, + { + "path": "track/raptor/corkscrew_right_1_3.png", + "x_offset": -19, + "y_offset": -11 + }, + { + "path": "track/raptor/corkscrew_right_2_1.png", + "x_offset": -18, + "y_offset": -4 + }, + { + "path": "track/raptor/corkscrew_right_2_2.png", + "x_offset": -13, + "y_offset": -14 + }, + { + "path": "track/raptor/corkscrew_right_2_3.png", + "x_offset": -18, + "y_offset": -11 + }, + { + "path": "track/raptor/corkscrew_right_3_1.png", + "x_offset": -20, + "y_offset": -2 + }, + { + "path": "track/raptor/corkscrew_right_3_2.png", + "x_offset": -18, + "y_offset": -28 + }, + { + "path": "track/raptor/corkscrew_right_3_3.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/corkscrew_right_4_1.png", + "x_offset": -22, + "y_offset": -32 + }, + { + "path": "track/raptor/corkscrew_right_4_2.png", + "x_offset": 5, + "y_offset": -29 + }, + { + "path": "track/raptor/corkscrew_right_4_3.png", + "x_offset": -20, + "y_offset": -21 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_1_1.png", + "x_offset": -23, + "y_offset": -16 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_1_2.png", + "x_offset": -13, + "y_offset": -9 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_2_1.png", + "x_offset": 26, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_2_2.png", + "x_offset": -13, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_2_3.png", + "x_offset": -38, + "y_offset": -9 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_3_1.png", + "x_offset": -14, + "y_offset": -3 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_3_2.png", + "x_offset": -2, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_4_1.png", + "x_offset": -26, + "y_offset": -5 + }, + { + "path": "track/raptor/small_turn_left_bank_to_gentle_up_4_2.png", + "x_offset": -25, + "y_offset": 6 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_1_1.png", + "x_offset": -25, + "y_offset": -5 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_1_2.png", + "x_offset": -26, + "y_offset": 6 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_2_1.png", + "x_offset": -11, + "y_offset": -3 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_2_2.png", + "x_offset": -24, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_3_1.png", + "x_offset": -38, + "y_offset": 0 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_3_2.png", + "x_offset": -38, + "y_offset": -2 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_3_3.png", + "x_offset": -13, + "y_offset": -9 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_4_1.png", + "x_offset": -2, + "y_offset": -16 + }, + { + "path": "track/raptor/small_turn_right_bank_to_gentle_up_4_2.png", + "x_offset": -14, + "y_offset": -9 + }, + { + "path": "track/raptor/large_half_loop_left_1_1.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/large_half_loop_left_1_2.png", + "x_offset": -16, + "y_offset": -36 + }, + { + "path": "track/raptor/large_half_loop_left_1_3.png", + "x_offset": -16, + "y_offset": -64 + }, + { + "path": "track/raptor/large_half_loop_left_1_4.png", + "x_offset": -20, + "y_offset": -80 + }, + { + "path": "track/raptor/large_half_loop_left_1_5.png", + "x_offset": -12, + "y_offset": -65 + }, + { + "path": "track/raptor/large_half_loop_left_1_6.png", + "x_offset": -8, + "y_offset": -172 + }, + { + "path": "track/raptor/large_half_loop_left_1_7.png", + "x_offset": -18, + "y_offset": -9 + }, + { + "path": "track/raptor/large_half_loop_left_2_1.png", + "x_offset": -18, + "y_offset": -1 + }, + { + "path": "track/raptor/large_half_loop_left_2_2.png", + "x_offset": -6, + "y_offset": -4 + }, + { + "path": "track/raptor/large_half_loop_left_2_3.png", + "x_offset": -9, + "y_offset": -22 + }, + { + "path": "track/raptor/large_half_loop_left_2_4.png", + "x_offset": -8, + "y_offset": -69 + }, + { + "path": "track/raptor/large_half_loop_left_2_5.png", + "x_offset": -32, + "y_offset": -118 + }, + { + "path": "track/raptor/large_half_loop_left_2_6.png", + "x_offset": -22, + "y_offset": -191 + }, + { + "path": "track/raptor/large_half_loop_left_2_7.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/large_half_loop_left_3_1.png", + "x_offset": -24, + "y_offset": 1 + }, + { + "path": "track/raptor/large_half_loop_left_3_2.png", + "x_offset": -29, + "y_offset": -5 + }, + { + "path": "track/raptor/large_half_loop_left_3_3.png", + "x_offset": -24, + "y_offset": -32 + }, + { + "path": "track/raptor/large_half_loop_left_3_4.png", + "x_offset": -3, + "y_offset": -56 + }, + { + "path": "track/raptor/large_half_loop_left_3_5.png", + "x_offset": -3, + "y_offset": -111 + }, + { + "path": "track/raptor/large_half_loop_left_3_6.png", + "x_offset": -19, + "y_offset": -191 + }, + { + "path": "track/raptor/large_half_loop_left_3_7.png", + "x_offset": -25, + "y_offset": -21 + }, + { + "path": "track/raptor/large_half_loop_left_4_1.png", + "x_offset": -21, + "y_offset": -11 + }, + { + "path": "track/raptor/large_half_loop_left_4_2.png", + "x_offset": -27, + "y_offset": -15 + }, + { + "path": "track/raptor/large_half_loop_left_4_3.png", + "x_offset": -32, + "y_offset": -40 + }, + { + "path": "track/raptor/large_half_loop_left_4_4.png", + "x_offset": -32, + "y_offset": -69 + }, + { + "path": "track/raptor/large_half_loop_left_4_5.png", + "x_offset": 20, + "y_offset": -58 + }, + { + "path": "track/raptor/large_half_loop_left_4_6.png", + "x_offset": -12, + "y_offset": -176 + }, + { + "path": "track/raptor/large_half_loop_left_4_7.png", + "x_offset": -18, + "y_offset": -12 + }, + { + "path": "track/raptor/large_half_loop_right_1_1.png", + "x_offset": -18, + "y_offset": -11 + }, + { + "path": "track/raptor/large_half_loop_right_1_2.png", + "x_offset": -16, + "y_offset": -15 + }, + { + "path": "track/raptor/large_half_loop_right_1_3.png", + "x_offset": -10, + "y_offset": -40 + }, + { + "path": "track/raptor/large_half_loop_right_1_4.png", + "x_offset": 0, + "y_offset": -69 + }, + { + "path": "track/raptor/large_half_loop_right_1_5.png", + "x_offset": -32, + "y_offset": -58 + }, + { + "path": "track/raptor/large_half_loop_right_1_6.png", + "x_offset": -17, + "y_offset": -176 + }, + { + "path": "track/raptor/large_half_loop_right_1_7.png", + "x_offset": -18, + "y_offset": -12 + }, + { + "path": "track/raptor/large_half_loop_right_2_1.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/large_half_loop_right_2_2.png", + "x_offset": -10, + "y_offset": -5 + }, + { + "path": "track/raptor/large_half_loop_right_2_3.png", + "x_offset": -5, + "y_offset": -32 + }, + { + "path": "track/raptor/large_half_loop_right_2_4.png", + "x_offset": -14, + "y_offset": -56 + }, + { + "path": "track/raptor/large_half_loop_right_2_5.png", + "x_offset": -19, + "y_offset": -111 + }, + { + "path": "track/raptor/large_half_loop_right_2_6.png", + "x_offset": -13, + "y_offset": -191 + }, + { + "path": "track/raptor/large_half_loop_right_2_7.png", + "x_offset": -18, + "y_offset": -21 + }, + { + "path": "track/raptor/large_half_loop_right_3_1.png", + "x_offset": -26, + "y_offset": -1 + }, + { + "path": "track/raptor/large_half_loop_right_3_2.png", + "x_offset": -26, + "y_offset": -4 + }, + { + "path": "track/raptor/large_half_loop_right_3_3.png", + "x_offset": -28, + "y_offset": -22 + }, + { + "path": "track/raptor/large_half_loop_right_3_4.png", + "x_offset": -32, + "y_offset": -69 + }, + { + "path": "track/raptor/large_half_loop_right_3_5.png", + "x_offset": 20, + "y_offset": -118 + }, + { + "path": "track/raptor/large_half_loop_right_3_6.png", + "x_offset": 0, + "y_offset": -191 + }, + { + "path": "track/raptor/large_half_loop_right_3_7.png", + "x_offset": -15, + "y_offset": -21 + }, + { + "path": "track/raptor/large_half_loop_right_4_1.png", + "x_offset": -21, + "y_offset": -22 + }, + { + "path": "track/raptor/large_half_loop_right_4_2.png", + "x_offset": -22, + "y_offset": -36 + }, + { + "path": "track/raptor/large_half_loop_right_4_3.png", + "x_offset": -18, + "y_offset": -64 + }, + { + "path": "track/raptor/large_half_loop_right_4_4.png", + "x_offset": -2, + "y_offset": -80 + }, + { + "path": "track/raptor/large_half_loop_right_4_5.png", + "x_offset": -3, + "y_offset": -65 + }, + { + "path": "track/raptor/large_half_loop_right_4_6.png", + "x_offset": -27, + "y_offset": -172 + }, + { + "path": "track/raptor/large_half_loop_right_4_7.png", + "x_offset": -27, + "y_offset": -9 + }, + { + "path": "track/raptor/small_flat_to_steep_up_1.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_flat_to_steep_up_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/small_flat_to_steep_up_2_2.png", + "x_offset": -13, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_3_1.png", + "x_offset": -3, + "y_offset": 2 + }, + { + "path": "track/raptor/small_flat_to_steep_up_3_2.png", + "x_offset": -21, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_4.png", + "x_offset": -21, + "y_offset": -22 + }, + { + "path": "track/raptor/small_steep_to_flat_up_1.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_steep_to_flat_up_2_1.png", + "x_offset": -10, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_2_2.png", + "x_offset": -18, + "y_offset": -5 + }, + { + "path": "track/raptor/small_steep_to_flat_up_3_1.png", + "x_offset": -18, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_3_2.png", + "x_offset": -4, + "y_offset": -5 + }, + { + "path": "track/raptor/small_steep_to_flat_up_4.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_1.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_3.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_4.png", + "x_offset": -3, + "y_offset": -30 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_1.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_2.png", + "x_offset": -3, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_3.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_4.png", + "x_offset": -3, + "y_offset": -30 + }, + { + "path": "track/raptor/flat_lift_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_lift_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_lift_3.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_lift_4.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_lift_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_lift_2.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_lift_3.png", + "x_offset": -19, + "y_offset": 2 + }, + { + "path": "track/raptor/flat_to_gentle_up_lift_4.png", + "x_offset": -19, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_flat_lift_1.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_up_to_flat_lift_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_flat_lift_3.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_up_to_flat_lift_4.png", + "x_offset": -18, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_lift_1.png", + "x_offset": -18, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_lift_2.png", + "x_offset": -18, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_lift_3.png", + "x_offset": -19, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_lift_4.png", + "x_offset": -19, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_1.png", + "x_offset": -18, + "y_offset": -30 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_2_1.png", + "x_offset": -18, + "y_offset": -1 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_2_2.png", + "x_offset": -17, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_3_1.png", + "x_offset": 0, + "y_offset": -1 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_3_2.png", + "x_offset": -21, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_steep_up_lift_4.png", + "x_offset": -21, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_1.png", + "x_offset": -18, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_2_1.png", + "x_offset": -5, + "y_offset": -15 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_2_2.png", + "x_offset": -18, + "y_offset": -10 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_3_1.png", + "x_offset": -19, + "y_offset": -15 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_3_2.png", + "x_offset": -12, + "y_offset": -10 + }, + { + "path": "track/raptor/steep_to_gentle_up_lift_4.png", + "x_offset": -19, + "y_offset": -30 + }, + { + "path": "track/raptor/steep_lift_1.png", + "x_offset": -18, + "y_offset": -62 + }, + { + "path": "track/raptor/steep_lift_2.png", + "x_offset": -18, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_lift_3.png", + "x_offset": -21, + "y_offset": -46 + }, + { + "path": "track/raptor/steep_lift_4.png", + "x_offset": -21, + "y_offset": -62 + }, + { + "path": "track/raptor/flat_diag_lift_1.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_diag_lift_3.png", + "x_offset": -32, + "y_offset": 9 + }, + { + "path": "track/raptor/flat_diag_lift_4.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_lift_3.png", + "x_offset": -33, + "y_offset": 1 + }, + { + "path": "track/raptor/flat_to_gentle_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_lift_3.png", + "x_offset": -32, + "y_offset": 1 + }, + { + "path": "track/raptor/gentle_to_flat_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -14 + }, + { + "path": "track/raptor/gentle_diag_lift_1.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/gentle_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_diag_lift_3.png", + "x_offset": -32, + "y_offset": -7 + }, + { + "path": "track/raptor/gentle_diag_lift_4.png", + "x_offset": -3, + "y_offset": -22 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_lift_3.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/gentle_to_steep_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -11 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_lift_3.png", + "x_offset": -32, + "y_offset": -23 + }, + { + "path": "track/raptor/steep_to_gentle_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_diag_lift_1.png", + "x_offset": -32, + "y_offset": -55 + }, + { + "path": "track/raptor/steep_diag_lift_2.png", + "x_offset": -3, + "y_offset": -38 + }, + { + "path": "track/raptor/steep_diag_lift_3.png", + "x_offset": -32, + "y_offset": -55 + }, + { + "path": "track/raptor/steep_diag_lift_4.png", + "x_offset": -3, + "y_offset": -70 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_1.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_2_1.png", + "x_offset": -18, + "y_offset": 2 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_2_2.png", + "x_offset": -13, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_3_1.png", + "x_offset": -5, + "y_offset": 2 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_3_2.png", + "x_offset": -21, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_lift_4.png", + "x_offset": -21, + "y_offset": -22 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_1.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_2_1.png", + "x_offset": -10, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_2_2.png", + "x_offset": -18, + "y_offset": -5 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_3_1.png", + "x_offset": -18, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_3_2.png", + "x_offset": -4, + "y_offset": -5 + }, + { + "path": "track/raptor/small_steep_to_flat_up_lift_4.png", + "x_offset": -18, + "y_offset": -22 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -6 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_lift_3.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_flat_to_steep_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -30 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_lift_1.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_lift_2.png", + "x_offset": -3, + "y_offset": -10 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_lift_3.png", + "x_offset": -32, + "y_offset": -15 + }, + { + "path": "track/raptor/small_steep_to_flat_up_diag_lift_4.png", + "x_offset": -3, + "y_offset": -30 } ] diff --git a/resources/g2/track/raptor/barrel_roll_left_1_1.png b/resources/g2/track/raptor/barrel_roll_left_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..57e6fab4f66561d2d91f14a4d2f602b3c487cac6 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}r!3-qtUT%2|q|^g^LR^9L|9bWR@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#mZ=KB5O{@d%Fdx1(BOM?7@862M7NCR?GJzX3_DsGit zbmTjrz`^2h*VQZY|Nnbzd~!NE=59_+$zLAkyo}s@wEM-Iu%t!vg4#S?yHx@rgKqIp z?O@Vif7Mmy#uxl1z~@ZgLEnkRi(fNkhCM3y{$ls+D=&T?I{jK@@89sPUl@5}nC?|q SGQI~|$l&Sf=d#Wzp$P!(x>Xhc literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_1_2.png b/resources/g2/track/raptor/barrel_roll_left_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d34323cb71873f4e15a4ec0867178ee76b930bf3 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^5fd^0%$~ z_j~JaSI=K8AKx$TU(Idb%-b9SRKZvhh)6e^jF}CKMc{<9ut;GchlPcOg?Hx+-rzDW>w<-a3&Q0fg@p$xEQGU= z!@?qk94S&*q!2d66c!d17AaC#q{x9qiojZIA%{hZ;qE_&h3~zO?-lPWzW4ro|0KVC z^ZgqDc>DOv{fC~fUTZY$`@?Vleg`mw_wPPF^l~s5TwPrahr{dZ>zkXK+uK_V!$zag z-Q68AolZH9l_XKq6w5Lk$M$_cj@R35R+fjlZo7_SK@>n$#)dJOsW2B8qI)Xmn+ z3uj-2r*k4Pm@bTMh46GLvgozLJ^NA->-();?}DaIE^R53U^1`}A=0pojTIq&+)TPX zi5eDlCVGhwDyIM{fQex?j(a2-(R3mR&#Jnc&5oY;b-hMKL2{F+NU$m;n6zv&y2n|O z;H)G+RhGGy?9Hs6Q9Q}YQ$b@Ci#Ke^4%A?6t}{EUys}~2c-$Bk17o|2TKt$8EO@f2FNB*$e~0<*&OWyR44EnJP(Ql zx{A#$!do!QNZuq?p8HjmHcf?kFLDN)I~F5CO(-*??OKRhBkdOXCEmYeCvYenAIAT@{=n}ao;3LJ%iq8DV*Ggj e)5p+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPEl^BU zMF0Q*_m|7_cf0?8C+}OU|6d>HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qMo=fIR>J z00DGTPE!Ct=GbNc0004EOGiWihy@);0002^Nkl{=y$K{EIY znl{LTDJ(;b!7?Z=SXexG#cFSGi$I7LYn?g-VTvJ;z;^l(`IKONZ{sTuhkNG@GfBec zmC_`ealZMbxH-GIWc;J1Jj;9TiluLzYavcwzMQ*8zN(yaOy6^TCrrO6Yw6t~pB_cp zWTmneLA^OWs0dkU7nq*rT%VluIiB&Pd(?+j5cvfBUPhHZmJZ`yJ`Z?I9;38p0c{?XKb1Ae|W^9#J) nj+qqfS*sR*^dIy&K5PB~!KzQIN4CkM00000NkvXXu0mjf=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_1_6.png b/resources/g2/track/raptor/barrel_roll_left_1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..39e5de9e44ef40f4d2951b3e62d5283772a11cdf GIT binary patch literal 732 zcmV<20wev2P)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPCs0gO zMF0Q*`?ufsm&@~ayYE}8|6d>HS0mdykJC>pze_K-CvT%4UwaEbPP>gh00001bW%=J z06^y0W&i*H0b)x>L;#2d9Y_EG0I^9#K~#9!Rna{P!axv);Uxrru$oxdCX+(2(tJT% zC5s5@Jb{Q<2ML})Qd@Ze8+#iM;KA(tW~Y02*(qk7T%6|@j zzJa>CGXgKhFR<$Pv;uaFF;JcvpTL&UDR8AC%}Wyt)g=|H<|bZLXH+j!ZOCJilD&paceHWmQ!U z~i7>P|)B?Hk3LLv4%mXg7tL89aj~g OF$|urelF{r5}E+k3^0uV literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_2_2.png b/resources/g2/track/raptor/barrel_roll_left_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec54392419bca6559f68dc7e06061b83833239b GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^q98U0GmtFwxe5|c4DbnY1=9cH<)4QuU-sAD@2$Vu z*?7Bp{$ly~esTY5Zu@iwFYFk%D&-XI`qD`nyF&<`quUktCO#FyNW+N`@g7O?p{q{T2ky` poo!Q{Cv~lFGy44J>MkwQ$BcUxFx@?-GzH{H22WQ%mvv4FO#t2sM&tkh literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_2_3.png b/resources/g2/track/raptor/barrel_roll_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_2_4.png b/resources/g2/track/raptor/barrel_roll_left_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3325ff59c32892983b173938c7509792c99ab0 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^GC<73!3-qbSaofIlwyESh%1o3?61AwTYt5)@pkq6 z>GsBp<>Q;p_4~#BtGVsd8I1LIPW=Q_#8?vK7tG-B>_!@plj!N<7*cVov@ekFfC9(S z26djj{~N_8=o(+HyQL&B#X4H4ioEg55q1a3{I$^Sx$#;X6 zH=&NpE*{w|{57=xaOIS@C7YkGd$;^#(wB&BGh-G_ocWtKRfDByTjkGMpk)l6u6{1- HoD!M=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_2_6.png b/resources/g2/track/raptor/barrel_roll_left_2_6.png new file mode 100644 index 0000000000000000000000000000000000000000..323b43e7e39500ca93ed4ed844757c76fb1237b6 GIT binary patch literal 687 zcmV;g0#N;lP)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPDo{*R zMF0Q*?^~%D!Zc5a`={_SRksm9&I};_dvAj+TKsIMOlEBH1`2Zv}?;wck3WCUM zY@)XB*!eL4dpq_Y6_?Z1a}L4lUFH2ZvhrswIBQKili$9zCBHV~@&@;;rP%)WtcRBL z_t!M8D1Nb}d(D;Nv8RugXB=ebU>H)yT{a&6=3f2}DYnV+NF0Xsg^#GsCq7L_zz038 zmCKj?^4z`Q#oUtAm4|b3bJ2fR*HqFy*PorSKP~*R=j!C^?vih}74;!GOwq`9hq1#h zY(;0hWY@9d@3g$=*c(2Tor^bpxaVb?_I5qav@U#jXYH zAmY&0J-*sscW$U|^6OVEM-TR1yt8|&puB#zG-vVpjf>{i)-SH|ZT#ZMj80_TE4p2| z#8!DeYyRqa)yAyb<3@NR_V8r??PmL&isaMW(ChhWH+}2f^`Xc>@5q{@WTx-<(0K4< z-yP)lw)T1A%o5$Lh#*%E}zI)cf1z!r%K6z;_do=hp@pb7a&>2w8G*HYMd6PN*0S^vkg3+1wou*agR(k zpjHPBhB1c&`u#kVBfz;L8DFeKB$QBYKvfp8)=n7RQmc=229(~Anvd~B5`mZ$N>!MG zA}Ev0bI84#w+^ z3=YO(F$j1RKx{13#U^|_G9Xk(2-B#-8P)k>mch6uIvJdR*+MoO<8mc@0Vx!z#A2;f zW>O}G={;uafXfr2nRo;TN-0ZAvJFbUMI*H9akq)|+0_GXL(p%J2I+Ww4B`OD0Z6#h z0)QKU0RTo>045+Kpk52zP8bTx5I~{8iUY3%gk%7c08(6NMxj#%y&4!W!H^S73y%RQ z0pv24M#VMggjS2hfQwHP!`tHI~CGPFAyqG3FONu|&WUcE2Xqm^Y)W=3oEi_Zu)Wv-!mH{EW(T z^i;`_noh-^TfTDS%{~_xrs?d;F4gzH-hI$;DRcG{o@?ljyG8eZEBa}(_f+#vcn`JM=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_3_3.png b/resources/g2/track/raptor/barrel_roll_left_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..16e9a8aedd6f65b84a2bc96b70a6a5de60522aab GIT binary patch literal 1390 zcmX9-e{2$G82O!wkCXWVV@@prsDGrecOmqfBXo8_SqBk+jTISLZhxljnKgJpa7UAJ6+7 zZ){K&<(K9I0E+5rt2d|j{4@)5v(j_ZS7@Exj$~;W|U)X>+MGu z4h(E+U9$4!*6!6eR*pS;vN-p!pcuoD8d1gg$hY^)e$H}CjmJ`O#JKbc^ZwaAISAO& z+fl!`;?D_g!^_!K*_FqNXU;@ltlCr`?CpDg#rbUMFTFRX-gH-8+P98^~GBPtWv$C?X zv$J_TUQSL9pU=h%(XQEss+98SvP)%XK!C~S?z-Gq#VKhP^fI)#B2RPTEE{M4s(e_7^c0%I)EAraGQv7OEf-&i7ISKHJ38@Cmo?FUkpZ) zh!9{BzEUnw;}SiM8g-=2q<7m*e$E~aa*1dVreYXLLLY!p0AV@{OWN)&#Ac&29><)H zw_rmdLanCtdacpOpmH-Nci<>TpaD`oOvw@|Dbz@y34u-&`fwN~)6b7BDHxybz$cp< zXt3_D-*!%m9i*}v9OKQaO^ZEs)$5x|hTBdKWgMDcnEf=cqP?;3WRXOA_tM{M&NjbW zxpSzmqH-esV4LS8TTxlvvuszHF{f~gh`m7WIQw-ed&5aq|AIrR;FpqSD4m|ke-)^W!PC{xWt~$(69E0GDfa*X literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_3_5.png b/resources/g2/track/raptor/barrel_roll_left_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..725198a750ae5e8a5f4bbc608d1096a910ed37b7 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!VDzcZf*Vwr1%4TLR^9L^Kj+M{@VM!^;bI^ zORKTA0EHM!g8YIR9G=}s19AjCT^vIyZY3uqq$C8S6(j(qWf)Q=EDNRrB^f+j{an^L HB{Ts5d9xc* literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_3_6.png b/resources/g2/track/raptor/barrel_roll_left_3_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d80c633f32a09c0ad3cb45296565839fcdec4457 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^5?A+A9B|7_#W<-7matG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI=K8AKx$TU(Ib_`u)Kspa#a0AirP+hi5m^fSf8% z7srr_TcsBRg_;dGSORn=v^rJ)e{3anThP@m-ppFk=}Mo?h6jyHcTUv5`TWrRm500^ z`u~~X&1q1ZxVmSp+?mHQO}2bIdb))b8J(Bku&p^3{BPaTXCEY<8m51Lon^Lt;r6FX wIAZeO&E&Z5c-ArEvCF$<_v&ZtmyTha_?G#nL8t3Qpeq?A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#mZ=KB5O{?**}=?uon3$O10YG5o0@(X5gcy=QV$SL-8 zaSW-rb@uXUzLo$E<^VlWx0$d0*S|Y*JZP7}OqXryyd{k@B~Sn26lvA!>-Z3vaK6$g zO_XoSGuO>0?=G~AKM}5fv?0Oa%V%%4U?e??1Zt$D&&v}+t8~EH;1FdK9boFyt=akR{0Q>}Aj{pDw literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_4_2.png b/resources/g2/track/raptor/barrel_roll_left_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_4_3.png b/resources/g2/track/raptor/barrel_roll_left_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b4cbca1d7ffec439eddbe74e1e99195cfc53b4a2 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmH!3-pKB+owrq|^g^LR^9L`{>pG@+E8n*6 zzwEEQ-&=pRv+;KI{OR__i{;~+&Gq}m{crvLH5I6ou_VYZn8D%MjWi%vE3+0V+-B~A)_b1m(P^oZ}|nyt0a#V9;&#*HnfWX0z0n!h1ZGq#fH?Kfrxq5Su3 z^Ui*l>}5SuLUzR(p8wHrU9~)`@2#J;+2ML;Qf}zotk7kF3#WWpzn1MgfBEW{{0BI_ eOzYKGpW)XQV^48h^nVY~wG5uFelF{r5}E+b{cfHB literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_4_4.png b/resources/g2/track/raptor/barrel_roll_left_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f89c8a6890095ff29358fa78fe02d0455d0ad702 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!VDxgys+>CQv3lvA+A7ryL$d&`S^Zu|7vdg zdDRX)Kq1DGAirP+hi5m^fE+PT7srr_TgeG&2?+@SLX4A{6ee8+nsuLHZhDpEbf5|b MPgg&ebxsLQ0MaiU`~Uy| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_4_5.png b/resources/g2/track/raptor/barrel_roll_left_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0e26c8f604d1994fbae192be8387f3bea6c73db3 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^>!VDy>?JxfaQW60^A+A9BdARarf9?I=`m3Fd zx2xw*w>MraAAc`mgCkImu_VYZn8D%MjWi%f%hSa%q~cbxM^HjTgUV7Sj>DcSWeyn# sX|Z!}l;mt}W{sG_qF{8=z?Y9<$3Ir_dsh=mfw~wxUHx3vIVCg!0KS7MrvLx| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_left_4_6.png b/resources/g2/track/raptor/barrel_roll_left_4_6.png new file mode 100644 index 0000000000000000000000000000000000000000..219f61f9815fa44b1441553297c299b4e706dc81 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^nm{bX!3-onGPAD&QtAOdA+A9BbNTM~(W`G;_h0tc z-tVoy+Sz!!dj52K98UoFl^35K+VRKlxtLZZrZ$RkQt{$7> zMHl}!>fTYlU*a5S6V-COf7!wb7H(&*nz%l+&g0)FrO__2*+hJ??Ag2XlRm9sm&?^U zcQjvl*`uo`{SC`+ytaS0S;@2L?e7+q-8pTa7^j_Kt2+GsMJCWi44$rjF6*2UngAr@ BWqtqv literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_1_1.png b/resources/g2/track/raptor/barrel_roll_right_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..48eb7bbb14320e7df926a64ddca013aa7174322f GIT binary patch literal 732 zcmV<20wev2P)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPEl^BU zMF0Q*00030w?F@zGyi`l|6d>HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qL*r9?<{* z00DGTPE!Ct=GbNc0004EOGiWihy@);00021Nkl z1EA#6BgKb=s1XGXO{$E*0vUh-=qL~qn4Xr7HE{Xfbx+^(*^)zm`2?C}zoPu>IQOa; z=bb7R`jYaZmJ<6n5vtcBCB#W3g4|Ths>Jzj>f{FVE5gN*w3)-nE46YM)xalD8@Z=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_1_3.png b/resources/g2/track/raptor/barrel_roll_right_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..efd9f0c72535e3c0a9e5dea948e37160ad269949 GIT binary patch literal 756 zcmV+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPDo{*R zMF0T!|C=-ae<$x-tN&jg=T{@!JCD;(E5A!Gt3xxlCvTTOGov40j~7o&MsN-Q0004W zQchCcWgLV^Sf3k#FDhgl5kaUNJ$xFBR86R#E(N(OAi+-=mKYZ|q0?>o!U%!0T(X+F&^YimwuXk~Aad~-pb#;Yd zSij%DzP`rC<1x!Jq9~}UY?``lTb}2I;VMbeqS#ec)3z)F0uPEj(Dl)DO3oZ+?(^YN zStmx8+uPDV93zp&G=5;oxT}$YNv&-5!4vaP+a^}Enb%cxY6^(}gNB&^fr_myEcb`| z^{CwvsAf=WpvM5AVhqr2ZeW--9J&M%P*lY84~nvxO!lt(cC|uzPOzh~fHMlo8gu10C2XTJXqk5J#!LCi}$NdQn z=;4sVafuwOG-L9-Eh}@Q8|EbbVzW-FqHGTW7&2z7L)RdKDZO-rc&=v4$tHI9`Lf;@ zZTl7p02+V|5CFsg8-ODQsDmOR$3}64s=Y#i#lk{>RDwzYqyn;VEm@QbsFb_o=RO_$`|bz6e{rY6=YReA zO-DYyz4_v0{}=NfUbXlC{r#rJfBOB+;FEuT8{B^eKPLSTzdcXB>-ymK+1<^rU*5m| EA5!9Rc>n+a literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_1_5.png b/resources/g2/track/raptor/barrel_roll_right_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..38844fa96069c25f14be8712adad72a507ee0341 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!VDzm%*<8?QgQ)4A+A9Bf4%zq=+*z@<)4Qu z-?r|*?61AwTYt5)@pOCRDPL570aY-T1o;IsI6S+N2IN?Ix;TbZ+)7SxVCQ|o#QK6s zuI1|nV*wVO7fd}#8B9J+&oY!8Uns3{oRP(IR&BxToTi8D(|p(t<*_k5&tW~V_}%^j PpeYQVu6{1-oD!M2f8QZ43}8n(^b5u`?Jg4{j>jLN9~4NcV(^JS1+iIdM*5Y8rQAmThl^A z??iBYOFbJo^|P?~v@+D_{24-tVoy z+Sz!zz42oC_-1qcesTY5Zu@iwV|xbaGZHU00hKbA1o;IsI6S+N2IN$Fx;TbZ+?qPU zk*`64hb4PAYt*0r)x1h>9bM-t)$UH|=y0%);NtnK^7&GNSj$X44)a>~1^E*rHQ88x z2}CC9EMdy<*em;3E~4c`!s*;pvHoSMMeGH2`rl6q-__fmchhHm`5nF{rr^J8_LOO^ lNLm$t$aHtQ|0;!B4158s)7ji_M*|(f;OXk;vd$@?2>|d$Qzifa literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_2_2.png b/resources/g2/track/raptor/barrel_roll_right_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_2_3.png b/resources/g2/track/raptor/barrel_roll_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3c41a79307ea736583d758a2b5d5f7bf11769737 GIT binary patch literal 656 zcmV;B0&o3^P)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPBv4FL zMF0Q*0002zS0mF;E5A!Gt3xxFKQp5rUxPOmDqKLoSjn_R$haJ=#MuNY;Nom-4pzbu8UhnCHi22y77A5lfUq7S qW^91$q*kC_V+It!7UIHy2G{_S&mL(NfGYq10000%A_P)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvP5>QN3 zMF4MX0002LOE04zUym10dka6+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvP6;Mo6 zMQ?I#0002fPb@D60R@UyHr)UK002ovPDHLkV1nd7 B+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPEl^BU zMF0R~00020x10~m)R{WgNb&|df09O3-3%O(iU@)QRIhsS{d Y0I%>WbN882mH+?%07*qoM6N<$g66m^tN;K2 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_3_1.png b/resources/g2/track/raptor/barrel_roll_right_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1737629a8a01c9be477b9698638fb5a5a00dd4 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W;!VDxQC^eh_QYryHA+A9Bf4%zq=+*z@<)4Qu z-?r|*?61AwTYt5)@pkq6>GsBp<>RG<>Q)2QF_r}R1v5B2yO9RuxOloahE&{2PH13A zOJEFa%5?qAJqpUz-BRnS`ysFblJ$S;_|;n|HeAScw*#WAGfR_=LA zp#ug2Ob4fmRet#R|GQPdg2QTWlo~p0Z{%D#@Xcvv!%RbOE`#eEf`Wt&L``O~VmG~# zE5aXee$R66t5)toqTjbgKdP}~e`~#OXPr)*|12iOxScncfEF-#y85}Sb4q9e0EQ(= AX#fBK literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_3_3.png b/resources/g2/track/raptor/barrel_roll_right_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2b55801eb458ca3099557a4267b88090c72ce990 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{b#0(^_ulJt^q<8{+LR^9LWqO43K z);F-gE=>Eyx zmI+QHMT1f;Mt3-~D>OZ+JyP7U=Eqfn#c8q3DU_tM6+3Owu4?T^8MLlk|YTN+yJtJG5vxt!j&;qoe8aZ#a+}# zi8EOa7VGH><*7n}EtN!~tWdPhai%1lSa%r zNyS^%N2|_w?a$COA&bBgm`E2YJW*4aMpbgGn%lNUUONiCMI55#jFlwh1BwBmG>cY> zdn~-!=+5VCxAR!$cq~*ZO0A|h8U{l*S-QhBp1=eWJ&~z}T1FayEE07Y-D^J~i&w2gH@6VmhnrL`?{|V&>nYgN4UEf{5koo!Z zZ}Oi>|9*P##*I6F-}#++|KhV>ymbHO-M>Dzuf6!(kGXe$y)az;_d)jh{x5#`+w&it xyLDqMGU0q*aV;D9X zjc#ski0O37ajYbXnx)2u8Hb=`Iy$ATz;s*DX|GM`fmmt6)zv{tvN znHSE!3Qp%(VlZ78+X~_7RA|u~hkNj)BGUJ%UGJ7n9Y40EOoGY4LWEGmwl-D-_;EYw z_9SXp)S2ihM5vqsr~oF0**NZzWJuGoAUvq*ZZMBN)Jv>+=eB3P??FvlM9&%bYW{rxuaFSb&Q;I;!D_cn>$2)jBA5#1Xt-xm;hb5!VzSio^=y}T$70Z) zMFL&L<`&^Cm{llmV=K@7s!E!sLcJC_1I`_bA)&^UnbCGFgsqWui~KR#KV>I$Z0QN` z6ehE{AyRXVb7xBE&Eu7qC#$MVnz}^YiB}Yq0jdF^-iu`~_W`8uuFq$F9esea-%Ey} z&F7Zu+8pciY$S4t#1#sAP?<)bB9lTMjn*8>L{usL@$+Ad|9k%fKfb!x;LCsi`K~7) t-`#%odi00&=BJ-+^Y_nxO~1dn2J@rg-@`v2KI`Xj_u~Hcudm+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPIZ#Yg zMF0Q+0002{x8L`d%ky`;?^~Yv&g}N zedRx52a$5w<4pg|sSBfs?N`yqteK*FSMOnREz+KxwjjB5UVJN01?Ecyx$5c z>hicQLmj)%`Y)$Us5;Br_Vi!r(#58wT_7So3cgu1S{&Z^0ysnnrbJm5I{*Lx07*qo IM6N<$g0aUtrT_o{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_4_1.png b/resources/g2/track/raptor/barrel_roll_right_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c13cdd29186c8369873526ab558241ea379f3f18 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}r!3-qtUT%2|q|^g^LR^9L|9bWJ(X0Q*%RdiS zzHQxq*xG$37JQufu#ADh?;oR!^67oIfl3%W MUHx3vIVCg!0IV<`(EtDd literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_4_4.png b/resources/g2/track/raptor/barrel_roll_right_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4eee77c01753a58e2d68acffc21d958b65b08ae4 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^IzX(-!3-q%LVy1TQtAOdA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{$ly~esTY5Zu@iw$1O1t!HtLP=P>uy@ZQ|U7PK{nd*}Cu34a&F z*I)j$^@4-4rm%T*(6WCkEct-b!axOp4 zf7>^s?#Vo>CMaArTCK8Ji(~87M!n7{S5jNeRm`^^V)WcQ_sxsw)vNvT*-!G<-@g<4 eV|qu&4~9)wIp3U`lXn#8SO!m5KbLh*2~7YUd2tp1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_4_5.png b/resources/g2/track/raptor/barrel_roll_right_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/barrel_roll_right_4_6.png b/resources/g2/track/raptor/barrel_roll_right_4_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8a68bb30df86519586e0b08310f767903fcd23a9 GIT binary patch literal 713 zcmV;)0yh1LP)+0Yt2!am~H#a9m7b)@Fq|hS9 z1DE^p-}C?6doJK_R+(xBCjeEmj7%yiMqW+ zy!-yFKBZtXz$XyTGTpF!Mh4`F!+@K2*KXP4m`HgeQVL#7|8rjS| zagKpOAsMIMjaJY zVIfYtMv93HohLo~!;W7hmrSk-7&#VDg9^#y9Sx0hc?#(3371k|PCZ`HMy1{fxdT z4-DJ_y=(5=+UGcZ0J1cz^bK%u2#l2|d)?#RJ>7Hrx2HY7A2zXakMerj!vFvPCs0gO zMF0Q*?^~pze_KxLo>H0ZL;#2d9Y_EG0G>%iK~#9!U63&f!axv3C&em~G*hMZ2+9Y8*yIi- zq_DBI6M}ri##?v-dm%zvJFjKwpG^07@OEa+vX#kXUMjBL&w_IgI*+;?9J@b04**`O z0eLHR03_D-fW*=s*ovOS(tt`gJE5ZBjHK$0yb2a1Kf)uq5nPb{UHCy>^cP6hG4_tJ vTODF-Cb4CV9YvFRhkYX!;VQE+Vs7>WiN!2M!j^um00000NkvXXu0mjf*qkz5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/block_brake_1.png b/resources/g2/track/raptor/block_brake_1.png new file mode 100644 index 0000000000000000000000000000000000000000..11094a35545faee668d974425d692947aa9bbc2b GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!VDzua0D&}Qn~>?A+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp6?tTy;wfpJ~-Ii+gsn+S=rcFTv=H*V2V3X17k^$UoeBivm0qZPPwOx zV@SoVx>YzO6}nUQ@13raV#nxucDIV+=b2M8cAZI| zru=djv(QQxp_5j>`FwfBVkML!-*0%m>PU9qspt~ZzNS?fSrSextbtbz3<}y7tV~RJ pFsD!NkU?=(s%6!UMXM7T7}~_G%G!>cX97Bb!PC{xWt~$(69DdkQl$U@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/block_brake_2.png b/resources/g2/track/raptor/block_brake_2.png new file mode 100644 index 0000000000000000000000000000000000000000..582a3ffc232261b333b526f05ca44cd03bcffbc7 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!3-oNf9zQVq>KZ6LR^9L`{>pG@+E8n*6 zzwEEQ-&=pRv$1n@^kVsV``}=6Z|{C_e|=}?YHoXFV`Fh;<%=SU0zhqyB|(0{3=Yq3 zqyagNo-U3d6}Q%2^5#2iz`+u5z*J9D;$8hMuGRBH3&cMD%KYHL%;0imL7nc|&l0Lh zdA4`fq@B8RyzlJKM7j0G%N7;C@(^>K)m1Zdy3hYJYtvrmKQxz_8Xvsb+gJIWZBSV`;I~TlWcYMtfcdj`wP4R&A3=1yxl?%;Q0Ug8O>FVdQ I&MBb@010Jd5C8xG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/brake_1.png b/resources/g2/track/raptor/brake_1.png new file mode 100644 index 0000000000000000000000000000000000000000..09b0a5f96d49889d08c14b88092177f747d4f8f0 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!3-oNf9zQVq_hHjLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$ynS%6xwp5zv$L|XvAD9bOwgB!K-G*TL4Lsu4$p3+0XZd}E{-7; zw^}bo@*Pm%a1Gp`5mEa8cCO5&EuEi!*fAEX7O8U@GfwheX(zp8>4OC!uT&luZQEkj zDP?h`GdFZsy^FcZhAYn|-)oIzyT}|FyGK`Y-_y%SZ+FqQ=Q1v5B2yO9Ru z)Oxx&hE&{2P6*&icVKoaOkcK`b7|{;XYt2+-2cnpS#$}!f4k+w|N4L{Z(r=~U08lR zZo`ctlhV|O|L1Eh?rzmuxQl;@_}yCTT^ny~{B73uyX=kHrP{j@ci4+Q|6ji9MOE|E zDH0d1YH}`UyV7@eyZ$0h!#6MXYBb5cvo^Vg00DGTPE!Ct z=GbNc007}hL_t(|+KrS!62u?~z`7zx?e_oQ-2vM@N<3#0uuhMIoiF5$i-LoKMnR<` z3ItCIT7zY6v<%ZjIxAaqCWIqi21gvUY{I}{ts~I1btZ)65IPhR@Csp{HEAjIyAG$Y z*I{c&Xiym8Pxo?@b8S+uoE!+-3Ii@TF2e(chvvGsBp<>Q;p_4~#BbsIzP0aY`W1o;IsI6S+N2IS21ba4!+ zxYar-kngYpk25c`)%nwZ*IOU-l3KFqe)9v_l@e(o_dJ{`REaL>xRhn0&Z zriQQ3j`0fKyL(mK#j7pXSF9)(bvM@ha?;3F{i;;4sD#;u`k?p0wqgnMcfAYn dco_4P+2;vo&PJQ>qz>vOG)e~mi70xa= zGjR2(q1*7Kxmz(0SZw!!gu zc-Cd{mYr>Lx$!O@IR>t$J)E@HXnC* zWYhm0t@dvOj2KR6onSbT%C$*O;oBD76Yu+XTwSeuqH2@0=K57iZ@juRIqoPkuvi3p jIx@`BRAgjW{)#znwu;`W?>WUlgBd(s{an^LB{Ts5*I_zp literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_left_2_2.png b/resources/g2/track/raptor/corkscrew_left_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b6759cb02cbedff3f17f072a71a94ede189303f9 GIT binary patch literal 336 zcmV-W0k8gvP)V%9;`L4DxXx6?C9QgfdDf6GSMpi9oeT zpVd-Wi(#$&Rm&gMvOOgG#9&xUloZnvtwL5Zcp>-@1+t4T0?2NHYK?zr39M!3kOYFb zyQ>0Al<-wZkWI`!VVg)`#?}geNHB=W1cMkH#P}ovAfgVdALJqwB3$dZCPW~|C?BF5 zol(MAK!RBkBBVwDgz*~DdaIWWlj<)Z_UAC~{Hs5zKbjv<|k3?#4J%UA`Z6a#!hT!Hla=+)1|m2X@3U-sAD z@2$Vu*?7Bp{&aie#q#m};{JDjclQ7lF_r}R1v5B2yO9RuO!ahe45_%a^ok?jQ3Vc` zfC7it`~Nr2UiOIZ*!)d(GaYYh1fAp8%2{xJO3I3$FUK_8Hukp7+>+&!-y7n)J?%_{ zlyczHYc`6-vu)C5+oWLNwmZ5aw#bq2J0wW)@A{A3LvjrtXws88y!sB3!RBqIG=2VoRaN zaA*PSxGgmvd6oiZdTN8Y1!um&l2BYWnMfX9YAKO~KuEtWKB2G*${-*0H|_d^5LK5G jioedKKb6*@xqkZs^H2rv9{wEn00000NkvXXu0mjf=S6i{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_left_3_2.png b/resources/g2/track/raptor/corkscrew_left_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..357a695f327f03019d8ff94960d9aa8f7a972fbe GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^96&6_!3-o%@#=yEMraAKx$TU(Icw&S0D(bhQttg0UpXFPOpM*^M+H$Jf)vF{FZ#^`bhdzJg@dmp!7wcfuk^!ul^_Z+X*MwBL8ZN0j8!!Gf# k?=oxN@vmVLO*mlxYbI00!^n3_fd(^py85}Sb4q9e0BJx(x&QzG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_left_3_3.png b/resources/g2/track/raptor/corkscrew_left_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..090c7575c13d26a0f93265083ed823af6a9ee577 GIT binary patch literal 991 zcmX9-Z;0D;7=G`1cey{_6{!+uz{rZ1VUXa01PqvI?(7|r%eZVt4I^rXh4n*(D0LKx ztb?LuQ92S z02u}FJdh=z9E@w?xi+N*f*GmRzU7Xb5beu!#^8uzj;^YF%Md%35|xc!-5Pl1QBa>m z9vXz{3`fx_%jE^Js3=v#XcUX>YBgv!Bj4{I9*#yM1cV7x9b;Q*u|p_bI^P#71I-;4 zJ0s_C+#XJQ6SP97(;SZH$gDy$2G3iPT+x$drFOM;&}zqFH0}$aOPHmkZJl%qbfYAA z6{XY2A9!{zXbgMdczg#504jh5-~f042LJ;MPy$&*B@1~jihD8zCJQwI{2atGAO(<# zqbiGB8Tkd&t)SS2ON)0 zyff0gaj`S0cc*?I^+r?%I1D3=<80oSPCht=(hnx+&AMyX`7OqpZq0_%xvATftBJyf$uCy`B|28(SZSCsg51je+Z@ci_=H%qZ|2*^l-s$jd zVeaPkHTeF^t2f@ba$)P{<&RF_Km2xajTyiB^6k~n-rIZS)LQuYYwPDzPhZ|Du18zg zb92&H@}K9Q-GBAPhqf{gW_EvC{yBGwyLWUQ-FtH9;gi>Qvv(W6pWgd=?Z))(h3Suf m%v|!c+uz3f|4nb16yOftjr?xfbNjRISJNUPokuzH} rtMn(gh*@cUnTx3P!T+x^vX=4&*#ihMKZA9=00000NkvXXu0mjf(1(xN literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_left_4_2.png b/resources/g2/track/raptor/corkscrew_left_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a855feb9fae1ab09a73959ae2daca8241b66ce0e GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^ia;#G!3-pC+*8v7Qd$8%A+A9Bf4%zq=+*z@<)4Qu z-?r|*?61AwTYt5)@pkq6>GsBp<>Q;p_4~#BMVHSr0IFsz3GxeOaCmkj4ak}3>Eakt zack`bZ=u5qJj?-%$GGd@O&7OmDNdX0pdNm9Bg>4%aRRGUn(xea=3E@nvSf*Q%8n;BTsu1c zwO&wNId}cqc&7di$7^X<9}4b#z-M&t*j~p_dV{TWHKVpB P&~Xf&u6{1-oD!M#(Eo%d^)i g&9c4p>f{fmvmwkol%fc7(Zy85}Sb4q9e0NtZoNdN!< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_1_1.png b/resources/g2/track/raptor/corkscrew_right_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9991b181b3227df31b3cf9e2e54bbcce9d593e5 GIT binary patch literal 335 zcmV-V0kHmwP)&Wzc+>LOiHOR^|CBC3}g7~GqSZS!Vg9KXDZsT zOUZ^)89yaS)5TY)zwnjewtg|KVN^qk3~I;#A0$a8HGHpTf462{`YhhBVODd+bI;;e z7OyPc*57z%cMaotM9;>qx$z1|bGkT4a+>i1Ny3d6hzJJ(uuc~TK=u*fV0VPqD>xs# zBD^hpA;Oj6cMCQPe_Bx1+#fm1u}}P34Ey?*w>=hY)nz=fsYmY3ar6{eR?EeAZPn%e h1l?V2%kKlqhQD~D20WZyZ?^yd002ovPDHLkV1h(IiW~p{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_1_2.png b/resources/g2/track/raptor/corkscrew_right_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a0cbf58368f99a44664c563bbeea09a277177550 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^R!3-p?9tg_>QgQ)4A+A9BvcL9zZ~fKI#?$SM zo6Yt6#r>z{y)Q#_INe z;%2+QD4Ur)yT!NdT*n%IJ#K+r%dBJXs9#v(bbXG&oV|>PPBC3sXWMiT=spHdS3j3^ HP6pGsd%8G=RNQJk z@6C5WfrBMr`47zpf6w0**mCj8t2G^!k}55VTf;bauc(;8Ey%EFlhWLsrW^wPX-d3@ z5`TM}&xyL%o}bur(dC?`s-Lv~J$*cVf;= Z_9GWrt-l4k3IMHT@O1TaS?83{1OTa6RP6u& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_2_1.png b/resources/g2/track/raptor/corkscrew_right_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ccabc21c803765ac1016fde260fb9ff8ccc7268f GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^IzTMQ!3-oP?%U@8q*MZYLR^9L|9JW5;mVi&wfB4L zuXZ+`Zg0F;KEBypzhB(Hn%h2|!Pt38nj26ZV@Z%-FoVOh8)-n!Vow*xkcwNq6CC>v z8}KlzPVRF4_W%D|$IQ*#%B|0BmSwoTDLi8Lyt8&ENA7M{uiZOawxo-9YQ7W|oN4*v zalY#$SsNo`WA=H;yN~p6d|J$ZZByRr^2CXcxg*@)*UN>fcs5OX($TRY^oacahpYzq z;lZ0+9z=e%o%L*r>ck&KGjqP)Kd|r7(svw83cu^#OLy;2sK2$Y&VGaL&296}bcb($ d`TO)w^Gp`@<+e`!hCt^sc)I$ztaD0e0symlaWnt` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_2_2.png b/resources/g2/track/raptor/corkscrew_right_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e91d37b563b48e21b1a3baf105129c302b0e766 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^96&6_!3-o%@#=yE)B}7%T!HlG^4;&FSKqeozwEEQ z-&=pRv+;KI{OR__i{;~+&Gq}m{j0g{vvywE2~^5h666=m;PC858jus@>Eaktam)2w zAm0H64(1C@i;D05J-<67@$qX`FNQvy&HS4B8<(EQyk@4tFgL}R-KmIqo!pb4tTziE yEu2;mwZc_V%ra0hQRUqs`%8)Q-v3Z>*z-<;>8{1x`h7st89ZJ6T-G@yGywqYTu0CV literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_2_3.png b/resources/g2/track/raptor/corkscrew_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a99e5dc5fc5c3546597a20829bc0a4d917f2f932 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^svtH8Gmw(B2sUk=N+l(Jsl>vbgs=pqJBS3j3^P6fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3V)^)fasP`SE8T(W7)yfuf*Bm1-ADs+qC8z3Ln;`r9t`9= zWWeKckoViN%6EU?cMB|WQhI4`{OVV{q~NSw*NpC!JU%gFi?Pu%mu&ZAM+1JDy7hPS ziY%RaEvlPCdO^>%Ka2@m9*Z;lz9QF<>$P3(z{-68H)>3~u11{~1KPsi>FVdQ&MBb@ E0OTu9H~;_u literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_3_2.png b/resources/g2/track/raptor/corkscrew_right_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..460a291f504017f75e4efc33d4afc8464266519d GIT binary patch literal 343 zcmV-d0jU0oP)Wk=%q<<7*rXOL{};xNkY<@ z56r$e8NHMT#$?8;&d{xhOorEMX#O$uVwc^m!(^aUvr_%`P$6dkL@8!w7rSuGedlT! pzCyycpAjT-&Y<#z*IFwG-~)8~4IY&Tc+3C*002ovPDHLkV1fmsiz@&C literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_3_3.png b/resources/g2/track/raptor/corkscrew_right_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bb36a9d36ee7add8f830e6e19d43815839fc7699 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA{C1o(uw0_peBt8ZKPU-sAD@2$Vu z*?7Bp{&aie#q#mZ=KB5O{?**}PgaCW0o5^<1o;IsI6S+N2IS23ba4!+xV853LB7KV z9LxcaBrYxc|9^jQ!0zZ|wcgK@lNFQFt{M3HL^C%|SS1^6viRkO%CpvQ_DY`oxuPP} z?^o#w_1acXQ;+(2TWV+AJF2mA@|O$Ms*wS4L62AGtpB1GwlQAh-=ZtNOJ2R&7v%c% zgZI{BYZoo~wslW)I3-n69dsJ#)^!Gwf=n W%vo6#C+7hj%HZkh=d#Wzp$P!20&^t* literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/corkscrew_right_4_1.png b/resources/g2/track/raptor/corkscrew_right_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2955fb512879810c7f81978e4663913dc5f643 GIT binary patch literal 348 zcmV-i0i*tjP)quV0H`{bV!&zO(xA&2r8=+ZdfT$IiWJBGN95UmGv&4ol3z;puWXxZO3kx?wX1J0<`)BPn`C#%rCMU~vI(BAtFSHfX uiw@OZ{rZ#W=^b3N+t2C!3q2drTl)rl6bbgasrA?Z0000%Q_ z`@Qv7I~#9T&tEJb-!JZ8&268~V7zn2GA*Dw#*!evUWCG54^nL-9n8yOsVqPyR%-;Wm_ZRIX6ndsj-K(w zVIKg8Xi?Op0Mc6312nLx32E)8Eo`W24-02suiDO9q+40ldW6QLJWBO@-UG=us!2+9 zRS7BAYJt_F09devoz<&KOcemJ)}|sY8D{HT#-lvj4yI+f7)eKd!{Ql0A6#|1jno^G}&qI%wgW-ji1T08DQO*bvh4?EnA( M07*qoM6N<$fFVdQ&MBb@0B9aH_5c6? literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_2.png b/resources/g2/track/raptor/flat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..df3f5670881af32b8d301de055a3311e6222ba2f GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!VDzua0D&}Qi=gSA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?6&he80GVHMjlcB~}qYMT{jue!&b5&u*jvIU$}djv*Ddk`n@g(j1uG zyd;uV&PbZGR3d4Pw&9VqGf|xj%iYAqHbzE#DN7W5t#Yd`Na?NW(b`oJUyK&qUais~ t6=a;YHl{=Eh(Yo-C&4cT^9?65GCbhZ+Y?jYv;$~9gQu&X%Q~loCIC+mL8bg K=d#Wzp$P!GStAVq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_diag_3.png b/resources/g2/track/raptor/flat_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0b96da2c5309a6be47711075e770a85dd94e0a75 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM#!VDz6q{1wL6n}tEi0l7&`RC!v`@QuS%g6VN z`@4q!xDS+)@^o>$@~yd6@#a%pUXO@ GgeCx7lOvD- literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_diag_lift_1.png b/resources/g2/track/raptor/flat_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..210bd4ccdb41e06624f48ff52553b96332aeadd5 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM#!VDz6q{1wLlth3}i0kuk<;(us`@QuS%g6VN z`!h2$GchqSGBV0vpB@KPBk$?r7*cU7SwMwB;?$wwk4kJ!4xJ1M1&RzD+6HP24Bc*8 UP0x56K}s1sUHx3vIVCg!02w75rT_o{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_diag_lift_2.png b/resources/g2/track/raptor/flat_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b62554e08c8ae122d9b16444156123085f94ac3a GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8a!VDxQ-)emfq@)9ULR_DRD_{24-tVoy+Sz!q ze0;ySKQl8k6B837Bja4DY<{3JHBT4EkcwN$32y`v5_H595`2UcBm}l?WN4l=NyxdQ gTU%oHjvWjPo9~D?$#xri0Cg~Uy85}Sb4q9e07B#=cK`qY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_diag_lift_3.png b/resources/g2/track/raptor/flat_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6389cd7b8e84568ee65914e1283c0bcd654e5804 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM#!VDz6q{1wLlth3}i0kuk<;(us`@QuS%g6VN z`!h2$GchqSGBV0vpB@KPBk$?r7*cU7SwMwB!t3(k4@zuJ4xJ1M1&RzD+6HP23{$(c VCO)nDau=wS!PC{xWt~$(696(T9%29h literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_diag_lift_4.png b/resources/g2/track/raptor/flat_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6be370294bca0f6fa85337a9462ad3f6538c5a3a GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8a!VDxQ-)emfq@)9ULR^9L^Kj+M{@VM!^%u*> z_lx^8Gcz+WF)=bS-rblP0+ePf3GxeOaCmkj4aiaRba4!+xRorR6`msSDj-F`D>y|$ qz^qxRdE-Vy=Z1QgTd3)&t;ucLK6VU0w#t4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_lift_1.png b/resources/g2/track/raptor/flat_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cea430cfb8e0776e5a1511a5bae09ff95f577e9f GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!VDzua0D&}2?Y3rxB}__@$%2Zm2X@3U-sAD z@2$Vu*?7Bp{$lxfW@ct4CMHHk#y_5WegV}nmIV0)GdMiEkp|@CdAc};RNP8VaA5V) zmb~B^wm!r~c;?=qK!MPd>p8B9%pt{Pnp`u@7tB;nxfj@&)iSyb^~o@@O1TaS?83{1OQKDN^JlD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_lift_2.png b/resources/g2/track/raptor/flat_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2dda730af867659909c72e4ae950b3650b4b3045 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!VDzua0D&}Qd$8%A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?6&he80GVHMc!8Gcywt6C)#I#@9e2plZgFAirP+hi5m^fSeLf7srr_ zTe%lD3N{#Uv?fNa)tPfZ@QIA3vO&wsHy*pDyh%_yVc95o?3TF3|HnVxDZKJA_`|1L zu>OMDL+M*NhqnHmy5x`+3z+xBh~mb(4v l|CBWC2_DIjAKzD9WIs8}RYvfF=Ut%v44$rjF6*2UngIW(TM_^O literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_lift_3.png b/resources/g2/track/raptor/flat_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2604b61bbdbec224fd09a3630f3a139edf6b7603 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmC!VDzua0D&}2?Y3rxB}__@$%2Zm2X@3U-sAD z@2$Vu*?7Bp{$lxfW@ct4CMHHk#y_5WegV}nmIV0)GdMiEkp|@CdAc};RNSgPyOFoS zfXC&c_T@*sXIM&J&SW%XkKM#LQ_)8twaGx1mDkRDN6n^xjNhK|sZXEOvrgDEII`!; zLLq+T?Or-Rqt|I|RN3unv}^J*q2fonpFig72aMVNcp!0*ib4$Em%1+{(pw4kP;J9bw>B*()whnFu?LWWj zB&_T6ZMhm{mhF&TTclMve?ysFqUxIS4O@9Ty)u^m{~Rk<^4{_LpPQ+?8Bbr_ n`;wk&;ACe7!?ktgJ0CDNm%4JbH5$$ZI)TB{)z4*}Q$iB}=M-11 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_1.png b/resources/g2/track/raptor/flat_to_gentle_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..405d7afe6869075b9e163662740bb05cad9b5bc5 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bu!3-p&GDANCDY*cj5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&tEJb-!Ja(fAM%dPz7U2kY6x^!?PP{K+Y6T7srr_TT3rH@*P#+UxarHtUZ$? zZ)^IJd`aQeuG1GL3shcDJutbYC_2?opi*M>zaoEq>(9&!8(0Pj9;T{7Q3~O~&0Va_$?2F0$ueV!y9vRyY~x9tKZWKbLh*2~7az C*k%&| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_3.png b/resources/g2/track/raptor/flat_to_gentle_up_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec345012cbc8c20433b5e9ef58f625e46dba1d49 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^szA)g!3-qlYpWgsQi=gSA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqtR4`BorBj3q&S!3+-1ZlnP@^`0({Ar-e;Cms}HR^)Nw zJt+3=zx|H(jN?|()3yDXlC$0S3LlWnT<`MoKuOJ431$^}!6i$gl>|DHG;V&f(@;_p zFig%_C6}(&79X&6VoKqYFFm{(PG-}i_pVR%Tp6_E+QciylV$d$bl={P>FcCa@7}9( lyLH0$BM**keEsXYuzag3%Pgj!njl{>c)I$ztaD0e0sxFnSPK9E literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_4.png b/resources/g2/track/raptor/flat_to_gentle_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5768b9bc58e6f6d51d4a83b9af85964de83cc5af GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bu!3-p&GDANCDXjpX5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3V)^)fasO&=`*a55l|R=<164DY1o;IsI6S+N2IS25ba4!+ zxYc{vlkczt2aChBlR6In{@>-uxoOEb$NO$>Br`+9i2zw;vm054uQw>0AC}8r_HoUP zj!Ru{yL)?1ZnTw{__?siC;jY~6?$bySEoGOR9JT9_|a6KBj5JiIJeL7O!Qy3Qz7AZ zSJ}PG^Q}8#9_7CCT(orIyfd^3TJS zFZ*ln_tszSY&_lGc(HtZzqo%jw|zQ;aT50n2cS~Mk|4ie28U-i(tw<$o-U3d6}OgN z^b|U*z{BF8o?$5TzdoN!@tTF+@p;_hri+_$t0&F<(3s}L&@lUI&W%sIHkyA?xb%De zBhGYR9i{LWcV5ppvZ(4?h|f$m4(+t#T1th6XIf@RJNMsjVAiwhdcync<@zo6vX0K$ z?04_CbXE4^zQy6&d%DF^b0*D{OXB8z$k?kbE$Vw*|J~%n3s>=4`KIsRyX~0J?w2vw iepLKb_Pri)p1s3|SHyzn>ldJd89ZJ6T-G@yGywpWO>jN{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_diag_2.png b/resources/g2/track/raptor/flat_to_gentle_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..526c10652311e7552c655eb3f063d5f3f7c7ba2e GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol_!VDy%Q_ z+tu?I%g6VN`#-5-=>WD)BTQ)h%c55uaf=FCoNF&$#;8a%&;j- zNKV49Tt;Ne%BnNx1gg)Ao(Ma8Z(@)EaktaVt3>At6a1AwlNKjT<*+C>}W~+7lZS!(e!j_0=l#^SnTX N44$rjF6*2UngF(OBKZIS literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_1.png b/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcabe8e915d42fb4f12b5d2adb47e57f2d7d986 GIT binary patch literal 314 zcmV-A0mc4_P)`rtnvOx%C2B?vl+En zt5q|zn~arF<=y~OBp8?pduGQh69~|ZWZhM#%@!;=)ZQJ`Ap{!iXv3Swn{DcvM%jDW z%~(T2?0|Z0p<=`Djjy-s>D#me4M)E{wTf}-*#D6&uI#1{9nP^eU+~orGegg?H2?qr M07*qoM6N<$f~co@`2YX_ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_2.png b/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad39733747d8276291b59ad2074b20108b50016 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol_!VDym+OKRMJW-)lW L`njxgN@xNA^~W@j literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_3.png b/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7226f61405ba7a1738b0195f5d7b7ba14a56e695 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^jzG-M!3-pOs)MqDlvaRGh%1o(A20trT=}xU_I_{u z)y~G-)$_!@pbJWwtF{I+w z(o5VzhZQ(nFMhbtwf}GacIKpP^_ga#kq15=+L7yU=ilsW+KdnF6ppODeoedM{ZS8w zjs%a_2TI*sk~r3M9XE+7R_X55Iu=syG1vHlvg$;e84^wJSk5fXdd>BB(k7MEPlq!2 zrpYai(B(6ft4h@{J|^3KpmyoAv!ydCb@^av z=X-L}n&V9-FMB&(zApRu)p$B%uhR0c%ri6fgS*01)_a+^@UOWM)NJ^H^Mf$YxnARi RM}Qt;@O1TaS?83{1OS{>d{_Vg literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_4.png b/resources/g2/track/raptor/flat_to_gentle_up_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6eaaa4fa965daf5405933cb4f09abd50ccd2f6 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8b!VDzqJK6hylw5#Mh%1nO9u)$y#tT%+SQ6wH%;50sMjDVa*VDx@q~ccZ zWk)_1MGh7RRw>tK|KH#3N&cpGVCSWT1J^D+3R}@`{WPnPJs^NZ;pFT~ok6BMgabWO zBUeu`_0Gz0v{f|?t+xBSV#QLexf54>TvhIPQEmFFccxNr)`hry^NhGqaALJZ*lXwA ziihgrryLeO(jfUx{O}+5?c!SVn`SO<(b+MhxoKrow%wFe_sSCfcVgeIPo2G^^Y=!a agZnzVRM9AIR)TFvGju59=NXas|&tDnm{r-UW| D;K(Z) literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_left_bank_2_2.png b/resources/g2/track/raptor/flat_to_gentle_up_left_bank_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..65c0e08a93ac6a32f28bd765b61e579112d66f01 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG?!3-q(4N|RvlvaRGh%1o(T)z8%z54s;)&Jw= zpNA`7_SfF;t-spYc)NQ3V)^)fasO&=`*a55=f_*LfT|fwg8YIR9G=}s19HMVT^vIy zZuOpbrq%p?|GJGEbFWPJaXsJA+0VYonu*~|NcP=XX|LWDtxC(?67nM{ z_MD4G>S85+*GBzhy-)Yb7(R&3*u38T!1uU3wG#G=oU2q=&-jI(I1IFb!PC{xWt~$( F699F>OYHyv literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_left_bank_3.png b/resources/g2/track/raptor/flat_to_gentle_up_left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a9eb1a58de55b03832056ccd2c83a0ac9403b6a2 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^Y9KZTGm!k$@g@^U=?3_OxB}__vyK1PtN)Lee;%%U z+q(aH=jL0VBTcb1N_2wzWhnvw^^q{&V^x- ze~MP%t*4gi2Q}H6C#1d7(=|4{*E`AW>578~r*#X?ns{fI;>>riOsev}CNVQjvN)q- zbw};=#fe@oAAPe(<-9XRa{*61le4<~!fYE>_ij3ZhSdE@JR>^>bP0 Hl+XkK0gPmg literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_left_bank_4.png b/resources/g2/track/raptor/flat_to_gentle_up_left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f285bf0b9352760bce08fa03e86c11fb8c2a41fa GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm9!3-pe?R^q~lvaRGh%1nOAHDj2y!`WU<=fW% zm;JT(d+V=uHlA*8yjVWI*<8P0+`pRJKApk%#f;x(K-G*TL4Lsu4$p3+0Xfq=T^vIy zZmqp?kne~B2TMQ;t99S+|ND1GMptWBX*{2v=+UF3^lp>P_pL?otA7X^$E)3J+f;ln zpm61{MW4h&w$A<4{#GPA*mc!Sr%uWylfY%*(IO0ldK?_t5iE7HP+411O(%AQrP z=KI}Ls?76Xukoa$CwG3%Q_ z`@Qv7I~#9T&tEJb-!JaZ%*@Qh#Kg$RX!n0wIZ!EMNswPKgTu2MX+X|qPZ!6Kid(&t z9fgi4aIloJC?5EKe|PK2XKHQ5;rz;}*`bvp`%*$YVEAuANPLW>c5%eRc*-A zPpZ6Mz5d)$xm;4e{p%#{w_3lRyJ=jqn7QAh%b?mNc`{pz^!Ff_4)YxCEE{oV&0pKE wP02Jo>NzPWGVzv|hil1+m(yQwyJ>CztBC!~d7ZFBK<6`fy85}Sb4q9e094v^s{jB1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_lift_2.png b/resources/g2/track/raptor/flat_to_gentle_up_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..077690099c919748fe53d1fcc178bfe502973cee GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^szA)g!3-qlYpWgsQpN#3A+A9BbNTN7_3H1VSO1Tf ze;%%U*~mIV0)GdMiE zkp|>U_jGX#skl{p(Oam+fP*Dq(I-jkwmbi~1PdH*?Ms|`boDzffxz;##Xk+ci}@}0 zn!2+(dv5Bngi|_q5AS8a#uc2HXWSvXl_^k%Gxo^8T`gi0u1@ZH@jP&r-ogzX-yCC) z$6RDDQ}K}uITwe65@G f*djVy=@*mzLM~=bop>Ig6B#^R{an^LB{Ts5KtE{~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_lift_3.png b/resources/g2/track/raptor/flat_to_gentle_up_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec25ffb58513c16649e0ac73ab33edb19d1b281c GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^szA)g!3-qlYpWgsQtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*v*nVFf1iHVVs(eD4Wa-dSik|4ie28U-i(tw<9PZ!6Kid(f8 z1BDJNaIjq1Fky}3yZU>4Udzs!T#TQ`{bHN$dB!ghlXLwaGe$}{@A%%(p_6o|dPYZs z_alk6x4F}l7NumDmn|^b#mlrT@LHTW&6WV2#o+1c=d#Wz Gp$Pz?p%RZ*oWI=bbmFuF+R|8Ism@S#0ol> SaK@AX0000 z%l_K?z4cc+8*f+7Uo0QrFYfab6!{?A-~Nnn{Y_omM4`E^H@h}3S_WHaMtU*yWu5>qyQ_o+>Yk+^Sg!;tyvoGpnL zj-)UcNbH(XBfZMxJ8VEebrYfqF}q7QOmk|Bl5?Md?*toTcaMIm(Mv-Ys@nd*r>(j>F$QLuT~3 z$j=P5c(iBHjev!7R;gNMYYN{E vs}2jLU3If&_0pWRnd#rd>AP=Ua44}i6y;!h;;j(^bOwW`tDnm{r-UW|l3idC literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_1.png b/resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd7efa1023afcb414f227958f4b1a51ed628dd1 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!VF@mOPc~Ixd5LKS0MerUj2W({PS?-+t&S; z{k8Xd>#ue;-mad%SU#Skai#%K1!GB&UoeBivm0qZj=86cV@SoVG*woO?#570 z&SQyTO`E$NeYg#bC69c0k&=**z#jwzA79KcXk4h{!2s0wk&Q!a0{_1vpb-q7u6{1- HoD!M<3IH(^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_2.png b/resources/g2/track/raptor/flat_to_gentle_up_right_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..25d771dc00b2b4b7ce459a907cede12450d7e2df GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG?!3-q(4N|Rvlx~1eh%1o(Kil|o`R@Pq>hGgh z|Bsh{9ULs{j0g{(;19koRrH3YG5o0@(X5gcy=QV$Vu>Y zaSW-r)!OgK*I>ZGa*=g=)35)}XKgcaTU^+8Mn-I6{GYE}49isRHqX?V#xSF8eQW=s zHFufPmc?#w>e2C1TzRFNXPs>Jj@PyewB((mjn%hyO}}qrb-S+S@BYwzTTgJ77O-&V TF;;g2?PBnB^>bP0l+XkKK8;d+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_gentle_up_right_bank_4.png b/resources/g2/track/raptor/flat_to_gentle_up_right_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cbaee97a99a1c8af6328f7027a41a7d1f95d6d66 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT@!3-on#=ZLlq|^g^LR^9L|9bWJ(X0Q*%RdiS zzHQxq*;~tVC;y7MxTdg0tzGcQN~}hF zzWMv3+8=gUZr|w0SfNChc)I$ztaD0e0ssk9Yb^i( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_1_1.png b/resources/g2/track/raptor/flat_to_left_bank_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..af87d65b3b7faf58a416e1a60d9cc88506a1a314 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^Nw^){A{1t8ey-SpNyQDE@o|Dx+a$Jd@URMHmk=j z+50y+WfjaScpNt;f$5o@xEk}9$^+cL-na-hEWDM@ThW+xOF`l@gTM4Y$4QAl7<3zV zzn(gUNBO)RtBc6)s|^~5vK<5;%DoH!`aPmS`a>$~i{8UY?|}|s@O1TaS?83{1OUGB BVx0g0 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_1_2.png b/resources/g2/track/raptor/flat_to_left_bank_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..77dc1f293dfd6229aa068e16669b2e3644d2ddd5 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T&!3-pS9lO38NJ#|vgt!9f|J&`qPe1*Cw(;lk z-S4AU-?r}GuAYD1aLxjt9Ain4UoeBivm0qZj;*JQV@L&K>cNAI4F)_%HZ0zH_@DG= z-=--~@8$5P?Q~LOvCL$#$YeQU(lo=bl}9U|ZL3j8=CVzjrrgxBm!DG1$g|Pjejm^v N22WQ%mvv4FO#s%nI*b4S literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_2_1.png b/resources/g2/track/raptor/flat_to_left_bank_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb27fa4de41c8d51e09d3bb80517749b95652174 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^l0eME!VDx+?{HTDDY*cj5LY1mzh3=+y!`WU<;(us z`@Qv7I~y;SkM9@vujaP5{aP6bRKZvh)$`DA9pISv4iE zW8$PqT62z1%vz$dgyDJV5-CnDDTm6pb7j~1bvYU6Ij6g?-n?i6bBz9s*$oCWOF!y%!z%8VopG0y7woX72r8=$l*`{$fr1A^!z@%S-Ocp19b!QTNHTxzfgKqgUvN zsuf+$%6?+(_4bs2&)1lRX1*Q2=%sh*;zj3@-?;s PEn@I=^>bP0l+XkK)x}K- literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_3.png b/resources/g2/track/raptor/flat_to_left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8f4d75393b0a918fe9a46d54ddbe0db9db6683 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bt!3-q7SzVt4q>KZ6LR^9L|LykwXB+>oSAQS9 z`hUFq^Kj+c*8P|LwfB4LuXZ-xuAV>L-gvQme80GVHMe~_gRxHU3y?O(k|4ie28U-i z(tw;Px|m)>B%#< zd)c{MY7$XQ%Fk!>Z;XhmcdT;ZhPnED?gJy*15{kw)uu+dhpff`xTEY zv=ILu^6pvE)j9JTJD*In5oTdXkSeyfI=0ZG%er`~4zq$n(Z{%}#>Q+8k#lCfIZ$JK h`O=P=nR~xI;k8I$^Eu^nS{vv}22WQ%mvv4FO#t_-ZlnMJ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_4.png b/resources/g2/track/raptor/flat_to_left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d42aa1bbcacba2efc0164c773cfbf203d3c8f7 GIT binary patch literal 986 zcmX9-QE20I82`3z%eHz~q)5ad8S6vzf|rNDvVZlBG zuVU3A;V4IiDt(C3c{%OFz<_zJj zWu{u=8%?F%(Yie|2y4TUBhpxoPZ~0A(x?&c6u5RXw0CghE8mR{CEciK*KO2m9hxJrYMK!_Y|dHC=4v?POF7_J%UYV z1e{SwUZW&~&RMK(^JY`5xN^O#I)Uaz1(G8eDZ{I@taEuoG^$FqrL{c63oSpYhvW9} zxR(+jtpZ*EvJ8}saV=cxQ2CxlKddES(jsunjZcWU*1yA%20bSQu(W2Tz2G}128 z&9dND)o!!UcdbFMIUe}a=^Z2hW)O(^yjm>k<+8yt6^>~LtShoTnK@ACaV~>25?K^#vd9xq zD96XoJ&`=R_XC%=HdJ`(kDo8a&Er- jZ(rJd*gAW?pZ}3e?*8|3;ZrS&XM*($8`-a(e(B2pp8cod literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_diag_1_1.png b/resources/g2/track/raptor/flat_to_left_bank_diag_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fb5d3f4b650dc73a2d19af97892146697191f1d0 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^>OjoS!3-q#TwG!Zq@)9ULR^9L|9JW5;mVi&wfB4L zuXZ+GEFa%5?qAJqe@KdJ7Eqe8B*-tA!Qt7BG$6;s)5S5Qg0c6YqY#4t5Ay+yS^xeY zbJ3GNd2a0t#?Q)yvn_%889ZJ6T-G@y GGywpB%Q0sF literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_diag_1_2.png b/resources/g2/track/raptor/flat_to_left_bank_diag_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b50650a1889555ee3b62a810cc8476eecd8f208 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^c0kO|!3-qRv-pI8luCe4h%1o(A20trT=}+j|7Cye z{oeZ9)$^y@8!wiR?-%#4=C)5~FkaNswPKgTu2MX+Tbrr;B4q#jV!U z(R@b?IGh8SIaw$DUB5kR0smIzvwy8Nr7#>ib0=`Z{0E^;LN4YnIxCYr6vdt}?mxi# zyZ`1Z)3pNnFL=M}|LW9D49ws>;3TXYQY7i^ApPzZXTxr5k#?S|hxm@nV|ME6z4sev O8-u5-pUXO@geCy*dQAKP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_left_bank_diag_3.png b/resources/g2/track/raptor/flat_to_left_bank_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f91596258540b8a80794a68120df172452ddbe33 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^4nWMo!3-qp_He!hQi=gSA+A9Bf4uzjaOKPX+WWor zS34VTSI=K8AKx$TU(Icw&R|^q)G3jMAf9%lBtc)bQr+|Vj2B85T^A|uUb)hC>bkN=@4hx^{+ryPaMDfa nNaEp+`6+sSy`1Vwf(Q6=FS8vzJNLv4pverLu6{1-oD!Mm>J>_os5%84;8W+v4$BBK1tKXa>+6v@Sw=WdcE9ilC3sl zJAALN3`bfRnd8Kn&ODLEYJAaK$F>ZiMBdQ(=MpAR8rnhiobfnN_og-Qj?bP_8E{3L>bo5EjocWza)H_Xl zG>c1Rj-qQU*AT>(sye#fZ?#5_6AcDQ5KK=_7K;S}!T_p=vBQ!W66%<4OhtQE_vWo| z;hro<^Rvk*D$=DAhvO1iQE5i!c~e$wEnC(eIo;#oD2cQRMIgmxDDOgj-trp#NrJ<*XVJAua`8+`xi)aAbE($KLc%&9kM#{U3 zy1#6Nr@ir6Fh!FERR)g4B&Jjs$fnA+8?tLPy{;Ad-6ZzsX^fUrPL@#sC_@1D%@SghC8W>ass4VLL}Oiy5ak&R^LM4{)k3ereqQK-+NKtPF{9Y6O- z@$b7oaOrSgg{OZ0;nmC-dpq0J2j9JXYy18;9xALI{Aqoj59PIAF5G(M?T`NZ?WTPt zck!qD*ss2kfB*QcYs2QX4=z9IT>A03mw$bH=byvz6ZR*$7u7GSe+BCMhd1v?ThCuT z_tMpGtNq=_s!x9ThrYS@`nmUB6F&X-`~&#)8>qlt$=~_#JMD$oSN|U` z|2$mzwsrqyf9?I=`m3Fdx2xw*w>MraAKz@Q-!JZ8&24Y@IPyGD4`WG?UoeBivm0qZ z&Kyq{$B>F!t(P3d4l8i51hBFgFFpG=e|CD0r+7x%-}%g0UauvVhfn-GTj5mp5f_)4 zVje5f>n;dP>C_Qved#xo;~Dox-)S#17b%DwD);&Bkkc;^%s>67_>8_=uAzThn>z}u zJ&p)mGbxl3{H?TVrBToqW){=vN|uI7-|i}%pjF~Q790HM-B`UpG@+E8n*6 zzwEEQ-&=pRv+;KI{OR__i{;~+&Gq}m{j0g{(;1BI8KnPxyK4v3!&nmJ7tG-B>_!@p zGttw=eLVZi-^VY1IyKk(`SY4Euan^=?^oY0YCbkqymEr`6W+J~ W*qZwN9;g5v$KdJe=d#Wzp$Py`5N(nG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_right_bank_3_1.png b/resources/g2/track/raptor/flat_to_right_bank_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7caa5b3f4daddcf0b2b495a15a934b322774ac GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^@<7bb!3-p|mpz#Pq!a^uLR^9L|9bWR@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#mWHMT2(iWp0R{DK)Ap4~_Taw0ul978G?YY#dK9ai9B zc8J{Mc=EseoR=58qYmqB>r&aqCcb6akJi2&Co)9Dm-gB_KXPAId%I%xBoCw9`#(yj zy094w_bM7Tz2MbkvfeClWA>4Q95Nz)EsNP_-(@T*=8oI}w1mOa)z4*}Q$iB}7E?w> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_right_bank_3_2.png b/resources/g2/track/raptor/flat_to_right_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d804f40476f0b74e1995d0d8893cc5e2dfdb3f25 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^N$U&zhDN3XE)M- zoLo;A$B>F!trrc&8Web#113oDy6*j-Tf3;)nOidASA3@8(!w)+g*Qc*J(V{E#kwr0 zabVO)RrQ=H!C0bjN?u`qgVJBNogcbyCsw;NaQ+CtBFpkY=2?E^>Rk+v)AM)_9D3+) j%DwH+MB}qXzOT$@9cA95=6FjEXfcDQtDnm{r-UW|$>LUY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_right_bank_4_1.png b/resources/g2/track/raptor/flat_to_right_bank_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e71572601f5d218ff44a896bf5874f1f7ade390 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^Npl11S96W3BO5R5 wyZF*hz~#rsKdn~9pWYbTRHgsh!c>?ozU?w=rrVNjAWt!Py85}Sb4q9e0KutXA`5e1_d6L z19v~&xb<89h6_)IL;Z|{0lQ3YaHku*V>EA^Jz@8io5Hfd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6|~)`u*bm)!g>!492mqp7R6sFqQ=Q1v5B2yO9Ru zq$rl4nd<5@d2nYVqnra_b9@*b6@Fi$4>0AfHLTEbaX! PpeYQVu6{1-oD!M<;_Nt4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_right_bank_diag_3_2.png b/resources/g2/track/raptor/flat_to_right_bank_diag_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2d5f153d5acbd7c6d8c595b84b5596d89eee5cf4 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^c0kO|!3-qRv-pI8luCe4h%1o(A20trT=}+j|7Cye z{oeYkosGAv=P#Cz?-%#4=C)5~Fy1+1nHEqTV@Z%-FoVOh8)-mJxTlL_NCo54gPeSa z40v1}j~D(tfA;VD?oAC>oB~zT-Xzv*9_{Aem^1nAA%%qQqjznUYBtFVdQ&MBb@05u&* AWdHyG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_right_bank_diag_4.png b/resources/g2/track/raptor/flat_to_right_bank_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc9edb340dea780b74b2e6b80368e684e559272 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^oItF`!3-o7w>lmKQtAOdA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqo%jw|zQ;F}GsTGoVt&k|4ie28U-i(twZQ4^+-j~jM zPPXwKI5PF$Rh8CHdO9bC-b-Eop_-iZNRi*6^h@t7r(CXjt+?s4R{iqdnjT!mxWtC} UV(n^?SfG^*p00i_>zopr0N5Qs&IHdC6W4OPaoI?xAZocW1n9<=IfP&G?i8uXN7GoBz85WY$V< zoa;I>caH0W)#ZU!zmunkwDyP`Jvq;sN&d@;9%H@ek}bv$7I*rj^d)>^7d$9)u4IBe lXT*AmgK=~Ctxjt_V_Vn2Vi)ck_!H?kl>->t=yB;F9?yzgTe~DWM4f{HJD@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_steep_up_1_3.png b/resources/g2/track/raptor/flat_to_steep_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5fce35315c818b05d674fbfd929b72c1b1f69885 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v6!3-p?`ZxXrQYryHA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwo5v(KIRpm34HQh%{QisLm8p@)Awm}Z{q-}B4keR=l9;(P1o zf0kapU{hGrcjxOrE7r7>a;n|e54c$yeBw{VC#8^ocSW>k-+b~ZM(t*$+{ c_1;Is`<>X0jK95|0dy^cr>mdKI;Vst04IEQa{vGU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_steep_up_1_4.png b/resources/g2/track/raptor/flat_to_steep_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f093d74599e65f5ad4840245b2551170ce411a7c GIT binary patch literal 301 zcmV+|0n+}7P)Y*!Fdbz)j{9PQI3sjN3>lwM((whv%tRhNZlL6K_=5KjHG+)p5E# z@fnMu)3G=mUxhO}OXBd(F66(Mi|bCrs2jr%;Gq+Qd*Vc}lgi;n2sjOeY2hm!=|)+7+VJ6BSh0x3D&9CT z{+ZM{N7XKA;)O&*{Y{<|w(B|X_EVW*eXN+t^W0P4J4$opN_>|5F{z$d^*8cQCBxqg W=2GsT1~-AWGkCiCxvX-lJ|0}4DY z7iYN7-SMAw`jRX`*7x5NojR1n7Dub@a(MP>mbzcyZbn&rQK+k(pfTQNG!*Y6kiujaN-XE5Go`m_e9g0UpXFPOpM*^M+Hr@+(2F{I*F>jX!k1_d7Gi7c1@ z{Xfh%jgc+z`>b3q&zJI#&RcLZ)@nUvahSPRdg%hIu$%TRDp9_!r)_3xZ%#7mw|HK| zvM?YvFkU=!wM3ier+pk9Gj_4&PMKoTwtUjlb%u98wF~+RKil_r_KFYFw-hq|;b%3M TpZ9Yn&~64#S3j3^P6ajJCDChFRMc{wKs(}F*f8*3$I_*y9h-ESx1eBq}u8miox zdfe|9-s^E_dczdRa1mC(Z#f10k)Dfi=0-%s7r7b?L`u3$8vp z%l_K?z4cc+8*f+7Uo0QrFYfO=Rdz$Oo%|E+P=A4geST(HB7ZsI>hwOeAdRdh6k6ai@N+u;N|^fA0ErneZoT8 zSz^I1b@7XP%(<4l*ZXy^j%9_G$>NL`CiCWt`MxlHbKQi!_vg>;Z6(S1N}8ryE_Qc& kDEUc$4ap1poZ_k1xrSxZ=S-OjoN!3-qZZXb07Qi=gSA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqtR4`BorBj3q&S!3+-1ZlnP@iJmTwAr-f3CphvQP~cz* z+`#m|zMy$sZr8HMt~Ui2x!8X>wsqRh=dW*lzGuN>&}|VCAQU+Jk!G#FQMZQM@d-Si z4cOQM8xvB)+-(!m0W2w*A4LJ(5jKR~@&t;uc GLK6U6pG+q! zG-`#S)d@?{3Oxi3*uj833~m;?5GAm4=pkU$3Q@{#2MewcG>0Ar`OUEKzVG8*zIS-< zeYCw*I(g#M2>>{`d3ODLdLK?FzmiG!Y3=d%0Wz@t{DqB_E-Wl8E-q#=nQS(@w6wIm zyo_Pk%F4>>>T01_EHVr&2)rzdnpQRpz0qiNI(EPB1;Hqa;v`{c;5m@QwQ@OMtrE35 z-E484uGH(R1K${it;y68C`{qjbg^J6gr$+T!R$8#zoQKMdUVj7Mb119N;s$#)OfID ztfymsD>v@tlOc{~G)h!-WFZt30VDtw!}MIv#Bqxx9gf?Vq=QOjY?^m%8~HxY3hgc408BAJDI@{a4dgl~8cQVT477RhN)SnaWI%cW zwHV|`$g84Z6GaXj8_$9$fFfa4tzg!uwpHpm+F;NKLw7a{QL2SkfT^$XRzY$I)g$$Y zv*NOw)CTj;@W`8>aZKicC9o2mEAvEEX6hBuGOJG89JuW;aA#3~k_jt{$O9AsLa7(c zRPG+|M!h?ovfa)-7{j4ZF3Z)bR}|nxC2+uZ^`iVpTF&-`27vztK?|+lJeHIc6{gc?O#Ur*ZtAq#piZj z#V&qv`)2;_2e03959iLEJ>j7%FTC>8UhT`9pY8l-pL^=(mtTD1N%_q`{yJR#G2vtJ|KDZ{Zc9!s3*4@M&Y4Bf&^YndG> zI&q(R`mY`TqU`@>SI)Y-(x?8(vC7}`Z$GS^^Z4Jlv)pg~KU;9%W@)edp94?Q8xJs^ lWY}Y)sjym{vBbRH&R&4E#qZ3LM?g0)c)I$ztaD0e0sxY+V4wg1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_steep_up_4_1.png b/resources/g2/track/raptor/flat_to_steep_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..61551491ee8026e99a82811cf3c3ea3a4759cacd GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bs!3-oDe~3Q^QtAOdA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{$ly~esTY5Zu@iwU@^o@+D_{24 z-tVoy+Sz!!dj4Yh_qFE-U2>p zKGrM0oz-7E#o_*+V2us4oNQlLHQZD(-1_#9?v%()+ke~Hn_ggDn{hs>8R#|!Pgg&e IbxsLQ08`>*eEhvv5-YyEkt}b8ZZk#cjX;$V< z{%`+gRtL?p{Q7=YVRqOOON+B^31XfZdZ!(a2yVOeU0LDriv^~7e5Fz?|sXr_0j&5Yz=I5-w9q4cdPgg&ebxsLQ08Arr)&Kwi literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/flat_to_steep_up_4_4.png b/resources/g2/track/raptor/flat_to_steep_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3823cf78c3a98976243a803d21bb4a3ac0e2a147 GIT binary patch literal 363 zcmV-x0hIoUP)6-U|aROB~g{ zbjNQnmcgt!9f|MBwA!<8@lYj0Q2 zUo0QrFYd1p?js14U@Qsp3ubV5b|VeQvG;Uw45_%4oZ!HE#*0VdfCs1Zgh)?M!EPf# zol`Ng22)#kbW`)3?{hbYN-`TSGh%B?;7R3Kqd4P~M1 K&t;ucLK6TLYcLQ1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_2.png b/resources/g2/track/raptor/gentle_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae5ec948afed166ea6cf59e6a855168b1f9a5d8 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^szA)n!3-pKsFd&kDa8Pv5LY1mxqSEkdiD3wtN+K# zKMz;F?61AwTYt5)alg2KHMc!$@MJTfBF2&+zhDN3XE)M-97|6Z$B>F!t;aSB9#G(6 zFqCvU@W#GCOHVfJGk^9yU5VCf72N*WGhXL?;kaS_ePaEm7?&h*r3tNl{DBAAxys(I RzYH{l!PC{xWt~$(698XKI1&H= literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_3.png b/resources/g2/track/raptor/gentle_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3fea4bdca6dadfcd035309e07c45158e16e35330 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^szA)n!3-pKsFd&kDTx4|5LY1mzh3=+y!`WU<=fW% zm;JT3tLHD4k6)GH{tGC_SQ6wH%;50sMjDXg;OXKRQo-1I@StFWfdI3i^S5h%%g?lk z>no{l{^z?b^19=;nWge7uh!I;+jt9I-FB_+#tJ{{7zi z+tu?I%g6VN``-_~djcrOSQ6wH%;50sMjDV~<>}%WQgQ3;m5sa%3Ovk?vnQnd?-kS$ z@ZR$8*DH30qQtC;Ot*!yTT^EOLG9+3?)^u199VNM;D#ytp{2~%I^HRW08L@=boFyt I=akR{0PlV`x&QzG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_diag_1.png b/resources/g2/track/raptor/gentle_diag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..73a4295764525f835f758695be0066e2e00e0910 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^4nQoKAP$)TG-|tllpVQtH4Fk xiSt|vLy?|F%m)?K4$X?m$|ppaJZEj@W$^3v%*@U9;Rf2n;OXk;vd$@?2>|38K8XMT literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_diag_4.png b/resources/g2/track/raptor/gentle_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..85b6f35c8850d882a02cd07b90493b403e75f412 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+n!VDy%148ZsDWL$L5ZC|l^3TJSFZ*k6SI=K8 zAKx$Tf2lT994M>g>EaktaVt3>At6a1AwfmDnL+gztHw3`69P$ZxQ-n=c8;N@pLLSM S+wr0G2L==>qK=789XONlb=Ed33><=@^jo-E?|61L>td!dxt)~hG0O6P6* zmNLb3ao{yKwaEFNS9UIso?B|WHP>wG-HQ!(*45nJxt_7`&(r6h+tz3=Gc~wS!SLVH VXH}z2>?WYi44$rjF6*2UngCg}Q~dw{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_diag_lift_2.png b/resources/g2/track/raptor/gentle_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e817ab2828f1005d5ebcf83169c3956ec7ce9859 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol^!VDy*FKF@uQgQ)4A+FEEm2X@3U-sAD@2$UG zJ%6!$e80FqGcz+26B8pNqqzC^Ye1E1o-U3d6}OU;W}G~5{OV>4)3Cw UF8z?O1X|1B>FVdQ&MBb@04x(pA^-pY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_diag_lift_4.png b/resources/g2/track/raptor/gentle_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..18a9d3ea6b473eb4159355de0dd80e8594b5411a GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+n!VDy%148ZsDY*cj5LY1mKVJTMxbkIx?d|IM zi{<0{#r>I?nVFcF7#SJ2Wt(>aRWOzW`2{mLJiCzwjjJQudx6PWfYY*YMMCD|j<)7vW%6np5vjjO6G48}WkqKp}r9|3A+@O1TaS?83{ F1OQ%8E>{2m literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_lift_1.png b/resources/g2/track/raptor/gentle_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..70b992312972b9d76b3d95c3585a79ef1158a308 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v5!VDz;ym>bjNGS&Rgt!9f|MBwA!<8@lYw!2g z->#m&SU$dA+@G15nTd&sk&$te-{s3dMT{jue!&b5&u*jvIgXw#jv*Ddk`o+Q&&cvf z9LQQG%-ps~wJTyuXHuY;Si?%4(h$k5Q(7mlUsEDb(b&iuEXnL_)MmuCEyO34Cr9EG ZgW4NQ>n)R;1b~Jyc)I$ztaD0e0ssPUH6s83 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_lift_2.png b/resources/g2/track/raptor/gentle_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..634ef76d84f0a290d123eb91f00cd91c04282291 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^szA)n!3-pKsFd&kDXjpX5LY1mxqSEkdiD3wtN+K# zKMz;F?61AwTYt5)alg2KHMc!8Gcywt6C)#|&I_JnK-G*TL4Lsu4$p3+0XdGIE{-7; zw^~mb@--L;Fdr-xIx)BLfBkeO*OKWIyLEX4Hj6QwubnE*d#?AQl)>V%63zqL=KfoI jPJc%Q_ z`@QwItLHD4k7s6PW@2JuWMpKBIbjNT~<-gt!9f|MBwA!Jx~Gcz+26B8pN^K zO+C?j`%KWQL;8l6J1q5Q_OahS@jU632lur*TbkLgZ#kV;@R;|<22QV?)}jJH_c3_7 L`njxgN@xNA>DOnv literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_flat_up_diag_2.png b/resources/g2/track/raptor/gentle_to_flat_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..58f6eb03e0f86911adb083ed9e1b0610257acd45 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol_!VDyCZP*Q=J8DlaKFf@m;$bWH7wF0VS@O1Ta JS?83{1OVQ99g+Y5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_flat_up_diag_3.png b/resources/g2/track/raptor/gentle_to_flat_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ab41d47586333294b005b287794a497a78b93859 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM$!3-pmcUp!5DU|@95LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&tEJb-!JZ8&268~V4Re`emzhfV@Z%-FoVOh8)-n!N>3NZkcwMNC!H2M zq`<@aP;H6Y-~a!=vSc`{y>&b%!Z2MgcM+p;vEalKuA0NC+gTWlj2!A+QXdH4*nZ?~ z&mG3Vo8m9pz6Pt5_)cY4m?qok`=X~rcy9*7EZzR{s`GDFExKjAy=Gmc?EaVYmY&wx z_A<;^=g;fPyGsK@yVqPlqswmhCF@#KjPUH5i;j*JC6|vVF`fIn?d+x=G0m4;YnLuv jvU<%jQ`NhNN-CKgCUH5sn*`gTe~DWM4fVvupv literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_flat_up_diag_4.png b/resources/g2/track/raptor/gentle_to_flat_up_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..092f276ea8b0a2552ea77e0db646add69db86c42 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8T!VDz0T)mSr~-4~tPle!8ui5hE|6I9q+t=up kU7l;X@6KE6ytdc-=C9%Q(=R*L2Xr!nr>mdKI;Vst0G;D=iU0rr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_flat_up_diag_lift_2.png b/resources/g2/track/raptor/gentle_to_flat_up_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f53bd3d113efa7ce5ec91d9b2733f96d660ff7dd GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol_!VDymbj z*IQjN+iXgx;;!#G)l0)T{U3EHKg`_Z73p0eI`s?dyw5!II-lsr06oFr>FVdQ&MBb@ E0BKBf>;M1& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_flat_up_diag_lift_4.png b/resources/g2/track/raptor/gentle_to_flat_up_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9864a03dccacb8d65749c9e446cd2ba64eacd28a GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8T!VDz0T)m~&D^DndtUIA_ rW#I_}iJM-0T|6s~B_`x#$?z};s3@eEB&XX0l{0v{`njxgN@xNAGVCZD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_1.png b/resources/g2/track/raptor/gentle_to_steep_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5506169ac9097b31822f565d1af82bdbf3f48dd5 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^>OgG5!3-qr>@OOD1Oj|QT!Hlec=_ky%D1iiFZ*ln z_tszSY`k4Pf4aT#V)^)HbNzmC|7vdg^BQLVfl3)mg8YIR9G=}s19EnFx;TbZ+*&)u zk&juChxs7OC6mAZtF;}zL{zI5$=#f};a1SU^QYHnTt2H(l$0UKB0YJvp!wqmGrL$X z{S1^l64)&)ZvObzT?@VJs5=7Nt3}-NzsE^znH{24tr9aip)hvx4gG`pN#Uw;TZ=l^ zZSA`}YgTqlOy90~PmR`Z$y?K^En(}~zU7XAM8I5|BL|Kg*wAD-)mmqrYfXhz`G)45 z4Hx^Lv}r_}H-s`oB|J0My9f>FVdQ&MBb@04S6t9smFU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_2_2.png b/resources/g2/track/raptor/gentle_to_steep_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed44537b43835edc17a73eba792038b4b7e3ae8d GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT;!3-p4&y+I+Qd$8%A+A9B`}EWQXB&Sm-~GQ{ z{kC=gesBHN&c@r-^QYSzFP4w*7x%B`wohj;uKZ@50aVRc666=m;PC858jw@t>Eakt zajW;DC!ez-4|Bk>NeyTJu8+R>MPGWluKzZ{r7JEUo3O0s+Nv6=w=^`1{II3C|sH9biC%DJhwuTE$rr9YnT+maL}9(crWp1E@80nY#y!5??i ucQ|?o+9|C59k+TLyFzq`K!f_2**%m`q-56t=>}!K$5IVlsdE=B*Sjkz9<2Va z(6BUZ`tGgeg-4gOBrw|_b&=Z9eX^r~n`w)TO}WC7#=or^?E+u^g{uB)k2n54q2#ez czCaWE|0ovYuQ%WI10BHN>FVdQ&MBb@04wuUAOHXW literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_4.png b/resources/g2/track/raptor/gentle_to_steep_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..65db703a1dac9ba0ca91d6909be4932437000b7c GIT binary patch literal 374 zcmV-+0g3*JP)(bQS5svoOH-&PD;D-NO4w}QTcA} z*h-^rHb2_|d44UQLU}gcbE6iR#Y2UYmV+uWY;xgva3#JL&q}crxWV!%rD&;m$Bwd2 z!zuPH?1Yys#9lbz@=_ULenR+wo`Vwpr2~aAIiknph<=E0P>;}vPuyd=al)ng0U+86 UC-IWe9smFU07*qoM6N<$g8JQ|r2qf` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_1.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..428c54448f697bb2bcbc8d325531d38313a873f3 GIT binary patch literal 310 zcmV-60m=S}P)i_@%0d!JMQvg8b*k%9#0K-W{ zK~#9!rPaX_#2^R*P!zij{{IK>sJlvUCG`GGpff6x`>w3ltj`_LGst-fw>rc&C!X=Q9&dDfW9wgTdQiOX_)ZL8Yvs4Mxl!?x*MEDk zoNRx29{=|(#qU-h98CCHU7WAUS$_2B9_DLsKf1-UeYi!oR{Z3X_xI7Il){Do@bpf< z4lhpc=8?rcqQiO|u%j70Zh42Pi*{q~l@eK)ePl)ClffeL1tok6q2x4rAOHXW07*qo IM6N<$g1GF52LJ#7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_2.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fab5e6aff8b4aa2fbaa392aa71ccb0a4dd48b5a2 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ-!VDzW)jV7Zq$C1-LR{ZRul^q||2$mzwsrq@ z_5A7f#{J^{=?un~>-n;QYUDj#978H@B@2j%qyz|sByqGlrLzgQiHMu?#7vvU$1s71 W!*<%{`&)oY89ZJ6T-G@yGywpuMj}lB literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_3.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..be4b3c534e1a62381a8a9679c9a4e3c28aeffadf GIT binary patch literal 361 zcmV-v0ha!WP)!ZpmhKh zK$SqI4HT+$COMj3#N|xVT0z4jcM+;ac#<}thoF;NLky9thzFadT#=|(waosWIqk?vLIv8sc+MA>Gc^)JGGY%mcH)DPnXV37< zc!M0T5*}+7PP5UJ2Q=xib|I(uhF@!!B&q+_lkQOgEJ*wTy1xpqlWX9$00000NkvXX Hu0mjf)cuRS literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_4.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..974fe5647797b3d3c7b652b65c0994c83c3b5e1a GIT binary patch literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^Y(VV7!VDw>iXvrzlu&?Ai0l7&`RC!vm;JT3tLHD4 zkM9@vzf>D44wTjRba4!+xRo3rB9bH^B68#aQ&SHQ6H^mUlfs!3Cln4C*lbj2R&egv gs4X#DVmAZBic{>@jkc^R1!`sRboFyt=akR{0IsbjasU7T literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_1.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0e351405429cae927bd79483eaebfcc1ff353504 GIT binary patch literal 362 zcmV-w0hRuVP))u8`>?-pv@$}J4JcX|e>gedoDlK)!L-+PLep`7xY za^?lng}LIq4d-iOe8N&|L*v_UeQg!3ubaQH>96_?^vmd+;MGiae1!kr`r4oc$kYoO zU+mu=;8jLH`U@!EJv}--$H&G2{f!HzpZF#N=B&ZR7QB)c*fn;U=7ujS=d zpX5#l2In(7>M-pIp6d9g@`f>*h>jZjOA$Hzfq$|@l!A%q2S_svQ&(?}0RR9107*qo IM6N<$f>Rcse*gdg literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_2.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7412dc39351c50ba4e8ec0030450778b86ab881a GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ-!VDzW)jV7Zq@)9ULR{ZRul^q||2$mzwsrq@ z_5A7f#*5|S`^Ej!8H~>rS+fF_$$PpuhE&{277!6h2@ncN;%GgT!e-niBwo&QCoYbW ZVa8XE=f3v;CIgi+c)I$ztaD0e0su!RB;Wu5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_3.png b/resources/g2/track/raptor/gentle_to_steep_up_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a695596f13105c58c52303a050255560bfd87b5d GIT binary patch literal 392 zcmV;30eAk1P)H0Z=)Yyj~7pS3qNN7GXnzy0s;a70Re5EED8Vs00DGTPE!Ct z=GbNc009h1L_t(|+NG6SlEokhL@zBWM&18*r@%+euaE_tI^9i@U-|`~9wm$sBmk2_ z00ufD0AXN697H(L>;XWNoM;Spj3OeU4&E4_5tsr+l-fiXG~H{|(yYqiz6d!nx>uqV zSuw^WcE->matcW77%JgJe6~i`K_?}z#F_(r_^S9y-8rTgu_ST?QBMvxqLsDBMkH5` z`X2#5A}8x&f?bHF77QJAdNej7Ymz=@cND5YOd~=mg}KHtJzmmLu}k=w<9Mc>gCF!}^fSdSjl~Rmv5~ m&Tsf9SH%BYUm^j(g492bqYV}1JO~v40000iXvrzlyrbkh%1nO9Q*v!c!PF xwl2t7$anPN`Luu(fuNui4#P6mWZ~pw2CXuk!)Dh-W&$-bc)I$ztaD0e0suJ%C=LJs literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_lift_1.png b/resources/g2/track/raptor/gentle_to_steep_up_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..08aef29ff5824f8769def39c30837705d2add593 GIT binary patch literal 386 zcmV-|0e$|7P)^sDQeZigaO)p;Jg&3d5|JMFlhBIro$$roPC}~q*h9(p035C)mOtYwffc@!6q(aY03C@d z$<|azjh`qIjj5}o6>-kpXn5MGDY3I$0p(q<6dC?s6X;ZuBGXrrgvwV^CBiSa5>U)- zrmk0Y+vNb|{G8oVJ?HmpEC8ifO_3FG%yREH*duvqwvhz1d?P7x#oVruQK|?Z8{_0` g#m?@;-lWa^0TGD~n(NwPng9R*07*qoM6N<$f^9gSjsO4v literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_lift_2_1.png b/resources/g2/track/raptor/gentle_to_steep_up_lift_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b66e0cc4eba642d37f51574222e35ed3a2cc18e2 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&M!VDyBmS27eq~rp8LR^9LWqEakt zajW;@X`#akJkEh}NBM&O{V%tEP$Ic{&G{IUfG(?Cp3GAjYqL@(@AWG8Rjz(}=4RLn z`RiTYn%1XcD`+b{A}Z|OO22JLXMwNJNuF!$sP#}&1Njo w#jRcwf*59Kt}t0$%<2*%z@p$&maOW^u%VIlf;D&FLZA)?Pgg&ebxsLQ08<+&vH$=8 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_lift_3_2.png b/resources/g2/track/raptor/gentle_to_steep_up_lift_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2526e7bb01267757a996e649546525711dcc2e21 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT;!3-p4&y+I+Qi=gSA+A9Bf4uzjaOK<9{g?f< z_j~JaSI=K8AKx$TU(Icw&S31?eIpg9h_NKdFPOpM*^M+Hr`XfQF{I+w)JvXx2NZai z59C4vGM+XYh3Ob6Mw<&;$UH{8DQG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_to_steep_up_lift_4.png b/resources/g2/track/raptor/gentle_to_steep_up_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a67762e354030d4de5135067a8c975bc3335c7ff GIT binary patch literal 420 zcmV;V0bBlwP)HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GXw+#0|NsB0s;X6 z0rzK>H2?qr0d!JMQvg8b*k%9#0U1d|K~#9!jg?Wh#2^Sm2Od(3SYYAyTVv$wc(kGE|GEXpAQ<%m?YEgp-J)n-}d^H?0c#p_t?Ho}%ep&xyPK|f_2RNxV}wM{YMtNI683=l*>kwBgR O0000|k3?#4J%UA`ZBm#UwT!HlediD3wtN+K#-?r}G z@2$UGJ%6!$e4@$Bb3i%9k|4ie28U-i(tsQjPZ!6Kid%0_9Ta3x;9)Y@u;tzUjmxGHd4m!Sd7cUw$yZ`S@JVoNwVxruByB{_p_xGkCiCxvX literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_2.png b/resources/g2/track/raptor/gentle_up_left_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..39665b9e06f4aa84d1a901fc4080a7a2e29afc9c GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^szA)n!3-pKsFd&kDd_;85LY1mxqSEkdiD3wtM_~B zuXZ-xuAaYGKE7Yvf6W5TuRv+Wk|4ie28U-i(tsQTPZ!6K3dYuhjl2vBJcl=IVczy% z-|Z1Y)?vPiumonGfNhCPE6=>#Kas&t;p3P42Uu?$XFZtr^-~j2FN3G6pUXO@geCxi Cku+!k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_3.png b/resources/g2/track/raptor/gentle_up_left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b2371189e4a92b96df2a27f51f26daec8bca1dc3 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^szA)n!3-pKsFd&kDTx4|5LY1mf41@ec=^lz+S}Fh zr`sDZmXGfj_dl&7wF@Z6SQ6wH%;50sMjDW#?djqeQgLhT*^Rsm3Op=^&T=>ElifI2 t*ZEsr$za%ge$tioUPbq&t!^|i)7u@(#9m&<5D3)9;OXk;vd$@?2>|irD@_0Z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_4.png b/resources/g2/track/raptor/gentle_up_left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..50887d2daf4918aa6bb8c941794b476045f42aa8 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v5!3-oVWtgV`DWL$L5LY1mJY4y?A+A9B|7_#`_3H1VSO1Tf ze;%%U+q(aGsDZI0$S;_|;n|HeAZNL! zi(^Q|t)-V7g^nn2xCFW_FqJj_ZlBjR<7q>8;p}jEEv=xrd14!^aW?U8#-y6~A` zIlt?Hg$%3TGMoRDR3t-EGS1;o+y$WTLeAyRVDe_iGFW zy(gp{+s3*T=45RukTbg73pgy8-Y${@O1TaS?83{1OQ=SZf@5L=SS!y>v6P-AvVcog-_S+Wy7*be%#9m2GIw2= zX_TIvY`n)QCi~nR&2lp{x1f^jt22#rk8x>;t+T3rCe+2j{C?Hu=^=r#=gVISFf*(; WqP)v9Vfs>_eGHzielF{r5}E*QPfln6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_flat_2_2.png b/resources/g2/track/raptor/gentle_up_left_bank_to_flat_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5738e69d08939d1a57c58611897b274551f26d34 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEr!VDyx`Zm7+QgQ)4A+A9BvcL9zZ~fKI#@p5N z7t6;to9p+B`&V<@r!yF@5vni%s$eV$@(X5gcy=QV$Z_^`aSW-rm7HLfkletirs}B3 zsxf=-o;?ws4CnOp_1ibZIt$8(iHlz^kZ3o(vQ*V%&mM-nTP>FgSlSyGn=l+q%wT7j Y8pr=6ZtM3gK;sxZUHx3vIVCg!04mdKI;Vst0EO>dBme*a literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_flat_4.png b/resources/g2/track/raptor/gentle_up_left_bank_to_flat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..62c31292b47c6291b52be4880e7d5d921e8a6b20 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bw!3-qN7;Jk3q|^g^LR^9L|9JW5;mWtI`!D-z z@AuYU?QA^V-gvQme6zWJzqo%jw|zQ;@hfHfe?X;-B|(0{3=Yq3qyagTJzX3_DsJ^& z@)kOxz`+vW5OAsL|7XA6`EQ!O{0c2^^>8_(GxZV2`ItGH`Qk=5)+O_Xuz#`my{4!{ zC2jidYl3$gkAxrC_^Ksx-|J)h^VW5F1YEznaMNWacIz{XxPKQ%R3xo`pY`Lg&C#~) zhqGd)Cq0hc`or>R#ClCP-NGH4SFI9v+co9xjUI)AO9WzPPT8&Gs`!iX+j|zBH2&=; QfzD&_boFyt=akR{0B;;_Qvd(} literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_1.png b/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e58a0bd3a19fb9a00a7170590da6ddffaf8c3ad7 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`Zv;urWT!HlediD3wtN+K#KMz;F zZQXy_Uwgl|{%U9A?dti{?Tr`9$2Xhn_lx_BE}v%rRLxitGU*7$4!)mVFSb04U1BRCzf+5NxlcjChtdCh86W;0~cPv=B z=*-*2HxoA`cJb}8j+0t#Jx6c-dcQo5nP-3gPwTuiW2&IkpS?GgEN1LX)-jxZjVgTe~DWM4fBwS?? literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_2_1.png b/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..097258a8ccf5ad5ab17fd4d1c1b5987b9bc9446e GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^NVIm}fT|fwg8YIR9G=}s19IFvT^vIy zZY5_th&s@~Fvr+hq32UqU*D%q7XqeV2vD7oV#zUO=~7G016SX(HOn4s%2294x1ei| pWigxQlXo+1)63r9+dGqy;jgyR+LPB0aRN<)o{j32U@F8mWF2h`8t>FVdQ I&MBb@04tm=zyJUM literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_3.png b/resources/g2/track/raptor/gentle_up_left_bank_to_gentle_up_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e1db8198c07aee406428201e022ffe582ced7304 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ^!3-pqZCLvpNa+Ungt!9f|Fez%*Q@`Jmwz6v zeA~MJvcL9zZ~fKI#@p5Nr`sDZmXGfj_pj!*PiHWe+O=N#{O5 zEX#-$v_!_d2S0>j3alA=Ogi}=@bd|2aFr$BTMX36 N;OXk;vd$@?2>_fa!3-qN>viY@Dct~{5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDKi%GVv3z{9xqiR6e>Jy#I)m}%<1QvZ4U8p0e!&b5&u*jvIUSxZ zjv*Dd)?V2t)Xc!cbiv`sEt6mW=ifeBW>TU4+4@FD2ZKa1hee($LqbyS&b3hnW$!JT z7_NJVUsZCH;#=}~Qrqjdnc>S%dvE{$+hoV|r+uGdu2`Qmx!YX(*K^WL%bi|E>D$BS zRUVVIH-B^N^14{{^G9{nBmFK}S$PI+dt5a0z5l7B2@B(t_WAu}4fC8VE)H}PgQu&X J%Q~loCIB1ZW?A+A9B|91QD(@+1OZTz`> z_y2nJ_tC5W$ICwtSH5lCf7xGqzqkH&_58*1@%`fdJ>{+^ff^V~g8YIR9G=}s19G}N zT^vIyZY{lZkngYo2Xlbc0bbu-|Nr0VTy|@%T9Bpv%?_8A^Xs%s4GW4^Se;q%QMdD; z-5O30r%6SUr#qF@nopQzU9OS$JT1Ynf4#k7 zl^O3}iQIM0XWwzopr00*~gz5oCK literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_2.png b/resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f918aa25df82779e40f8a52a5fd8ff903141090 GIT binary patch literal 970 zcmX9-QHa}g82|2ice&d+a#FBh9)eVe7$uCT0mH~N-E~LCWiEp}M2rxyU>`DxP_YkD zixw#oMuj3(ss^nPu*e}nf>xG?8}=aM4(YZGimNOS_Yh{lJ{rQQvh&!=R)OjKA+ADUoYf6`1vaxpa7RHUOAuBrKP3i<>f-5u(GnUy1Kfy zwuWKY`uh6D#zv`JF0(8nih`m@hM`%O*=n_Vy}@YYhv88ir&-1_An+hdo0?Xv*U3hc zX?OTuUmlM1U~EmI&TQ_AG^X;Krc|<3(lMxk#qPDlaZjC$%y_?@#O@*us|4sYGz4%I zY-nQR4n7?gvk8F`24y-raS#g205X7%VJ42-1mRGW%kz7(ykDzLZTomIK;tpN7Ry43 zkx5>sswS=4tl{uhUu=0&H&EP(?#DHfBbaKLS7^!LG*dL&a(kc;eAAEYFz!alaJCrZ z0u&V})qrdQPR2@;;STG~CGqc>(3DKTR7Y&YRROyb&4-GM}l&ED)d)C}*rQ_Zr z^3XiQiyTF(ELRi6hN5%~qu*$ZI-T)g5c&S>=qOE71cV7x4`YY87!b;YuFb^uTyv8~ zkUB@%C^?xf&?b%JT&Ywg%L>gHJa0*IThEs@N1g8ea1@78HWNUXFiXL0opkDSzbSZa zCFs}oJ$pLtC(|&?j*$SM0$2bJfCsP-FvkGpkVVwAkmsU!DpO#x&=tV1LM#JP0GTD! zVUa5%zm6tt6ua;+cn%~HR2i!qCA&d)o$Amvf}j;eUXny8*CJ}bHa7*QB)g>UQ)bLN zspe&kV9}eL_%k$3sUmPBR%LKaAnOX-tVxbtce{4rb)(Qr;t*vsPLhxhCy+^Pn6H(KYdfjL?O_phKOiy4vksV9SkxVCQ8R;alDb#0?FQ7=ukDq&f z^TER(c=z(I0_X1EdMhXI?Nna5^31i*Zoc-!2U}Yo|8*N3UcdRq+c%W$cecOzFG=sR zu;rV?!9VI#EAk89eqZ_G{X4ZEE_{L;XQtQxzH?UVzVyq#=PLAfS4Y|BhxhOO`QY`% zPk(%U_170SCU+mlo<#>|lY5m94{un;B9B+N+(7x2xw*w>MraAKz@Q-!JZ8&268~V0=5}jS^5BV@Z%-FoVOh z8)-mJou`XqNCji-L2j`o10I$GZNS1wLB$@g7Z$!ldeA@ z9^QB2)KrFpjFpB=3Rb$hm#%sZSDa#nQOfjB0HS}MGYF^PhzNSp(ij|z9IzX2&c)I$ztaD0e F0sx7ZV3Ys= literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_4.png b/resources/g2/track/raptor/gentle_up_left_bank_to_left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..502537fef23c035473722291f8cb53431c079ed3 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^DnKmD!3-q7uC_Z5q@)9ULR^9L^Kj+c*8P|LwfB4L zuXZ+`Zg1RduHP^2zg|&fCQzEOB*-tA!Qt7BG$1F()5S5Q;?~;9mO=*%IGB%S{{Me8 z(@4$Np><`s%1s4^eFptAg?oBu>=ouonf5}n^g>bHZpQtCGJdHKDm*jB%7#UE9% zkWF>I=k{#Uag1aum8dkFQG8ItYsc<=9)Z4-Y=ajS7rU0e`yTdy@t+m5PUB>@pFn#V NJYD@<);T3K0RT7`PS5}V literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_1.png b/resources/g2/track/raptor/gentle_up_right_bank_1.png new file mode 100644 index 0000000000000000000000000000000000000000..887c4a67f6061dd18ea30140014b99f9b840c153 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v5!3-oVWtgV`DTx4|5LY1mzh3=+y!`WU<=fW% zm;JT3tLHD4k6)GH{tGC_SQ6wH%;50sMjDV~?&;zfQgQ3;DMLmE0}hsr)fz|lKjstt zz@bolfa787lE6)G)sHUooo#lrBzwYw>Y*|e>Jy#ZP$uOpbEy4AirP+hi5m^fE*)F7srr_TgeF=uFPCKJZmzX z6nSPOIUZu0k<`Q_ajcTV$Y8_Lg-u|l3?zm1T2})p(Ey(iS0Md7T=}+j|7Cye?dti9 z<>ULs{rRJp%>YU;mIV0)GdMiEkp|?Ldb&7CA+clf!JYqWSD*5_t7DM%*Q7?JAvM-dNV=`H`iz%v@see}i%(oQze7prTAZ8f zg@srCu&1(_+~VL`sb0Qh=0vyftOwuLHh%h>E3&?1LFXTz*^K@Zo}aytwmojK>jfFl z@?MQAE57oUBr#{Q>;89n%y!k<^|nLD2Pwu$;ZK;K1Ta@?ehJwNbQXiBtDnm{r-UW| DPLX8Z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_flat_2.png b/resources/g2/track/raptor/gentle_up_right_bank_to_flat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..37d779bc2cf53ad8805d6370b63ecf5a415fd170 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzaFlvaRGh%1nOAHDj2y!`WU<=fW% zm;JT(d+V=uHlA*8yjVWI*<8P0+`pRJKApk%#f;x(K-G*TL4Lsu4$p3+0XcP^E{-7; zw^}bgr18- zrOulf>zOuRi^0WZb@R0F?K7*L7}hSc?(z8e`b|KgtxXWq&E{;XTaGbr1G;B9B+WWorS34VTSI=K8AKx$TZ|Wdo1XRjc666=m;PC858jzFh>EaktajW!v zAm0H64(1EI3o~y1J-_?KCe;n)6Eb@;C=T`rFm>7t6=@i~FZD7^|#qWCto`ED7=pW^j0RBMr#$_H=O!skoJ# z(9qO(fkmVHX21;#hC?YPe46_D4I5$|4lo`J32HK$JLS%5F#`jG4O6UlhOED}w-E^T p9+}IYCAIrE%M4MT&;l`Lh6Tp_N!t$b@dAxy@O1TaS?83{1OSZqLX`jj literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_flat_4.png b/resources/g2/track/raptor/gentle_up_right_bank_to_flat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8d9a61caf7e7728eee31b4032511512c8e9fd934 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^%0Mi`!3-qtXnzw1QtAOdA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqo%jw|zQ;F}GsTGoVt&k|4ie28U-i(tw=Vo-U3d6}NgP z2MRSPaJUFIvF!d|DSh$NY2AJI-`sXoR7wkLQl69CVd%Sxqv=t|!yqo9Z5)^RMDHD| z(8;>~s;IwXgGgTV)+KjXerjYbZ!6f}su<#Em!+NcUU_}K$c+%EWdc%b_x!$ac#qu| zqs>+=)BOMc5V-Qs;foGqoz48Si9u(cNvz`JY?=4$#~QYl^I8jk3A)IAU9jHLs)%|2 XeYXCu>}RI{oyp+o>gTe~DWM4f0IqA| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_1.png b/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..237cc2fc38a3b6f857368c2be95ce22dbc4951b0 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^YCx>a!3-qN>viY@DU|@95LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&!28@yjVWIU);Z%+dh18;Z>kI#*!evU{OXy^Z0?j0w!3ORl~XV+t5F*(ce<>>+_4Hq=ewDmZM^wIa-->lXynSl}R?BB!Eo+l% r-X!vGS&veUj08_ z{&~3aWqmdK II;Vst0Pm z%l_K?z4cc+8*f+7Uo0QrFYf(bF}OBv;EtG5dWN~q X@VgintMV3*YZyFT{an^LB{Ts5_-Hi7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_3_2.png b/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5035646108f26a932ed5fe853c19c446e10f8c4b GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T;C=T`ite``^Ej!8H|4v)T{)mV=M{s3ubV5b|VeQvG;Uw45?sbJ=nr1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_4.png b/resources/g2/track/raptor/gentle_up_right_bank_to_gentle_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8f363a9110fa78e52c905c7a3d3140f8a7f76f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`Z6a#!hT!HlediDSD^3TJSZ(H|Y z_SfF;t-oD8f3bXgzqo%jxBbrYlXroN7)yfuf*Bm1-ADs+$~;{hLn>~qy=={QK!Jxj zfc?brJO2;J?iLI``gyXk3me1cMzzCh!V{a4zQmsNKgFMs?%CC|a`gm}I_oSN|U` z|2$mzwsrqyf9?I=`rFm>7t6=ne0F*VRK!>k2@z=|n?M~|{Un!HkCY|F4{!bPtot=jclAE6_b&_nl xx%Y|apG@+E8n*6 zzwEEQ-&=pRv+;KI{OR__&F1?3;{Mg#_UR19CPIO2K-G*TL4Lsu4$p3+0Xcb|E{-7; zw~`Y$c)hjfA8p`?a6YI|%hV>YNg+nV#6(z2q>JT{BG=8+r!NaMu_hS4Gv57ujZSl? z>H(fT)z7|^tcVah^lbO?g<7H$VovO~6;;_Hee~vXFK6dwm4FtB3NL3~R>=zoLWCJh d6z^T;W7uV&-{iLW1BbP0l+XkKQ;2M4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_4.png b/resources/g2/track/raptor/gentle_up_right_bank_to_right_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c643fe40437593cc8b9f7b0fad311ba7db6c4521 GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm5!3-qrzQ4@^Qd$8%A+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwokhSYXBF1+G~5xKADXaD{b!|<%I$AYYE0I0bNj}c zvCh=GdGq9-$$PugCe7WHI$2}ZO9uC;M|?|9^14n6opf7HGg33t^fQ0t*FO#m7f+je p{qg)qs~3a?ImRjfe{a~JU){;BH@oJ|VxSWkJYD@<);T3K0RWivTc7{{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_1.png b/resources/g2/track/raptor/gentle_up_to_flat_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad189bde6ae3f8c96f9eb79ba572884963cb932 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm5!3-qrzQ4@^Qi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoov4^CaIyhBqBc#9z!wKH(bnVzK**slGWALw&l>^!_@kp`^^0 z)K)v?n{PytneUIRPRZH7JGGK7s0J?SY*g`_(m69NtoQ9i^{knVhguA;*Ux4Ayyo}< zgS@%sYUh09W<30Nwvlnu<+UHx3vIVCg!01Po? AwEzGB literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_2.png b/resources/g2/track/raptor/gentle_up_to_flat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd33a3e80834c8f3de065b86ec9fdc24a48408a4 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ~!3-n|Ui$q4QtAOdA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?79W@nZS-esTY5Zu@iwV~yRB8-Pj~OM?7@862M7NCR@(JY5_^DsI(Y z4CFhaz`+u5gtg?uzvp)oR&UI{{}-63-u-Q`fiuy+9~ApP2RrRViz;p z@8Sm!LuOolD0or&y64Lu>m{DgyYzg;iiJvowTyLEY=Lh|R(=J#h{4m<&t;ucLK6U| CFlJQ% literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_3.png b/resources/g2/track/raptor/gentle_up_to_flat_3.png new file mode 100644 index 0000000000000000000000000000000000000000..752c27f85d24cca7f2b53fafdd39c549f8cc6551 GIT binary patch literal 977 zcmX9-Ux?du9RJ?+?s9*eg;gnOg1#U$Xvu1&?RI;rzyH&w!76x4{?ANBDy%+g;925#F zJXkW;(J-%`9(6MD07p|A#R}TD5b|>X5`cnXS~_jwxJ8mS$L&f|zf>BT=G}H1c^=MW za(tGS2u>mM8dWeE)#CJ)P<6ycPqqh&8er#F$Q6=;88!DvgEO zq-akoy~rBI-Rb^l53Nw?G@H%liJVN)D#z)fR8x{=Mz`MRcegYm0VWur1d@OZ9XU1%M-mAd0}USBJcJS; z8IYDmbq3iIa?5B?L!k}#gJ(e$pdevoHEUL=hL!KwYOhxf0%tl6P@;vGfH78hD=XQA z;*wg(Sy9o6E4{tuVBa01QAB2dC9pi5F7iZKW{i?(nPt0S_MArGJJZld@t74wv%;N`;)rT#_ZQ*U4W>Gdy;9=`F` z&Tk*BuigAGKDP7K#!DBj-TU*=C(l2>dF96=U)EM%`TpgTw`Aiw^VBcOA@<@o%a@=1 z`}W*FpIm+BTRQdW!6*91Ubu2-;lg*9PVcPWUjB@~asBlCs=szAT7TrRJIBSJ-~agh eW^|Kde|Y!zi>v>=`gLLjwl=pnK7abTcm4;VRiP39 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_4.png b/resources/g2/track/raptor/gentle_up_to_flat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..48bf9f8bb2a75b2c33bece130cafaef1b7ff8bc5 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm5!3-qrzQ4@^QtAOdA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqo%jw|zQ;F}GsTGoVt&k|4ie28U-i(tw-=o-U3d6}Q$- zb`&~nz`-oonS9{y|7ziQd1zLN!*n`Z`{x6_?CMKFoS;DXV{4J;F4E+4H5m~-WQ z(%MBHSJMm>tanDUO+B*Quz6vJ|03%vJ@LUw=2LYu{icTURId6Vee~sa)>5&4??r0Q c*`A(|&c4IOe5tq09OzaCPgg&ebxsLQ04{WGGynhq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_lift_1.png b/resources/g2/track/raptor/gentle_up_to_flat_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f80b7ffadb9318f0800feb5d8a3da86dc2f72b0 GIT binary patch literal 305 zcmV-10nYx3P)ki zJ0bV?1oxGonh@6+k!>m0^wR_x@>(O^e&4*Qc%b28?G5$?TiZ^wJWP^5y>d%A^R1S5 zY5Jd^uD$yp`mSjFcB{#|;|*Jwn{?;Y*L-*vQtZdy{vpmd!mI!LtAc5ly8mr*`NFnC Xhhqz?{c;VU>li#;{an^LB{Ts5l!$BD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_lift_3.png b/resources/g2/track/raptor/gentle_up_to_flat_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..91ef833be29e02d2555126c0b462158d49f16eed GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ~!3-n|Ui$q4QtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*v*nVFf1iHVVs(eD4Wa-dSik|4ie28U-i(tw;cPZ!6Kid(f4 z9fb}n@Gv{J-EjE#|6ZSg;u779KekyPa^ScvW66BNdR9ZlHM3{oC(PL&ojB}q;DI=s zaQNZhhATR%t_5ePh^vL0ZjLM}KfxLrDzW~P>m`#DC%q!WR=&;AaWp@%w&woN6|oZ& zZ`@zLd5+SO`I`(iW_syg{L3%-{YlI93tH=su}iqKE|7mLUkY>)gQu&X%Q~loCIE@* BU=IKQ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_flat_lift_4.png b/resources/g2/track/raptor/gentle_up_to_flat_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e8c5f4e7fb663d592901411b05ad55f92480a6 GIT binary patch literal 316 zcmV-C0mJ@@P)5=!c-!80W4rI2sS;-<2TvOMP zr3ceMnL3$zX7fSTGXs$=JN?l%YZ|kQ1%dJJZ7L)+Sg^{DtihsU9eEKYei*j8Sh*NR z+T>5U9w?P(*HV@01uv;hNiBT9`e#S}f_mw~zwJ=phmSkf*7bcs74iqIrwSX4k)qZB O0000Q!3-oXY44a0q|^g^LR^9L|9bWJ(X0Q*%RdiS zzHQxq*Q>{Uj7y+!B`UH7tG-B>_!@pBkSqn7*cU7IU%9c*E=C0ASlQr!N4pnAt9lF aL6AXNh{@+>m!}s{A%mx@pUXO@geCy|4?A+A9B|7_#`_3HoQ<)4Qu z-?r|*?61AwTYt5)@pkq6>GsBp<>ULs{j0g{(;1AVcI_7dYG5o0@(X5gcy=QV$cguK zaSW-rRod^!*I>ZGvU0Uj(C`1xr5seRTB$pwopf@^)=V{OxS5c)j8S9z4d#jq#!5-g zePmYpt^dn-U{6=cgoyJQuV=m57u&IFRZT~c_k?U-m*h!*wrwrD@_ntkkGgj~YsNIk Qc#u^Lp00i_>zopr0DPKI8UO$Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_4.png b/resources/g2/track/raptor/gentle_up_to_gentle_up_left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0dffcfd89eae2029b14d7d81aa17221e82c7ebd1 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8t!3-p2n|AX9DXjpX5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDKi%GVv3z{9xqiR6e>Jx~LrG8+P&H#okY6x^!?PP{Ku&|Fi(^Q| zt)o}0`HmQHuml*f9QS_nJKp@z>McC2O9SjbP8AR|6qZVhX$@R-%gIOg@YGl4Uglas zf!|ktbbr9b5Z++)RQs}+Y5Y>vtCyZ-zgnm9zjg`V67RRu+fH767 x6Z|28|H4vMZRB*l<9_(0T+H{I=bN}bF$lk9Wx3HR%>r}_gQu&X%Q~loCIIMoT&Vy6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_1.png b/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_1.png new file mode 100644 index 0000000000000000000000000000000000000000..878be5e5554309eff0a37e20a19a2c1faf52be04 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8t!3-p2n|AX9Da8Pv5LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&!28@yjVWIU)*1GF{ctx5o1Y^UoeBivm0qZPMN2RV@SoVvsX6q9Wmfw z4oF_U^vQqwA8mK49Hy?aI`8lFjbTE2n~}-pzLi&uj_o&mBO#UTY-AqwB2<|7@$594 z+-Ld4cMLs$77NDm7Qd6K^|jifG1YBRMTpy!<2pSzj5nqqlbtMjI733gt&W>P>CW=$ d_WD|%8P6|a{@CWm)CF__gQu&X%Q~loCIHg+Qvd(} literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_2.png b/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c51fc50c167d0b8008494b92525cbd8bce7313f GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1v!3-o9xz^qSQn~>?A+A9BbNTN7_3H1VSO1Tf ze;%%U*bL}izvA#w4h<~=} z=bQDhr~8!udbO%P^}fD0_0x)(9Sf6!52dVHu)sFiu;i>?0B8AZ@%49Q4B8cSHv_F< N@O1TaS?83{1OP~nO>O`H literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_1.png b/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..216b16040f701d4a47c349987f87151f9c944d1b GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^(m>3@!VDyPt0FaklxToYh%1o(U$6c@UjBKw@@0SR z{oeYkosARa)~^9dFqQ=Q1v5B2yO9RuD0#X#hE&{2=16U5+7c2hF}d;PjiZ490S%0j g8k(95K1hl%FVdQ&MBb@02}ouDgXcg literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_2.png b/resources/g2/track/raptor/gentle_up_to_gentle_up_right_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0da2e6fc25428309de57c2ac8047c414f12ef8c5 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{!3-p~TCsQoDct~{5LY1mf41@G^4yQHv%YmERPP+g8uM~|cE>!z)YRNvJl0y^c_wr^d<}sW&$lx{mU|f!v z+>^b>co|qVczrBNZ;P$aV_3xQ!3-oXY44a0;sp4FxB}___3HoQ<)4Qu-?r|* z?61AwTYtNH{$ly~esTY5Zu@iw;}}No$3S(AB|(0{3=Yq3qyaf)o-U3d6}OIF@#Z>U zz`+t=Z<)jXf8%u33LI2r>mdKI;Vst0Lj5xLI3~& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_1_1.png b/resources/g2/track/raptor/gentle_up_to_left_bank_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..44dbfe3e27e053cc30de8f2a78051a3bac2c19f6 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^%0Mi`!3-qtXnzw1QpN#3A+A9B|91QTvyDHO@BUw} z{yuv3|9JW5;mWtI`!D-z@AuYU?QFbVJ%75r@nZS-W^?_1asRf2#MeM=j3q&S!3+-1 zZlnP@(>z@qLn>~yUN|UpSb@Ve(3z#i%j5t5Z0pQRWvn~wKJU2|RXRn>FmrWB&Q-3C zZ!tQGk75>FKDRSK>D&oR#VyNInD!RC@i}lC=_{R4mToMOE-k(*k;`3A3J3Dku)r79fJw=O~wmb_cu3vg& et z`nGldcJ=(*yY$q75{xB5e!&b5&u*jvIToHSjv*C{u?HQQ8Vq<28}#q^^Z%qwrrJe0 zy@_JZhKB9&NqpW(DS?NdxtL8g@{-InHi@4V({`FYiiu(I1U+RtpcxFFu6{1-oD!M< DDFiWU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_2_1.png b/resources/g2/track/raptor/gentle_up_to_left_bank_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d90455094963485afe2c27236ebc5fb402466579 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!VF@mOPc~Ii2$DvS0MdAUjBKw@@0SR{oeYk zosFm48~2O*d-3ks4wPdo3GxeOaCmkj4am{;ba4!+xRsocQ0kq~z^JO~sF=!baQViK t2v5&|fD;XkjR!^5@}C@N;NGA-gW+5zbE%@g?Pj1x22WQ%mvv4FO#rWqD*XTe literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_2_2.png b/resources/g2/track/raptor/gentle_up_to_left_bank_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..049553df7c10f4707db7a205e3e74bea5a288b39 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^ia^Z6!3-pCbEs?uQd$8%A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?79W@nZS-esTY5Zu@iwV|xba73~L#fT|fwg8YIR9G=}s19B2QT^vIy z7+Vi^@-`bVFgvIpWSd>`zf^m|4;RgH3Gt|jYeVlmIU;m3!hO!!)iOGhjwp8KK6hH= z7W38acv+c{>BDvE=iHvO#8;JNiSj3<8(!&Bzgrf>_3xyC$etP8_i7sS`}kQCKb6h^ Q+Qq=&>FVdQ&MBb@01aGBTmS$7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_3.png b/resources/g2/track/raptor/gentle_up_to_left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..589da6d6827c5b804c148eae7c4a4c402346e3f5 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^szA)g!3-qlYpWgsQpN#3A+A9B|91QTvyK1PtG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI?hrZ@gGOzF*wGn%h2|!C0sF1xOoXNswPKgTu2M zX+Tbgr;B4q#jVy07loP?cw7RRQkavx{{PRmZdnwz^4@jZ$%zGdap!(aduDC%r%dc6 zkIpk@#}CtIN*-7zQ1hCB!DD0F%aj#rw^oH+{5Qkl-us@(XL~zSk2| z*IvtGzO7rn?Ty>#Zc=(|^$DJcRi|9!lztWc4?ZjBUHE;f#;bYN_LKS7K4<;3Y(s-F P&`k`Uu6{1-oD!M?A+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzmC|7vdgbOz(i$6ZW-8W>B0{DK)Ap4~_Ta;AB@ zIEGZ*>b>mAcf^2$#bH{5xzYdncPF~uM$anHGtKoDn8@#S{7i9DnyPx|Cgb}H2y85}Sb4q9e0LI&Dxc~qF literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_diag_1_1.png b/resources/g2/track/raptor/gentle_up_to_left_bank_diag_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b24812b44c72704497a28bf8ffb34f5b2b72176b GIT binary patch literal 939 zcmXAoL5SmY6vp37JCn}VwP2Ah2FyYa88&DZGnhjTam*}n%re>CES9lCRss{GNRTY_ zP$6K^B0+)_4BA7`9Et|)VU!$-MhMzNksRjGT_aQ|SafBJ1nFT8e={t6y!XD#`yIab zKE8D%UcU6)B>=d5_}ampyzgGjr9xi++5i1FfCAjQdG|(cH#RmlH#ZA~La|uf+S=OQ z-o`MjR4VQ4?9}S@I>XR{z$=QRX-(5Ky4|kpdZSSo$7gA}$})xqo&#AbH=ET~i)eS~ zp3S)fc{ozXkvUE5`N9_{tihEHsb)0@MaY$DPXZMAv7Q^~m#36yZ#@&ev#} z;8apHsD{O84rdO8ZXor?ia%AuR3})R7VDfsNgCTU1fwVSJk<-0FtOsapDc&-byVS@ zsz6N#q64IZv0hCakAu{go4=Q<WbDak!GU)CAf{mF2Y#z{8kL6tC5saPuEw5UOc4|>XY zpics877doOILjU(9-skW0yqExzyx4{0m>x{sAHnQN9jx^!C;`zLnuNj15yAPHDoi$ zmr>Y4(;iBFxCovFNq~lowX~YmruvRJ^tJK0n%er%yi=2XLJdhH<(ySB z$lBwzJ3SBQXtpA&z!I29SDHN0Qkae|IabT>TjQXg#KAI+Q8s5K359@CKq$|mm*buY z?{)@@1v_w`$ed1vW>aakv`)uh=q^jUJQD~^B++LwwQSUpN+63w0|tdWN~HYw*%!+H zUi`rQJ4Xt<^5=t-+#DYs?BCt}^pjurpZ@7;>EQNb>*c@RE&lz@z1MHzMf91w@yFG# zjvjt~{P^Ma{g4 fFn+N0r=EZD*$>n2?$5S3ixgJ0Vn0L{Bud;OM96u$(K~Zqj%Ao>gb3LzS~Nn0qER9% zqi8<_sjQ58R0vuyXp!5Q4`oCRa!5Wz=!b5EQK4Xz1Iy75r{0I38H4A2U!E`T^TPAI zpKNaxPcEHV0)Uen>uVR&$)$xa%%uIwak2t11KXRIE~Ip7YHE6VdS+&3c6N4dZf<^l z9>cJOg@wh%#cZKaplOQdIY|;UO)(6;TCFyl?QYi#f_@y2Cli_ijs;OzR+LP+oUfQv ztBj3-_nF5!k z#5}7KMV*u_TC-WB#aCUS(UY7|_2N>V$x+1uE0Kc6C_1m##9CWzd%71{LEMOv&hW^` zImk$mEkWJ{!p4|(w%8>UpVK3`J~W)M9iUy2%xFxmQY7m#+tK)*Aw^Yf&@@JFb?i5f zA{UJUJi`#AOfw~puSil|(^{2Ew_f+#?a1?n{r-47Mv&8iXkv5+=X*IRBuhiSHd36V z(i_|TNjEtj9HC_r$C+%lm@h~qrLn9bh&44`W_Ih1{Z2OyqREg0Rlp1hx755{CR--w z)}&smwC`F2zm*Jv$>ac~IgkMi02{ys*asM4fKrG&G7aQ9C?1Fe=rlAq@QM(NfFwYA z7S(Cwh{!9Wu!dp>?i-oShY&yy_8p z%-Uncom6^9&G6V8qQRKR0F%dx6s~ajvP7FD!M4gy!|J(>C~%WFK$9UO2*?8z145}6 zwN&l_a#gc68ZoWr0~le*D~ePuYo@8wRF$Ec9PRS7FHn7vOymMm^T;Ali$)%YA|VYw z^VIU;{U3Pm;+6y}f82Q^CDo0!7cM>d*;l`9ocj3j6LZ^tTj$me) z_5O#e3)aKQJEx@=Z%WSzue`c*_L=MQ;o|A3?|(TH-n{(u-PQHA_Klr$kMif$+dsRX zZ$AI5`0|y#51t7B`awDI)=%d@I{V{4|Gs3t7RL8ZY3k_k?qhFW{`2=QukC#M>Ak&g dZtvZAWaaBSo4+pInoG}tjSE|A->trW?SG7)q-p>F literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_diag_2.png b/resources/g2/track/raptor/gentle_up_to_left_bank_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f448510b37129bee7ab1b5ebc90bb38157b0b4f1 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^96&6~!3-o9oVq&^NT~<-gt!9f|Mlws@+E8n*6 zzwEEQ-&=pRv+;KI{KfL|{o?-B-1g}V#@vcU&wxr9OM?7@862M7NCR@hJzX3_DsJVT ziWX{6;BmgVrPb@e-}TogipekjX;rMw;1hb4;RUOp;NRB02?rux%zEJTd%=^+cnRH$ z%yrE^Cf7o3yzeuqHmKiWN`A%iGL&J0ip+AUB4Ku69;U9zRkxP_tzhtU^>bP0l+XkK DO_E13 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_diag_3.png b/resources/g2/track/raptor/gentle_up_to_left_bank_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d30d3c2d0f6262bba9507f409a88540e12e90740 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3-oPT6RhUDU|@95LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&tEJb-!JZ8&268~V4Re`emzhfV@Z%-FoVOh8)-n!LQfaRkcwMNFGcbl zR^V|B{J>y#?|+^4frU$bXEka+HFno;WRSbo(GkqGz3Hz&=Vh)B(=^sHG6+1jfA%J| zW23Dhlfrw3mB*fJjqltq?AGvO>(MnCzRzaNydx!SCt~+w-m=aob2fK)HP3B2-QmsG z*&%1uuw4D^xnm~jVS0B(wQpT7alI`So_8nmv*Bi;yk}i}sx~LLD1T*YSswY)BVyHx aJq&+la0uK_uTcd$mci52&t;ucLK6T&+-#Bn literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_left_bank_diag_4.png b/resources/g2/track/raptor/gentle_up_to_left_bank_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8adf4e5ff56bfab3fd8ea22c0a72ef58443ff9a1 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^oItG0!3-q5i#9R=DT4r?5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6|~)`u*bm)!g>!492mqp7R6sFqQ=Q1v5B2yO9Ru zRC>BNhE&|Dy%5O9WXQpCAyA|A$hzUZXzljx{ygRPHGkdyUYI)FA&A&p^Z1&B0)Tp#ID`IJW<~faAO~H#V x*zCUQ?A+A9B|91QTvyK1PtN)Le ze;%%U+q(azjd>nrvbwVs%on8c*AGL&zopr0NOWZZvX%Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_right_bank_2.png b/resources/g2/track/raptor/gentle_up_to_right_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ce00f56bb965d56666d3bf80800b6004fc630d GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^szA)g!3-qlYpWgsQn~>?A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#mZ=KB5O{?**}=?uon3$O10YG5o0@(X5gcy=QV$f@yk zaSW-r)q5dO=&%BZYhVvk=)u4G=FPWMq%J?Jn_t<(#9$D4Mn>7@S^ov4xCj@SfNnKU z-94^07E^CE#ffkIw$%6y(1BjOon1>fgZACgJ^F3cH4DGI@8;9XtUs@GxfUOh`KEdH vZ=3pUj>Y#Z+3hc%d2(3(iaPV26%22pdDu-~t1r04LFaGgWcfkB*~jg8sFkU>d{eap5>;)Oty O7(8A5T-G@yGywoLA23e< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_right_bank_3_2.png b/resources/g2/track/raptor/gentle_up_to_right_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb8d5067b036cab1cf352730e0bfd788e4b5b66 GIT binary patch literal 958 zcmX9-QHa}g82|2ice%T6bWmKxz;aL|j38kK$wMBpTW-W7<1#LTA{842B+McK^H5wLqV%DTphXG`GBA@O1rPa~G5CGI-}k+IzlY!V z-MV}ro!owI8vsu3zr1&t>6xrfZ00h)@c6%sb8z|6m5W)kva+(ex|+-7*4Eb6*Vi{T zHZTm^+}zyS+QLhv63a58D5$Ee>lM>9n$2dX(;E!@Fr373x>&Fb2s|iqzEUaHYGl2^ zv~0f9Rr&*M7?|V8p3Pm6#>#x&ka4R_Iy%)e*`uZybjss_5sz9)>@L$#B0!^|E`XzA zeFF>Z!n9vpj0u!5XrZBF2cfV8pa5tXW)un*K{yoU^8AsajH=bCWj*TkP!JGou_WM( zLh>3V8FblVb%!^*V$+k`L)9H?eq1Fvf{{wRO3OM|F+`)Kw0c_4H~h#7<93wvXUm`< zKv4y}3SKsv*XuHh!b#Z8_QB$9G%(>T0gU&MY z&^#;@If^c`TvZV3s%q=Lng-ou8ZH)(kN{8yFaaC@4`2i^#{gweMAR^m=c0J3P++jo7QmMvRsgAh3>?`k zauwv)(71(S7oG&qfh2g)#O*AzI8hSw=pf7!b;`Xk~U! zK{OlP`JC%^p28fD#Y#o3)$~TgV3{VzbOhED*+6C{3Z0ZoNF$L&p)QMj0Y!3l{M-xq zzn}cT+lL1#oPYT1>)CL9e{c87v!A^ey}5m3=fsUaenZzj`TkD$q4x8`7eD<5|0kNC zUpf8ES^4Y_Uw(Azjoo(+?|k?1FOPR0Tw?DM(^rYxUrBHMb>{j9x9-u!fB!sp?x!8^ z{^$EIy(Ycl2{)HtVE3N?8vBt^f45FuJ-%DK{r+O4voz_6jHv! z;A-qTCC7l>of^)GN{@KX+NiEjZ(5u6{3fSUaV{nZt-WoF0gdB{O3{lIho~rf=v;~Yha;Kbxxd%iI_?R+{Z zU%vXTzy!?49k^0FAKXWy#kMbyt4Y`s}9?{OGj$ z%V_hfLKChS>?(X*UA{LVZtYtS{nel1@|912n!U#0$e+XPI@j5QZV2$d1v-zx)78&q Iol`;+0Ag-r>Hq)$ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_right_bank_diag_2.png b/resources/g2/track/raptor/gentle_up_to_right_bank_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb57361738f7f2f0da19fa0dfe208301024b3b4b GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^96&6~!3-o9oVq&^NErn9gt!9f|MlwcqgVfrmwz6v zeA~MJvcL9zZ~fKI#@p5Nr`sDZmXB{X*Y6kiujaN-XE2U^^_(B5hp{BcFPOpM*^M+H zC)(4+F{FZ#^`N5{bD)63!B^?Z9vt`nFNjp>sb4c|uinLVFWWvQEjc*bY7PP4w?}Ak$>msc(8GpY&lH_08`oOrcK3*<=Dd38 z7oGGc@%kB`^jk?TEPQ7s%@iw4i<@a-#+~b5(ua%w%ou#<9KM(H9r(U; z&Twc5lqANG1E2ne=N5{isW z@+wu<>59o}4sUct%ahte#T~1DTq8MxDVKPKmNc%ai+W3L_0*oP`;i&O?I`I_=K(H2 zL4jfo$R&t{Vwo%{G^6pnA;~Q@U)CJh?NNUahfy{aK$S2U6g$cr9hv zt&Kc$5_FSEm}L)9o`VX20pI|503(1I1}KLtqNag77sV5q0-c4n0Dc)_8IS@o zu8jOT8n;mF!Xx83kVL4+SY0cc4Z7`=`>r+|T2bUBNrZAOq6TbpLvV_+OR7Gl$GnqP zy{s{ucg9El6irg9033;x8N4cxb%kx#B*(0~ZFA_gqtHv@5M@(Nl8_H52841iTDja~ z5LUB0n{nOFV;JMHSgk7cy4Gy!EMsv@M_@gX4J77JrjtqusU$Kf)Mb$`ph(KY&z;`* z>(LLqdud;R?FT=-m6NM`J7+JSy!F-ny(jLSSlhmsns;CM^Ua&#?Gvx}UpVyv_x9DZ zA93~HzWn{l^B?}wKXY>T)Q?+xZgyw&sh_VO|3X)G-`oE6?+5rFcfbF{{&zn86uol} zS@G%jKRuXP^Gzzw6)L`sUpIE$Zg>#DDSY=l;oW OfW6)QojWgGx%NNs{-A^a literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/gentle_up_to_right_bank_diag_4.png b/resources/g2/track/raptor/gentle_up_to_right_bank_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..94dd11ace773a2f38ded678f3101d038f48619c6 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^oItG0!3-q5i#9R=DfIxK5LY1mzh3=+y!`WU<=fW% zm;JT(d+Tpk&tEJb-!JZ8&268~U~JDIJ=L~q9Z)G_NswPKgTu2MX+Tb@r;B4q#jV~m zfqV@LJj@q1GD<)Adp^6(z|rK!`sr%A3=Sn1gy!yEsxv3lYrcJ(aD+-`t4-yq)x1(VBSG0|iI!j*W3bUj&cbRI_VsHO R!+{nuc)I$ztaD0e0syklNPz$V literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_1_1.png b/resources/g2/track/raptor/half_loop_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac98e75999929c34f94188d340234783cbfbf57 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8t!3-p2n|AX9Da8Pv5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU)-N-!`<6JMT{jue!&b5&u*jvIq9A*jv*Ddo?dk1YjEIT zc6hTW;@|&-#nsyif`qH*IdG;K%{F~>&tSz=Ync_#=CFmN9i4hYpglGvQ<7`5zp+QG z)B%Oh_s*PqF>^&(W297V&HV?Ci|2oAJK2Bs=i-^GjMBceB~D2*;^ljKfmLnyt$UAw PRx)_H`njxgN@xNA4B%5l literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_1_2.png b/resources/g2/track/raptor/half_loop_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cce8b46595d64212715eb02c000181b1a4b5e204 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^sz7YR!3-p?&1_BrQYryHA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwo5f2kj3q&S!3+-1ZlnP@t2|vCLn>}vopzA# zumX>B){0!?fTk zqc!WC(0m3Nkqc>Be*?w_D}+K)&m>2bE5Gdd zwQp4cYjT*x6|Pe?vBy^2e|+@*$12(PT$YNWQ?C5`r!jAyvVfvNQ*2NHi=(%!pmM16{Svl0hO!!6xMJ#eu;6h1G<{Q)78&qol`;+0DMJqRsaA1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_1_3.png b/resources/g2/track/raptor/half_loop_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..821943617b541fc6c715515f422638563f6beeb7 GIT binary patch literal 347 zcmV-h0i^zkP)LL0000dP)t-s00030 zUmxdJBilQV(@!hEOE0TKGq)#imp?P3A76tvFOL^bdka6$C^r890004WQchCy?AlkJiak{wHO`?fCd_I!S~zX3br3~xfd^3TJS zZ(H|Y_SfF;t-spYc)NQ3V)^)faeqsdX>mYxj3q&S!3+-1ZlnP@8J;eVAr-f3&jj)v zHsD|mU@}|suiDqIafoeV>V#EmO+!!3Px)O~)81@#HZ(PGuk=dk%9;r~ zxwQ8ztF)hPHNm=+Aua8|yAZqbJBe)HU+mpin(2{}X2o;wX`su2n7AX}RZNpNvvBQg S{gMx~lfl!~&t;ucLK6VQ*i!uf literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_2_1.png b/resources/g2/track/raptor/half_loop_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3106b0685a847d80a80b0bd47e15fbc530b817 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1%!3-obCD+vhDY*cj5LY1mJY4y*zxIA_{ngIK z)9sC$&Gq}m{j0g{(;1AnnLe!ns$eV$@(X5gcy=QV$O-p!aSW+o>^_wsg literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_2_2.png b/resources/g2/track/raptor/half_loop_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0f3553ccb95be0a569e87e3ae3981fe40471f8 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E&!3-q-ILzA$q!a^uLR^9LZR`I1-ukPZjkl}k zPq#N-EFa%&uHP^2U(Icw&S2cTZvK0qBF2&+zhDN3XE)M-oL)~C$B>F!ODCNcI&8qf zeD<)*?En8C$W6M(G&6JOx`{_lWSbUOC>X!~!PRbb`dcHrmvNn_g-wD8#|4EAu^R2d ze}qNY4r~`|E+z^y8dc*{Ab4Na;&e9zcZZ)bQpuDtDnm{r-UW| DudroL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_2_3.png b/resources/g2/track/raptor/half_loop_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0d66a934a167eec3f205b8ec739e61c8d26c10 GIT binary patch literal 413 zcmV;O0b>4%P)6&O z!k0@#nIj6;oDy17N=bq$ft5_=8#Kx$n~d(Lt{|%-DC<93K(>F90=guWkbtd2BSt_7A3yVeCqq2edqLF1`QGDy6rb200000NkvXX Hu0mjf=2x%) literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_2_4.png b/resources/g2/track/raptor/half_loop_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..982dafce2da8589acbc8a0fb23f7bdbd35314989 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^5WtQpN#3A+A9B_xAhWr=R{@zWaUj z>i_Zb&%>2(TlZh~*WT}~zuMV&yL$d~d*j9O@y+J?{o?-B-1eVs*(QNZDGBlmW^j0R zBMr!z?CIhdQgLhTMQ^^t1{^E_SslFpSnmJdBKU6Axr*>@{)ZJDT~r>ixFvBlY;(EA zy==Pv+Xt7~xn|CE?`ZwGedX+1U(^nrxxFjv)n(?go#7dr!W>goZ{Pi^A@Z8*mfP3+ zj}B?7ItnqU^lyCfmG$&Jg$d6z1$Jd!X^3~{ZCRly&k}f8pz0c9gTe~DWM4fOe1Vx literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_3_1.png b/resources/g2/track/raptor/half_loop_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb9a80040dc07f998848ab26666fdaa8183d99f GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1%!3-obCD+vhDY*cj5LY1mzh3=+y!`WU<=fW% zm;JT(d+Tpk&tEJb-!Ja}era|HPz7U2kY6x^!?PP{Ku)Bmi(^OyWA8ymzC#8A%#O#O zr>y_~-yq9Tfkp64#=52TH;S*t{92e(-D8+@-P~JU;pycY6II>?J+;*|(f52cS=F>L v@7tFG6VDxAT9?iL@+`x{!-IpOEZ?Ln>~qooFb; zqR7E=v@o~i|Nr~kH$-@B9<7_lILkWe+s#dpJ3d?te!zNgi%3RYNQFk)!UbU_0y@=Q zt^zix{*B*lQiPAxp7`P3E1jg6*ZEiQ=lyN95ndEV1#diuU!V)|3DMV&ft qH#Ixl<$LY$FJ+lZp@TybonmP0gl0KfOXaJOv|JuS_vP|^4m)$P+;|Q&ck+40 zo}l}cYk56Y#krwA`DCk51t_9b0g$XtN2wh^P3?|i`$R1s2t@aZLVMu@_Z%E4giQ>`#A#pZe_( o>d$3*Gnve)(lT`KOrN}LU$VmxW*0m&82|tP07*qoM6N<$g44W?i2wiq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_3_4.png b/resources/g2/track/raptor/half_loop_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..83ee0f5d20e8065805f24c4bb2c55fa1bec50a32 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^5WtaRPioT!Hla=+)1|m2X@3U-sAD z@2$Vu*?7Bp{$ly~esTZS`7iiD8cKrvf*Bm1-ADs+x; z|Ly8ts~xkK{rq^NkcBbM%H=@HrLTuHoq7euPm5mf-F!`IcSY-~n9ElmFMQQ9UH{`j z_dRF(cl}uW_jD}t67`sm;^*)0v8{}}^k?EsPYb_1QLeO*V1dJv3V7tMXp|TIPU$}X wegXHciy49evl+KMO__oMzy=9)T2cv;N`$!NkhR$|E|E=bR)dTZA&YaEL%;|F z&LP-QhHWZ24DEn}4w%D;QRlE=Xmf}(hXsd{;wn=KWxxT)S|yY@>|w>fDTVL7$9H+Z z!}s37mEFpEVWR*5>pQP)U(M#Ztj@3Gvi|(F00+pymDl$!XLey>VR3OWm&@hz`K6_$ z<>h4z!&X*SR##U`<#L&28Br7zMbh=EX&S9otK01lhkg_tCrLV=vkVA4$kJN1TCCT} zMw4mVe77eLhFTDsqu8EIU6ICAe$9|dmP$H0)i>G0mKb)`(a=ba+OxzxNuvq@8VwBr z90eN~SZL$pL2*7J(2PNI4V^j&MP&dPK*KNt$1Q?zD9YveLs>qm)y9_fxZg)%NU+7S zP-0|~*Qkm?s}`#}yx9|5p415xccl4AjpPWXQsxy}(z&W38g04V*ZRKU$5xbd;@Mzw z65;|B6)4q!Yy#zAT)$KqQq@o}V%46QZt6tnP^ODIM>Hz5t?~n13``|%>Eo_B^;&7z zJ&8RujqoBz(JIT;1hJtgwyyUYjiGIa{eJBGljGwwO%V_VP+g22;9@{1Bf2&b+taE$ zYXqrtJRi3`hZF zl#tCLS4MsvjoK)2;c4(3NFt~*R@X~bgYGz$fvX2WD~`R{EJhiNr~%tt6P%LllA2E$ z3Gbv;Z{7$_x}#Hng2pLT1dhZi3|*r9yB2qmA%|--ovzP~YPD z?F*mW-1zrK`y%`0qe%Un`|H-h{ks=7zj?cG|IW?L{8vAGcm3mYkKTOi*S+7=!oC0A zDQy1qh5g3e8ylbgd1?R7R^z4Xx1XpJ<>AZf`Q&eA`|K}gnS-zCGw<%-BQiSdT;ARO J{?dEb{s;Q$o8SNd literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_4_2.png b/resources/g2/track/raptor/half_loop_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0293c4f0b64ac941c834aaaf03aa1a2a4055ee47 GIT binary patch literal 382 zcmV-^0fGLBP)Wq_UPB!Fdr0ja?NILZK6%J?;~0RY1Q zBa8wpu$urO!6pE8X=~pJs-B*oUW6=tzk9OMFmBK!=oru|@Ki4nhJj&h`e&b}YG4_g zvbW2bB*jzlWzK$a4#jzSoYV5@NPDU;qxNIR;YqtaX-;bA<3LJVDc|&{(^C$`Q+*qs co34n6Kdbi&tKc;seEIqsLjx?(2KxWMJEHAsR}&*mZ~9u$IX1- z7v0VOi@$o9y~$(5mD1>{?|Me%r~*Tj?jWf2CFqC@SCt(aL<|_xRAelMI1Nj~n3*QB zHsoc1NvbEq5Zo1Di#RJDbkDQ99SU5?Y=)|7Sr}bN zXbXhdv4eR>Ko~jZ1@;aM0Q`G_e-7F!xq)>6e5-i^^ycS#!0%H4EV89FAQ~{k8O}Q+ z_}RS2meP%-%+!oUOz`3h;C5od?L<2$wL-$}I$EZJ`aAUO+xCxi_IFn^e{S cCw~^{1)(hs^Kri->Hq)$07*qoM6N<$f`}BF?EnA( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/half_loop_4_4.png b/resources/g2/track/raptor/half_loop_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..93a20b8256227998c66027235d5ed57f6d441e4f GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^vOvtm!3-qp=Pi{3QYryHA+A9Bee~-8@$$E=`}ce6 zuXZ-xuAV>L-gvQme6zWJzqo%jx4rIsS5BZh#*!evUqN z8*n%WS{^Z*_^$pw--9jle12_DpQCv$dgE8eC3Pn@vVC-@ zKBZGtnqc~^ZrZ&07Mt?cWuLp5t@twVeW2coYkYgU>;7~zq;26p+0A15+;v3-&@u*3 LS3j3^P6Oic+!3-oX?g~5tq~rp8LR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$e80HA|Hb3=KoyK7L4Lsu4$p3+0XapUE{-7;x87bp%hzDQ!Tg}> z%%<=4iI2~(yQKQc=EP5K&rF6*h0R8J%MK(hJCK@wS!dIOt=T#vX+Cr0^^%{aOcnAr z`r;NE8M>&gYNGjKyWlz=&HZ&d{>;Abm_0T5)bsy8YXcwZ88&?RqI8>OX6%w&ksDn1 XJXo(;eo|rt+RotV>gTe~DWM4fvAkG& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_1_2.png b/resources/g2/track/raptor/large_half_loop_left_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ef504a1b70b9a49c7a1898a9ed7e79a95df219 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^YCvqn!3-qXmqZEzDU|@95LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU);Z%+rB5JA^@n4u_VYZn8D%MjWi%HfYNX4zAQx5VS zR^V~&Y|NnmBDc>ThFKv1Hr$wG`k%&>;l+1Mn?Yj^8p6U&(4O*f6BXNVztM_@O zD&N~vHU2sB-TtTf)1B|6JxhJf)%Z0!{{wD%cce@$-D|W@RdndH?`BSX=-6GGV>Hjw0ST^H^x`+|mewEAllm5jX uU9TT`vpRN;>hDEr?(=U*m7UDC_{wG;#2)kaZ4y7w{S2P2elF{r5}E)H^m;u2 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_1_3.png b/resources/g2/track/raptor/large_half_loop_left_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..14a0c16f3bcefa197529603f436a0147d8ffe545 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^Nl}l^Rn*6U~-Hib_WboTyb^;kVwS?8%v5qMaXgZf;c3d=;UeG9~7` z)`_^I&$c|~_x$5jl+{r0Zp1g~gW&hB)YnBf%d*}{PHIi;&jr0yGw!UHa;`WNQxKsPgZy85}Sb4q9e0EfeG)c^nh literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_1_4.png b/resources/g2/track/raptor/large_half_loop_left_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d093a593e1e58c3d1cf2b64ec82fd149503febca GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^VnFQ7!3-qVYqI(RDfIxK5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWI*<8P0+`pRJ{=A0Sf1pyvk|4ie28U-i(twZv*z9z4Vt^VXJVXq=7c;H8Fa`K@AN6vRJxTUaH3$pyI+uSSH zd_rmW`ycE6y>`1^SQffqN{jzu{b@IC?7HLri_cy2-sZ&C==murHb$%R|HZoPeq3dj u{7LooQt=&+MfacPxUH&mD5b|!Qh(D9uIlx^tK)!DZ$Lw&>H=Se zxenW${4?SXm3lOsS;P_$uCw~U$^u}EWs(Ocs= z@0&Nv3AVABlrwiJntbWu*<`M`obl(q3&(^^{-nS8UOe+({gY>frk}U|UY%y2^6hWh s#x?KVw}(4y+PD4ZJ?FcRJJepXUfRf;D=eCJALw)jPgg&ebxsLQ0NrPI4*&oF literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_1_6.png b/resources/g2/track/raptor/large_half_loop_left_1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9bc005fd5db4b14621df15f586e6029cb80577 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^%0R5b!3-o#n2IlhH~~H(u0Z;Ky!`WU<=fW%m;JT( zd+V=uHr}qDKi%GVv3z{9xqiR6KkKpSjzD#cB|(0{3=Yq3qyaf|JzX3_DsHWvAdkg}ZLC#vQokH}T0n zfxq0mw!lv^BzTEivk3r9Z Wt!KUQqpd)PGI+ZBxvXRciDQ-lfd^SyDHPJB5?QV= zwK{J%<#tEy`bIyj4@ZtjV|ji>mk2XYS{l_d*u$#m+xdP+k9xInO!IcDg?vB5rn3UU z$Rw{)Ii1d%tY+~>Q>?mDqpLW5)r*QGmtk^QUZEw8E9jzLlWQ%t<>_8%22mp%w}(?7 z7a*+wQ3SFAl!b9EBG;h`zMzNs`p|GDR)7v=I<0Y;a*nR&`L-r@4JE8<1KSw6)roIU zLl=z#Jk3#bp5=;ySXPv}rZvmuPQC88TA}9+kB%mj34)9cl#Q`%T!#v!3zReQrJpSvdogxFuQIe4BT-Ppm@kh67m2=fKZY} zEs?vAOtsP+jku2W@bR1%pKYO=@^P$(tG z&uy;Uz4rs>_I4F`?zda7C*=K|?dQ*~f4F~X=iwh7e;^ej|Hq%6J@M2t7jGQA`g=@n8Z&OEwQ11A~G9BLgD`!;>$}Obr$d5vNTo#T}fP8`QW3 v>KANfU|=>7>_5sdLxCgCVV)v~K2U$njki*I`PozWK!$m``njxgN@xNAZ8$b$ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_2.png b/resources/g2/track/raptor/large_half_loop_left_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..268bc9fed9d95193a855c0e0a8e697fc9f728800 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-o!3-oHO#ue; zo^Eg4FYaH>ZJ*9yERrBL0VvH_666=m;PC858jus?>Eakt!N_{Bk++F~fn}o{%bogY z!;9N_85jKa$t~ckgzRbHsn3{ vg7Iz!i@_I$7p%++?lCNwt+0oY;RAd1B^jaZN4U*__Aq$5`njxgN@xNA!JInS literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_3.png b/resources/g2/track/raptor/large_half_loop_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b97f277e812ae7cd22234bd41cffa45b06be4622 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bp!3-n|)-5#xQgQ)4A+A7rzqkHsXXEYa`P1!< z7t6;to9p+B`&V<@r!yG;>f*Nts$eV$@(X5gcy=QV$f@vjaSW-r)jP>isKJ1PnKMfG z|Nq40A;%{loKtSbDs@psuvRGKxJ<*9#7+^-yjbazhUfCr+*c`lRpNfif3Z=h^PQ`= z3ZK<8v5UTJ(@wnklzOA|=BA`+FS0k)8kX=hd^xk_PPf^-8M8Vq)RN|Hk@$aIW%uFs cO`%h{|4wB&xl1?E8|VfGPgg&ebxsLQ0N{jEt^fc4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_4.png b/resources/g2/track/raptor/large_half_loop_left_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..401bf2f55b3f859860a94a2b33144bc523e49f67 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^8bIvK!3-pC3U5CKq!a^uLR^9LZR`I1-ukPZjkl}k zPq#N-EFa%&uHP^2U(Icw&S2cTZvK0qBF2&+zhDN3XE)M-oO_-wjv*Ddj!yIBJ8Zzi ztQ#G+;@|&+tyk{YvNm0N&Zv3G+lVb%x+poY!0Fwh2a6sYQQ+CU{6&Z7TvsqW%A%T{ zyPW6kW)Zf8IFLzFg!_UG4ub(}-sNiU6&$jZl zXH$t`QNQwbf$y3I0@Jz5S3FPIS2JmH7xxwUheCy4Gp4Th(B-nXUoHQx^q-cHA9 gO#jq*5A9{VeU{_#zr|8Jfj(vMboFyt=akR{08`M2CIA2c literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_5.png b/resources/g2/track/raptor/large_half_loop_left_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..78c409efaa7d3481e87670e85ca2d47f331c956d GIT binary patch literal 435 zcmV;k0ZjghP)pze_KxLo>H0Z-U@PzT=)AVWbVg9jOWH>ik2HJ|@0yB$wC(=RUsl-!>53T?Py5p@f dq<28^^bPg~7pI|MOsD_=002ovPDHLkV1m%bxmN%H literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_6.png b/resources/g2/track/raptor/large_half_loop_left_2_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0aabda50c5cb0eb55f8127065cb3a397dd6ab3 GIT binary patch literal 335 zcmV-V0kHmwP)>N-{Gjc__~(@^rcPGr4;OucHPaU#in^LuZaXYA$}6?3To<$tDG>XOjXv?EQj;wA%pKsuOl0?1FH^c<6+`j8Y)3O4uCY hg-z%MH;f0y>jMvQ2W~uEqhA03002ovPDHLkV1h*IjFSKW literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_2_7.png b/resources/g2/track/raptor/large_half_loop_left_2_7.png new file mode 100644 index 0000000000000000000000000000000000000000..11dd5e12d3dfda353382269e646b2f62e849c609 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N)!3-pIKTQq;Q2{<7u0ZMraAKz@Q-!JZ8&28_^D!c}$fw3gWFPOpM*^M+HXRD`+ zV@SoV-YbqmhZQ(j16nwun!elTu^ZpK>K~c%mCb%eONWQr!b!0nXWAE-T{M5`p0H77 zeu|W~oY4NGwr7-fZP@T*;b{ZkNzbNyKQ}pz>)msMX)TPB^#YegL&anJP98VmDthg$ zrV=yJ)coTtnfzaicUh@DR%Pn2o$Y+2`{|{M^fIRPv4#SXmI3Et+%_I~y}WSe^uR^N z<_@3cEiKHJU9$DTHK`x--hSeAoYYX?yH`{z>&Mi{?t*rk1jBhEyvt-I%u|(a>y?7pIJcFmJpUXO@geCy#$w^57 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_3_2.png b/resources/g2/track/raptor/large_half_loop_left_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..72933ed1a17285d1dd9744f7cd2c8db6fcbd546d GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^O!3-o9F-;Q!Qi=gSA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqtR4`BorBj3q&S!3+-1ZlnP@)t)YnAr-fJFM9JGR^VX? z_|VR`?|}d-7@aT-K~4e;=Gq;t)2S*#3%P0+c#%6Z#jSIvRveu{Xto55$kTf&HMPME%oxw j4L6^yxLDcH@q_8f4OS)2OPB5gox$Mg>gTe~DWM4f`So1s literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_3_3.png b/resources/g2/track/raptor/large_half_loop_left_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..48b9d335e3474338341211e436a4e15f5bf4e024 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^vOp})!3-pITFuOWluCe4h%1o(A20trT=}+j|7Cye z{oeYkosGAv=P#Cz?-%#4=C)5~Fy1+1nHEqTV@Z%-FoVOh8)-mJrKgKyNX4zClRbqP z6gij!FD&@?e}C|!(kAwuWvV4RJ32b9tCci_Sune8t+!zCJ+yD*<_|pu`nKHBOXGfN zO)LMsc6QbK4Ii&w^bONrQgQE$$r+1d$8-&=k9}(h%u1UlbNb*DFTS>oPmK*??MyAI kbzX0|e17X~Rml}KhaFhU%B@z$10BKO>FVdQ&MBb@0BVI=(EtDd literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_3_4.png b/resources/g2/track/raptor/large_half_loop_left_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5409403333f8538eb557dfaea64a1891ca60d43f GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^fH$6>u0Z;Ky!`WU<=fW%m;JT( zd+V=uHr}qDKi%GVv3z{LxPLXbeL92jlfI>UfJzxlg8YIR9G=}s19GN&x;TbZ+?qSl zTZqY!gVj(aQ-0>}`PW-R{hVaBrrbQboYC0W_-fjE4$pN_{ziHpr(44OiaeZb1)tjq zPGm+ RR0MP)gQu&X%Q~loCIALUW@rEa literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_3_5.png b/resources/g2/track/raptor/large_half_loop_left_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..67c39321e75afdd6faf5c80f7b86f19d6db793e8 GIT binary patch literal 340 zcmV-a0jvIrP)pze_KxLo>H0Z;APh?b%^dds|2t7mB@P0Oqlx?q5+d*OH4}1R#x6Rls1xcPw)>*P zcX^|243|3!DrSynSiMx@E)%R=@RA)t;ex*6NCb=g%b{U-aC{Pu8dl3WKsmsC2;Wxg z(=m$!u-It_6?3No0LnR{y$%z54~Nh8I!uzcoZ7-WeW=YhU4J?CP`r~cbvsO|c$P8L zH;j}6BerW~)d-T86B2PGZ#ssz<4w4TVl1&>fwk2C15Mf-UxbMIwM`1QM{}x`q)Crv5dFQo!a8XTQ7p|E6 zA%t^r-i?>STNs`MhsFp?`{ixoK%6XWAJqKb6Mw< G&;$TaxLdaX literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_left_3_7.png b/resources/g2/track/raptor/large_half_loop_left_3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3804e7798bce640baa89b891215b1eb55e1ba895 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$t!3-on_FS+6Qi=gSA+A9Bee~+*;mWtI`!D-z z@AuYU?QFbVJ%6!$e80GVHMc$Azk=65MT{jue!&b5&u*jvImN7&+>O{nPOnfa+%s;?d*;|3P@k&rbU$#h{lO5rd!D=cEf9z+bR zxT2kl(1(IW3I-_{TsKY)7$HK?6N?K{q#F_XP*@&r5T&qtxQCw^gU|Q-<@56WJbXT% zPcQ6=8)u$60{|Plub20;OJ?&-ZYkTxx1RqVU<#M^TwY6fYRALxf5O_tAG_7hFdb8Q=cKgGj7lz|FPUmxm2A%_1TCY|M^*Yfo z=~kQT_T<4(^#fxRwWl*jps)(Ju1iI$Lf9JFH<-hw5Ogb}p&lQ#lGr&(LlFm+f(8$^ zf(>*mXy+$`!hD3Ighq1}o!SV6B>)*f#V|dew{YAhNr&SOW%;O9n^@LyzmI|dX9^|0 zNXrDLlA=ykEJm|AqbD?7spBioNcG|x!Q!-7;uK2K*s3n*ExFZK`=0JaRv34pWH3Dm z@;nq2DAs^5fwVEUUlfOAHQ@EA(w-VlYKQ1hrV1L1H$fY`r+Oyu zwiLftJ94c_&`T!ae1430fC_*CU<0@SM*uSnPzG5*rh!}s#S@tXoq-Myo(QoFNCBi5 zQJX=IjJ!G;wNUK9BjZ_+1gOYZT`O7*s$+`-NAvw=6uC(fp-c;}0b{Q7c2RZ+)g$$o zv(u_OZ}=zO(Wy5@lawp~OJE|Muku7)Va%FjTXm;n`EDl)-6Rgte9B4^@&LtvQ07G| zlY0!jY4&C_w%2_OV>A+~Ri$3nOjBp*CQEmD#ub=AqQ^3oR7yxCkVT>%gFGHZQWk!8 zYyH1R9r$2>Pk~qO-+d<|2fO9%i!Xov>t8RN{pDQllS`@f!)Fg)+{(aU+_t!RuJp=-+INlppRXTW`}@xOUk`5Fx_9Z1^2*udO4734Jv4vMao=8}e!KC} z7aNz~`>=eEyZNVo_s9F2y*syuPoCep{ndlGW2P&vukY3-5WQN8S5NTpN)C_R2P~FP3vD>& zn6P|9@eQ+gEMWrtqDManT5jPw(0%lqyt#dgt)z^ld6>ZW-rj=;4vERJ*gag?qHojp zVUHZ|n{U0mv$$lApH2=ee3D>g^3-~cec$66gFe32k1sD+x$G}oF#r6g6_0r<_}HJm TeR)_6=s*TfS3j3^P6OUmqG*!EpxUhv`Fd&BlKMqVfBGPuI<$`MX1M(P=K#L5DXzSj8MJ2 zlR~3K`1%@xaRfZaDTKZoEbXjc1W?*hy(CeDz!gEbqBOz82ChWDA^pY`#Ery65?j4V zO3Em)fh&lsIA~*T<6cy78`o0YIOSp7?ip&&czr@@a178|pRiW@R1@5q&se)#vxi&z zS=%19cD)qCF`^@RCwCGmPu}fKnz52nVzr>_rGlxu>DnEK?&=pnp#NSj!k@1 z0bK!20xCpPAzFJ6EDm_<3TO&&k-?o8b@#3Sm%tJkxJP$)T68Lpr97&M9;G}|d4%!^ zz87Q%rF^9`pB8l$?9qQ?Qr^mpI3lF`dVRgU5v9bJL7! z0LYr7IskMUlS-VU+DnOgBo=E5D)BVsV*wyzMU+#COG;!MT;hE8CMoj0M67?4@V}H8 z-_GgsQKx#;Hxm0T@i}LXav1wZMoz%EL^Hq|kytPo*l*SW7#$oivq=V@1|udB`H zcunEcgq{-nv&U3^ul}fe?MvZxk?t?SABx{p`)^z{Vc*+j_va~T8?T?(rhUay^pJz) q#hvSp?NZV%{%M%y8+^6smV9ap$Cp>Lo-qO4&fw|l=d#Wzp$PyrjB<GsBp<>Q;p_4~#BtGVsZPX1&LRLxit%}nZpi{5^ZMW8pP)U<{&#qDx#Nje?_iV{KFBNB;nsqDIqQp$H`;k&1 z%Y$?W`BTa#8$bUSTJW+Y&SKwm<2!SEBA-e;t>fXGoEo+A?XKk2TUC6%{q~G%SDoiK v&u6{$4&(ZN8d(SDR4P{`{{EKKbo3KzWIB6Nq;sk%&?yX_u6{1-oD!MOic-!3-o{Z!p*bq~rp8LR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$e80HA|Hb3=KoyK7L4Lsu4$p3+0Xcb|E{-7;x9(nY#QP01k?X=)O5_8wVQR@PWJ~VP1cAPpNZTV*_@_XeD2pqA185@30Kar zu5RAyp~1ZHU;Bk^dS5gSWV1FuJiIVM;+E3FRSTTYo{6~PU)C;Q{MhD;;n}jyo~)V6 TbUKZIHZyp-`njxgN@xNAJ|t9S literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_1_2.png b/resources/g2/track/raptor/large_half_loop_right_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6fba964def349682452c114a2e1f450096d16519 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$q!3-n=#6QOXDa8Pv5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU)-N-!`<6JMT{jue!&b5&u*jvIklcHjv*Ddj$U%)YcSw& z30x8)^R7N2d2Qj%gA*)XZ-2R5=}g(e@);Me^&As7^$l=sVvBh7aOxI&k*y)7o{j;s z#R{)7S1+BmEY5rCGHd_e?7RN8Ok2jAU3K~_<8$T(b_@>!|7x|#2qgren^pze_KxLo>H0ZeHPZsvEJ_k^pD;}_01jYMfF*9YGB*TJY6BsMO*siIODfxBR`n;!1sAr9*oCqWnd+g_$BB o^JLLXlO3cZG@%doIw)v*16}9{hB92yasU7T07*qoM6N<$f`@f{3;+NC literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_1_4.png b/resources/g2/track/raptor/large_half_loop_right_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4dcc2e56162d1b07a66052a553b67e4fffe93838 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^3P2pi!3-qd$u3C*Qi=gSA+A9BdARaz>;B9B+WWor zS34VTSI?hrZ@gGOzS&&AU)+C(G2a`YBF2&+zhDN3XE)M-oI9Q_jv*Dd-cCEncUXbP z*;knD?Em@?SIWXa1w?K=y(8(TCEF^mpSKd@ds(Kk_z8LhOlN&3a7HP zhZN_knbLw@UIyDIonv4!-@Hk+MLFrE3x~oUCFL1Yxe#*+hqK3j^d|| zz0PNoon|W+9N8ygsGQ)Ue&~I4P0g{neTnOq@SZmm-9^z=HP>3{x&vi*~gFB zdU<%(eM)hc73!0}yf3O~uB_p^x>DEku_+5|9;!<8S8x?Igj{NAS77(3bn^6Uzs}U~ fWzqdOqYCEfYq@slDoFPN{mJ0z>gTe~DWM4fpY?n; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_1_5.png b/resources/g2/track/raptor/large_half_loop_right_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..39e658d411592ec158696ef3db974fb471904a3c GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Nq!3-ol|9me5QtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoJVFxZu`$G2bL4%6}y RPy;%X!PC{xWt~$(698;sY5M>G literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_1_6.png b/resources/g2/track/raptor/large_half_loop_right_1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4eb39637a537b6dc7fd614f4ca79dc64488347 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^vOuiI!3-oHFMebPq*MZYLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%75r@nZS-W^?_1aevlh(;b287)yfuf*Bm1-ADs+mU_B4hE&{I+J9Q8 z#esvlGF9pH|NrmhzG(C;joEF*sigEy^X$%@N$+_jc z)nDAw&(>Ndi#aa5>T++u+o$X|+EO`6jaE+-3@$sswuj+!qJ-1QQ*qno&Y7PwGp&3# zpF&C3F|}KEF46M6hE_RelF{r5}E)Qj&W`P literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_1_7.png b/resources/g2/track/raptor/large_half_loop_right_1_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7ee115ff4ff7dc57b9267ebaa6e8ae5477569a7d GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Dj+roGm!jNYZC&b6a#!hT!HlG^4;&FSO1Tfe;%%U z+q(ayNw?c=j- uMh*ss1G)!V4QDVUHAXWqG;kkI`1F}wIZU2^bLAW}kWrqlelF{r5}E+2fHOd^O!3-o9F-;Q!QgQ)4A+A9BdARarf9?I=`m3Fd zr`sDho9p+B`&V<@r!yFDGksbERKZvhP!)ky zpAxxUW@Lvh|0Jt)YNkWuhn}ymPsy)2)>d4|J4-T0>0QX|8Ea4fdXcmIR_ea;^6wf& c@pTVb{lZxL#2#?>0o}mh>FVdQ&MBb@09}MsegFUf literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_2_3.png b/resources/g2/track/raptor/large_half_loop_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5e11db0372e8abfa0d069be0fd6ecb2de7f19ce8 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^vOp})!3-pITFuOWlwyESh%1o3ZQZ}$TYt5)@pkq6 z>GsBp<>Q;p_4~#BtGVsd8H{_^&3_M6#8?vK7tG-B>_!@p)9vZv7*cU-?qowgW&;jp zVTCL2{>#TqTr*=~q<_1v$hEBdhI)U`aB}uf?66(2vwZ#U;Ki--#X+lBH?~&sn3lix znlQCyMal1HSHu_oW)fWKY@DJoLvTv3Kw}-R^NWq*T8XXy(t~E!9d~k^AoXchK=*o| z6Lu%cYE8E${Qv&fjcdoepP}K72|F}i6i3-7>}OrHGT_SvptBe}UHx3vIVCg!0CSCB AZvX%Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_2_4.png b/resources/g2/track/raptor/large_half_loop_right_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..42c72d732cc550f424e296a02ccc8f6304b6c3a1 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^f`SEX6*m~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_2_5.png b/resources/g2/track/raptor/large_half_loop_right_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..910add335082154bd7b200d05f6883c89c69ae7a GIT binary patch literal 348 zcmV-i0i*tjP)UFt|_I0Yy+5mk^PDoRLE6@{y6R*VMlP(;`UUW6m_ zo$w2L3V#*QdE(Az4d3q!-067FhWEU!a%`#8(U~#6N*yW-yfDmoVYn185WmXyKAv&g uTGO|2$vE(>{*RA-t8a1q2H*E4qJiIN=nk%DvG;EP0000Gi~>z&8`$LdkIAa5|6+32<-XAK z`6j+Zi*r7W6Uf;GO6;pokq&aM2kJ{S9U1;=G)ILyA(p5wBuXfepv3W3BI*Kd&#H#k bYrC%xP|F8CP*_>O00000NkvXXu0mjfJG_QN literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_2_7.png b/resources/g2/track/raptor/large_half_loop_right_2_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9c8448747a9103a786392c129200b8bb685fec GIT binary patch literal 312 zcmV-80muG{P)StAQYMBKdz7k|Rh zvu!#F7U1b#g}GrrpriMWLb|&hwLhar2hhyj%t6pg#LUf3i+omfp}Cpa$y(lz$lUO8 zkkMlnno-q{2$J(y)u`=Z$yINU^A8yjV5Qd}ytFKjpR{lu8=g1P$w{+wEa^&e4jFfF z;0m4>aMAGl*Q`pxFHBRtgxeqB!Jb5ru_jtHSM_VWc~gTe~DWM4f!aGUP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_3_2.png b/resources/g2/track/raptor/large_half_loop_right_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5fbeb998f8d136e0c5990918f55a5eafd0a31efc GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-o!3-oHO@+E8n*6 zzwEEQ-&=pXdj4Yh_$8+h+4{TY$zyYKgg1HB>Ar-fJCwuZ8 zP~c(S9B}5-|Nmh*Z+Y84XUvIkba9#dfqez5g2-hb1^Ec2m3w)5mYdC=BN*%K6E1$N z0{{R3*%P2CrgIM)Pe4pr9)3{dw+~<`5%8~ ze+xUBUpHarRq0{nQptOSX%IVeRz(k^rctTt%X#+VD{0`QDy=Pm|-zw|Wk;je?cW{S(ZwuJP`}@V)`*{rrA7HZFUSpac zMJDVg{W8M0t}|QIADc!W*+0hF_gh-r!*mY`IBXEiAY%r%pP`vdW+q1+q3_;iGB~Tr zQRk=|+fuo1FWoZ~f>Y(bRxJENa0_JJ{Yk7){s7tO7Glbm_`(1H002ovPDHLkV1hhQ Br_TTY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_3_6.png b/resources/g2/track/raptor/large_half_loop_right_3_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d86d235de8ea58f1d5821411fc8070a8fe019452 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^VnA%p!3-qrXL-#6QYryHA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%h2|!FcD4Wm-UWj3q&S!3+-1ZlnP@D?D8sLn>}fo#ZHV zSb>LG^uUSC|NrmHW$-onwijJ_v!>N?R=?}nNLz||%%f+tm*~b4}$oi?!d-DfJib})&wDs#+2-evjj!Q7CsoUSNXJ-1juL&5jSa<98$Ph_`j;t=Z1@b6^r>mdKI;Vst0RL2R9smFU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_3_7.png b/resources/g2/track/raptor/large_half_loop_right_3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa19573616acc6be81177299bce5b24a7808f1c GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N)!3-pIKTQq;QYryHA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{$ly~esTY5ZhOX}Oic+!3-oX?g~5t5(w}KaRt)<>(&3q%RdiSzHQxq z*W=0{W25B#c6LRBs1G_Px! lBDB6c^75ii$)MN!=kEK#wp-&tMm*3B44$rjF6*2Ung9nKS=Rsn literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_4_2.png b/resources/g2/track/raptor/large_half_loop_right_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..62074b54f02bc6998dce0e133b5bb6ceb4087fd7 GIT binary patch literal 315 zcmV-B0mS}^P) zRT{D^*32bjHPN-%8N1nDJEV34q3i!;t9fPY%p3&8-JGSUI~1ByC`s{@Ct0j_rab4% z6S6!UEYId(Viy~0Td@!_wiB@c@>myuj0I5B-72`)%IKO830X3poA<{~(^gK7ciZN8 zH64$_u=&O4M=%zNu{Lmp!d+Y~KU_VvwXIsRd-mey*DZe*^rb27cWqF>=X}K0dv(bjU0{{R3uPFsh0000jP)t-s00030 zn=}7^C+}OU|6d>HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GnkRlRsaA10d!JM zQvg8b*k%9#0M|)GK~#9!t&}m21tAPWV{Zl+2y_4A{(=q+64Iu0@$wub%*MR7j??oJ z#^b)k(c*FXGsV3{rqieRtC2~cW2?Q;$t8|L%GgQH;;p?-QW@@JVW?uOJ#SPFhGj7f zCpjN0>OZQiJIm%OF5rEq(w~c+wY}6m4?6|?)HAQIf3fpRu`dKss1O_qJl9can oqj*P2ca&ozQxx&TM=~?BAIHK9mw>}X7XSbN07*qoM6N<$f_jgJwEzGB literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_4_5.png b/resources/g2/track/raptor/large_half_loop_right_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e547974d41ff4a4a702cdb0728f646c6973506a5 GIT binary patch literal 312 zcmV-80muG{P)H0ZqVFbqR$w;f5j|9vM4QzxtSVbZk{)^1yeTL)20n+$NVb^y#Vm4LTHu*0y^ zZinjaVcYV?ewA)N;-uSW8-EdZ7tae$qfQNVim!8Koa;^Ns`NUxzGHo6SO1CSOV%If z|K=mVgn9fva~98S{~w(38u`^WhT&p4omel~99Z34R0s3}EWH5$LJGuy^x!H00000< KMNUMnLSTYMZ-2S~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_4_6.png b/resources/g2/track/raptor/large_half_loop_right_4_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9e3bf2a4670f9a1de90a0a5c97be8382f2717839 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^%0R5b!3-o#n2Ik0Da8Pv5LY1mJY4y*zxIA_{ngIK z)9sBH%f~mH>-UTMS99B^GZ_C1{QnxLh_NKdFPOpM*^M+HXM(4TV@SoVt&<)34m)r# zGhRM+?!WwY~iq^!P{#}g^FLxT|_!pneEef-F+&sO)S!P=HKYa8jFmUi&v~y zI}`7;q}NgMVS18_t?=jG-hj_}=eBQGJbCJ4(Dj~U@|Wt_t{ZH~)CRhZ!PC{xWt~$( F699hbV@v=5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_half_loop_right_4_7.png b/resources/g2/track/raptor/large_half_loop_right_4_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ec7d70389a88b75e392514d0099da47a93fcbf GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^xm|b;yoWqmMOZ--@W+o-Q=!`t1li5>iB(5*C0M$VrAJvdwnk36Kig% zt-9=&y2Q3?P44etUD*St3tgT*s{Q1)+u%_B!WyBA;$_VoO=6z6<^Y|<;OXk;vd$@? F2>??JWk3J` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_1_1.png b/resources/g2/track/raptor/large_turn_left_to_diag_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..419f29ad57fdf6b24929b63c76ab54139974a113 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^azHG~!3-qRG}i?KDa8Pv5LY1mK6>^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqtR2>Q@JWiWp0R{DK)Ap4~_Tatb|N978H@O`R0Y*I>ZG zGBIfP>%aUt0hdiQC+ygN_(O)4&~opo%T}5Ca-S1_#rR~ERD$Z=r~e#Td;d%Mn=VS8 z+qGuBR7QAF_6k1TD;Kp&TW4GKXEJ%Q_ z`@Qv7I~#9T&!28@yjVWIU)-N-!`<6JMT{jue!&b5&u*jvIkBEDjv*DddM|qN9Z=w5 zcIe^O`}@CHdt*#f;Oxg5-IJE2IQOS|Obg7Ej67@Tv-n)X7o$J7xZ2V$TJil1h|%TW zpM3DkEj~GRfBlX8(>_n1-e1%8ZPB^k$EE&uUw)^*|1IOr0QXu^phXOxu6{1-oD!M< DcBD*| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_1_3.png b/resources/g2/track/raptor/large_turn_left_to_diag_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..799821b2a9d6ef4df724f590c1e3b6501a37ce91 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_2!3-oTqJ08@lyrbkh%1o(A20trT=}+j|7Cye z{oeYkosGAv=l6^I3x}VV21+xQ1o;IsI6S+N2IQD}x;TbZF!~;36lyTwIIuzN;?Mu$ z)yY<#6|E-IwPrs}@jSglb6Rr1AgQgQ)4A+A9Bf4uzjaOKPX+WWor zS34UomXGfj_pj!*PiHXx#o)OWsDiO1$S;_|;n|HeAg9~Y#WAGf*3`+4LPr!hSR4gU z{I{PoDR#;eg%m%zH?L-Du`;;i1o%07OCSAxW$pqgg~Ob0rv6@KbfR<5Gy{8%B~psn z9(salGmlJ5@&4k@;@PI7^kq@d+8f#%eL7XYcs<*l5+zogv#jj}x24gk+d{Ly7P|fW xy#3jpI2l9V!-taZbcooWP`$>p&*l0{w(rYWUh4dwa0KWq22WQ%mvv4FO#rCfUc&$Y literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_2_2.png b/resources/g2/track/raptor/large_turn_left_to_diag_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9db57e3ec0e709a23c149861703b9039181ca4 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^8Xz_YGmw1ac;^<7k_+$&aRt)<@+D_{24-tVoy z+Sz!qe0;ySe>Jy#I)m{q2G6ZP6^tc8e!&b5&u*jvISHOFjv*DddM`u^H7Ia61UiV^ z_}?adMoBvU`)?i%23;4Gw%i{sn)(vON{2EIExGnsPjZ%$pjfE&2eoi^0>?&t;ucLK6V` C@JgEi literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_2_3.png b/resources/g2/track/raptor/large_turn_left_to_diag_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e36fbc37dcfc3d31509e32171f6c49affedfe8d1 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1*!3-o-F7lTEDd_;85LY1mKVJTMxbkIx?fu^R ztDTJ(%g6VN`&V<@AClsl1(aqi3GxeOaCmkj4af=iba4!+xYc{Xk?Vj0k4vDjvEjY{ zM_j!*7v=sv{ej~mQ>EppGY&LI$I(pWA|8iH^r%#x4elc;bm{Jf1w1UCY)z4*}Q$iB}UED?m literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_2_4.png b/resources/g2/track/raptor/large_turn_left_to_diag_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e69b1bcf950fb9a372e77890f34afd2eceb554 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%!3-pCChivl2?Y3rxB}__@$%2Zl`s2i@AuYU z?QFbQKE7Yvzna@Vox%7QgXdPD3dWKkzhDN3XE)M-94Ai~$B+s})`N^(4h#&g8*QiD z`M=}Tc24E|KljCNElg2-udzh^*;PIP3w91Y<3$3c zGX=Rr{QKq$-f&fO_s%MCsS#WFrnz5ppXv{<2HAy^RJnYQmiKsmVi)v1QSc9OQrGS*JeNL8gy*dJofeRO}sygr_)z%`*_>Iis+}_W<$x0{pZ8|WoqA9moU#wq8 zYJG6)x>WVp(}yZ*!gw}rkJ}=*qI~a<-n#f(np35P4lrJPR~#k}w2Q&h)z4*}Q$iB} Dm7hym literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_3_3.png b/resources/g2/track/raptor/large_turn_left_to_diag_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..46a8c3c4af53f7c5c4710fc59b1516bcd0956bd1 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRZ!VDxewpIlLDTx4|5LY1mKVJTMxbkIx?fu^R z+tu?I%g6VN`_KQ*6atiEED7=pW^j0RBMrz=^K@|xskoJ#00bHgg6kBV3>aKE*bNLg lxVoBJSg$%9;(5ly!(b83w7~L))=Z!d22WQ%mvv4FO#qJHC6@pI literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_3_4.png b/resources/g2/track/raptor/large_turn_left_to_diag_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf81b370e29d512a6c48e1d13e0e996942a210a GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^96&6LQNxkV+>xDemu=Z75-~#1Zj=!rVjn7I zSdMb*Ll`}%&_N$E=vZ(Swi&PwndIRf`Vgf;l|1yJU>pY)&E_G8{LL8rzVGAr^8J4B z`@Y@t+tS*xSB?R|+Sb{Pi`k^IdSN-2^{XFk`T#jN|Nf=TjLyx?&Ck#0a=C?tg~i3i zrKKed!?mH~kWMPAjke5FEG zYfPibw>wI&uMYxi7&RwTSER8LziP?_yF@w$)wS6Bbunm{hJ7>MZzQpMI142LbQ-Dx zI4agNv7m{Md--%opoBrGj*c9J!XkhIpktVc<2FG!6y@^#eMQ+Xm&dk!(CwliAlQ6S zC@>1i>y%{DC7U%I-s*^TPi_rVcc}YundAsYD)K5V8=Pi}WlUOwr3Hc+m6{XFojD=8uh4meBdQYJEb%=<99U{pH^yyi>eXjK z`!Mp*G{o~9MVDBvEQnQAZ5l?WTJ1NRLAM+E{$wPX0J@A>DsJnfQ=vOG z!E304PI=$6$3Z6gX90Q&$_3{VC|L^TU}E{ewr1ttqE0elH!1&|8J zETATfTm|_RG;E;Qg=fKYAd65^u!>Qzt8~kedaf}T)T78tk_cs5L>buHs^An9m(+dA zjCp6Kd1-ZU*d8AF6EvPtdEiJ)VsK3$D=J$n%Z^=fTlT!M?ZJ!lb0`SKfEHId+^y; z|H7k}E?=Af`Hx%nd#^p***kvo&X-qzJ9Yck?hhY6zW2=+PrkE%dV2lZFIT?5d-nL# zyVAkq|EL@ClM|!cC-<(K50>KfckuPMof~)l#;x5~-_j;0(-+UQ)~h+|%|G{cK1jaJ PEWp<0_Qt(;KmPiER8OEM literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_4_2.png b/resources/g2/track/raptor/large_turn_left_to_diag_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ae23464b8658792a49c853aeb95f2731d4ad9b GIT binary patch literal 975 zcmX9-U#Q!36h8NFdT+f3ELt@}wiV4Fj0jQVB@fw_J9@9to4aM&hk)4(+K0mO5Ty@Q z1NNax8BxpVL)AV+Ei+(|E6borguu!uGm{H;5N5%m5eG);Lm#g2Gh^_bbNF7)_rZ70 zM|-=)jrAwj0bpZid+S^}pGynRET#Q3;wcYc3HDw-eji%UyO%gf6vD=Vw3 zs~Co5GMTltwS1vaU|B{K1x1l`T{TUkUaz;?-G1K-f`ceZW;2!nfd^U2s%oxMA*(f} z(d645x!2bQzBvk;lc^)pSc%UXQr;?&woY|TcE2wA?b4`kM8ifLIrAha5}?sg6~I=o zo`LyIeB8^;Mg)o(G}F+bjZjbkkO4FdGjQA@2%DlDp5K?{VYxiEtb5%q@_mBM6@)w^ zle|V14Z38py3Ly%vF=K(f#QrbFDjE9!4wO;LQ6WQ8lusV8(ppI8D3}wQ7epllev!z zkW(OE2C@c}jd9(4u}`VKV1%XS#B>rnK>ISC(>bDAq?;war;7tq3G4c}ZBE^K;3jd<0!hsa%DlRDoRt=JJo8x+4Q^J(DNn-2T773APk_|7~8|e0ilfO@dd)C9Mo z3_9hZYmNO*JPu~Fdq@B%0hj|)Q+2ZMSTx^Wz$REsDBTgwV|UUo>$ql}2R z6V;tn2lMvm(3_xfLgj!Xu_A-30$EYmT3NEKiqorAIyr~LrtXe6qtQmN>*n!z%4j%f?5E3&@C9LRKBDjG5+X zvj5)yfw#}?Dsb|TJ8z}ry`8O7=Z}AK<@V+yKOV`PJeye0A01x&ZvC0Ru0M3+zn^~F zxUl!=(RK9F(?R^g<*WZJyz$uC&%b=-?y>JbJmEO6{<;nCI#(`TyS4buS8rZ?=g8}? zef{S)b|Z87bPIb{ef)Q`Ty@Z9a{JofFaAv4x%tGU?W?DbbMLp-j(zdz!@mqS?tZ+v UANJy#I)gFG zWVT~KA;yv*zhDN3XE)M-9C1$<$B>F!$q4~QX$c7iLLwq542Byx1nz9;Pj@q&d{V&Y#vacaVWo|pf2Pk~7;r^%GyiU@kdZu^qGo)=5qop`pWZQ0Jw+w7h3O!d?= z-oh1EntJxutrY3YjXCqx#hpX>LBh&v$%DK7j6D{IO7HmI%)2HaPv*A0NyN-mk6xr4 zH$Ba=?|)R_8s(RcMyF@LnkFgti}zEloy|%2#rlTL%nRf$A9n;ggTd3)&t;ucLK6U) C{$h^+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_1_2.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9f544a0c61fd5447f008b5a3ce7c17bef00ac578 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6M!3-p2R(v-HQn~>?A+A9B|7_#W<-7matG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI?hrZ@gGOzS&&A?A~&3pa#a0AirP+hi5m^fSf2# z7srr_TfG+@xeh4sxCELm-njPd-+t|>>z=UBdYU}LVUkc^z}@^)rxf!}=z4$3zPx$1 zg59pf(;Pe26{TOZuZud;TE-SLlXthh-tWK}{eL!<`Q4mwy?(;a)51sRFipGsCW=KA{V&+h`&F_r}R1v5B2yO9Ru=z6+1hE&{2PDscw zPhe;?QeGsBp<>Q;p^*5X;;{_^ZED7=pW^j0RBMrzY^K@|xskqfU z(VOpx0f%!khoZ^e|CQQdM|(`PPOI0e*tl8BzpYu+=x5V;RB=((L8-ZEJ{x@E3U=#z zh@72zu!!sCJFaY&OQ+P2Sh!hMq)(pvBfrTc*sIA$!04^crmSB|k@i9bU+126I`8d& k_d(H@nOk^w{@%oYSb}-sV*fT1pbHp0UHx3vIVCg!0072UaR2}S literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_1.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6445fc8224ff0849e7923ec907099ffe2e742bb5 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^20$##!3-oHKB?0MQi=gSA+A9BvcL9zZ~fKI#@p5N zr`sDZmXB{X*Y6kiujaN-XE4^=IrS4z5o1Y^UoeBivm0qZPNk=dV@SoVsh1sv8Web( zFNzs1yZ8S9pD25TWW>e~XV+__J&Vi9o;bV3r>L`^`Aq1Y^R-1Ci}-?;oH^TnVy5-0 zDHqQue9CC-@)eemyehE1@t>XU=8~3x1jF1N&W3L}mL2}*dd5%b%Z2y(vUe9u_xWuV h@3GHt;^Do&*<p->^yW@zmF)WnSl=+A%WBk-SixAi!Xh{Ms%mo8?SjufVeY zi|s3|*(UZTDF(9KTF4RUA(3c&!b{}jS3YSymx)unT@v?jT#P8_()2&!GDj$3-h_2G zB!6=nB&qscT+#mW9M_Q_i_iEj-(u3&(Do_OYRf*k^%iPB5?XC9FI}teAn`fP&(2t| ap)P+eXY_rRsC=M%89ZJ6T-G@yGywqbi)YRN literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_3.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_4.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..df42fc567e10453f675c589ac8536b2fe57c01be GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!3-qVNAu1FQtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoZ7{rxA~?Sy}>7Srk(i2#L!SvcZxxbN!;N6orVj}h7HRy^MKlxJlVv^ xZNQ-Lok3>X=0Y=u#^p$jnNqjZR{k+n=BDGSxoR zKPA^-2Y0Q!nPU4CrIHi=Oj);{x&E}}^gVUe9x#V?7LX%JVGW_&Dfc`*uT OH-o3EpUXO@geCx;98xp@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_2.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1b3c0d66be13975ea8c330bdfbd50be61a58ef GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gx!3-o%Cj6}gQn~>?A+A9B|7_#`_3HoQ<)4Qu z-?r|*?61AwTYtNH{&aie#q#mZ=KB5O{?**}=?uo(Cp{|zYG5o0@(X5gcy=QV$SL=9 zaSW-rmD^`2bU=ZJxwb&UXPs^eE|0(_Lh%=99k6;PXersmi;OJ=Qn9xNEPq zJCS2iTV~?N>B~&p&*a)~Uo?w7Ty(*PcOgQ1vjg-zFRDxm(@Br?+3I4hnWJ#@^Ym)1 r_DGZI)>{6-0n4n;6|c)G*c literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_3.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9d18be6cdec0fbbae9bae0f207ac231a037f7881 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJy#0(@aWG%Y@q<8{+LR^9L|9bW3;mVi&wNq9v zQv~uEOM?7@862M7NCR?2JY5_^DsCkwXe1<*CUE2?B&0GhaIrH^h~D-1DNvrl)78&q Iol`;+0MG#)<^TWy literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_4.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..41255ec283be7b91f98d76d441cb9f1a685770c5 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^oIotd!3-oVPL*8&Qn~>?A+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzmC|7vdgbOz(i$6ZW-8W>B0{DK)Ap4~_Ta{N49 z978G?Sr0Pu9WvlyF?cSf*rN9D|Fw%|H+D33@A;;%W~P?j_M0I`PcQ4}2FqGD zRc&@JhUse>+-I-_uFuNwTP?rWOzy#DhI?A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aieW^?_1asO&=`*a3ldj{$En@(^5H87S0`2{mLJiCzwYWrQ)S$rOqRQ&Lt(uiNREW?+(SWN&soKK`KeH@+-+O#7?{oOR z_x9edw7vPzCID>jT&P^i=aYHi>xI0(Pdpp|6kzZ9%ja{uw6wImyj&<0R#sM4S6A28 z)-ViPUtizY*eI3DWtL?`QBYOcFf`k?n$2dn+aC^tC^}A(Y(8fh5O`4JEln%dYGl2^ zwAy^PrwoSrD743Mdph$(8msbKmRxeGq-#)pn>}obVYfOSTFFr>O}s@GNd)LL)CF)= zY+zww8=nk{^D%)^2F-PJ;vy840Tcio!z>(k2*RZ(kLM2+<;XNAj&rx)M`1{?#j;Rh z6q45|$)c+cYq-4K6Pv!=8L8e_4-%8)2u3RNDlHqFW{FlyY4!DfUB(e)wrCvZN+pRbt2ATqye%s&Jzv%swmV0IVG_mjsQ|i+*(&bnq+6qV4Z&}z zqn>%>JCm@NPNMnzE)oE$05*UN-~${1%rHQ?6cIISWJ8%bR_L@^MmmWc3iVhN2q>2Gah|vu~fec4qtHkEcHU=wSEk=?`E2ZSU5(OuX=f_T5{DZ+!DY`uf40f3B#^i|*rp z`+sbkCy(@)tLMyDuhGAJZ2xk literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_left_to_diag_bank_4_4.png b/resources/g2/track/raptor/large_turn_left_to_diag_bank_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b37d1fd95321335537d6b14ea117ccf4547153 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!VDy{RzH{nq!a^uLR^9L|9JW5;mVi&wfB4L zuXZ+`Zg0F;KE7Yvzna@Vox#}j^SX4PBF2&+zhDN3XE)M-91l+y$B>F!$pIljKwxH8 zR_L3|z`TJ$L_>P_5aex1W>_v>ym*g}gvyx)hM3i9 d=Q8w}8G@q3*X703P6wLF;OXk;vd$@?2>_t;IY|Hj literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_1_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..804f229b4885de2b42bcf181b582312f185534fd GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^W!3-ob<6O4`DY*cj5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&tEJb-!Ja(fAM%dPz7U2kY6x^!?PP{Ku(^gi(^Q|t=@~?ds}Lh3BX3K|#SuCdK|oS4ycf z&AYzg)3(2NE^#vy^lew|yduBwWACze(pQ!DPeC|EwzfBP>o iF!$q5MtW@!lt0YV{0X#r)42?-1g+`kyZf?OAF Q2C8E4boFyt=akR{0QNi`ZU6uP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_1_4.png b/resources/g2/track/raptor/large_turn_right_to_diag_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1500a74a7c5c7d444c3e3fc4f13be42aba366a47 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-s!3-o**zZ{YDa8Pv5LY1mKVJTMxbkIx?fu^R ztDTLvtLHD4kM9@vujaN-XE3gQYoiHN#8?vK7tG-B>_!@pt$JnWsR+^I}%+) h;uxBi$1yN8$e%yLuX%p^`8z=644$rjF6*2UngHhoHU9tr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_2_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f846f934b627b4dd7e73455718c6a7e1d4d856d GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^N_!@p)8gsk7*cVo_mZ{H0R;}0 zfB=;TfBEM)vQJiW$jQ0)<`FxCz(&VyQtPHFzPg>z-^=4JA{hE{$pYU9o~>JQ7e36W znU(pXM`Vky*%bChqt#-L8*YDEaP^tvMb}r^i$1tM5oL)C(3flZnI4(=MN;FRTUeN+ srJBtRt;L7VBu|PzTNKE(ZR1FVdQ&MBb@0OSl>YXATM literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_2_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..04dd9bd5c614aa2df6dbd6ab09d40566e4cc3bd5 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6H!3-qT7EN;pQtAOdA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKz@QpKq++FYaH>ZJ*9yT1YwUhhuS9ql;jLN#F-H#}9LlczH?Y%C}r4c@ty{>avAA>JKV? ZW8Ck>ZRaQi=gSA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKx$TU(Icw&R}f%d0jeC5o1Y^UoeBivm0qZj-98AV@Sm<)`J@b9UMeh z5B$x~Q(;=pvY4UqRLPo_?v@*_F1o9BDT|kfxtU!t$>z-GTKVpDv%}`gbF{1sYwYFu WIU+9Z{P!4W5`(9!pUXO@geCy2NjMk) literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_3_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac6adc4b7071f77dc9ef2619f9143ff24cf2071 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^`amqg!3-p|T&8>gQi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%n-yR<%7qMT{jue!&b5&u*jvIZd7}jv*DddM`WjH7M}7 z1bQ7^dGG%LHf}Dqf?ahc@RlYY-`BL-PF%I@&$kCFYC1evK8P#LHIvvG#c0eL z`nF2)^Ff0ZhU=eSZL2Kbyfftd=GolW`YJu79-fq~j^3cz7kK1avc)lh=b3BvANyo` rs`J{qkG2&b57u(T*Ra*?I4Uk*%`)rcT3t4vYZyFT{an^LB{Ts5BCK8J literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_3_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..84d12fd452f24f3ba6aa0c63d9eec423f94345c2 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^8Xz_YGmw1ac;^<7k_+$&aRt)<@+D_{24-tVoy z+Sz!!dj4Yh_0Zaq>u}&j9C>`u-%3$(p zYC7Sx@K{$ANd8_V@WP?c nx!T>Gy-Q0#!{2+o!v}_M^9AZ3{`Gzhw1C0W)z4*}Q$iB}hdV?> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_3_4.png b/resources/g2/track/raptor/large_turn_right_to_diag_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..06ce92b925df139933ad53feb135d29b1e3fb6e9 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%!VDy3CI*QEDa8Pv5LY1mKVJTMxbkIx?fu^R ztDTLvtLHD4kM9@vujaN-XE3gQYoiHN#8?vK7tG-B>_!@pefl)>$y1IC h7A;P`%Cw=7q2ssA_8T7r>wtzbc)I$ztaD0e0swkXK=%Lu literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_4_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..224ece37fa5ab3e73145b1e361623996bc972826 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^azHG~!3-qRG}i?KDU|@95LY1mK6>^4c=_ky%D1ii zFZ*ln_tszSY`j=LzF*wGn%h2|!FcwT#h-xc7)yfuf*Bm1-ADs+>OEZ?Ln>~y23d<8 zR^Zv}%iwwE|2|2N+dO8eQ|HwkJ9FmDF4;JjEkbVuP5BBR8yd|}aKFODVjA76AMn}G zLz>}HMm-N76H`5tF*ifumt9QpOgGuMFPJ-?ae8o5p?kxJvW%$*+AnB3-ES#jE|~u1 q&j}`#Q+t0Yv8aAO&BtQCn=x<$%eJQrT#f^s!r--h?qAJqpUz;+cltmkP&H#okY6x^!?PP{Ku)};i(^Q| zt+^LB@--N6uw0N^`c3Q0|N848ce$E38SI&$9Plh~lF>C63l>ESYXPB^9WOU@O{h7# z=2Gouy^lO=6{pPX`n)H+`HkV@%?9Gtto1J2Wx_qv_IOrgUW)#7VR`IycBU0}&-!(N PRxxGsBp<>Q;p_4~#B(;1AP@`-f-QIYye0;OHe!j7Ozqo%jw|zQ;aiQZoS)fwJk|4ie28U-i(tsR)PZ!6Kid&^; z9r+F@aIiRtZ3y}D|9x&(=7AYSi9Fo`%nZR-=07#{+x|%V&NXG7gMoIlo^NX7mHZ?$ uE4rij!K~+Q`nT0AKUlAy_)=Xd{w-sB2cxyM@Dq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..998519d39d5d7743cba02381737fa650ede4bfe5 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Br!3-pGS5NH%QU(D&A+A9B|91QTvyK1PtG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI?hrZ@gGOzF*wGn%jQSs;VtOJ&Ywme!&b5&u*jv zIZd7}jv*C{tp_>znhkhZ4%{{6Q(O7)|NgZCA-OxOn%N%;&1=nUu3jg<(vAFb1w%!ZT#V)lowjY_;y<|o2&lwhmlSEwC)_BcnDO8=bNJs0O)1A&q+a<-h z_UmZr@iLcxy51z6%ohIX$lfz0L9FME)Q|Sq-!jnq@tF6!HnUrEN&IV|YZyFT{an^L HB{Ts5us~$x literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..631114d6b293a19b74a63f4ed82f7b255d6a91f4 GIT binary patch literal 985 zcmX9-Ux?du9RK$IMTo1dRw zSXjU?Y;kdMX=$lYEEZXo5k)~!Bwa6CmgzW7v)S%;!#F-j)5&zoG9d6EOUvbQzEUBp zHO8&;&6eEhYQ4znC-vdT7imo8mrbc)tE8t>ZHwJ=#HgwEyJouYj#K|=5|;?jXs8O{ zDOktEqB=h4Fw+$IQ*qI{m;ljVKG7})l`b{j>N+N|#JR!ejOsnJvXz80ni$q`Jc$Sbs@b7fOBUD<7G?a&MpJ5C$PxHCM8 zZ~^iP6bvA1KzSI~E|j`dITFl7tq(1K;>BoBrt>;SR7-SSgr5j$UrjG~!y#N3i;Rv0PRv6}?t7S;pa*roaXw8%fN8Opnzf(nw@esKugCK#7zc zKX-ol--kbNb!$_Brw@OBJtOYM+B4fveDdkX<BK)ausm3->#R!p|T4a5s17Huvl8OA9}}_mO6tzH#5a^~TQM e&#qiIc1UeEDy=u(eet!-5^St*uI;YAeC>a|tEs^N literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_3.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..26eda07fac0b2229d5752139a683fae376f35bc1 GIT binary patch literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y$P6UUy?J{QNU;U@gt%67+ov-azYJ2G0Tki# gba4!+xRqQ0WIHi9w(Rdq02Hb+NG!*I&SrAPtmbED7=pW^j0RBMr!j^>lFzskpUvvLW9A1)d}8rknive_U4U z;IxW{o12Q6CnaUpeDk=uE!izcJ;7>KlJnU}*N{`rq6>GmI)=1{crFk=Q>`T!dfl4Y uQ$Nsu!S!>|N4E4=aeg^-;X~>tb-SC7ndCm6ih2jMh{4m<&t;ucLK6V+S4d<4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_2_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fe033ccee1f610354004a1372f33d657888a04d3 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gx!3-o%Cj6}gQtAOdA+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwozp9gq&xKak?0J&? z_wP#KRNwGF3%>_uu&lju;_`{wN14?t@BCnK={~WeKy-(fjA!nWNorH}Tk+=7srqa zM%IIjTug=nEF0dG=pJwU|9@puc$Dw~S7)_DbH19)oLm@V^g!oRYm`ZVe&C8)p~lT+ vESA?k@MH-qSUFt0@MqV9W9$|88O;9)7YpWx^qu?#G?>BD)z4*}Q$iB}Kiotr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_1.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7609f539753209194159e4583e2eaaf8ef556e65 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^20$##!3-oHKB?0M2?Y3rxB}__+wH$kKmC8U@#pg0 z|LfJ?N3Z@LFaJDT`L=ccWqiLW10NxK%yPo~q{&vM&wb&5O*U!bL2>elK&t3+O@yPgg&ebxsLQ04UaXRR910 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0c381851f0fc6f5fcceed5c4ce1586ebc7dcce0e GIT binary patch literal 1034 zcmXAoQHa}g9LIlmy}R74-iqs_V|j>BA!rx{gGS8V40{}3;c5?M}FqeaRZZ;J3?;ahw4iJJbY<6~bZf-6XkH={`!SkFX35t@|G}SPSa=BWsJFQmN^Ze0>P5{S(D1_7L zXf{ja@`*x`Emy=^U2ZhBj$7;xES|zrY*-aydWtX=vZ~SB2Hz~FI(5}+7lxiS_FG9D zWD0T|m=ab~v1T#St3^j091Rm_B%^&3p;jC~1duUIjYM=DH%ZcB*=p_r zvx(EuI2TKZ1S^wCl}hQfVzOF=H*BHQkgSgEco~Ah6UjI$QG&vxRbDNKg{oY2RL9j@ zUdbKS`r~GVgQx_t3=nxBO^m6=l65lO}!^9w$QdnMHL3mC8=VHttos%lUzgT zm9>Fw_|5Xzwb7szi83UWqL~cG=On49D3x5UUMx1NRo8L)-LCKZ2yhk1GDg=Td;^y{ zRHn}t25D=UYxrh&R3Gm5#wbihB1|lnB;pd4P*_$I#DW|w%h!vgcCGHU+)Z~ z1OYjKJU}R5Q3&Fm3ODkV!GNihpGxa=_;gyzW|e$ir4t5|D08&U(@i1K6{%q=j${Jq zB&yKJ;gBl?$Il!KKYa27@10(kVEMt_3xWA|ZFObywU4g;zH-QT{+ZQbDw;bk1bt0ySa9JV{b3RXxAoYcJ`+K iow{+b`|^%Yzxg19`{y?_;%vYcVC}^E>doWlKKLJa(Yw0< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_3.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_4.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..094efae0de28ea76ca7a4ff536529b5e6a79646e GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!3-qVNAu1FQtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwofd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6|~)`u*bm)!g>!494~h(hTco*8#OLmIV0)GdMiE zkp|>+d%8G=RNUHn`83}l10I))3;kpc_?-G*ue&HP^1OoSYvtF^TG>xt%;U_|)qNDH z5`5LBq~llj`YTfnb$FLAiL_cj+xAo5%fy#yFT9@5J<)FT|3+Hm?UZMyIl_a#75@m9 z_IuuRZRH7F@720GtC#B7)$1OXShsBcp4MwcALJNk=Fk3Nd+=T=_Zt&~4{UZKGTf@W T4=n2jI*Y;6)z4*}Q$iB}CSq$f literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_4_2.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6c06848ae3ed87821e529e6f0dfc708dc782d87f GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6M!3-p2R(v-HQYryHA+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwp1)W=zF*wGn%h2|!8j>>{d%A}#*!evUTYY6;PV7B*-tA!Qt7BG$2RU)5S5Q;#P7(f`L&25WL_B0+Jc; vJp|c4-um1+@3wsgYGm+q^>bP0l+XkKFk~&; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/large_turn_right_to_diag_bank_4_4.png b/resources/g2/track/raptor/large_turn_right_to_diag_bank_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..00128972d40d7e7ba6a89158f99d05363307e6c6 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eQ!3-o1KkL;1Qn~>?A+A9B|7_#`_3HoQ<)4Qu z-?r|*?61AwTYt5)@pkq6>GsBp<>ULs{j0g{(;1AVcI_7dYG5o0@(X5gcy=QV$jR_@ zaSW-r71|#t)S$rOQfSzFXV?EiX(QLa1?|s b>p#=oYs@E~tSmhXw3ETp)z4*}Q$iB}Evi(; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_1.png b/resources/g2/track/raptor/left_bank_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ecb364ad21217491e12e3e9835ca39eefe5d7f8 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bp!VDz0#(5Y6DfIxK5LY1mf41@G^4;&FSO1Tf ze;%%U+q!?hxBhnZ{KfL|{o?-V494~h(ha+OegKs+mIV0)GdMiEkp|=hd%8G=RNP8V zaA59Z;*oGV#5TjpjZ4Dmm{&$qL~GBK9+M3mxd$$E=()_%dSoIcIWc>&(JX;#gEp^4c=_ky%D1ii zFZ*k+b~c`FZ@gGOzF*uwox#|iLE10N`VdeZV@Z%-FoVOh8)-m}wWo_?NX4z>1P~BqJ1P41=eupUXO@geCxnlQnk$ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_3.png b/resources/g2/track/raptor/left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..14864032b42b9614e93f7710361cfe0beda2278c GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm8!VDy%<|y-m1Oj|QT!Hle?e_m?8~?9Ye;>X2 zf4uzjaOK<9{g?f<_j~JaSI=K8AHTS<{WMS=V@Z%-FoVOh8)-m}t*47)NX4z>1PA7` zFPM0In`S6AF-a&jf#?}ZQqD0gyv{8LS)E%J?h=e`N&FsGBFOe`?h7TJn0GIf7@A^) V_xvdrSO_$T!PC{xWt~$(69BFkJ4yfm literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_4.png b/resources/g2/track/raptor/left_bank_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7351ba6f95c87586e7c4029e6e63ab6e36031b2f GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm8!VDy%<|y-m1Oj|QT!Hla=+*z@<)4Qu-?r|* z?61AwTYtNH{&aieW^?_1asO&=`?qV}eE_OsED7=pW^j0RBMrzg_jGX#skoJ#a3bXZ z!$OIqH9))&gl8nJJsju57@Q-@yendY1@o>M3l*vqw$I{7a5<{S&fvX7`^qy%!AU?P O7(8A5T-G@yGywp`csGau literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_diag_1.png b/resources/g2/track/raptor/left_bank_diag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0092e9142ebaf4692a2dca6c8178f6aebebdc4ca GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM#!VDz6q{1wLlu&?Ai0l7&`PI(G+tu@@+Z!*I zkM9@v=UimR3zSvzba4!+xRq?6!XUxH6h2)*T%w@VkyXL2S%}erl~s?0f#K*`GeopU?^RwTO+B|dlP6fgQu&X%Q~loCIE4LH?sf$ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_diag_3.png b/resources/g2/track/raptor/left_bank_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e741e2b11abdce954050ce0345fb86b0a0889507 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM##0(^lMlGHRq&Ne7LR|mH%dd7ePG>M){pdg+ sP*Bj*#WAFUF?j(ehbuGB>I)1EkL>wBYU=$;2TC${y85}Sb4q9e0OhL~FaQ7m literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_diag_4.png b/resources/g2/track/raptor/left_bank_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..48fab6f064c192078a121b174e18a9047cba53d0 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^96+qb!VDz2+mHVPQqloFA+A9Bf4%zq=+)1|m2X@3 z@AuZEaktaVt3?K{O#DfdfRa3NBoz z^s>3ffKgEECC|c#s;oSWPoMJe@W`+#G&M3ZL@}%13%c_;8>pMX)78&qol`;+0P!U) Aa{vGU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_1_1.png b/resources/g2/track/raptor/left_bank_to_gentle_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..64f0022fc31e682b3475f5956bab974e839e4d2b GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E*!3-p0Z|}Vfq_hHjLR^9L|9bWJ(X0Q*%RdiS zzHQxq*-UTMi!PsM094Ib666=m;PC858jzFY>Eakt zack+tgM7^fJj?;@DtfV}|Nqz1dSlV<`Qz7;C=T`rFm>7t6=@i~Cn|+uJipmtL~I2vp5j666=m;PC858jzFX>Eakt zaVt5&fhmUdgw46BCv3jG9gEb}Y&kWZ%J~WJRc*ekR_^NQ( UlJ!%Rfc7zXy85}Sb4q9e0G3%%NB{r; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_2_1.png b/resources/g2/track/raptor/left_bank_to_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbfab82327afea5349bc183fba803e4c9e0fb23 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^NTRgJ@+#XFgRbKGm`KEiD zyhBA5UcTG<>+j<4dDC*)Ll|EF$~m@4FAAgaUj*T!Hjuf9>t+`HSV_`^EjM zx$PG(FK+^hGL{7S1v5B2yO9Run0vZ7hE&{|dwL@;g96Wy1N?@+*Y_}7d>Z`VTZ*S( z(Zp*99(a^R#$8{qg)hDTWnjsVu)iAZ%Wd>e)G~Uv6@2;xG=jm?)z4*}Q$iB}8?7|g literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_3.png b/resources/g2/track/raptor/left_bank_to_gentle_up_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3333295f8ba8ee4135858a60d19348974742c931 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm2!3-olO?3ri^^A zpNA{ow(h^|uf5+}f3>smcJ=(}_Qs3ls`FqQ=Q1v5B2yO9Ruw0pWZ zhE&{Yy%5QFSb>Kn;PF%ozxVZbI5uq+IMuPgQYw{!pM z)VLojk#^Zq?$|PY(VZrp&?_N_PMf_tzai5mH#~gfJ(dGYUPpdf6~9D7xK1gld-tpJ zx)0u|xnH@f9Aj#CVV1UFpjpl9|4X-g-MOl2_r;#08`@<*{$&l$`njYC=p+VDS3j3^ HP6tePQ2L@5Ttsi3PX|gUMraAKx$TU(IcQ{>b$6KoyK7L4Lsu4$p3+0XaUNE{-7;x0arD9pV4vsERpP?w}0^b j=k$4*@NtpO>2-Yb6PT=0vTU~j&1LX(^>bP0l+XkK5aL3^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_diag_1_2.png b/resources/g2/track/raptor/left_bank_to_gentle_up_diag_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6e39c71013784837a10506cd75bb53e71a36480c GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^_CUEh$cd4OGoo666=m;PC858jzFh>Eakt zaVz)2LB7KV9LxdfYG-*){{R0@By3sOTz~%=+zbaYER3T*-kr4i__bxvEUqq}`be|Z zH1E@-_#?ad6sBzYA9dGD>)~}f7lt~~nOw>z_nODI6rR5}(ea+9X8nUeuIVE3*Q1!* U*A;#_3AB#E)78&qol`;+0EyC6lmGw# literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_diag_3.png b/resources/g2/track/raptor/left_bank_to_gentle_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..19e53238f0291cb92e46e8fa7a7b7afb53ec143b GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^jzG-E!3-qb)f>+NDU|@95LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&tEJb-!JZ8&268~V4Re`emzhfV@Z%-FoVOh8)-n!B2O2`kcwMNFGY(r zEAY4mexB5FrhZ?nV(5je)n98q?7S{IM@?nsJXVGVe~D&Om3jXKTLcml@~qR;4n;3@ ztP$Om^=)B-9EZf@iho&C7wyt=ntM>f$j#-5Ox(5Jtf;Q2Wrk`qBQ`kmE!zIbH}I~J zIKz>T&9`PSKi@SW`_fJ4=T}bttunpr%B906_^eHk??M0eZ%bxv&Dg7CbpPjXn^k6E bcmJ}^yT;Ka+t#!L=voF(S3j3^P6GsBp<>Q;p_4~#BtGVsd8H_g{cQFBKU@Qsp3ubV5b|VeQ$@6q^ z45_#^_sl`Q!v-A80qrdPhPVFzzq3lmW$miiXWahVSVCM}7{3Vrtxu7&u+Pq#KcRI; zL+9EJQp|BzV-~Eke90Tv!CJ4dFXLf_xE<$zR4z8Ki87Cq9?l9w_ gyRtK9h%-K5;1glvm~1ouHPB`TPgg&ebxsLQ004+mlK=n! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_1.png b/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_1.png new file mode 100644 index 0000000000000000000000000000000000000000..87029e909870569f9fe0cf3b42c818de94eafbe4 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^sz5Bq!3-ql{8f(!QU(D&A+A9B|91QTvyDHO@BUw} z{yuv3|9JW5;mWtI`!D-z@AuZ$U&zhDN3XE)M- zoNiAS$B>F!ORpT{JEFkB5}@s~)T{je|9taPvTBj%^&hh|uMKsVE)3~)N)s{q)34SY zu+VWK-;@`296tq2E_hX!uf1r&;iBsB%FFeV?DkGU$48k0fu6f%nAJ3PzJ2L3AgTe~DWM4f1w3XY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_2.png b/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..07a73ae2c0c9b3591c7d4e8f52fd37da2eb6dab9 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1#!3-ozWab?QQd$8%A+A9BbNTN7_3H1VS6}wm z-tVoy+Sz!!dj52Kba4!+ zxYc{no3BBEhvh<3?nb_Q|935Oo49~!bKT4@&Ms%Xgc)a)&Q56P(K_3}eaed2{SsHm z^k44Z=XAALh{oDaKNaS=!XoYC3+`)|Hd;-WxP3VyOS3_BUxHogrdw?rj=VQ~KjXK6 k)%?nw_SkZ!b9RfE51X<_$K9HG7-&6%r>mdKI;Vst04$GMYybcN literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_3.png b/resources/g2/track/raptor/left_bank_to_gentle_up_left_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cf058fa952cdc06342cbe74de732ac4690f5cf GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^szA)o!3-or%D*K7DT4r?5LY1mf4lwv*~b6t)&IxK zKMz;FZQXy_Uwgl|{%U9A?dti{?Tr`9$2Xhn_lx_dGZ-J7JIxxXhp{BcFPOpM*^M+H zr_s~JF{FaA^&lr-vjGpwfv>mx4p{#Be?QFE)luLSk6h|e<>ef55>J`ycbsA~-xOFj zqfk{-SVD&rY_id_cE!Tp)0^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf4aSKv$=l1xPLXby?D0Wd!SOrk|4ie28U-i(tw;YPZ!6Kid$=^ z81fxZ;5j1nz^U=y|GlzWFWBTx<;*R1Nk~(>`O|}8GJ}}@)WBG*|EGOMmiCprD0#wvs17AEs6Eny{7tY)R9Ed_?Qy0=>azl9lD=f|JPORar3T! j{w`NNKD&-;k!pr%Y^*N1wVjzj7ch9b`njxgN@xNA4tG{- literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_1_1.png b/resources/g2/track/raptor/medium_helix_left_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dde7f2bb9451c38a4c3f65859e873c18d808fd08 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)M!3-oVE|j_5|hY8X6S{an^LB{Ts5$%!BV literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_1_2.png b/resources/g2/track/raptor/medium_helix_left_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fd1506a297de653f1a2f2a08992643b8c58a10 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W2!3-q5W43JqQd$8%A+A9B|91QD(@+1OZTz`> z_y2nJ_tC5W$ICwtSH5lCf7xGqzqkHk`S@yXd*(w-5kS?9B|(0{3=Yq3qyae@o-U3d z6}L(+Itm?D;BgKNKIz5r<=^$UDsR^b-8R2(u;Y}RN9aTo$&>92!L1Ro@kLh+XRL6% zc&W8LX2 zf4uzjaOK<9{g?f<_j~KFb~fIwoV9tII5-8wB06tn*rn1So=pGfF?6|y85}Sb4q9e092ey A=l}o! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_1_4.png b/resources/g2/track/raptor/medium_helix_left_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..23e20963fe08f0f49ed0b94ff6ecb27812be24e5 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!3-oPYs<_AQn~>?A+A9B|7_#W<-7matG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI?hrZ@gGOzS&&A?A~&3pa#a0AirP+hi5m^fSedl z7srr_TcQ1dd$QB*S+;cjZKY#DsKg_-+84FW@ P_Aq$5`njxgN@xNAgcweZ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_1_5.png b/resources/g2/track/raptor/medium_helix_left_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7632622d8fdb27c23c91ea515bf43e3161ab975b GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bC!3-pGKAA@WDct~{5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6|~)`u*bm)!g=lIrsR18W>B0{DK)Ap4~_Ta^gH) z978H@h4wlMH5hO(H|KVWe*J&GR3J)w`P`Fg3=F5P3c82!E(?m(E4~+c@{;iaZ!;CY zlgu0awQ>`C#r3Z0$f%fxpWlAxw$6#5f1A(dU&@ni%rWFz;5D0P$^3Nw)7P2T9Bvif Q544HF)78&qol`;+0ERG3`Tzg` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_1_6.png b/resources/g2/track/raptor/medium_helix_left_up_1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f13173e54863f13598408c142a215f3f692ff566 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^%0R5h!3-o*&Ob^3QYryHA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwo) z6nI#!?{e+>|9?F@@4Z{T0p}*)WMr^-<-AQw@n&{QNuwwG?-rxb*&$(158Yesb-6yk zbAsc|(+k$kSTG~)O8SJkTq387`!mF6y%CVR?Dkjp+2Xj{PM%#>ncW+!%qPTk%~C3= e`l#rzyOVoj1k2=R8@~jg{S2P2elF{r5}E*hcvp-7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_2_1.png b/resources/g2/track/raptor/medium_helix_left_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a960287105c739bd571e319a5cf2f5858bb2a086 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^CO|C6!3-pq9MraAKx$TU(Icw&S3oEPwGmbBF2&+zhDN3XE)M-oJLO<$B>F!Q!hL6xhQfl z2e5Aa`~M&NJPRH-bG{Ar3wwjS1TO||a$e=(y;%SBn%4__&*@Gpdeh$hZT6c2sV06t z@wON~=^VxM3)8l7E|+24?rdhdDz~S4|Gw}oTeO0*_mKQy;{an^LB{Ts59}gmC literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_2_3.png b/resources/g2/track/raptor/medium_helix_left_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f80bd321989a8734a8a68b2382f2fed6f6787925 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM!!3-pSXjD4`DfIxK5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU);Z%+diGa_(|W=JwT<5B|(0{3=Yq3qyagto-U3d6^u&{ za`H7B@US>kZ`_=7;{W|ta%WwVI)N`+X@{Lx*W0&~dHfoz&)pCh*8Z=A-I*7s3)z4*}Q$iB}ocvl` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_2_4.png b/resources/g2/track/raptor/medium_helix_left_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cceb132d5c931f00fc311011e8883f3b71960e41 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ!#0+8?yPgG7JOMr-u0VRRe0;ySe>#Kll>1tW zKt5whkY6x^!?PP{Kn|a$i(^Q|t>lE;2MQV(8CX&n%XNc!%78Kqp00i_>zopr08fw@ ARsaA1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_2_5.png b/resources/g2/track/raptor/medium_helix_left_up_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a95249a18d0632db25a1d3a25a8042ccd22ec26d GIT binary patch literal 296 zcmV+@0oVSCP)a%TdV(HALmyi+dGfbPb;fKGq)#iqaR<77f*W&KW6|lOOScr00001 zbW%=J06^y0W&i*Hrb$FWRCwBz(%TM$FbIHQR?5LaxA%YB1*b2|~0_M)b~lMkqmc zK_?*{kGIHdT*O8uA%}>^#(J+!xHF6CoKU_J?-Sg_SO%C`Zh*|!hlq&zEn)une(eHE us^%l}-Bp9p0doH%%!uc~zMdBW0Q>;Cxd^Sb?ICag0000RZl?HA}SZw4x5ED7=pW^j0RBMr!D@pN$vskqg8 z`Jhm<0S8M!g7C_<|NrmxyRcCFM!{Y4h80R{)LNb|J5?O4nlg*+MMreV0-*yz2fAw_ znCAR#2u=N$f8oi_#;Knlv*e%sC0XoL{(8;>=?nXGKJY#{uLj_Bw6`7M=#? zei_{z=U!Z3wwx#VWbrrIi0dpL9{z8gpz4wrD9^N5faygO&^-*Eu6{1-oD!M?A+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzmC|7vdgbOz(i$6ZW-8W>B0{DK)Ap4~_Ta$-DP z978H@`Sv^V9Z=w4VGO(&^zZ+jW!Wy4hBtWgTe~DWM4fB|A{k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_3_3.png b/resources/g2/track/raptor/medium_helix_left_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..45ef84faa8f01d1a842307b447f4296179c74e39 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+q!3-qVxw^ChDXjpX5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDKi%GVv3z{9xqiR6e>Jx~LrG8+P&H#okY6x^!?PP{Ku)5ki(^Q| zt<(vDd$=y2{ PXc>d2tDnm{r-UW|uJ%e< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_3_4.png b/resources/g2/track/raptor/medium_helix_left_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..349e1bfe095c55f50225731d3ca179ca6cc4547d GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^{6NgZ!3-q3=7?VdQgQ)4A+A9Bf4uxoSM{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_3_5.png b/resources/g2/track/raptor/medium_helix_left_up_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_3_6.png b/resources/g2/track/raptor/medium_helix_left_up_3_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5f29c6b5d3d7868b457133bc313b0db014f4d1d5 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6G!3-o%eH76GQtAOdA+A9Bee~-8@$$E=`!D-z z@AuYU?QA^V-gvQme80GVHMe~_gRwn>wAI|8ML?yDB|(0{3=Yq3qyagho-U3d6}MU^ zIC33O5MW-s&g|m9|9fpkGKn|NXgIYlS^n-hD8bGjRz|bj^tg50@mW`ph}G;ex(+I;X;l22DPv)D_sIUPIot7*S*GOuUS`sj@hKL^ObmCFaaDP3AxT3%kxWHKu&E32!k zYiny5hOMu!Z)|Mfg+hU48Br8eRW=OGvdmho=DO`}H;AHPlFa6FmH~kWMb2tkzFa0N zRi@tH-Imhn>b=k!#EtR96KSl-XH6Nmi=<;vZHqmsiJ@B@bj_q+pC;a77D)u?G*kp| zRIFoSVIw!{2=NKyKw(#W=-w%aHS2{vC4 za7H0{osvwtXtRdHTP?BX%gvtZ4fG%>ksQHD1zx3PgVRjWtSj}l-VV$lwxgsOPdnp9 zm=hqc0$u{L3Y3F!ZCvV7S}2%tu`#y1nG>NSh0YrsQIY6Ik?$B{&r;)>F>&Q zBKFZF%H=tVF0x!n5G$(MFpO5E(rq-tb~_G&@o+es%@7bKP%g%Ha$=8A2XtvH)+d@b zt@LKjaNeCBj}|CP=W-m5OJqT%8H497S*h#kvTC={?033J6wk*3=rU%hIa?>4GTo{Q zeqHUgN`2oRg{|o*n$Mpi0iXzA0XP6YKp$X&0ZO5WsA?hKL&->?z+|B*Kp;V)08#;& zIBKxSQ&3PwgE~q)I0>EuS%jj3l?~jk&`n3`ct)>Ri(`K}jZvyalz^>f1qW9=QV%FI z;hmZ0&nvx!J2(!;Xf&hpz>%25B9CS1#X25T@7HBBv-jcV0onHtBq0_%%xC^JKao)!y8Cy`B|7K;J_#d3Q5 z+_~((CqMAf)qNE%KKb){NxoN(jI%#ZqARz=_pj!*XIXx~87R$I666=m;PC858jz#q>EaktaVuFM2nfmweUlReSQr)A t*f_cy84o2nFdy?0*tK}io;i(-3>`aIW=T9*s{+);;OXk;vd$@?2>=ubDs2D& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_left_up_4_4.png b/resources/g2/track/raptor/medium_helix_left_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..202cc356a9a9bfd4434f469d5c89417b1815ab4f GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhH!3-otV&y`Clx~1eh%1o(Kil|!z54%n`RC!v zm;JT(d+V=uHr}qDKi%GVv3z{9xqiR6e>Jy#I)ky&6J2Yd2F8*gzhDN3XE)M-oH|bz z$B>F!Q!fSz9ai9Q4Sdo#>Bz4CPt(?fP3~O#wXT@Wty8V_L1<`Jg}L%R9;0KuQ^Of| zu>Uz8x^C5l_dAMNt)I)-GuIVq7IfTx_ABm|P@q!L^mp2yx7=@<`F3Z;`g?bBFA98g y7c<-!G^_S$`}5p`I?7R;B9B+WWorS34VTSI=K8AKz@Q-!JZ8&27Kugn2Je4`WG?UoeBivm0qZ zPL8LGV@SoV+6mEo4GKIgzZWQNI`ua{JD^iw0K%olZ1-^yFl86lr7IC(N-##GL8`x{iI j{jGl{;8;J!zLLp>foaXTmtHDBdl@`k{an^LB{Ts5jMraAKz@Q-!JZ8&28@ynY$RMhp{BcFPOpM*^M+H zr^VC7F{FaA^&mH2lYs#1f$xdiS+jTk&*fFr%4(IIvvNnsp>2iB+U9@okN70bcIj5c zJ=b%*@lMvKXP>B!|F|+jf12{NzWkNS$1iF`~AFpKOgvf zzqc-KmDf(4J_P`4o98#SXZ_WaIkPaU56^u3Iluy3ys&d_M(5_{=I7@Z78Vv47nhcn zmY0_?49jFPD=RC7QmI7K6wh;#B&e#a>zZX*?RK}{_kv&)MM;{{6mTqvLROaZwHjVG zs78}*cf?*_8Tk4zY)+;QPhu4|s|f|Og4-(5)#*Kp_uG|WUyJq|apW8(LAeMD33U!^ z3F~Q?-^`7B`E*!BF@;hE9oYy4B>)jX!7weCGmAx=ARLz66UF^%b!?gk-7fO|BAqXB z1xmzOg(z!e#iUi6)jPc93ax?U3>7b`;!Ke$msp7uR7Tc#tsyqLO4rl8&9!6ol!714Y1eDQ7CUT_ZaN z=QgB4r@HT&W4{xRgET!r96$v?2e1KLfPH`|251J6M~04E2SsC%0F8zg2VNN>5s(B( zE1)Kg91(dnG;E;Afs^1F5O}DFSWPXMb+TobdyYC7SYhbKafoJG#VXK7ma_|@gDW1P zMXa63ZdxB4wueXF1dS6S4-Af#shrH=HHkK=f^F8EmN{@+Vc^D5fYJ#g2*?8z0YbAZ z8Z)`aC|X8mI%PWT$IypEUY4a=O*IUSrYwePbF|CTzCevcGOm=6f+Lea9U6HY3WeG6 zGcRWUJ^6u8x3?r%|Lc$48M(f>@#fA8U)}y?^T``8Wj5YP%vbVT&X>P`@xdqS($1rU z>r11TpV-UXcsuy@^7eb(t5){X-*=yTYTUSU_uieOv)Ar_zk1Dn=EDbHU-~hA&3OLu zt@l@-eUPRXO4>J99)7mE`{&Q+udeN`A0OX-7h?PMe{R0@^yxhD-TmWlRz=_pj!*XIXx~87R$I666=m;PC858jz#q>EaktaVwdFyU@_c$Sf==K_G~U tkqrnWc#{klFs3GR#Ky(lJ9vPBVb2ZLWd{oc4+3>Dc)I$ztaD0e0syxBC}{uy literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_1_4.png b/resources/g2/track/raptor/medium_helix_right_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..44c316ef9383be104e00fb68e4ac128f339ee08c GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhH!3-otV&y`ClwyESh%1nO9GsBp<>Q;p_4~#BtGVsd8I1o0{(lWr#8?vK7tG-B>_!@plkMr^7*cU-?#0u54GKIi zfwwZXKm3=^sgUgKI25^YrZmU7&?$wC42xdoj zZbrZNLN=%K>S=0P2~WiMeg7*Qn-RQ>X^ro0pRO7Agz_SJ?#VaJeHoguTzJxI<_+H+ SpIic3%i!ti=d#Wzp$PyszfMX3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_1_5.png b/resources/g2/track/raptor/medium_helix_right_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..92399c5e86546df1231efebc059de14b4ed75c83 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^@<7bT!3-oH{4zHMQd$8%A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aieW^?_1asO&=`*a3l6QRI1plZgFAirP+hi5m^fSh?(SnLvlVLJdM;#*SaqZzZ0;hlo!t*lZ1oUVGdl5pLe-gX zrxT(?jAmAQdoJrbB`#QaYoEuV)ABBr3X+2T-QU8B4<>vHTYEHtG$1K PRxxBPUYYbac}Mv`9)j>(3MK{G)dzCH)=FbclTyOI{G4BC-BmY|q<^0=H-UQ}*?~#2$Zu VsieR=Q3z-`gQu&X%Q~loCIA_!Qa=Cy literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_2_2.png b/resources/g2/track/raptor/medium_helix_right_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e06f14dbfbea553c1ba288656a38ec8f4a334407 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!3-oPYs<_AQn~>?A+A9Bf4%zq=+*z@<)4Qu z-?r|*?61AwTYt5)@pkq6>GsBp<>Q;p_4~#BtGVq9bMEm2H87S0`2{mLJiCzwnCfU2E zIV!UgBer&|J@|C#d~Uz}wwoUEakt zaVvI$H{SsT4%Vsj{a1e9pXYo@W6Ir>HkZt|vv0ogd2n8-ld;%=JR;Q zDR6tUSKamU7n9oK%;k^d)NGw%^J)z{=k1H{T&8U~{;76nc6uJ`<^9{g6^XA+uV&=kuA%mx@pUXO@geCyfcvo%! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_2_4.png b/resources/g2/track/raptor/medium_helix_right_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..efbec625c48403dac6dc2ce13244fc3913e73d1b GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^{6NgZ!VDz+bADY1Qi=gSA+A9B|7_#W<-7matG|z4 z{Xbs*dARaz>;C=T`rFm>7t6=r*rag?sEDy7$S;_|;n|HeAjjI%#WAGfR&qiE1G`3S z9K*s`uLWDIUEEl-CUA%*h!$$jWJr?OwPSbl3pe5Ei&z!fHgt1eF_^BzCUTikZynd; UrnZpVKw}s@UHx3vIVCg!0OZp+$^ZZW literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_2_5.png b/resources/g2/track/raptor/medium_helix_right_up_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_2_6.png b/resources/g2/track/raptor/medium_helix_right_up_2_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0a34c022835c64f784dcf50b95e0ec9ba3bd9c GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6G!3-o%eH76GQpN#3A+A9B`}EWQXB&Sm-~GQ{ z{eAT6|MBwA!Jy#I)kx2gY?tNsx+WB#*!evUePZ!6Kid(r8JoyeN@GxigXttL8{GY9TNK-)GT{+s*E82@|a_gO!nlqKT#SFW4 zh4@I;`Lnpa>{eIZwfts?y7*#+M(d(j*WE^m>uzVS z_y2nJ_tC5W$ICwtSH5lCzu#MbyL$d&`S^Zu|7vdgbOvMFmF<>5J&Ywme!&b5&u*jv zIdeT-978H@O`R0Y*Q&t7dUfB*7yrtugBc(Dx;(8ppOSINgx5E-%`jPLMrWl4ld*vD zqYIlmoE_t)1u~2ODPcEZmYn#xnyKMXhT!SoyZQon$w(xaV(mp$m)a%C%KL2~# iK5^Ru`_HAxKltnWIa1#7_eBC7%HZkh=d#Wzp$P!qmdKI;Vst05|k5CIA2c literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_3_3.png b/resources/g2/track/raptor/medium_helix_right_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0e035b83bdbc7a175554efd4d87ec2c379b3ca GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^4nWM!!3-pSXjD4`Dct~{5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6~xR{?**}=?unEr+j^Y8W>B0{DK)Ap4~_Ta;AB@ zIEGZ*S~}q^-(dv~*P8+&Tlf5bthZq8wb~_-=jG4xerIXrG3Qh)@G&>p>hkQttp7Gg zElti&`D_~Mb%&LGW2b>a(&gF%MJ93`3MxvQzAt@qJ?hy<^BFU{Oc@XG74=R}4Oo_Q zZm*(?%U{jtx3;HGlv~ZdwuyhDj{TyoePX&552x7d|GVZ@+A?`=kNV%NS5|P(Uez~I ZeAR58)u*F>hyh*5;OXk;vd$@?2>@uVZ5sdp literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_3_4.png b/resources/g2/track/raptor/medium_helix_right_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6dca24622e4b49f3af7f262c8862bd70f55ec4de GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ!#0+8?yPgG7JOMr-u0VRRe0;ySe>#Kll>1tW zKt5whkY6x^!?PP{Kn|a$i(^Q|t>lVR2M#1KFtDs=6!Y-+2m#74c)I$ztaD0e0svPE B7^eUL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_3_5.png b/resources/g2/track/raptor/medium_helix_right_up_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b65e0ffee92399b801f4d46c4ff657f46f1203 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^CO|C4!3-pK9P)nxq!a^uLR^9L^Kj+M{@VM!^;bI^ zZ&%NsZg0F;KE7Yvzna@Vox%9SpVXB=MT{jue!&b5&u*jvIUSxZjv*Dd=3a3WI;_CM z>|me~^y7bXHN&k7lV$Fgr}VOWX$tOL;@-34l1G*&o7d!})1GJ_i;wzz^@fk&+p2>> z(f9nH?LNBWR_Xl4$*Fe)4m_3EcUielch$}J_X_9yT_suZxkOKdvEXdWRm;5`3|Hje x%=@htlp~n7pZSvQeMVvbL}!EV#yk@l?7B{|$MAeSat!Du22WQ%mvv4FO#oK_VNL)5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_4_1.png b/resources/g2/track/raptor/medium_helix_right_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..08d0a66147f3eed97e79db2d8c12dd5c3f69ccb6 GIT binary patch literal 872 zcmX9-F{rC%6h67RH|D?-|(ID)2j#h z`LoZT0l@S7Z|+`qjCC~__PhS#&$o8~eR%clo0pyJ^?FxVSN(qf`uh6j=4LP$U>G(W z4sUO7iOFQbajYbXnxk}8 zyC+f2qSi!DAwtCjKm{-{%*Jt#Btx2x1>sRuchl+7^WLr3D9=f5JP`?2r390fZASMv zD-@iS6S$QI8jAHSIE!hiou{PJKot9ovEz5dyy5zVBV-1KYP%h9R z#;*x^OB=apmwIq=;wCK6qsojeo}9}}pbHyI${elqtz+bz6Tiu$OPQc^fsc8b(K&u9 zN^?yMENeBNZ-XFTugf$&9S%*?ARuj^BaGYNQbuZfW_pqqXCtoXSrZ=GZT)n-pb>-P zJVD6RL}OS>5FABanB6jW8!UI5ZB>-*Nd!~D91ZtODx5JZS4 zph%#r*vullIkODqO>AYEUzSN-m#Fh1r@*-*F(lNOGE>^Fgs?G^cAj0L{Zo2E$A%sQ zPhm2P8zME+ICrXq-Yi~vS+XpPq^=6oo_Iw;DWD1v>atjLb{|3d?&^HzSJ6i}`@Lis z+H7XIuFbJN&qgAbNL;S42bHPy2{I|<(P+h?R79oH9Y6oY=>3Nuc>DT6gD?O7>xWK! wc7ONPo8d3kzyJBYt51J6|M_I_;!MKm*V{kd_kR1Xn}GY54|l(R{r!*s1FlYO%>V!Z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_4_2.png b/resources/g2/track/raptor/medium_helix_right_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d907d5123e4830a11650cc3b93611b45b60c457d GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W2!3-q5W43JqQd$8%A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#mZ=KB5O{?**}XD5F$2dZW)3GxeOaCmkj4akZ0ba4!+ zxHWg8qfmnZ2lK+Ep@x6|m(RUbr7ZJg*Je&0B_@;3&uCcTb$#VtuPu8QEn0g@{4Mjxg-k3;9(JKX3m80I{an^LB{Ts58)QQz literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_helix_right_up_4_5.png b/resources/g2/track/raptor/medium_helix_right_up_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e37cd5aca04b995fce925c20bb8869a5f28206 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bC!3-pGKAA@WDfIxK5LY1mzh3=+y!`WU<=fW% z`@Qv7I~#9T&!28@yjVWIU);Z%+diGaSitGxBcM{ok|4ie28U-i(tw#Uxg3mLpsI1IeFsmWNam){ zN$+zQznxR6;C)%Zz$X+mqp3CGo}|L*gIk#E^z>pfYolh-%u#4dNQPdiV4 zDKDyZ&b=O`06vi1BuWcJ~DFD0Br* zeptTf?*2!YTD@wxWRtE{CW$Aton#jAR#W|Crnuj8Q_A$1jm-bwGJWOuHCqO>lEKr} K&t;ucLK6U|^-Bi; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_1_2.png b/resources/g2/track/raptor/medium_turn_left_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f58952a9b18093137ee5dae588fdc325ca0de6ad GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^{2s~-UkWAJqKb6Mw<&;$Uo89lE6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_1_3.png b/resources/g2/track/raptor/medium_turn_left_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1e65f886acab4701c1f8ac62d0ce4a6d0d038fc3 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bK!3-pquY2+zNJ$6ygt!9f|MBwA!$$@hp literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_1_4.png b/resources/g2/track/raptor/medium_turn_left_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d523bfbf5bcb90c9f09568d9c83303d8d4484c GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!3-ot_ve`cDfIxK5LY1mKVJTMxbkIx?fu^R ztDTLf+Z!*Ik8d{D&o|cZ7x%B`wohj;E_8e+3slNj666=m;PC858j$1T>Eakt!RUIB zQRuJ&53}Q3!@`9>|5qCuy(|f5TPSXp`gP&SeN!V&WwEO5*50Ujo11&9)QnsEHiWEZ r;Mi(wu(dkLN^F|dhK2G9U)*hK&oGK5Ow$hln#gTe~DWM4fpLjip literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_1_5.png b/resources/g2/track/raptor/medium_turn_left_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..baddb6d412a920178f449d74305d0d9d02fde47c GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ey!3-oHx~}5|QYryHA+A9Bf4uzjaOKPX+WWor zS34UomXB{X*UvZB?-%#4=C)5~Fy57{a0sZ5u_VYZn8D%MjWi&q&C|s(q~g}viH1Ul z6?jhjNj4REv!;)^p+n?Ia7tfW!%P{0uvm|~%xf=Ro0ltM^?!nt z()W35m+-fkPB!`OzN!A)lr<`jxy(CN4_3FkT=sg=yE?-A+LWFb{DOaZ|30Xg>ELvt x@ki9PUpg+AB^K0wl2~y4jZ{PMM8E&C;)0wkOcmYc$v_t|c)I$ztaD0e0stJuTW|mX literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_2_1.png b/resources/g2/track/raptor/medium_turn_left_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b49dc325907a407a5ac524a39c08a79ed2a62308 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjg!3-py3a%3XQgQ)4A+A9Bf4uzjaOKPX+WWor zS34UomXGfj_pj!*PiHXx#o)OWsDiO1$S;_|;n|HeAg9~Y#WAGf*3?VZLI)H$SONkQ zPX5)O^Krc@xR-8E3z9+g@cga+LD41Uies)78&qol`;+0J+y&=l}o! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_2_2.png b/resources/g2/track/raptor/medium_turn_left_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..13f3480b632152adb1c3f6be28061222cee55abd GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!3-oXbjjxcDY*cj5LY1mKVJTMxbkIx?fu^R ztDTJ(%g6VN`&V<@r!yG;V({DwRKZvhgzM5 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_2_3.png b/resources/g2/track/raptor/medium_turn_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9a685033718537a2e97126c696c5bf20d7d7c8fd GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^4nWMs!3-pgOIADsQi=gSA+A9Bf4uzjaOKPX+WWor zS34VTSI=K8AKx$TU(Icw&R|^q)F{FZV?!iXhW&;6c zhy8Q?WxmPp;NoQp=@KZPAhdodi-JC{XS!NRRd8yfrvd=C5bH3lJ<^G;^yD}?y?bb(~saMU*;=^`)U^M#6 V`mXD7*$SZ544$rjF6*2UngHR?P>BEl literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_2_4.png b/resources/g2/track/raptor/medium_turn_left_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6aaa4c61d32d0e51fabf01238350b9142fde3217 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!VDxut3KrdDTx4|5LY1mKVJTMxbkIx?d|IM zi{<0{#r>!PC{xWt~$(699F>HyZ!| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_2_5.png b/resources/g2/track/raptor/medium_turn_left_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fd835a00488f2cf59b3fdc4d2299fd69dcd29dfe GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjg!3-py3a%3XQi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%n-yR<%7qMT{jue!&b5&u*jvISrmJjv*Ddre5+EYEa-| z4!EVIdGG&$K2ga(?Q7yQBt1I)!vsASvr1~5y>v))OQmU+LpZ~M`wlKV1?`vP7AGit z7rbls>HXSw_Y(a+9^SpsV9(F(jFr1SJd@9x@O<++8yh(>tH-|AFUQv`xo-QvX7h#M pqYwA~`Pc1dTytLGez4fNwf#1%T!}k&ngQLy;OXk;vd$@?2>`b4UuysW literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_3_1.png b/resources/g2/track/raptor/medium_turn_left_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c06e98484a8781a482a4a0e551052a26a3a4cb41 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ey!3-oHx~}5|Qi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoSk8!(C2pmI)uT~)z4*}Q$iB}{;Xkq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_3_2.png b/resources/g2/track/raptor/medium_turn_left_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..014bdbc04575b0e457264de9b7fd75cc9c8b9ff9 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!3-ot_ve`cDY*cj5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&tEJb-!Ja(fAM%dPz7U2kY6x^!?PP{K#qr}i(^Q|E#JOCz5@mvPDdkO zzN>$D^rqX7Dwe>rUVJw~7nPhjAE6VMYo>l8UFtz~Sg6BF^K#n^V^_;ZSxMfi)*OFN eE6V>~P@7@E@Ot{%2ls$xGI+ZBxvXHR_80CKCOk_1eLkWn((Oj(a_QI?^QN`iavO$x-TCVK>$@FZ dc|pmtb5ag7ocST%whd?`gQu&X%Q~loCICK)Kf?e3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_3_4.png b/resources/g2/track/raptor/medium_turn_left_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad06c6158e4352602ba4f36c2ef4e70e8933b36 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^{2o-PeUIP_1HolCK$96fUHx3vIVCg!0K(cp^#A|> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_3_5.png b/resources/g2/track/raptor/medium_turn_left_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3f64b8656b97bafc3bd49e2b52ea42ac7abf5cbf GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}#!3-pO zA9q*h6$jhCSsuM=xA5X?4-dFK@0>qx%KoHZmu{a~w!cdI%hBp}`t#=2ea>4pY5(rY k3$i{&3&eb#Fv;1~F1(fHp_YhHIM4wMp00i_>zopr055c3yZ`_I literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_4_1.png b/resources/g2/track/raptor/medium_turn_left_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..773d2dc5e318ae8387aac48a146a64845119d113 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^nm{bb!3-qJr^4c=_ky%D1ii zFZ*ln_tszSY`j=LzF*wGn%h2|!FcwT#h-xc7)yfuf*Bm1-ADs+Iy_w*Ln?0dPIBZs zpuoZ6xN6gn|NqUR)~c;tT0PGvp)tcn=&x7C#5aXXi7t=W*%g-VxL}xXVeGto`7ciC z1zlatCp3M(-j+DJU{%Gc`>!Kju-@C6m^+EP?1*fhwcp2WJB%LGbf-oanul+EuDVI_ zopX)c&d%3miW|NQOqV$J#y-+9bteC><3<-bqtCGE{9Ea{8|WqmPgg&ebxsLQ01(Dv A!~g&Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_4_2.png b/resources/g2/track/raptor/medium_turn_left_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1e732aa40aacba3fab6f52dd314000427cd9d7 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zs!3-q%693%>QgQ)4A+A9Bf4uzjaOKPX+WWor zS34UomXGfj_pj!*PiHXx#o)OWsDiO1$S;_|;n|HeAScVy#WAGf*3^ry`5F{B+7cfh zZuq_bp_-i0*3|d*=5jYp7!1X?S?}uLc-bYtWb=b^kCo=z(lCThU8>65d{qm zjgE8fVu40%%&HRiRdv_O@Hi>fa4cWEc+aA}vd8?HnFYEV8GXvn&9N+g*3;Mb?UND1 Y)Qi=gSA+A9Bf4uzjaOKPX+WWor zS34VTSI=K8AKx$TU(Icw&R|^q)%Q_ z`@Qv7I~#9T&tEJb-!JZ8&24{UtJ)r*BF2&+zhDN3XE)M-oLWy8$B>F!y%z(88WcEK z0-Up^zpH<+%xG~)mwf%b4NRJ?rry5-yM5ei4Rm$3bz7+_F)Th4J<-H0%=WVLL>7l? zo>!6unzyXH*5=gD+PkxC=caRBHiv&2zV>;Y#J#vQ{LYrm7gMk9JlN-5cuh(=e#Q|y lU8Bq5DvR##o%OF!n)wRL;veot>_CSwc)I$ztaD0e0ssK2SPK9E literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_1_1.png b/resources/g2/track/raptor/medium_turn_left_bank_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..744d51e904ab66544e1a5d524370d7befa0b9a7e GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^%plAJBDLLOb$}F4fKP}kkbWMneA!=nzqfvC&dhH> yK4VFcUoeBivm0qZ4xgusV@SoV8JnCHvU|` z`+vRq`{>pG@+E8n*6zwEEQ-&=pXdj4Yh_)(p(aOJx$>&?7Or1p$=)frE_$jQG9 zmpr>%vg+m%wH0AUQq7d v?XJtKPIuV5ZrURu^YYr`J)iVH`aWfsd(ON(YElg=(0&F_S3j3^P6?A+A9B|7_#W<-7matG|z4 z{Xbs*dARaz>;B9B+WWorS34VTSI?hrZ@gGOzS&&A?A~&3pa#a0AirP+hi5m^fSeFd z7srr_Te1C)dJ7IJ zbsKR$6>xevWA35AH{Lck4*wAhty1i(dgrH3Lt1SuG>he6{~A+S005H*K6bR~x_6b!nuWyzt35&mXa_}+Vbm-jn- z?|pT2*tmM-)hhsS_29kw@#V~`QY_^C!QbZh00lU@b9XM#nKfhtjU#hv1&C5Mho{uY8grk&3nTjqPgu)tt1fXJ=UM^cW?vSL*ac7b=YqjQ<^>j2sL4Y%r8egR) zf>X(cPBkq?b2wut*q+#*%5J3kNsC}{x>4g~O4L|I7xb>w9jPN<_hTze`f)m5tb;NS z6&b26AUZ%g7(1#qCZrPZdfe+m<)oO#N$rP<|oFPhGHDA`5^!l^$Bnjhe!GkJdhFrE(!f8{(4)1m4 z>995Pta&g@=V6vTMLa+gzyNRnJb)R%5(AV=5>UrLo{N&XM1syhp9jAIi3CUnq*qao zL9T@SHj26^ap5v}7DNG>64utLmPz%U#@N-SQ#+2mG>uWt!dt*}O1x8*Ttf9pJ>i^{ z;$`M^J%}#+1)8tO3a|v$pvwwRv}LB#5*@4U_N}Sck3%m_LX<67QA9qV1Q5!z=;pW= z!tKs*xnzff7c!zqP!ze{);b-Xp>38P@Qf!gfk>ZARNAZ|l|UAWh79s~6pQ)svo}l6 zFMr_E<3kzV`Rnoh+?*WLZ{NNC?Y*zXS3Y~QSa^v3yz%jMYV^^K*Kgiu=|24S_M_83 z_D)ZK@b^D|pZ>02|L;TPnin0Pyj*|y(p$MraAKx$TU(Icw&S3oEPwGmbBF2&+zhDN3XE)M-oDNSH$B>F!b1$D3YEj^E z3G_IU_v1hRJR`;{y)7rZ&aOPY*h8~3%Q_ z`@Qv7I~#9T&!28@yjVWIU)(>P!MIpy`x2l!#*!evU^4c=_ky%D1ii zFZ*k6SI=K8AKx$TU(Icw&R~2!TxK^=5o1Y^UoeBivm0qZj;E)KV@SoVa%TdV(HALmyi+dGfbPb3ufye1vDUiJ6uYevu zJ!x5T#`^s2YoV0a9Far%@@1`AlE^GX`rE%_)yyF@UcJ;W68-yr#W6K4LVbm(=H&@w p&fw+w#-ost-=UULs{g+G%cn4IV3YqT#-abbHs30~Cw4pj{m$blUmF6a*T43j|F``^?Zf+1x8Lel zaCrONuV>+}?fjliN7~C_6PDEP~dQOlyp9}=YQdJjfs8wv%;mkwj9@6)!9C?f6}>{ExdZB!kUYwd3-z- zr8tQ(Jkfsf`Xlp>Ef?)NbN|#|w#7fWPVxzH{g2Klo%zY>Jg0T-mn6n#3mSi&2HL{l M>FVdQ&MBb@0Ms!~+W-In literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_3_3.png b/resources/g2/track/raptor/medium_turn_left_bank_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4306ae00a794c97d7f725fee5f8e746a36b307d6 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^+(0bE!3-pKt-j(8q;vy(LR^9L|Jla>>(&3q%RdiS zzHQxq*uY;t4hiZ#~5MUO%{67qg>&?abWg ziKlxUc6{H!zxkr*hR9P^-AW5AS8SFJcy4877Q34FJ-gBcX^t~Yjod!ZLC$6HboFyt I=akR{09+qTG5`Po literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_3_4.png b/resources/g2/track/raptor/medium_turn_left_bank_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea966e043dfa1a0e6772179dc3024370bac25d11 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+g!3-q-bzC(AQi=gSA+A9Bf4%zuc=_ky%9s7M z_j~JaSI=K8AKx$TU(Icw&R`rhgJ%v<5o1Y^UoeBivm0qZj=!giV@SoV)c!!e0}33@ zx=mN^{y)&I*In{>{gb_Fxi`N&TVTf~X=;43f$3!fQ(GM4zXm>G1)hJ;vZa@??G0Hs or>>@&P4F0B5^%VWdj6@IX{5ok1nr>mdKI;Vst07|?<-T(jq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_3_5.png b/resources/g2/track/raptor/medium_turn_left_bank_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5df4712db8faff367442282e4117c730d73d09e6 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^%plAJBDLLOb$}FSfKP}kkp3Spf7xHVk*CH6$YCrA w@(X5gcy=QV$l>#JaSW-rm7I|fkdVO0!1Rh?>1)2l0zerCPgg&ebxsLQ01HGH=>Px# literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_3_6.png b/resources/g2/track/raptor/medium_turn_left_bank_3_6.png new file mode 100644 index 0000000000000000000000000000000000000000..333dff23ad29619ecbe1f56c98e825df2c548026 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^GC(ZK!3-pm?$qT0Dct~{5LY1mK6>^4c=_ky%D1ii zFZ*ln_tszSY&_lGc(HtZv$=l1xPLXbeL91&J%e;{CdW*m2F8*gzhDN3XE)M-oJ>y_ z$B>F!t(OA%8Vop?FXZ)UuCDt3SZevlZl(SDsSa!mcNcUm3Hh~tm+s204|UqbZ?_$@ zxw=-}YxBZubJsrp@bFAr-J!hN6TPMH-7^h8Ki1{hzvoKDo0Dt93jNf*C)zJC%{*|B drBQeX!=b&b{o7)ew*oC?@O1TaS?83{1OTkyS#JOU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_4_1.png b/resources/g2/track/raptor/medium_turn_left_bank_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d784d45e42984f6c25cebf18f407fb88e6dc7ff5 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^W!3-ob<6O4`DXjpX5LY1mK6>^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf4aSKv$=l1xPLXbeL91&iBMo0P&H#okY6x^!?PP{Ku(^gi(^Q| zt=>zHLJbNWtN|LW96SG)N}qOB)2#o?Ci#;=mucb?sc9X%oP`4UQ^O6PD(Y=rWE54; zczx3TWumHGJbT}k>o`vl`g8f8@QXPY{PHF%-+Wzr^`-69+ZHxqtSgJ$kEBla$?%tW eIY-pDfN`f2>nyIV4dy_b89ZJ6T-G@yGywpSQBbx3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_4_2.png b/resources/g2/track/raptor/medium_turn_left_bank_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b74973b2ad4bb3d0e3df3413f9e2d36bdd1d0ba7 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^CP2*1!VDx2Rc&4Xq!a^uLR^9L^Kj+M{@VM!^;bI^ zPq#N-EFa%&uHP^2U(Icw&S3m6@c(O|BF2&+zhDN3XE)M-oK#O2$B>F!$pRuFW@cu5 zya@-GSQa{XoV+1AU4}zLlKsIHVG)s_!ULM>8X750(S89JS@H^^R!yEHG^uCOq)A*p zec4yfNan6Q=f$CEa(vyan-i1PuuMDj?EF+&Rj;my)B~H=DhM%1`H60Mzx+lL&_V`J LS3j3^P6F!$q5XMuBvPn0U|<8pIKO^PMI<#AxBYB qQN!QU)AQzy8yshf3wc`^#Tlk)v!^u6o}U2J%HZkh=d#Wzp$Pznu_lfH literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_4_4.png b/resources/g2/track/raptor/medium_turn_left_bank_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8bb7d1cc281b0c74a032efd04c9f40c7b2ac28 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^CP2*1!VDx2Rc&4Xq_hHjLR^9L|9bWR@$%2Zl`s2i z@AuYU?QFbVJ%75r@nZS-W^?_1asO&=`*a3l;htbKplZgFAirP+hi5m^fSg=U7srr_ zTgeFr7;-Wfu3M;h?AVG$nR>_EyaF0j&b;Cgcb%A6805riz?tsq=;*3rq~q44pwObi zSlYNq!G%pLHR;hUOX0Lx3NhzyY^{Cv=5D&a!W_0~fkuAwcmCFClV@%1S)BGR@c@_A c#x7=tP5WhR_LeSS0$R-A>FVdQ&MBb@0Pyfm1^@s6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_4_5.png b/resources/g2/track/raptor/medium_turn_left_bank_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d145db8ddce48967b7650ad6a38d7158a2df5739 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^W!3-ob<6O4`Dct~{5LY1mf4lwv*~b6t)!#?2 z{vR*@JY4y(UH?yQnI zn%`W5E*9oRzG=>qoqlc2Hz)o(CwGYDNG6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_1.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc5b2e0dc9d7043be66f2892f8c3991765d1097 GIT binary patch literal 289 zcmV++0p9+JP)a%TdV(HALmyi+dGfbPb5cz%X z-d<)I0L#0(T0|mV@vy(eb;bvjKe+sr;z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_2.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cbebe98c6edd6e6ed8c4c262e326c8b9ae24ef09 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+j!3-ojy+nP1ltF+`h%1o(zuo@-Y~#=6yZ_g# zzmH!1KVJTMxbki5{>%Q_`@Qv7I~#9T&!28@yjVWI*<8O;@zQ0W9>$U&zhDN3XE)M- zoH|bz$B>F!rTw0KM-&8@J@uCudjI=>+j4>rPtcC3IpVLTJloBsaPQHvD~*R@8iQ*D zrso`C@UdmvnDOT^i^#_h?D`7b=IVQA@}~v%Z#z>vd;c!J8S8fC&U2l<^W&d&?AKpz zXOWN(4(!{SH#;`uW}V!s81Z%AC4Vo^?S0)d|8m{THr9X6@0Xqhx`e^g)z4*}Q$iB} Dd533D literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_3.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_4.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf5824b8ae3b77573d78eaaff5a29664f15f512 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0zj;B9B+WWorS34VTSI?hrZ@gGOzS&&AU);Z%+rIdeNFh)gV@Z%-FoVOh z8)-n!QcoAhkcwMVCtTz^tia)#9oS;@`rrR-@!a62vvglI+P+S^wupe!pN8oS@eEQ!?&bfaX6rqbVs()*B_A^R!>5Rue6haqH`@vx7$L-Y6Hq`>?Uj literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_5.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..230c32b40f6193da33d34d3da076bbad9a4159f0 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^ia@N+!3-p~C0}#^QYryHA+A9Bf4uzjaOKPX+WWor zS34VTSI?hrZ@gGOzS&&AU);Z%+dgf5zB^DIV@Z%-FoVOh8)-mJxu=U`NX4zKlP&oU zDDbezPSbw!|G#hJ?TQHsR~GM0Idev(dp=8tiYBYWHLXeY;e~>3A(5&Mvy|UTYxeQz zEK#0ot=!CQE20{e%KA{Fct=RzkCHDB?Zo}Hzi_%5^%eO~Y`T7=e8R7|i2q5|r+4`t hRnfV0tWjn0ewAe`7KJ(I6M;@(@O1TaS?83{1OORnQ?>vA literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_1.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3e59818068d85a857ade69c29ad7867f0570fd8f GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^#vnEaGl<2%>?n{@4DbnY1=5%OwfB4LuXZ-xuAV>L z-gvQme6zWJzqo%jw|zQ;vEI(9pMZ)OOM?7@862M7NCR@3JY5_^DsD}^7%kMIz~ge! z!N_;^U;PTMrmn7~_ue~Kbk?kWVgCQ}oS-WEy&vaHty!2{@!=YC-_6KyKcO85fAJEX(J@NN0guL2*Eu8SF5%`beJu_{fhFgCZVPv}GF z+g~~BRyju}M7VF2ir=RE>f8E;jTPsPRPD>^x;H^l@b0@OEOvXj&GmscGI+ZBxvX|1q0i|umtQOD-ntm4cJ449C|1ibPi#uSY?FYEDP`Z9`EwK!+YPo zYsd9V`_JtIz@?)%4zA~XIUl@K$oEelqdx!&aP8`i!(47{ZEbIF7Yc=)ot6iL?`rfE2i)9(+*;~o=9UVUpAzwt&*-z4NdmU5yQSZ8ym^AlP2CKi|PbuG_(b96>MZ+ zVHaPFD(e}6QU?bE^PaJI7DGcu$7unWn_}q zsJcO`Hmke5IS?IR>P-}HrUglp(>59$~?K<66`H?P8OeJ>oMc-WcP8Rkzv5!^} zUg0QOWx1vxwiTtT>w|WC-0g-q1cU)pA7e+jI3bi7-CT;DRl`f$lgyp3 z$LYmlgUU3HbJc2{tSL03^Smj^9W6g*jk~?+Xq-gxdMSV=VWxuH8tJy^fhG7IWin_^ zeR~lO(nYjhpCbW41uy|z03Toqu)+Z4kVRyf$oEjPkSQ=&=m`+iA&~(ofQ%~YvdEKB z&_c5gN<4TRJO`2ps*JVts@2F@^deiA3gqo zyVs8uc=h++-pj?!ql4FOT>k3zFVa&FpD!K0^>_H-*>~P7HjAg>L*m<$d+^b(8;{FTOWSs{CD#HD|wp%jt-9x?!SKXlm7wRm6GxR literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_4.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c7090963f5be1755803484cd153423ebfeab3968 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^azHG?!3-qVmezg)QtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwo4kD!JkF!K@@wB95Pm(~#-fET)BC9?oT~caL cWr}#fzlMiZ&}~8MXQ0&#p00i_>zopr0Fk~~UH||9 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_5.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6ebf9f6a9e13fcfe88b4b1ad7538399973a85f42 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm9!3-pe?R^q~lvaRGh%1o(U$6c?diDQ!`RC!v zx2^jx`)lv_)?e*xyj?wiv3z{LxPLXbeL92j%Af0_fvOoxg8YIR9G=}s19F-@T^vIy zZuL%fW_9=9|J|ZF=gVs3dSz9P8SHHHk9lF>(0t=!Ix zxt6m|W*Bct7kqktQmFAHg}X9Mc}C{WKbt&*jCW@l%LlvKR{mRk;lc$ywY;S>Q&)wh z$oiU^Y`@-dbY_joE5`P#b2jumWBK#zf1atm%URZ{J8=`dfzDy@boFyt=akR{0Jp_o A6#xJL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_1.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9c8afbc772f6ba58d004f43e2d1e0a5caf0c27 GIT binary patch literal 708 zcmV;#0z3VQP)x-sLU*5PLh)Ft*?9Prn-yq zEdRbgt4GaQ3=Vs6jV_{ z88%|H>!esn(Rtj*Kj``;aw+60fstbY6=;xMKlmT~o~@OiobZyuaiH_XaXyBD&@RxZ zInMX7<1|iy;4^TgxBQhlF!M=zt))eefZlE3;<}|Nd%)!mFz{r^rtC^VT0%Y#yr0oG zWr4n1pnJ`mTk{;J4?vn`mAnBC4uO#ZWv~0ZyQ_U}|MoQJ_XBOGa-~z`8$SR505ecb zR7C&)00000|C=-ae<%N6ALmyi+dGfbPb)joaJ^k>^UV8RImoSP;RA^-#kK6vkEpmtBW!-yBs)y3V-Vck& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_2.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_3.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_4.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b8705f1a9f8a5a6d6acfd5f4d9fb9e95d014a932 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{b!3-ql%7@znDd_;85LY0*-&=pRv+;C$Gz0HqmAg8YIR9G=}s19HqfT^vIy7+DW8@--+3FmK?S)cyaz z-l-hp6MwaSGjv4iT6%qIG`Qv}!zy@Y>ue<%tp}Bnnhtd>CxitibgTe~ HDWM4fqZ2PP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_5.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..597419f4d1e46d67ace3e9b464131feeaefca2fd GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^ia^Z4!3-oFW~MC$Qd$8%A+A9BbNTN7_3H1VS6}wm z-tVoy+Sz!!dj52K=LI3~& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_1.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0acaea502fb0181301dad372938de0f25118f75 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$t!3-on_FS+6QqloFA+A9BdARaz>;B9B+WWor zS34U|w>Rz=_fKaqzIoK71}M!~666=m;PC858j#cA>Eaktack=oL%s$B9_HLRTmJk% z%At5mu$tl8<(G37GAP`TKlv$elI(^l{ZWdG&Hv`kW^bg~8L+&t;ucLK6U!o>*)E literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_2.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a199f1c4388d9550edc6cec4a4c738e8d10b9438 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^+CVJH!3-ql8>)u@DfIxK5LY1mzh3=+y!`WU<;(us z`@Qv7I~#9T&!28@yjVWIU);Z%+diGa`2Plt6F{YmB|(0{3=Yq3qyafSo-U3d6}P5d z_7*y#z`+vm#;oqb@A>6souX!$ZC_XGxfsMvTNiX-k1p$uO*=IhZUpVzv0AI!nel3+ z`n|8VV()c7oe#VAW@=`xo%xP93A>bfIgSMt~0{C8oaDBs7g`Mx_f z`qfS>QFEO1tENU^`_j0A{NrkVXR~L?&E0d~Hv87Bw~1-?qNOanc?sKI0^P;n>FVdQ I&MBb@0ImOLegFUf literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_3.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fc030fe75a9803841c70c1876d6474e03d0fd5 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J!3-oL&dBxwDU|@95LY1mf41@ediDSD^3TJS zZ(H|Y_SatRY`k4Pf3bXgzqo%jw|!ATivmy`V@Z%-FoVOh8)-m}tEY=&NX4zx^M+yv z6nK~dx{f97`Cl9RC_6~FAiuRgQu&X%Q~loCIDlFK`j6P literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_4.png b/resources/g2/track/raptor/medium_turn_left_bank_gentle_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..04505445d6b9d8a6e53bf5dfca3c4938436016e8 GIT binary patch literal 962 zcmXAoQHa}g9LIlmy}R74JBoHtF%KCO$t1X-5yA)(x7^v?vb)@tL6JUW5U@%fGRUA0 zVau>+(LUs%YGpksn1{**?8AY1D4K^n^q~)7E3;yd3Ux*pnrXqJhy2Yk`11SxzAwMe z!}s_5Xn(J?dFsVe0I<1pdFy)G&z{WdnY5zM4$cE)VE^ik?bI$UEiErEXEK?Um6g@i z)wQ)X48zvf*Ecpc3dLfPVQ4|%Wm#0!iec#WdcEE5_WNECjH4)-&lwtc4kR&KspK_{ zsF`%5$+bIDudfVzV-z;0Ge@AXGMClGf>kDLmFybKQC;xcaN%t$j(UdqAJ1Sbg9V6l&G>5UCtVS$HJro_(2+#tRTi(6sAie#slvdJ!@4?Y8#A|_ z`0YjLqFIp3vm{k!*eWm7WVxxTom#EmZ2H}9=y}ueI7t!&xDI3+V|qDZfXgGQIu#nT ziWAoci9Me8;|x)1DCsh@-)s$g{U`|MQyvr%Gvu755Vl5j zOx|tCgHCnmS`)t$PlEaU3E~0D00w{!-~tQ*W*DGUl7LJDxekgZ5(zp3EgrlQL=qqw zkX}Gd200S)G&E|U$bpmKSr7#%OPHn>tQys_OFc&&4C-O%#&L*J7G4F$%<^_YatOsE z^@y{RiaW0j7VXioH${_#%mYhcB|2B(2~B3qs%Tr9)3OF`D-7H?3ebGYiX!p=MSxJ6 zMI*&M6J9qvvl-iIKa(*U36+YhX{u@J3|(jGHqW>MPHJxLY+bzZ!l!q_2b=fKp5DIpx3c@eYp1`u^U`zg?!W%? z<5ug^?(O;RwnuO-sR4NM{mS09~?ZwKl$ZJ*9yocY-y6R4B1B*-tA z!Qt7BG$5zK)5S5Q;#Tk3+kA%%c$hCNS$TQGy=(vfM^4G&;L0hO;(l9EiQ7+xVTR;f zhaXRtZk<@X?SrUsF$dFLo=x)dawpd<@6I-uelkR~p+jbN{^Uw8|Fu)!E_?N}^wUv^ z#n+?uiY0H_HZ$qj%R?`&${(H4rS)R_U3r&Z*X!6*=d%2`aClcU&ncD!n3Z!i&I~=(iH-yL{)oe6Z_dA?t#d zewUN?s{cAzopr03q;VmjD0& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_1_2.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f65d8a6996f7901176438253092474bb58b74407 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+j!3-ojy+nP1luCe4h%1o(A20trT=}xU_I_{u z)y~G-)$^y@8!wiR?-%#4=C)5~F!tsA!va*tSQ6wH%;50sMjDWl?djqeQgN%a-&^Q_ z0*A9|UDvmN-`^%^i?}_0#p`)sie0GC)mBaaeN6XH2^2m!5S@O1TaS?83{1OS36Q7Qlc literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_1_3.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_1_4.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4c71be450d40846e006c114e0b7369e52a9364 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^{6MVB!3-qbat^wJH~~H(Ao_p3`u}+O=i$ni{k8Xd z>#ue;-macM-QIYye0;OHe!j7Ozqo%jw|zQ;@g|cufj|w6B|(0{3=Yq3qyahQo-U3d z6}PtbzvXIB;BmeFM^ExD$SjQ@Ra=2@$%ht3UI>c_>NwI*k^+~Zq^-kfhg zwr$QE?ddmrxj7s6^f4wLkk}#R#Q#90S;1LBT1uFeLxgJ`x6%%7-b0Vv#JChq7HvPwZO-bmI0niByp00i_>zopr0C<;I4gdfE literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_1_5.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c041b20407be9469f82a1fc1d7e4a0ef6fda45cc GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yJ!3-oP{mr}$q_hHjLR^9L|9bWR@$%2Zl`s2i z@AuYU?QFbVJ%75r@nZS-W^?_1asO&=`*a3l;htbKplZgFAirP+hi5m^fSlQ$E{-7; zx0X)v<~yvw?|JzT)E#+I;r%ADzUsXMEarJFXuIU||(JxsM^gUf_>V zE%P16ZIfo$ANqEr)i^17+QGo^#15@#noa8tDsYre)l4=B>G9dvcG5I2^Uwl=lOk$r zzRwy@8eb1k)0kyrp4r+tVaH>u$v48cR&a8zTcx3T&r507Va1>W7rQ2JVHM%`@B1qM amzjl^<$Oibw0fX389ZJ6T-G@yGywob-e;2l literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_2_1.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc21f69673d8957c1fc27865ad0b184fff4855a GIT binary patch literal 975 zcmX9-QE20I82`3zOLy}OQoVwC$U&7TQF1JfoCL{fwu>{moXenKk$40xqe8?SRtzJ@ zRV-3497X!jhjQkjO3(^J^H8ylJQS%jjy-e|p+d!?cSkuR^knGYj)NcH_x)bJ-w%G@ z_u-`t>GY|GPXWN`_2*YNr+xWkP9~=Hm;L=?fCOB6acgZ#XJ%$*XJ-?M#N6E6{QUgF z!UBe2$z*bIaWS3AWLTCFML|_%UC)`OQ7V;cwMMJu2f<+!jpLYQK;S`Az;r-JvJskld=5rbk49XkjG82|-9!!QHKZGvzp%H{c8Md{}AecQg-XrNAqU{e_( z%_thEcb2&pa%1XJRHGIPl?I5a#qvl}J z!39XEkj?{X0p(y^BQ3S4Tt_g%Y-M1&V<$kn3Z2q9qA1aoEZ@|{wyB0Cy>15imum-#a5-#X*5FL9~>Tz$72M90aOiRo4D8})E=E5h~;6< z9TnSS=P+)Kj{6g|MB_M@PD^A)r5T;)O<5^x(`8nxQtdWdQ4q!h0W=viRovD{r$E;& z!7HondcNz~{Z4(<590VH5&*IQCV&Ir0dxU|7@#Q>5m_ekTom;c3Jeyi0{9X{3Lq7b zkwz63xeD?Ns8>dj3n#&IAd8Syu!5epi*(hIny%h%m%`8+jY2flBJ#jmOM;VDTvGEX zBjTNL&WnrfNv(J64^V$hrGO(biNSLMSx{LkFFSU@t=es`8V24d3Q#=YWEuH@B0y-G zMR_WB4@AkT4~Ja6b`NH+C+2c$p`crq!7?R|sR^tnvK^T@ROnGQgESJ^6sohx7f>iq zkDq&T>CVXyT-n@E;ll4nZ%oO~`s%Y=k6r)x$CvNFdNz6W^4MNEi01B|Nj^yT|C;RW z@0@?(=Ud-B^U@QyxBpvt`|L9Q^qB{Cj{b>%dh^0lE8CAB{PEijE8e>C?GLX?f4=hm zxwjHuUcd9f#p*-%z0=>k`_U(>Lk>ZLo6*eD86uOqS?!?<5rbAJ7}*Gg z4I11YiWUu0v4@I11isi2rfd^SC)a#{YlWdtx zr_1*T@@TC3fiaD`i=`vdSdA~}5^mK2%DlDorI zf6$n?);t&_^Ds>xA_1TVU;x+vF2Dp}i2=$ai^w#P>!5fpQ=qfZ6TquLECW&i={V}L z$dQrPMAHt69e5Nx2a*Ui8Ea~|)uMZLW#nkS-;N?TNg|Z7hz77`L9lVzAytpkW8PlX z-L&Pe`_qlLK=Tz<0*=HgOtCJIO@%cZl5I7ep5?o}D0GuJMCpQ)B;)~#0ii65PKJ9d zqHPYAOK#AAEMqzq>vg5s)J#)nnKsAt1=bbWKw@Sxoz%)mC6Ps;0gF5VMN)SB+_l2L zkAC2Tn`a6f{r%fJnNd%VU%vJH7avAHJ^|0=b4MHfpOY6qm0x?d`rehr;nUX+rN6#$ zugvEkUuCHmE?j=s`1;@{=fP9Q-&eoAd-eLy=fB_k>Oc3bKi}ZrzkTMraAKx$TU(IbVe`4k?pbEy4AirP+hi5m^fSdwP7srr_TXQcu@*Pm%U~wqh z+VuZ_LGvs#%|{Dk*u{igHmz!Ta+O0NUqfMrS%_ZPT{q#9y&<{6zIIa2S1U8FD!%{1 zI>-HL#kG{{0(VaZ@on8NC4POAnEqd#XRF1|S4l0q^-g--v{fB)Y3_5c3RiiV2i7t_ Ud$oVj1fbmvp00i_>zopr08=YassI20 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_2_5.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3936e52678a58f166f2665acf6c050a0f313b4 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm9!3-pe?R^qK0s%fDu0Z;Ky!`WU<=fW%m;JT( zd+V=uHr}qDKi%GVv3z{LxPLXbeNRk908kxcNswPKgTu2MX+Tc9r;B4q#jUlI9fev9 zI9QZ7DgF5WKQA%$Zp@5_59aJ{oAyA$K+7m1#7H(R+aO8y7^CXsPB!MMzUedk52x2% zdpG4KkHPcB!N31Zz1!($ba2X9-4`pOEVnP7VLAWpl~boz1V!#V_i?xW2HB^Jr_Cz5 z67~3p-)G4;QXgjV>ZCtg$N9~ief3F;l|Pxx7qj|a*xMfmbP|K7tDnm{r-UW|XqjZP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_3_1.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ae92ae3899df49a430092aef92377b4a2ac34b GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Y9KZTGm!k$@g@^UsRa0hxB}___3H1VSO1Tfe;%%U z+q(a}%WQgN&GLL}c& z1rCS6Uo#5-|E?9xS?$~YJN41U4hH{~v$zB&-g!GqKq=3A`sXcqkK3x-XL8I7G@bFl zr|!&~Vs@=Im1FxBb##Q>xPO87vu4E=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_3_3.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1ac56562c8c98d6289318be470a3d700d8903b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W_!VDz0>s|zs3@QOWA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKz@Q-!JZ8&268~VC=jk%?+rIu_VYZn8D%MjWi&~+SA1`q~ccc3N9fL zk)i~K#+Rq(u(GmFWtNbT*mgcjY!S<&9YzJ=>!Ji-dvmkz2DuqgQlq6lAcN W#&a&<^gd^xF$|urelF{r5}E)7?KY19 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_3_4.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_3_5.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b223467c8d2b1141866bacf57593816d7109ce9b GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG)!3-o_a<opbSO@c-1bYf<0VFPptb!&R!}58K+UwX5X& zgGvk<#QAbh={l)9v;P-poR;`v?n&>KcgHs5`psSNswPKgTu2MX+X|KPZ!6Kid$2s zcnTdc;9**-!?)ni|GmX0%*>VN?_R;STSicDXIrh2u{-;@qsjfXC(mq&QRy|kTqGEA zso*f@)MIarc=bON&lDHE!C~L2Uy~QNpybVUorfa1XMz$IKNo%Xt%vFKd&wiWF9%$V zKW|yv^!38-l}YP^0#1tAA8e}-(6?O^`YNvG`w{-%b$%aK?u>fW8`xAKH_e&*(h0HL u^l@+D_{24 z-tVoy+Sz!!dj4Yh_!qqOvi|No_TE{Sa@kXzfv*1J)g)7U(cFK+t>bRL7J LtDnm{r-UW|pP^&( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_4_3.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ef07a94f60363a1c9d23427186cb9ee4f61830 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^LLfE=GmxA-;hZ**QVj43aRt)<>(&3q%RdiSzU;5P z-&=pRv+;KI{KfL|{o?-B-1f(peF7c(v_T~rgmg$#4EisC9BeXq8zV!rM`SK^VYLB>#7s4 p{#}y3Z60^9@;d)z`~Dy0ml9&yboSNbeL%ArJYD@<);T3K0RU2(MS%bS literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_4_4.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..470a64999ce7beb8041dcea8607ac917685a505a GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-q!3-oTncg)3Da8Pv5LY1mzh3=+y!`WU<=fW% zm;JT(d+Tpk&tEJb-!JZ8&27K4{N!DrBF2&+zhDN3XE)M-oJ>y_$B>F!trr7@8WcEK z0wxw5{4Kv@B2V$MjQ#g@G+LKVwQ+Ho8qKE>dS>gj5XM8!wMt(do-8a|GSQng%9+pM zEYr!XU7qHw3$iA6o+-R-beCbh)J3xkr&qgAW&8ER#@%m{u*EOS;O#+v{36W%xiwa0 Q11)9nboFyt=akR{05oS#Q~&?~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_left_gentle_up_4_5.png b/resources/g2/track/raptor/medium_turn_left_gentle_up_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..34abb170adfec7f4ad81bc7e9730414bb398cea5 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^8bHj=!3-p=BF!y%W6o4k&Q2 z>Uuc7tAD^2m$Tw!ewmu_f^BMN&TL|TEBbJ)lgrJ!GY^U6a0iCOhZb8K|1ni+y1q4O z)h%zfa=$Gqy3M_t{r2m;SJ#eZ7*e`zJT{ju|`&k}X Tr>vg|^o#M!M zM1hBSvPHm+fB*MS)p#`PWoE5hZ#S!H^2CcvSRSqu4UwOc+jXNvx0iQ&phvRn!ar9p zg|80e6}3L)xP*J{tJ{jdeV1}RyMHNdhrIXxFa4kV3SZvb|MB0ie@Dx=yt7|j);G!h z>6hTA?{cn+mlkPp$1^UsTJe{Auh8N&W5X=7*1*}~f418#I>Pkt=IK?3fi7e4boFyt I=akR{0B@0N%m4rY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_2.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c3671eef8a1df81abb121ea60e306e92d328db48 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^+CVJH!3-ql8>)u@DY*cj5LY1mJY4y*zxIA_{ngIK z)9sBH%g6VN`&V<@r!yF*2wm+1s$eV$@(X5gcy=QV$f@^qaSW-rwf3?%-vI>$@ zFaGM^x#7>_dnB^tnm(V3(xGKi+Pn;`-0KYPHUw>RaOcRbI=!}bUd_hJO*_sVShd~v zr}65_*Qd`m`^;Ojv4+=vQ&s%>b&h6!OrDh)?w+R>pE)Md8B{k>?3s_ftgfrt-IJXU k&zOEJijbMRuO?{Tfl#KEmaJBpK&LQxy85}Sb4q9e0G8xc%>V!Z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_3.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a8c55066f3be11895c755056626eedecc6d50e GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J!3-oL&dBxwDTx4|5LY05*})SbWM4(@W#@I*(Hy5|J|^hIehz8-6Qcm>s_XhwKxb^1g&5~|yZEbIFS1OgAot@p?-Mzg% z48y9`>i+&d(P%U{j+G=)Rb|7_EX#CVcQ6=DCQ+Ks@_bzs91EfVid@sQdZ$BmZMNqL zgP}5>=y76AGjFjBBnE27UdiC$l}giDH*h;6Ei>Wt@2>APMaj?40J{CRcvfx ziHFa}^??#F5{)uX&k@g&=92r45Ryk<&fPw9>HQDjD$lji+wHC}8IT!gv` zL>nj@XdmN8L~}xGiD+gmZ(#*%KSgH>Q#W|B+hn|!FgB#vQZv_>53FVAu9Lwg3(+#g z>pac0IKC}PT~+lAW7zFZJTDoIvM5^2X6yAD0cip~z_>9k#iTlA+6$?-)PhwvUi-6R zvbvaWP>sQHo*7|%G@%rcENuFlKLIhpLEERWj%I`2kTMT<@JZztb z&O8~e=4nwpL?S>7zyk0ALV$CCB?hR3A|cyCVSw_vLW9XcUxcU$xdKQ9WD>~ZP@tfw zgQh){2XGlY53&R;1?w1u(`EX8a~v3P>}FZGT4kv8BHO^(HPI)OfYKw{%msg~g+({s z45k;+0?pTS9e4_BvbZKv9hI}&vhQ?)z7vQ2EDcwAii!m<%P0br143mMz0&RpNY@@N zm;7+>1lDvaX`0&U7`AP4tjn_lkqad*k=dETtXd7EQ^=vwkVBD(GPx{2|6=X$%OALV z`$UDq2YifhFaPt({dZpY{K2)I=m#C%diBns|Ks$| zy^sF;cK^B4NB8eNzV_#rJ?!y;5^a6=_P<}ue*NX{^Y4GSd-!SLkx#vL@Z0ZyeUpBW Ql+ti~^W^BK*Wdl*f9}+bEdT%j literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_5.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..482149b623e1e3e3c027d4705d223c2618bc2b71 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^8bHj=!3-p=BMhGoV=hlG_8F3b8?DctT+M&e?3EA4#|P??UY+Y=PcVE? zU-RkaQ4KrcNhjoXDW?U7N*-Bw<{a~~9U<$_oSC-t>pjnsJ$Ii-ck*AFD)0G$!Pc5> V;tuVXFMw7uc)I$ztaD0e0szN{QU3q{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_1.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb4aab7a4de266996ddb65ea72d5f983fb7019c GIT binary patch literal 699 zcmV;s0!00ZP)x-sLU*5PLh)Ft*?9Prn-yq zEdRbgt4GaQ3=Vs6jV_{ z88%|H>!esn(Rtj*Kj``;aw+60fstbY6=;xMKlmT~o~@OiobZyuaiH_XaXyBD&@RxZ zInMX7<1|iy;4^TgxBQhlF!M=zt))eefZlE3;<}|Nd%)!mFz{r^rtC^VT0%Y#yr0oG zWr4n1pnJ`mTk{;J4?vn`mAnBC4uO#ZWv~0ZyQ_U}|MoQJ_XBOGa-~z`8$SR505(ue zR7DR200000|C=-ae<$x-tN&jg+dGfbPbL;#2d9Y_EG0DwtEK~yNuh0s9~!ypJi zQ6^%L7{U9Wwi0V=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_3.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_4.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..af7a7ca9b64527da16ce172e12e013f3983a9449 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{T!VDxQZ_biWnHil&?9I}%qS*8FrGkCiCxvXveUj08_ z{&~3aZR`Ha{@VM!^|!0%FP4w*7x%B`wohj;zPT_V4XB#2B*-tA!Qt5r5GTgd#WAFU zG4~)NU$X%Z^8thAVD*Rp@6SCHwvy@Hn>?QC;y3eKZGYaleKAHzdKSluGj~0k>=pD_ z%o!-yRW(Q?l2Z#2egA4mZn-Qj`p=VcG&2RQrYC0$mKKVa>^z|mvf$dxsv;y3@3NG!+xl#ZC002ovPDHLkV1k@yg*E^H literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_2.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..18e208d8acfca2aaebc9e778e941d1c4886afc72 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3-oF?)7E^DfIxK5LY1mf41@G^4Smt2>nL>+_rrSvJ2(!TcSoQm3IYck@r_CC5U(rp!z1{+(v^ zS<dM&T~{(8&d i)Sti2ji17|?^<*BJFAY;!QMuo{S2P2elF{r5}E)nonSlw literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_3.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f779c0f5ebef1c58c1e96def9275a89612466182 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)o!3-q71pC+nDXjpX5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3V)^)fasO&=`*a55l|R=<164DY1o;IsI6S+N2ILfax;TbZ z+$z0zTj+oQ4@$fXcNp9aW@20E8^F_D$QrdmEUd%eNgvm0UtH#i8VZsTO z;QW7qhHkvGgBV_Z@RGk4cZAW`xm&LGAue{V= i{!M%S_0aGAr_3euST>XdiSq$1XYh3Ob6Mw<&;$UYg<0|d literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_4.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..092acc1c945f8c641471a85ceb647998c4035766 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^azHG?!3-qVmezg)QtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwo>sC$_-N38UxLc_&JmD38!OFM1Y!cE7ehH=>TFjtz!0t0s gSN;B9B+WWor zS34VTSI?hrZ@gGOzF*wGn%h2|!8oES<`YmIV@Z%-FoVOh8)-mJnWu|mNX4z*iH1VW z4m`}IhK8>n|NrkRn4uc;K4a-dm8pk(*E0Ax%rNKRWL);@jOP882ZC*hvUx@fPbV_2 z`ja&yDm_N_7t@-q4qap31mE48U-sYdFPh!g5^?$K44;Sle5a;u_Br!a>6zY}d3$%; hDy+2cyfEzxb6^CkdQH%!FF+SCc)I$ztaD0e0syeCSHb`Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_1.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cab02de1b9eb98542ac5a6ca30b851de2c56464e GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^azL!i!3-p~aCtojQtAOdA+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqo%jw|zQ;F}GsTGoVt&k|4ie28U-i(tw;UPZ!6Kid$PJ z7z!Ox;9)-4XX$$a|NS{=Ei$Xn=Qwf4QaPd4O*&QoFi=W{1pCgO*Hh2M^^ z0%ch;8{fqA8C&u#eB0)2{q^tPx8Kj7^Oa=}lz$$7KV|RfQm_1L#y;1S*TmQt%6xH? zDO$Myi_Mn0xyjE{ZC8F4p8vbXzI5K2k8IDb9@(Ati|O@kw(qQ6$_+qQF?hQAxvX z%l_K?z4f=N=P#Cz?-%#4=C)5~FpgpLehgH{SQ6wH%;50sMjDV)?djqeQgN$yf+yb* z0}htRriGLL|1VFmEL50%?6_Dg>oN`rV{@x}axZuuWT-~S`p!sYo2}e3Gu?qNgO_dU zre(ovGgPv-F=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_4.png b/resources/g2/track/raptor/medium_turn_right_bank_gentle_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d26c919e392683294406622634851d0e03ab6108 GIT binary patch literal 316 zcmV-C0mJ@@P)@CU074HfAdE2oJPO|ZySfng=n&l54 z$*$t-(VfMw*I+Gq-BO%#qj_DV@ zjqNXAZ2QVI)p4DOvQDcW^)9hSvwvlFUi{;EU8lKk$*hS*wI(*_{vTgq4F|aZ90Lvj O0000ZO^V<%?8xQSQ6wH%;50s zMjDW_$kW9!q~g}n3EpDO20YA?Ge3A{KK!@*tx`#*YJZijzf|_DGgD{$ncDG!Ni5T0 z%JTz898bimHJ&ttdoVW?EfDjZw2fy+UV^9cHnu1Aa=b4hyu2FAUozC5-kM(NeWbYa z{$jVJCCs-snkoEG*5#O3J|~pJ=eP_*-fGqY!Ej!O96#apmfQ@+uA5Jo-j}aD+t^Xv pU9a>l&t+=A#q&$u7A!L?_p=;gvFc7cRRVM^gQu&X%Q~loCIA%-Z2bTL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_1_1.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..07f5e7a40a0de94a26786d9fc8bc96484e354a33 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^IzX(%!3-pY15P^wDU|@95LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU);Z%+rB5JA^@n4u_VYZn8D%MjWi%#}si*J)xCw#ue; z-macM-QIYye0;ySe>Jy#I)m|tKdCE$iWp0R{DK)Ap4~_TaymU-978H@O}!k=*J8lI z8X%|j;GcMo$ZM0y3gP?w^;);NMCd9_xE;c>@Fl~pJAR=X9YV|Nn~e^42)$zd+Z6ih z8~f>R{^^G2xmem}o1Yf+jbQcr@G6?^--4Uw5*l};PjIfCle(t8(l)jBNTKnZiD_5v ym@;&xy*T?=H0|7x7x#Y7P;2mK`?`<2h27DK^^#Qf?1?}}F?hQAxvX#ue;o^Eg4 zY_8ug?qAJqKkIF46i|+_B*-tA!Qt7BG$6;t)5S5Q;#TZwN4^6JJj@4s7oPiHAHy2T z`sntWlpW@?-CbmAPHnt><@p3XZz(gGGTq5(x7Tc#d*GLKJ@ehEvl?^Ox!mVIAIA7u SV`&Y@a0X9TKbLh*2~7axOFMJ` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_1_4.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..312a5c8db71be44ee74aa80bb07708019b7c3c2e GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-q!3-oTncg)3Dd_;85LY1mJY4y*zxIA_{ngIK z)9sD>#r>K`zlF~=gP|EZYDD|4Eaw8GIY=RVS4)O43-CKtFojPoV!-jP}aA# s?){(JpPR(l?kCM!xK#93Yv4=X8}iH*%C}9GfOar=y85}Sb4q9e0QxFKSO5S3 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_1_5.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_1_5.png new file mode 100644 index 0000000000000000000000000000000000000000..93ac6a3603288e2dad64ebc00e43c17e03e5ab6e GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^8bHj=!3-p=BOBPTn9ghciGn{y8?3=Lg-VYdwPVuuXV{eP|)?DCoP^m?>Q$oH5%lU|+8Iam2} n!qkr6vvp(pX1ryuS2@T&ONXPIzv*ZO&;<;hu6{1-oD!M7RT8FHYbu(BbV1@~7ks<*j6gFsB zqtvx%R?1qWhaPh1Avi$>2~sd%kP&+bI4l(+7A!kmoLPcaoWsEU%&_qB-uo`^``~-; z*42&j`E!q+1Az1EudQ9n`cr3fZZ50;e0uZ_z#Lq?vUxe9Gcz-@v$Jz^bMy1_3kwU2 zi;EbB<#M^DrKMu2RALxf5O`S@HBB)L-L~y^yX*Tw6zwNTI-N2!@El0uvZ54fHKK0P zjV9ObNIhTehsGdoj>fJ)VHIv!7mHSfa5S=OFuS%8wkrc)Pxcy<#63=*-k7%ny5o=>SI)8ckJn;vf{203-kv!}NUK!f}TrU5?w8q`hi&XjzBdE($}ODU|pk zEfJhbmUXIPF`B~}9l`d*R$q1pYLHY37N^T4PNqbSRdhjbNR6)A4fG(kqNEj1dZXho z&qG0mVigDzNC#uP#j;N-A+N`k=E!hUCqlatRnS z*hAweUtme9!mw3dsLOIw(>nFK-)x56ZX5)o{rxme5#TzIZH(#Vg+4A1sOm^)j1_lM z@2AfG)SsLTkI^!f&$Gp1nJCE=t#O`aEybb5$*fC_*C-~f04djMk$PzFgrrhz;cB}0h>oq-k)K^YPWkPJvK zq9%h}2?aGYXrRP}v*1|}1*k|^O)FY;s^ye>uGa6{aqLYdG0L>?Dlq0U?-V7MPyqR6$HW|}%f+brGY8BbtBk=~c6Nu`8T0$C*LFeu+zmCe;VpWJ?9_T!7WweQj0mHw64zv3@`{YrWFr4PHz z#S33PefyF7H{bhl)BoY|qwSwo?z|;`eg8q^+uN;GYwO??b~-ow7i+Knd;P`}+!FJ` z@6R0EnwXbz?thg3=S}PM=X=ln^1&ZR+n=vKc>Qqr=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_2_3.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bee3f3abfa2b97651aad0f51aa8b1598c68ccc8f GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W-!VDy93YnGyDa8Pv5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDzgRxLU)=x2d@GP5#*!evU=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_2_5.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_2_5.png new file mode 100644 index 0000000000000000000000000000000000000000..28c7fced1bf326e837afc840faa3021a471f01de GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ^!3-pqZCLvpNJ$6ygt!9f|Mlws@+E8n*6 zzwEEQ+Sz!!dVasS|HkV+8-UV`B|(0{3=Yq3qyafTo-U3d6^ywD8Tk$=h_D_!p8m4v zzp%8+?2tJpU!KbR5*-?vt-Ji gc}dQy;%6V2%9)sTCV#Bi3N)9&)78&qol`;+01N*@RR910 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_3_1.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..441f044271ab1075930f74778246d19c81fd1dfd GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Mj$o^GmyM<_UvyUr5NB7;tHhy*Q@`Jmwz6veA~MJ zvcL9zZ~g7+`HSV_`^EjMx$SqBpS%lH#8?vK7tG-B>_!@p)9vZv7*cU->c!hahZQ(j z0tyYg|NUn#U(h$*WU|`oemO@Ui%YjVI-ZpKRedTBZ)b(30uauN&aZW*a#%@buj^?)OznPpM}2uaydQcg+jDT6g%p zjZB@YzDj=E{ir>sjL%EIy_mi|YVoXNNxv9Q&tda^d{S#F&{+(gu6{1-oD!MF{I*F?L}{)1_KV} zfS*%b-q$CHmkO*t^vk#5q}r=!Yb7NssRc@VB@b6QZ<6@WqSCf}Bdbe-srQA04pP^7 zR*ApWu~c2L=(a%I#mDzfq!w)7nfsU1n1kU#-m>@m%iUP?gza4gJO6pl;;6mqGG{+C Wi+iTfnJYl689ZJ6T-G@yGywp%GETGr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_3_3.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..917297feb32fbde00ba0f81d3b26fc5d8430ab75 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)k!3-pej@wNHQYryHA+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwp1)W=zF*wGn%h2|!8j>>{d%A}#*!evUFVdQ&MBb@0L`;jj{pDw literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_3_4.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f86cdb61496185bb1c0aec50160bdd14af2270af GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3-oH?7j0BNT~$)gt!9f|Mlws@+D_{24 z-tVoy+Sz!!dj4Yh_7arK?UcF3z3Hlwe!3)n_il8-`6Srs4@U z59cvjaO!#ClEQL5q}1P2~UoSoSZso+ww8&sJm{@}Ew)aw5Homy|)w#EEe_5H<}x~{4dzrGhmW%(a(m*Tga_fhkU(+kG= zap&jFdv#xK{l2ADQ`#f^3pM(7R{UEnxL9tfz&rM*+;)%jSpIGP$|weO5`(9!pUXO@ GgeCwC(rAzX literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_4_2.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..81460170fac5b5d7026e1aacd8fec678629c2d67 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRs!3-pY)bo^qlx~1eh%1o(U$6c@UjBKw@@0SR z{oeYkosGAv=TEmcUMwHqY_6Ygtluy0U(Icw&S1RBSPP5SqL=iZX0WHnv)-m+9L_65^k%QEB`SLin~-rzaKc3^$N z%$GN=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_4_4.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a90d0a6c091a2a516af116e28672426c76da941d GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(j!3-pmK2_cWQYryHA+A9Bf4uzjaOKPX+WWor zS34VTSI?hrZ@gGOzF*wGn%h2|!PuAc4+~HoV@Z%-FoVOh8)-mJsi%u$NX4zC{kMf0 z6gXUVdUXE%|KCh8?Ddb3eRCgf(02J)mY6nit*~bN`K%;?{zT48hEoo_$`4n&eo*#s ziS~}85BaxiKX|t4@T!Zu+zy<*IxS`I)DJ~IMLt;*mTYl5yo6J<*;=lnWvhKa{e$Ci gu@8y^9Ze1hC$DC5N)JER4|D*7r>mdKI;Vst08%Jg&Hw-a literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/medium_turn_right_gentle_up_4_5.png b/resources/g2/track/raptor/medium_turn_right_gentle_up_4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..612c83961c4d9122a1b35f77817fff90ee12e0db GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yR!3-oL7w)P9Qi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%n-yR<%7qMT{jue!&b5&u*jvIo+Nvjv*DdmQHdMYBu0u z&V6XY_rKnNIk#w)DqBtL1T(qWQ-vEga?V-2L;Ien{M^qvKhi%fsX2Y;fBl9Z3NiwB zyw}NHIKnjTLGV9ejY?tZIjl|ss}?*lV?E~FxSRD4$9ZXkDwkCWtN+Ef{X8e|w97}b zj(L&D4#^9J^ZkM@f_1FQ3kOG1wsW3Q&zIncxn9606L4o)78&qol`;+0KipU AF8}}l literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/preview_support.png b/resources/g2/track/raptor/preview_support.png new file mode 100644 index 0000000000000000000000000000000000000000..70e23f327921df71054a7d5061be5238b9c289bf GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^>Oic>!VDx=Tv;y-q(lRJLR^9L|9JW5;mVi&wfB4L zuXZ+`Zf~p?z5Fdug0UpXFPOpM*^M+H$I;WpF{I*Fa>4-yAD)OKEe1y;dNy#h^>7&_ z3c7IHZ&0ZE(a7rDA&|mtC}iXyo^n)6;?gagbXAHBF9O%*w!t=SPC z#Ib&fWZcP;nn_PHpLi{stlN1w!u^(|#{{P9kG^|ZO=WI$OSFFRXtE;9d==(u4nJ$h pO{o5f2kj3q&S!3+-1ZlnP@Ydl>XLn>~qopO-x zumOj2lpFn7`T0zR1Nd$)y0-Nm$CS0dOXA#b$j|woS8~U^O7o(@N^{SP z>bX03dCC~P?jpKC6b my(azFv{BlxuF%2t3HOIQuFF4H^X~z=o59o7&t;ucLK6V~m2j&7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/quarter_loop_up_1_2.png b/resources/g2/track/raptor/quarter_loop_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffb1e3fb4ac6045a824e28c3494a40eaa1fcc88 GIT binary patch literal 951 zcmXAoQHa}g9LIlmy}R_T%qmqX7cq2YJXa>;iTpNCt)V zA!r_|M94$Y!U`)IW@W(@JS7i#h!CY{VNv=}B@YFQ_F)fYR4j52e=`Q(-|xrw<@b5` z{(hfaIjo-9+1&wvGY6OVu4ePatX|6Jvi?Egt-Am@xbn`?erDI!*4Ee8bGh8c#>VF6 z=GN90hGF@9etUbnT&YwTh86@~mPJidOw+J!yVL0n20vX05Kn){vlsMCwCs0_8D;Q$gsu8Y6_Dtr)7NSmVG%(U(Yo2fLxDiLoaHD_vi3pYk55>?Vzyiui`8rRo^(3BHfn{>>XZ!e+uw^^zc%j>n6|0s(FS*}<58Q3!E)MCntZHB-EK zBV4%SAU{dpRr<&+gg6aY#Ap)8A5 zhI=O5Zgyugw%d6ob2JhZMXuMiX47D3o25HE;|okA(qoC5*D6RQkVT>{g908UVs`xO z8-*uNf8h4jLm4jq{rhodZXE2ref08Yw|+hU9GuN>Ttq0){`++2h}09rG@Z-PIJKse7Yj-~U^5NafpJzZg*gxERc#ue;-macM-QIYye0;ySf2_ysKR~67B|(0{3=Yq3qyaf|JY5_^DsD}k z7%0@Nz{5J6#?>w&0LJgN~Jpb+R*Of`1jmB)RuuU{9O z(ex`Y_+Nq9&62mL8NN$Z{KzT~7jW`_^uPXBZn%rbJKYl%Eo&XTJmqyHaz1+1voPFS X?aN-UaB_wv(47pPu6{1-oD!M(TZZLX>E&nthZ=z^E}1tw*n1hr{)#=3w;9y*TV(^mfQ# z)YAanSp>AyVoSA$mKf?jSgO-f0hXpNjN1333e>&o@8XXCqrRnkW-CO@sKP-EmQGz} z#(tdwzd9g1w3@>b>4GqIbgWx{x&yrjflJS7CD4t-%#zlRyVWp^MPby!r4lVIQPK__ zJuS6p>Aku1;jQRgYG~;jHC$eUppK>^0e0PyungFdh;-;kSb!t7AtK08vjA!Ur(F@- zvg;7H3t^b$+RvgIWzm^sBWTmR$Cn171}&Uw7FF~JxB6@I(qOp}ykCU&4uoI9;^+${ Wz!F*SNp&p%0000J5Y>7*j&2CeOFqIU7&S5A~QkcU~ zg61%l9C8?z5dsbpVZ@-RERw?RUV!)vc>rfUPYLuny;b%(W``+Vwd7s1g zz0Y@dgtKQ}J_7(}x8B>lUd$JYI={A5bnC%~uK+B;?)HsqgB0$CH@CZs=mgRH}|f^bPvJ;-j9D1bQ~=%rfs}9t$|AB(yki zWNe^gkzE=O%6WpL8HI8cojM4`H2?`f#W1~8GI87?2#;kCBx%%Wj7{^n-$zk|)8!gh zp`v9Ku_uN%cVcuPk!6j+TLNh->_Fp(hMZd3xMxg#YaaDZ zQXfs@Qkfx0g=QKY-;!lp)7(}oucsQTW5#TxyJ&Ycd_#rMQWMjg2rgd-D z8qS@=JeZx1PtXQgDlwIcP_4-%rLn9bN*%RW)(-6MXb@y^nol@TMa+;(rdoBHq}%5F zjy!Z5Bi|fH?ra?A`7z=E6aWLj0q_Av08ODD&W1@C=ANC=%AxDrSr9I>NxyhC?e&{n;!<1q*Kg-QM7wisV(*kkB*M znb-ZiH9YAhr{M&R=R_HpDke~+I#+GVbh{xsX4C7ML%*BG{w#}8K4C-=g@7_ZsK}yI z;GPS&+U|79xV`5xl7z3<TCHe*dU2A8&15x$)Be?exmIpI%+t-22;nbNA7uiyyrBaMS+rll&k0 z2Y?65Pww~6zn%XZT-bm7^v2cgg!%U3Ye!#%kCi|F+xz;?cW!X=x6vEPuj8NJx%c$e zmV5j@b?Ff$eEHTlL2G;Oa=2f=dnDXGlD_)m?!vkIpWeIh`Y$&NHf&wn+5G{94r}_K*5+7a*p}GkHZqd&c{rYVBQ!?tUMY;cbtUza^}!NU8`5d@5KvtP3CIXY z$_QxmB$8SWNu3YLY(XnF%BDfVnw*|a(uFrEHb{bH-pTdY`^ctz@3yeE+qB?B2H{pO uh5(d9QYryHA+A9Bee~+*;mWtI`!D-z z@AuYU?QFbVJ%6!$e80GVHMe~_gYn&#KOk+4B|(0{3=Yq3qyahSJY5_^DsJ7KcAD#m z0*~uux5+R5{QuAA`qpZBg5}S6b`Hd-XbAt}Qh=;e-?NxcKOjDUp%Beii^ZYzD`&aKSE0#Y@JdAas6YHF~PdvND zK0!Yzt7+Zb9s7JGj1#4OSxhgk?A$54pmTv*o^O-M#Dw@uPq<7>S9xw&mTA5IWuhq8 zx0j~3b@P9JE@+v0%8ey{Ma`yKwdilEzwdR_R4(q`FR{^5W1;df@%AgWe3Bno_wMAe U3jBTF3g|NiPgg&ebxsLQ0QC8O!~g&Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/quarter_loop_up_3_3.png b/resources/g2/track/raptor/quarter_loop_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..17e8b42a71cb9372d3bca27f6cca1d3f5f30f4de GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+3?vf;>QaG}Vt`MGE0BI4z50K={PS?-+t&S; z{k8Xd>#ue;-mad%SU$dA-2X)NtAjvAj3q&S!3+-1ZlnP@37#&FAr-e$`yGW2C~z=u zWIXck|3TTVunm^)R1^hN@2(BJc=qg6kA{|GEIIA1XWbZXJ2YekI+S%Y?_AOn)|SD@ zYI66Kn7hnY+upu_e?7iWvu7HI2Han+{G{r6*jM>VhVBF=J)hPzopr E0H!BP8UO$Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/quarter_loop_up_4_1.png b/resources/g2/track/raptor/quarter_loop_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5a47e3af725abd1167d6a6404a9abae8c5d03895 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^57>Qi=gSA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKx$TU(Icw&R}f%d0jeC5o1Y^UoeBivm0qZ&R$O!$B>F!YbSd1F)Q*o zf7a#vZePH9y016w)~24+{T3ZH`&Nm4Nh=L!NIZX+iKTRhCD$nfZy^@mhiNl%!i%o+ zHMK2aQ)c_$o*3ku+uW>@6OobhBK5@mi;rikFt4q=bVD`4x~T7vr_l+&&3qg?-f%u- znW)Z^+jv9zgTe~DWM4f!hvs! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/quarter_loop_up_4_2.png b/resources/g2/track/raptor/quarter_loop_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..15e20504d1e608b9e60d963b1a4fb3117e3f1f76 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQa(g8jpu0Z;-zxIA_{ngIK)9sC$ z&Gq}m{j0g{(;1AvK{6+VsR5QS~{;<+pX! n=bkaTZuz3FP@gTe~DWM4f2cbrK literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/quarter_loop_up_4_3.png b/resources/g2/track/raptor/quarter_loop_up_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8853b2de8925ef0459e783244a909047f58d7d GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^Mj$o^GmyM<_UvyUr5@lD;tHhSN3Z@LFMr#*f4{f> zYG>o^>iN^{jTg(uH=FDCi~Cn|+ov-azfa4a22{#e666=m;PC858jv&B)5S5Q;?~p) zCxu!RcvvnZoNzM!|9@{VV_>1i>6hFxzgk-}yjoX(5-hzCthK0y@l0p1*P86_D_6bh zGk$kUG3rJ=Uq{hf$?V&Q`OP#fp6NAcUv}m#_~!aaMDUKt@y#2)N5`Hy)p65KG3HKz z{i&7TlanIKZ6LR^9L|LykwXB+>oSAQS9 z`hUFq^Kj+c*8P|LwfB4LuXZ-xuAV>L-gvQme80GVHMe~_gRxHU3y?O(k|4ie28U-i z(tw;*o-U3d6}NgPd-EMO;9%u_l9<%K?Yn*M)D!29h68MfGZtq!qlY z-UrGRw#j-iIyAnU7ue9Yu1)ro+Ec-$`d95U9YfyV-;%J0W6#-g{t%@}+e)2{VqP<* zvgm49C|)eKRh-f8bzSSJHGipY=rQ9(rAv(}HDgXQPVHzr^{OcRxS`>d2me+{3krL8 y_ifo>-SOkg6Vbc=X8!+o$zL_UxBrjX4Eu|F*@H|rZuJAYn!(f6&t;ucLK6VrlXxHi literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_2.png b/resources/g2/track/raptor/right_bank_to_gentle_up_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9685a9df9901c8962360c8dbc0fe359872445087 GIT binary patch literal 970 zcmX9-QHa}g82|3tyWFjARr*jc4-u-wGaGSaBWQ%I%N@NVdO4R#ks#TO*g=ut;!z=B zWCe>9&9saneJCu>B7s#nBo76H20gH25$>VG4Es=6h6fg{*oS-gn=$x(-^cIe`~Bee zeV^`ZmyREM`WOHl-`ZTikj!V3dU7R|^sTd}o&re0&Z`$U61uRku(-IGN~O~2^wQGO z^71l@=ZENYr!7<#>4Z@0Vsz83@sQ8b;+7#esEBr&5XxoVZD znRKJcwL4O;uMT`;7&gZfN1(7Wm(j(%RVHkW>>A8oUGUrGVPB8-8*${!r$Gq^m4X@% zwv6?3%x`8#z1(bwqnJiB6&=|K1qA>JK*caUo3(J36%K=Zy~zrqd|`TnDm^F}5MV)ION?Fu?#NkOX8J$aPROl1R`QXz}2cAd&#d zfb=|SGRTpTS4G1HiX3{8Fs27`JSx^Wz$L<_F~V`g|eFFAzj zk$S}0Q^lRt2J`mt$Qz^4l*|E3U?n=M@I+N+%!+7RRi|YQ+*TO4aTK80m=#6j0g3>j zB#TBO_ZWEH>`W$Xr~Mela40B>T&-%RsWWt)rQ1B?3XCt(2ND&R3rHo9MWPOaJRXH& za{TP6%-@fG;DZa>GMsyG@7;uaxV2uq`1}{2{U)CH_?aip75}o%{+Pb|HvjOKYsIg> zeW>i7UR%5S((m_cchci;&Q$LI#9#UEg%{EL1=Gk}zj~!eT;KiV-(r7q@{L!%gL{{6 zZ@zru`_~q4#=pMx)z$O6w{Gm5x%~Oso9w1{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_3_1.png b/resources/g2/track/raptor/right_bank_to_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce894b68ccaacf6ec91b90c08233ccc51b764a24 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^N;B9B+WWorS34VTSI=K8AKx$TpZNZOH&8WWNswPKgTu2MX+TbbP0l+XkK@e(=^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_4_1.png b/resources/g2/track/raptor/right_bank_to_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a29c1199e5a1eb9069e3f6eecdd6d899f05bd58e GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^vOp}#!3-pO_!@pljiB-7*cVo^`f`X0S6YA z0Je*hf6H5>ev0hvd#mlMsIYo>H_zQ)aE_hxBu4cd$C(DvH#?JaLi6?wQbefd^3TJSZ(H|Y z_SfF;t-spYc)NQ3bbI5)^6~xR{?**}=?up94ARQ`-uwY-U@Qsp3ubV5b|VeQiS~4H z45_$PdohsjfC2||K)?-&(%t_Hdkudt{`Gs(Hpi0!{{$XbFvZ;WC^*;pU@3!MzRmQP z=X~Ft=tIXvs8BURIQkGq#3*s*j^3GZ8J9^O`jDLwiv|rWYLN;- zE0j@P(5ii?XAk05Safv^$uPKVgrm&j!Yo)d4+VSLhdl%->|}THGh^`ie!qNPzMl_# zzTb1F)^mpsEgk}Z!)vR{8}U35*O9rYxaWxXZv#xhsgtKyVmdJ~F*!LoH8nLoJv}os zGdnwrVc6W<-2D7}DwD}jRF>mdQREdRuj^X5T&~xf?Y86ly)cZ%V=4{LdfwHNt09ApxT zESMtJ(lD=@=(m#NE{;Z7G?vl6iIATG5CCKh(-H{-$4!E;80M-VbP9#OVccytk>}x5 zGQ*~_LYk3@oJL9prI?J~;L0{%b49BwJ7FPB5lLR5^BSjBgi2FxI+_z0epm}e zt-+p`U?C|&ssQN{5GF=9Q@J*g_gF2Essr7MOdnkp$fQE!#T;3cn3lr1x)_v|eqA5h z<;bh=1vVP`i6l*s5=9qSt|*FCMQId^?P}F)HUq~Q^mKN5Za4s%($-;oE z4D;5g=tgF5+#c=s_s{~FNYJTNE}ap{timulFI41sS*cyEbz1Gv55@x)WFFJSgdwL* zm28w)yCS-cLdQ1xUSrhv$K$(*1&{!A029Cl=l~2cKrsXkm2_lVDC`RaXcW{~aB>g| zfJ8uA3RNj&3CK}Vw}L_o9t2MV&w(Uhs**B_WX;UAEX8%pL12$Y0gAQo0#Ky|)=UXj zT6PF6WXvdUkBjbJy}R!WP(LD)K&P=>Hj!u3sz{XzylJRb&2a5n;M=3nN8Xm00c}@N%g!9MX;YL+ITum(Po;s+39^l`YfRI!oCc3jSFvHtF~Tyd29RKrPq53wR8T7PED}KK`MJRW literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_diag_2.png b/resources/g2/track/raptor/right_bank_to_gentle_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0f746f628fb9620fb214aedef90cb6bdad21a111 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^oIotc!3-o%&N;#eq_hHjLR^9L|9bWJ(X0Q*%RdiS zzHQxq*-UTMi!PsM094Ib666=m;PC858jzFa>Eakt z!N_{hQ0R~Y4~s!%ag4@;|MIG=#z)+k(iJTnEgGM;9QShA!KAQ2kfG8rx%McJ3{wPC z6N5+dpCygD4jd-AnF5Rx7;8B%$fRcZbQ@*~FW}s8V*NXq#$5 Z{gmAbHR)M;D}lB$c)I$ztaD0e0sy8hOZxx- literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_diag_3_1.png b/resources/g2/track/raptor/right_bank_to_gentle_up_diag_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..237580b81b7e1d3dcd5476ccc310e5f69c479c9f GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ^!3-pqZCLvpNXZ5Ggt!9f|Mlws@+D_{24 z-tVoy+Sz!!dj4Yh_@D*5DJa0umRlx5r}pO4C)+upP(T@q7lOX2qEko-}z(n>oRq$M=PB zQZws+#(sfOxJ3Q;3oO9LrxxM!DJO3=Z2QEy1E3Jeofo@{(boFyt=akR{ E0OoUKApigX literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_2.png b/resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b9ce6335e00d6632d7f4dae609ef97c3e02858dc GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^szA)o!3-or%D*K7DfIxK5LY1mxqSEkdiD3wtN+K# zU-sAD@2$Vu*?79WakII8zqo%jw|zQ;aX^S&6;LT-NswPKgTu2MX+TcCr;B4q#jW0p z7rB@fd0Z~Kn9of4@_+yK2#vS9qV}9`S6tLlamq1GjytfWey_m(mGfF4wHS;l@?p1d4FG&l>R~5F}O-e~)aD26Y|LeV5 dx3Bxe#I=ldmBY$CQ-D@8c)I$ztaD0e0sz~8SM>k@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_3.png b/resources/g2/track/raptor/right_bank_to_gentle_up_right_bank_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfc9b906fd28ac7f924ddcb3f16f223cf4b954c GIT binary patch literal 997 zcmX9-Ux?du9RJ?m-0j>d*M~YIM6E1hkbpVJL%{5o8{HAPoXbgta>OIY@=zpbCVl8Z zz}~F0V9@INP_V-=%LuNHV}=n}ae1gvT)-+l39csvD-J9p4+kFdGsocb{eJnpd_NDL z&*$p;TIS@5XHNjY$<+%h7vp;-o>OyE@xJ`rR~>*USbt;Vd`u@MCMG8*r>3T+r>AFT zW@cw+F$|lVo134XPo>johM@(4mt|2^bB3XpN~Kz@(Q3KA-wVTW6frdL97y6qE|<*b zi9(SsSGZbTYPJ-wZFGamU}y^zmgN?7F=b{6OC=iyvsV(@wQRSghn?~$v=7IA1_y$&{$FIbG1pQn{ftT-^;!Kdc6$ z=HRfM;2|kPN&}(@q=m7KRHjAd+PofQD+9wGTRz&8sHDo`g$z~6a!pn63^^#N{hBd! zO5=9zFmTY&Pb68A$}+6R3k6xOsA|1XXjLlhMk8?DL9aI+j}hQHkTr~HCIk{U93fpoo|uCrpK~ z@>IRZJ7w9cYaPezx9g+6A4QK450C{g04x9pAWp&%0~A9NP|-k+jl#Y}g3dsd2R8$u z1V{#?r%;7KwuIa~>XuPx!?E!!hyr9KEU%`_0#&s#OkB>WW`Qn-kXaC&46qD-e%JRm`pIv#dddh$PshRbE%sU5^ z>Bi3X?Sn0Dck}OGzdv(&@we+g-+JZ6e}nD(_Jy~;z4p!B_wJm#yTn}aZhzgmfAg2+ zef$HgvvhxW{o3+JZ+VfFml%B^$neE2^St*?A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?79W@nZS-W^?_1asO&=`*a3ldj{#^OpcjA4U8p0e!&b5&u*jvIklcH zjv*DdwodWnYcSwpzI%zKsqw$P_{O4r@Fda+wVRK>D{@1Ydke;4uS?kV- zRw@=#s|{{-N9L_@=DYU-syQ=bN;c+Ui)@&XBENuPzf-H~)RC x@RifIXKwGaL|wNn%dhH5`@?T7%Vp6Ze6EN6+EarmXMhf2@O1TaS?83{1OR^BTnhjI literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_left_1_1.png b/resources/g2/track/raptor/s_bend_left_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d7bf9f35c94cff8f197b624f21fdecb91ac45f GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^azHG~!3-qRG}i@#1Oj|QT!Hlec=_ky%D1iiFZ*ln z_tszSY`k4Pf3bXgzqr5u#pCrr6^tc8e!&b5&u*jvIfb4sjv*DddM5?)H7M{no2zZR z_y5o_j*KNb-@bp`rgqrpxNi6E_404(+%MnCaOH@qyBM&Azs$fWbcZu9gZEX%7vEO& zD9`>KyL-AguUf&aUu}O@Ee>R~5MO7m&zPi@leQ+hIpn$W!fAY`xRZXGYe;>a^MaA- U-A1cwC7|UDp00i_>zopr07*Vlg8%>k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_left_1_2.png b/resources/g2/track/raptor/s_bend_left_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab29b364e34aeb2c01b11f605e83dfc050d08334 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<3?w=JZgmAx(g8jpAo_p2{PS?-%l_K?z4cc+ z8*f+7Uo0QrFYbTy=q-?H#*!evU)!rf|8arT zW_5o56Fz#XhtHosFo|bFvB-}zdo-%HElhF_*t2q;`$w_!?EY(yWve}XSaFp#jFsW5 U*_GETfyOa-y85}Sb4q9e0M!#cg8%>k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_left_1_3.png b/resources/g2/track/raptor/s_bend_left_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4832797d3b5ee0275505600d8f5740dac67366b4 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3-oL%Fo*YDd_;85LY1mKVJTMxbkIx?fu^R ztDTLvtLHD4kM9@vzj^c)NHt?gkY6x^!?PP{K#r%Ui(^Q|ty2GJz5@mvO;KCF+kXr? zt7iY$`;anIjD=yu6Zg5Tf*##Ux+(XnS6^6X@rdi?Cb2ag*@a0;uQ?3=xEiec{@C~C bqRn#I@eEg_Pf0`r4Q23j^>bP0l+XkK`folT literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_left_1_4.png b/resources/g2/track/raptor/s_bend_left_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5f413eb97283493f5e714114bc66623f7e17f1 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E$!3-qRFWy-Uq~rp8LR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$e80HA|Hb3=KoyK7L4Lsu4$p3+0XZd}E{-7;w`wms3LQ}3U~v@T z{qdiF`IQxx76otLI7tf5o8#j2t~utCdHK5T&r|0g_3WL_Z)Tn+pCfU;Ia;9na@)sy z>&_j2UHY?5>OuV9wSO&+O#fcRe>Ws)`w8tU^4CAyUwryYlbv|Vm-US2?#~z5QQu#D ako)2hrmv4>t+oK|XYh3Ob6Mw<&;$T462P>4M;_v_6vG@~rUH{D~tIsSkVLg|8WxC(;+?`%$9tcEg zluo;zF}3yn-PAKN@y#!|*d9Jw8|rfNTztihYB~REU)F_d6lK2xUB=+)>gTe~DWM4f D+8|iix;TWrpg4}_9$Cw(vvzKW}_#EhEbZ0f#!OKw4G3#GJ Xvn2nomCB+((-=Hm{an^LB{Ts5#A`CD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_left_2_3.png b/resources/g2/track/raptor/s_bend_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..30fd023148f76f96308015de178412e815969cc6 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^hCs~C!3-oHE}r@nNXZ5Ggt!9f|MBwA!<8@lYw!2g zU+rwXSU$dA+`pRJKApk%7lY?kpbEy4AirP+hi5m^fShzs7srr_TT?GO@--;%xCGu} z%zR&;7|fz5D)N6^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf3bXgzqo%jw|zQ;aoW<;|A0yvOM?7@862M7NCR?OJY5_^DsJ^& z^5$b!*rP*S|3pI+%=uIk7H8R zgZjC%D>5gR9!L#SeAJj*)N^fP#9wKfSpV`*`a6953ss9b%yc%o%!@F5q_r_JkK>!% yo|=@>Y|W*2j|(%Q_ z`@Qv7I~#9T&tEJb-!JZ8&24{UtJ)r*BF2&+zhDN3XE)M-oC;4D$B>F!y%QaU4k&Oi zvu<4Y_kXi>*4!@FY`!^VlNc1wlyV5R+N&;euNDzB&JS!@wd(TepeWV@Nsj_k%9KvsT6;JQ8zq)Q-DZR)0!(7Az~K&H6p-QtGr5#bt4ZGrP+(C+#}8Jy#I)icbTN_QFBF2&+zhDN3XE)M-oNP}Q$B>F!y%(eT7zBA( z18P?s|0iybtFHedOB%o1VYzN%9QNuG_Bk$Tw(7vU6^1*4p1MqvxM0`n~eyB)i>hEE+yP SUdsZlW$<+Mb6Mw<&;$UZc~9X0 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_right_1_3.png b/resources/g2/track/raptor/s_bend_right_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5805b0bb598dbd5025b81e84442cb4445a0b9abd GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eX!3-oXbjjxcDY*cj5LY1mKVJTMxbkIx?fu^R z+tu?I%g6VN`&V<@r!yG;z4mb#Pz7U2kY6x^!?PP{K#r5Ai(^OyBkRF~yoVeZSPai| zs{Rf4KBC+$%OJqU!NA1B;-K(BsloXHM;((L``X4CtmX`Doxyv=>dEA9;Xl4ief{jn$zPY5)l2UjR+05*n!!2g zZKv?R^}bgcZybL$b>7Db)41O6xqkD!^&?W*q5vkQ6O=gQ64>v{c# yetJ@GM*La!_ls8@cB}HX+1|N!>3)Zx{|uFeEc@&B$j%44iow&>&t;ucLK6V-=xK%k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_right_2_1.png b/resources/g2/track/raptor/s_bend_right_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2828767b9eab64a7b4a8e3637b8ab9dd880d1d GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^ia;#M!3-ojgtyNHQYryHA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKz@Q-!JZ8&268~VC=jk%?+rIu_VYZn8D%MjWi&q$J50zq~ccZ<%2@4 z3LLBf9yKig{{P=6xOS!F&S%S9(|35dxSXjGuwXyV=$0~TlF(!$4sWG9YvY#bd9Tg@wq^wLuI900nD!PC{xWt~$( F696XVWCs8M literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_right_2_2.png b/resources/g2/track/raptor/s_bend_right_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..51ce76f4519158ada2072486b89626aeff36f439 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO!3-oL%Fo*YDU|@95LY1mKVJTMxbkIx?fu^R ztDTJ(%f~mH>*pKm_lx^ibK9pg81G6}I0RJ3SQ6wH%;50sMjDXg>*?YcQgJJ^?>657 z1rFzE*5&X1|1TGe2>N}*Q=idd(PQzGVd>8UqaJg5yq3*O&8cjds%jat^X;Z~$qU(w pJTtR7mlaH1u=LNIh6RovnHz60{Qm#+yFSoh22WQ%mvv4FO#rTDM5F)! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_right_2_3.png b/resources/g2/track/raptor/s_bend_right_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f75415c6d61d10bfed6871e8e62ce1deec1667e7 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp@K+Mm<3?w=JZgmAxS^+*GAo_p2{PS?-%l_K?z4cc+ z8*f+7pKfowSU$elTtDAfzhB(Hn%h2|!IS}vki9Sey-}aLvogHB t;Ptf?y$kQ`((HKV)b*r(-tCz4?DcmTb0?%ucn36>!PC{xWt~$(696}wN4x+4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/s_bend_right_2_4.png b/resources/g2/track/raptor/s_bend_right_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..db3ea1142f03da8e215ec0d1abc3cd0f17aee3d4 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^@<1%g!3-ojUmwi{QtAOdA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?6&he6zWJzqo%jw|zQ;@zbnry+EamB|(0{3=Yq3qyag#o-U3d6}M_9 zc?um+;9y~0?4$6%K40sI4tqm4`>ti~r?1uQ2t9m;)!?T4qqRx#2hKFUb2!g1S%|^M z?J0v#c;`IL63a&%&HMTc9u*w#lGx~MpQOe&x8LPZ^&cgrLkz1q^A%YOceot$J(B;> qMSal|_X^(A-^+QGZ$&viu<|R7V>z|CVu3W!Aq<|belF{r5}E+#a9Ong literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf38ac939a2b3ff38932eab8fceb30a52de96ea GIT binary patch literal 299 zcmV+`0o4A9P)sw0000XP)t-s00030 zUmxdJBilQV(@!hEOE0TKGq)#imp?P3A776bPYSTz+W-In0d!JMQvg8b*k%9#0Jup+ zK~#9!&6F_?!!Qg3BU-jX|Np^7nz*CMp#`e>aAc&w$FZL?^KhnTTI7YHO$uyWT##SY z)trVd;pt%O>VI|6y6)}nG*5AV1eLBox^hxMD>X{BGgHSeQcInD# x@{P4(?QhDSmyGJYA*)2@jj_n49=S&-p%)s@2fD5pyU+jt002ovPDHLkV1n_Rdtd+n literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_2_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..324127577222075deaa1ba6020556d356d9dd1ac GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!3-oXT>oYQq~rp8LR^9L|9JW5;mVi&wfB4L zuXZ+`Zg0F;KE7Yvzna_r{E_MBfhrhFg8YIR9G=}s19I#=T^vIy7+DV<&Dp00i_>zopr0QYb>j{pDw literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_2_2.png b/resources/g2/track/raptor/small_flat_to_steep_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..837469b5add48e07c837f4f15621b10ab16106dc GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^NATD%#khp{BcFPOpM*^M+H zr_|HMF{I*FYkxFfivbVw@2E>cIq&MDuZXFr%vw`#D`}}%;kk52t%j!S{1t~}V$-I3 zJ(-ax)E+Wvzi;kIg_7)gnOn1VH@7%n*>^>GSyM)q6iai!vdfNbO3{=tDnm{r-UW|(jHk+ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_3_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d01b78bfe4fa2a64dbea0ec701c35e1b2f77a742 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{f!3-oXT>oYQq~rp8LR^9L|9bWR@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{$lxfj>ee=KoyK7L4Lsu4$p3+0Xf#5E{-7;jG+e^g&Guim^ZAG zzVz?^;d>z#J|D_eJ?A`o&~(t>#o!0ifg3l1Dhf_dO3}G`<&6>Fq@`NS=I)J*p3K5t RyMV?pc)I$ztaD0e0s!!XIZprp literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_3_2.png b/resources/g2/track/raptor/small_flat_to_steep_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd6f9e9ccffcba028ec81edbb00930e687a2b3d GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^N%Q_ z`@Qv7I~#9T&tEJb-!JZ8&268~V7zn2GA*Dw#*!evU4g8Ca zot$v*ZJdxpi6b{-tGVZUA%>#+@3-kO3s#%#=eSUpQsw0000mP)t-s00030 zw?F@zGyi`l?^~R6x>NL9?)5PBKEB2=1v;E0ta;SO3ygE-!&PCZ?Ka- z0;49BSomcBsN50zt)#cX9PStWT>=~XqFi}J9Io+S4S}naFX|QwS!XD$L;wH)07*qo IM6N<$g18Z#t^fc4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..919d574df84de1f1c40471e20be65175c926dbd1 GIT binary patch literal 313 zcmV-90mlA`P)kvG2o}#g)9?$sM)*@q00000 LNkvXXu0mjfl|qP- literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_2.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d17a53d5273b397e3799fc0656f8c31c0f0ae571 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol?!VDyN3=c#ADY*cj5ZCw7tN+K#KMz;FZQXy_ zUwgZH{&aie#q#m};{Mg#_7+)Bvw$kqJY5_^DsCkgh=?Qw9BF1{WtE)65-M?N!G;+J jrz|uzVd`5xJ)DW*nLn3DbN!2JKphO8u6{1-oD!M<$I~gt literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_3.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..33d59883ea69522e93b8a1739d19fdd4620a03cc GIT binary patch literal 345 zcmV-f0jBH%y;71J_a(CXfaihA@RfiwZ~F#$kAi==Giqw r%3vB!>Gg{X#@!vB0~XWAFb?-GhEaktaVt4ML?j7_Qv_U&_4M#G^$0{Uv`Ds@0YMr^VIga>xVSjO YH7@qk+}azS0ktuBy85}Sb4q9e0L7ak0RR91 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d3a5d1de107955edcdee160ccf6428c50a3d85 GIT binary patch literal 355 zcmV-p0i6DcP)HG}FWB0ycg=dlfhRw`}Iu zy$_%?-tw(7Z{>qo{NuL@hPXd~T3CH{o}R9cMI?)Nd)V-p?Yn$LX=l9nhOewXXE_|a zY4_gvh^o8qJg=W$=jhAx#6xGtj9;7{T*mCK?!j!~#${a>rmhz`nCq!W_0->^eJ_^d`qb6>Br%^V1M#Q4Yf$)Y<~a%002ovPDHLkV1l*s BpI!g} literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_2.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a1f23819c1e4870e16950eef54de4087781560 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol?!VDyN3=c#ADfIxK5ZCw7tN+K#KMz;FZQXy_ zUwgZH{&aie#q#m};{Mg#_RP%8OiWCSjEv#yE;$0V7;mNvHoAHRI^VhG_9OrCS7Vm(kdgQu&X%Q~lo FCIBx6F$@3z literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_3.png b/resources/g2/track/raptor/small_flat_to_steep_up_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..873f632920672d84b1260ac1c176cea86dcc7656 GIT binary patch literal 380 zcmV-?0fYXDP)H0Z=)Yyj~7pS3qNN7GXnzy0s;a70Re5EED8Vs00DGTPE!Ct z=GbNc0096=L_t(|+NIP<7Q-M61JGI+>@eK_x_!oUS~Zv~viy}q$s;`upLQy=jxzwG z(GkGt<490W)J|Hc34P!I(446CaE+p>$}}3H=UL=ZWl(%eF=5s~a0&GqpwTGSqk0WH zjYb@-p}s`xBSu^^g!kw%LVO9PNkq1&t4AW(76=`O_wX%3N1{b^5i>@>SShT@jDh_w zmg3c98l86UiAs^{*BFG9cm5W#VkmR+J**CZycOfiAPkRU3KHiVQq}S@l$l{lU(8$j zYs?&T5Y22^Kmb0>y*)n2Vv_y3NjJ~9PQ(;_KL#=HT)RtMu`mwVd;7*MMq~wveFSS= a8AP7x2n_&@SFKF|0000PB4hYKjJGW$<+Mb6Mw<&;$T~ CpDbJe literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_lift_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c85314928ee6e91a022648dd98f039c54efd2fc2 GIT binary patch literal 371 zcmV-(0gV2MP)sw0000jP)t-s00030 zUmxdJBilQV(@!hEOE0TKGq)#imp?P3A776bPXq)60|NsB0s;X60Y~X;ssI200d!JM zQvg8b*k%9#0Q5;jK~#9!jg&!>1tADSTLcw>zW;Hju>Wigu2U}|qR(?bOWvn)B;J=R zI*UPlE0B%h#!Zpz;Rr9`%%sh|A-F@JU^LE)s8;7qwEuk{s4hy3+0?- RwQ2wW002ovPDHLkV1fqon-Bm1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_lift_2_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_lift_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..53f6cbd466c2faf46b5386b340a46529e9840f55 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#K!VDw@FP-K9QtAOdA+A9BdARarf9?I=`m3Fd zr`sDZmXB{X*Y6kiujaOAW@ct$Vq#=ulq;H%1yssd666=m;PC858j$1T>EaktaVt5& zLO0_819Q{zYdJxD4946NJ*=f=bK{oeATD%#khp{BcFPOpM*^M+H zr_|HMF{I*FZNInJVFM24zu5;C2ED7lZRb(W`QoN_@9_&!Q#Xd)+-~Z&o>TN(oY8U( z!{07mHLjjDe5Y0YF7(A(XH;J=7GPcYP@}_`At^dbfF<$dHlYUj-IH9mvM~Ht(EG7w s@z3X+0%_Y1+zxMizDs`cdf`6|KUTAQx;RY|06Kud)78&qol`;+0J!d3^#A|> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_lift_3_1.png b/resources/g2/track/raptor/small_flat_to_steep_up_lift_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb52bdbc95c6558c201853cf2094c054ed5fdfec GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^;y}#K!3-p?D5-G*DU|@95LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&tEJb&&%PgY^2nCtjUd#&{$9bU_sZZ^LQ ldhpa)`AH+crb;D)`V=k3JDGZ{D}jbGc)I$ztaD0e0svagJU;*c literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_lift_3_2.png b/resources/g2/track/raptor/small_flat_to_steep_up_lift_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cba1e9d3f77fc345acb4c826299b4c74cb4b196d GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^N%Q_ z`@Qv7I~#9T&tEJb-!JZ8&268~V7zn2GA*Dw#*!evURP@q%ZB5_i!)3K&vMSNKA5@wm_(!Y;{$U_ zo;AMwwu!-J*9E7BlgqyBbJi%{e|r~i&qnv@AEqz-yS-kMp)7prfdpoufBzR4GOg?A Z;P1|0zIf7Mx-`&c22WQ%mvv4FO#q^tS+f8D literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_flat_to_steep_up_lift_4.png b/resources/g2/track/raptor/small_flat_to_steep_up_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..73ea33ff574ab19c52cd638bc95326414ef28f20 GIT binary patch literal 403 zcmV;E0c`$>P)sw0000vP)t-s00030 zn=}7^C+}OU|6d>HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GXw+#0|NsB0s;X6 z0rzK>H2?qr0d!JMQvg8b*k%9#0SHM%K~#9!jg?Ch10e_n)d9a4VD5j|lxClY>#hc# zSf+H&TUx>=zpobrNfjd33~g0fRwF2!Q;NAm;pYmK2o|0rn_=Ou!r8TiglZNPdQhkV z;Uk>QafV0esu5v3+2Bj5Qi^M4bSaPYP&TUy6_1Rve%Um3;W=^3JS;V?VQS-u) z%B~jKY`(@wWpcdQQl%du1Xtaym@9ntb4t4{cG#luHR3lghyp{)1J*9_?>w*E} zn!6L991*wX2 zf4uzjaOKPX+WWorS34U|w>NG!*Z=-tst8aWV@Z%-FoVOh8)-m}wWo_?NX4zvla71` z6nK~&*{46a@c+L!r^_YpTB+>Dz2QmKeS$@C&PnrD=83vlx+pnsFR6L^^yP}bm5fpT W3~xi8ZOs81!{F)a=d#Wzp$PyoEFW*rApPW5z#*Vg#*!evUH;2VPniHu8{e>dqch-iLG=unYf^IU!l`?{@9n^svJXO(~15?}xJ3p-~a W(|#qseQiKH89ZJ6T-G@yGywoe%T+D_ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_1_3.png b/resources/g2/track/raptor/small_helix_left_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a32c6f3d079b4ab64f7a2c0fb9f25dcf381fced3 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^oIotV!3-onPg`0Dq_hHjLR>-I^4IF=&*tSi$P_-WYC2F^(Iqg`Meu`mLANRFXuC-E~#-H;}&6#+nXj3q&S!3+-1ZlnP@xt=bLAr-ggUJB$p zpuoW#a3QSq?*Dz=H|;Wwp1=3r%66t_8J~d&LkL5Hr)HA#WWi6z^fxvg(~s)kvT$Yg zDdnmxlV!iAx1ZE+uR5jd?^GSv5+C?Yx#pUxN5!?T+s>?#^L)RTD_2u|LP+#)zZY!b Xn#>0n7Vos2u^9iVqu_VYZn8D%MjWi&q&eO#)q~g}p3pe== zEAY4k2I*Iv`2RmY)w#h;<8&?a%M1Zc!Hr9%Gya)%Fj?u*pD7YiGVgBA%Syj0c>3+4 zm8*EKD;RcroKwG-=au?y*Ho|VuI+r+WR?ZmOMX9-FvE@eP_JwBvTxsSyqjYc=Mh_b ps?YOWt=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_2_3.png b/resources/g2/track/raptor/small_helix_left_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..25531313a27702902811992d24fe54d7a31d88b6 GIT binary patch literal 321 zcmV-H0lxl;P){@*Phh0!~TcQs5 zeZHI&=roNT4v%S=1i&$pAOK<!3-q#=Gk%rDU|@95LY1mf4lwv*~b6t)&IxK zKMz;F?61AwTYt5)@pkq6>GsC`;{Ksh=j4Iv7)yfuf*Bm1-ADs+QaoK8Ln;_^4>Afd zDGD$joDk{o<^TV!4(FMdM5{~AZJGN;-zH z%l_K?z4cc+8*f+7pKfowSU$elT)$u3zna^gp(H2@q`4%>FPOpM*^M+H$J5irF{FZ# z^mb*C&lWt1WL6cvP{bbN#FY}LP}0nD pblRP=&nNgp-4gW6s{J*K|K%wOButCCR0cGZ!PC{xWt~$(699ezJ$e8D literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_3_3.png b/resources/g2/track/raptor/small_helix_left_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..984e882e28a142609b99d6913f809767ff28fea4 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!VDzcZf*Vwr1%4TLR^9L^Kj+M{@VM!^;bI^ zORKTA0EHM!g8YIR9G=}s19AjCT^vIyZY2u@B_tRmBqT60FxfJsyG7q!1(am)boFyt I=akR{0C$@ku>b%7 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_3_4.png b/resources/g2/track/raptor/small_helix_left_up_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7e588a8ad26c6f9cdd878eaef5fdd1051a4b0312 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^5pG@+E8n*6 zzwEEQ-&=pRv+;KI{OR__i{;~+&Gq}m{j0g{(;1AD7hc~1)WBF0}~mbKc<}yIjNm)m@X`(05C=s{Pk%XPH!&zVIeAo?&KuZ`r MUHx3vIVCg!0LTnYhyVZp literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_4_1.png b/resources/g2/track/raptor/small_helix_left_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..76b25d5e56d1a1f953b4f30c8eee67747359ea54 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^xTs^qpDk76E={#QE`-A!U928Ya9 zb=BjPplEv3>5i-=B^pZ}dYxY3c1ryIl|o%*A5En{hIcX_zLCt^T2jWt{PL9SVGpTt z8Rgu-JeK5ze>x8EJbo3(R6J!$5SN;+*7>GN$phSi+gRUvJ`o55x`@Hk)z4*}Q$iB} Dx!ql& literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_4_2.png b/resources/g2/track/raptor/small_helix_left_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb5adb9f49e54dfedb1457e97139698961bf3830 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c!VDytB9fK>DU|@95LY1mKVJTMxbkIx?fu^R ztDTLvtLIO*H(o3s-!JZ8&268~VC>8JhXtsPu_VYZn8D%MjWi&~($mE;q~cbx0WU9a z0t2I?K!8zUyMf5mDGEG}t{Tps9-WRHhk}w`oOr=uY8Dohl#uY?-rnM;XZRQ-)VXHg T5*1hvG=#y^)z4*}Q$iB}vVk!q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_left_up_4_3.png b/resources/g2/track/raptor/small_helix_left_up_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6ef1d0efed698e06d65b250e6a4d3695ff50c5 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^xZJ*9yocY-y6R4B1B*-tA z!Qt7BG$3b+r;B4q#jW0pH~Cr=1Y9o0tzk=y`uM-Tj7g<0EoR4gby2ZJ(}Q%sU6P%3 zmLY??`oEr2s7ncd)mr6MuU|ICXPhvsy`*)f=2FqZx9*WG{*MieXWMITx7lqSn36Z6 ze9eJ9Asg1E-u5$}t@iHnTMaIqsk!F-(tG-ixsy)B$^Acdcj`=0&GldARf{Z%$yi~) fy8PoQi@!{zYuT8$=T`9p-N)eR>gTe~DWM4f%AamT literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_1_1.png b/resources/g2/track/raptor/small_helix_right_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d10b0c605474a7d03376e9b2148f5c9101663c3f GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^x;B9B+WWorS34VTSI?hrZ@gGOzF*wGn%h2|!C0sF1xOoXNswPKgTu2M zX+X|gPZ!6Kid(&x1BDJNaIgeu>#1s~eYej&KI>Sg>8rZ^j%){Kd_9ue`O|j><1v}E zaHDH+dJ!h}m)!cYj5%b_)OuaXNE2ND%l)NK>&>NGKnn$$^XCZ{#*1d^Gj;X+SVl>)gFYdogeY|j=%Dm?H|`BZ9abK-72j$ mORsicP(rOczII|f<%BI rML^_;v!>?GB})ybgom7)bAW-N@dMk{!`%wWKrIZOu6{1-oD!M}fop_t?hyn*|V0XLNi~sfS+_slqe(P#|-gp9oVz>h9tBHID#pfD$ZpM7kPrZBK z4YTCwxo6cYwa=Nw_vXDh_=h=&{|cwnyVWySp5tD(sG?l6JbdbYm#-hi^Oj|}@&tdc texjyP#HDzF!?fe_j2Oe<#o`th*_*bp?bmyBYBkUm44$rjF6*2UngD2zTd)8C literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_2_1.png b/resources/g2/track/raptor/small_helix_right_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..09a30df0f57ec584cffa359729f353f75a4db12f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^5 zL^BQMu3|7)pw(+=x79EqIoD>6uQdPh=+Ir(QNg0``ufe@#obz(YrAQeykH44Yb}ea QIM6-@Pgg&ebxsLQ0Lte~SpWb4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_2_2.png b/resources/g2/track/raptor/small_helix_right_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8c058e9959eb4aa80779cb1e662ccf32e238c8 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRS!3-o%c^#Vtq;vy(LR^9L|9bWJ(X0Q*%RdiS zzHQxq*-UTMS99AJ=G@~4YG5o0@(X5gcy=QV$no}c zaSW+oWIfo(d)R=3!GL+9k?-CA$IV)9vi^A`k`tW2A@jbU{EU5>2lqDl`g<89s_uBH x(zE!o^JcBsVrQ+D>St#6?^_r(?`6O?`{l(7ULHG7ngNYv@O1TaS?83{1OS;!M#=yH literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_2_3.png b/resources/g2/track/raptor/small_helix_right_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a74b18893134ffcc7363a86e309b4f0a1f17db4 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c6!VDzcZf*Vwr1%4TLR^9L|9bV+&c@U2jhoH& zfADHt1`08j1o;IsI6S+N2IL5Ox;TbZ+)7ReOi4&fFh~GO*E2-UaALU$lw|O9^>bP0 Hl+XkKvj`lq literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_2_4.png b/resources/g2/track/raptor/small_helix_right_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2612bbedbe4c974fec156cc260de0d72b7c6a696 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^5z294ZyL$d&`S@yX`*a55`KOb&0yQv}1o;IsI6S+N2IQoA zx;TbZ+$z1`D0D!9gZY4nN4MAC|Hah>HY=t)7HSlXgn&qH5Ul^{JvKfz-VE!>c?NUdx0IYl#7IoN0ajqO z;wfnHS7LG84ChI-`czd_+1_DM5fQdfH>`xU)V_&~;UVNpIW9T~qr)Gk7Z9_mmU2uN qUuHLh*?jqm_j@kuHMG>@_Ya()9}2Z6pHfi(0000=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_3_3.png b/resources/g2/track/raptor/small_helix_right_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..651d3aca85e1c2534fa489da77489b396f1755cc GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^CO|C0!3-q7a=m*Gq|^g^LR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%75r@nZS-esTY5Zu@iw<0pMf_W+eLmIV0)GdMiEkp|?<^mK6yskk-w z!b8481{`h|y%Kr0eXo!Ed@;{TSk~jx{N>ZPZ9TSU+ov6W4&I54@H%tGHe&5E_2^fI z1}9g`o;kJiY>CywrrRbGe8x-X`m<^H=y;cTZnZ4%+_8I~r4HB5WkvcKZAyaogZ>vx zSir9&^mE^*g7C~^i7&6uW31+v6qlKP$F@Mkdd0aNS+CrmudDUpntRsk<*d7R-g4%% Wa5{vnP}u@>B!j1`pUXO@geCwl?A+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?7Bp{&aie#q#m};{Mg#_UR19_6*X>``-KkYG5o0@(X5gcy=QV$Vv2c zaSW-rHFc6VUxNV$>&y12%B#QSue)sTaoaXo(dIy!#Fbe}M_fKCb*gSuk?9X;5xJB9 z!+*;o?yEeWK^4m0??k-cSw|k;uCpmGSHa8Fc1`G|s+TxO_%0^#;qU UrE;ebP0l+XkKq&q-g literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_helix_right_up_4_4.png b/resources/g2/track/raptor/small_helix_right_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0d646a8b7cc95066b5b9eabbf9c8b60be00f2f08 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoY!3-q#{l5|gqznRlLR^9L|LykwXB+>oSN|U` z|2$mzwsrqyf9?I=`m3Fdx2xw*w>MraAKz@QU(Icw&S2cQQCu6Shp{BcFPOpM*^M+H zr_AQ6g zgNbN%y+=b2qL>l=13t$LL^`4G@i N44$rjF6*2UngEujXHNhC literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_1.png b/resources/g2/track/raptor/small_steep_to_flat_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f78cde74aba00c0323375a47a212ded481c3537d GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8o!3-qdT;aS0q|^g^LR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%75r@nZS-W^?_1asO&=`|}!R|A9&wOM?7@862M7NCR@#d%8G=RNPuS z*;}Ypfrn-Cf+K?O>+gksDm>m2ernh1BUz s(|p%+_uNmLJzn%pfjO}Hw&OSclltsZ2Y8wqfKF%dboFyt=akR{068~wzyJUM literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_2_1.png b/resources/g2/track/raptor/small_steep_to_flat_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..01b9d0c9b747f151f648d33d2773b9caf0cff04f GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^GC<79!3-qDPVDIeQtAOdA+A9Bee~-8@$%2Zm2X@3 zU-sAD@2$Vu*?79W@nZS-esTY5Zu@iwV~yRB8-Pj~OM?7@862M7NCR>rJY5_^DsJVT zi{v|?z~LHrfa%wZf7fp>*gDxZUPWA}V_w#xP*Yv;t>HmeC6{V%-mO}G-Z5QF_GF_4 z<2>%YL35uMGM{nz@muWDi!-mUS1;HalW^}v_=3hxzU8{i?ekuBTmss`;OXk;vd$@? F2>{$mOz!{y literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_2_2.png b/resources/g2/track/raptor/small_steep_to_flat_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee8eaac9c1343de9e176045fa68dad09f6a7494 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEp!3-n=)%Sh@Qi=gSA+A9Bwsrr0Z~fKI#@p5N zr`sDZmXB{X*Y6kiujaN-XE5$vH~&3Q5o1Y^UoeBivm0qZj=!giV@SoV+&)LX1_usi zZG~|Ar*|d2OD`0Iq)z$ z?4Qdr`!BoOTW&3l@*Os5X$99GRV|j9u6Diu*fks7c`BXk4-L-xKJ6FMWH`~GlfN-H tCr6?1X5U+_8t3XKH7GDJ zA9T3D{pbHdF)^(NQ)hRocrxsGb#j{`L%`{uv#JajRxW)Re4No}cia2Jk1AfvGQ0o$ oT>RmdKI;Vst0BIIQV*mgE literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_4.png b/resources/g2/track/raptor/small_steep_to_flat_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea7baa4226eb54e0545dec089f5e12af7f66ca8 GIT binary patch literal 351 zcmV-l0igbgP)U`0000mP)t-s00030 zw?F@zGyi`l?^~p+f4GFuU z)<3CwMfHSwHzAZ#B2p4+s$>)z=8=*x6EKXIip-N4>VZP@)Ev33eP^p-RCwB@)JYD*APfai7egE1{`ajsFjSQiZ2wg@4?Y9{aHSMPOcbkp=bX}Oi^{G+kB`~U+|s)nPU)s)!m8e%yLakG2j3I002ovPDHLkV1f;Ii?{#) literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_2.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab26e1cc9ace06988d6c8f4d7e29516b4217c9f3 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol?!VDyN3=c#ADbWC*5LY1mKVJTMxbl8){ngIK zi{<0{#r^$cmD+(4j3q&S!3+-1ZlnP@vYsxEAr-fh6AB9x0z^cVIHjefjhD2wH5O)M aXfW(M#$K4V*zz?{A%mx@pUXO@geCxk7a}_V literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_3.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b117af7d875aa6c8182083b197f0058748ab6252 GIT binary patch literal 355 zcmV-p0i6DcP) z;$bEtoP;S zX%8m4SdonyE2bDS)=Y!hE>U9;n0aY` z3C<9002ovPDHLkV1g)! Bhlv0H literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_4.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..62834e6d0fe9e2d64004a0402e531a9b083763e9 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+u#0(@e`Zg^FQk(%kA+G=9<)4QuU-sADaQmYO zP*BFx#WAGfR&s$rg2a{+fenf(4F^>l6ipfuvzQndnS@g+uIKIps$=kU^>bP0l+XkK DUfCT{ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_1.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bc8d8eff10809b375848f1b9b59c68bcf3eb53 GIT binary patch literal 365 zcmV-z0h0cSP)xYR?jji1m+3gb-#U)9tF+B|NF-XzH$r1LSjPqUPHeA7nOtACQcGu|kQCuFvE` zlfqB-IOMC8@92s7MH_pbxlB!rySe2SSlIbB6Pj*sd6$(fy;?Q82hU5Z`odRfNK*SF zdS1O_z4n2Z)r-ah_m~54tK7%t!V_EZ()e{8;?;Ph&z?V&j?U|@-5>V8Kjet-vya-n z?6!|Gd@=Xg14#R{`U1`aj0dlFc_3X~KM%V+?DDWxzaFs3!!G{=pS=zFD`@a(00000 LNkvXXu0mjf)H0id literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_2.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e5038896cf7987310ef3167c10d010f0363df3 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol?!VDyN3=c#ADY*cj5LY1mJY4y*zxIA_{pt3` zi{<0{#r>I?nVFcF7#SHAF5d;IU@Qsp3ubV5b|VeQG4OP845_%4oRCI_ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_3.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6037e049754f24c7b1e1567520778736b4f1b162 GIT binary patch literal 383 zcmV-_0f7FAP)H0Z=)Yyj~7pS3qNN7GXnzy0s;a70Re5EED8Vs00DGTPE!Ct z=GbNc009F@L_t(|+NIRNl7t`(1kiLRDk%Q{?{1OkICEMFDbKIE10t$QQq>m8&C$;5 zV;>!MNRWJ()|nB-e7wh(M9^LW<(|bMXRavVE1<@FJ0uWMh<}4@_momT&eF30ZUAq} z?0cFnqeL4eJcf?lkG&%i#JhNm(Mwj{@Gi=} zQVbK1VHSkSgu#A0VB^GI9^yP2GC%DPk?G-0;#k3Urb0-K6s9;@W)netdNB8ZmGugd zts%0l9s);8W{?^oh;#<=$7AWcR7r2bYn(?`*!?&R?UZ~CUql|bg*+g|1(_9OR*+di dW(AoQ{s6bl4NRl4Fiije002ovPDHLkV1l$JmT>?8 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_4.png b/resources/g2/track/raptor/small_steep_to_flat_up_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6600f3de42f2ef1e29a2e05762b59e2d5faab46d GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+u!VDyzpK}LMLIFM@uFu1jFZ*jZo9i<(Gcz$U zF)}g+xfVU`0000mP)t-s00030 zUmxdJBilQV(@!hEOE0TKGq)#imp?P3A76tvFOL^bdka4U0|NpA0s#R5ggxm#00001 zbW%=J06^y0W&i*H_DMuRRCwBrlRWfDBBpzy}`z`VlhXID>Je;z6!;n0j z%j^|H^5tO7;iwsy{o$zD2AV(42K&nJS$UAAdgewG?!s&vXhbrOM#17|?VWWSHKAD% zhr~UFFQ{1(zL?E^sF{A?KvGBF1o}wEF(Yi2omr)p#;hue&a5h$P1X0Tig1l2SqGvU z)p(0%fpDUzYs9JVb44AfMr%Oy9Sw?Bjn;zxG1^+;G8FxfDzdhQK}3|b{!QKMV*dg_ WybLDBwnjDp0000%Z(1*wUQZ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_lift_2_2.png b/resources/g2/track/raptor/small_steep_to_flat_up_lift_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5f15dd6566bc5304217a1d848345592ac2cc1571 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEp!3-n=)%Sh@Qi=gSA+A9Bwsrr0Z~fKI#@p5N zr`sDZmXB{X*Y6kiujaN-XE5$vH~&3Q5o1Y^UoeBivm0q313X;P|e{<8PyeW3x>||#)ZR76gT0e9~{^=2%{scyS|Q)3fPEmdK II;Vst02V7pHvj+t literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_lift_3_2.png b/resources/g2/track/raptor/small_steep_to_flat_up_lift_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3b88bbc76c0ae6d3691019799214a3640a02c0a0 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEp!3-n=)%Sh@Qi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%n-yR<%7qMT{jue!&b5&u*jvIX<2)jv*DdN>4g6H7E!i zKCsC(=+FOV+f@rJ{Zu@e4lK34-NxXs^<#wb42G50zGmHOOevjfHsRKs{P_|Vx90aB m6?U%5Eakan)%O`La literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_steep_to_flat_up_lift_4.png b/resources/g2/track/raptor/small_steep_to_flat_up_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0f59d768165b225c85c19cc104d02e447fb4c5 GIT binary patch literal 396 zcmV;70dxL|P)U`0000sP)t-s00030 zn=}7^C+}OU|6d>HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GXnzy0s;a70RiDj z!_5Ey00DGTPE!Ct=GbNc009I^L_t(|+KrS!l0+d0LxBeMYy80dFWZZ$nkBUBS4kk0 zMC759>SyMWu1^WAsg@pUC52@g>82HQ?=v+$varO##Zrs(BL901?lSerDi}8IV;bod z^`3JvJ1sf~m=ft)4T%j*@yL?8`xmYIuVuez$!sVSj}&UDNUy1ZN5wr#3ImU5q?9*- zjV0+(hNrV(?2%j^;oeY5ufx9skEllzYhZDt_lBI!9%!6LG?J~^>Evt;2b4XeHRR}) zg#qJkSu{38Jh*J<{a|ur-;PLnEk&O**&}MHGawS#NR2Z&-FqqZ#*fC|fYOyC+BNtN qOzy6a_Wq&4JFZGLe>{z|h={&7B@TkEqpMf|00008wikMT{OJz%)4R3U|F3=B{ zIK@DKx#>t?$&G2t=j=NBNZfrH#hbn3;<%2z;VFnGH9xvX_E)V!3-qj@2mCzDY*cj5LY1mKVJTMxbkIx?fu^R ztDTLf+Z!*IkM9@vPiHVT*cD+7RKZvhBp(sI0gOk8_-=df*Qe7Pt_V1f7>#&c}@MraAKz@Q-!JZ8&268~VC=jk%?+rIu_VYZn8D%MjWi&q%+tj&q~ccXgwsOK ziX6_48zg@G|Npi^er}xaY}W2Mo(`@qp|f+cs!oL6f6H=9yrFL5QXS!Y-#D0NmLJ*g z;9KM_7c2U)(`NdU9s`Armg0sb3z!c7V~(FES26ebDK@L@SqEOIhw((Ia45gak#Y(> gSbLCvf8S3wizQ4q_Fj=z1-gL2)78&qol`;+0MXx5pa1{> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_2_1.png b/resources/g2/track/raptor/small_turn_left_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5d7cd566c52532eb5efd09e3e2905b5c7808f6 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3-pmTkq@xQi=gSA+A9Bf4uzjaOKPX+WWor zS34VTSI=K8AKx$TU(Icw&R|^q) zxbMopb!}>{doqiSr<~ZZ!J@LAbFq}9pz-k)t4?b8j{MM-TbWzLB_W zV)3;l(|JoxS6%w_ORkUYpbP0l+XkKTL2nY literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_2_3.png b/resources/g2/track/raptor/small_turn_left_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..15177d2efb5814296f849bbbd749c2898bb7a623 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU!3-pmTkq@xQi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%n-yR<%7qMT{jue!&b5&u*jvIsKk4jv*Ddre2B`YEj^E z2^602Zo_|8e^$n$j@<9RXV&E1uJUw!(tN*6{zQA==hc%ds*WCFj@hHpaP_yo9Ye~4 z(=Ws0_V7Ow_x!!WwVS>1BbVk#rWwB|2H+kL5+Ky?u9^ zzkQdh-qR}i{f*e$16%(5*{hYyzW?zwW8>47>;DwmHyW_1ZBPGL1aumMr>mdKI;Vst E08b-kB>(^b literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_3_1.png b/resources/g2/track/raptor/small_turn_left_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3504caee9ac175371d418112588534896f43cf83 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6asfUeu0Z;Ky!`WU<=fW%m;JT( zd+V=uHr}qDzgRxLU)y_$B>F!xfcTY4k&OiUtrpG z?RR{I;p}3q8arv0hP8LjlsRu)F1F{4(6`2kuFbQe;!C_P*SekDroFP$xjN*;7a5%+ zF0U^o_=JhR-G6(rYh!WpeUapQk7w*X`swy}1+}hOS~rUPMALt;`KmCfWHXg623pGC M>FVdQ&MBb@03*avO#lD@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_3_2.png b/resources/g2/track/raptor/small_turn_left_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..57218e339066dc1e69a3b26371a244310efa7ea8 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)N!3-p?G=I|sQgQ)4A+A9Bf4uzjaOK<9{g?f< z_j~KFb~c`FZ@gGOzM9*dRJz36+0IplOmC28YF0jVPsxzbS2|*UJjxJj5A|J`ypV&B4tF( zpo}7!)KQ^GCjkov?1xi=l+h0XixiD#9i0U2hsqVb4|P;_=m|eF2G9GxJYU}Df#-d% zZEoa_tR7zlfFt?y>s#@BJg#Gjg}9$Ce*QPW0&HH`J{Qxuxw-lI`Gtjr#l^*?rKRQN zWemd-iNwmvN+z4lG7K#Uyex~lu9~J{+jhO)Y`6U&7(~%@He+buIgrGps-}xYqEx0U zRj%HUT5YYoX%xAnG$tYH3Xv~RhnAUH~i2FqFOj*mPrO0rzl^+u`Gu2#FvX6XB)!C*R_BEStG>lo8Y2_0PSQ-zUG8LRH3 z)R{ViS$lFgJU~e*m0~lQ9FdhNTIV=Zlqy=htlX~FdaZU8gtHM3nuwWl%F+m@NHxm5 zSCKo7LeH~?-Ns}X%x3$D2T%Y^00+PW=mCr|Krti%l}+TiC>ly67!1^S@N*DJfMh^M z22~m4O2{vweg#D?+z*}wQ2<54ih9N>Q8g#ma`jHf4nuD;2~n(t7l0`zc_$;egyxe* z#5q&do0U2T_5PthLc=MU2A05bbV}ukqRf;FqGJ`^n$_`YVc<=o0L@0MC?X$F1PH}h zRARXY!0mElJZ2m92Qd46K~?2qQ7@MbhPGL{&NH6CbVYg~Q4=MLGy+*9YB0#>Q7Fd8 z&pwm9d;bUC+1ild?B1QrF}apse`)*akFH#Q`RMy666?3n?W=BdP9@AP9A|HAQ)fBq3aJefUv>X-j+9e?%4{+&(z!`&Ct kzb?OZ>ACAC)!*lzy16_3Qg}o)5=$*J2{>=hI)`07$^*^IK~%otc@Lot;f25_5BN^Yily z3kw*AEiNuDEiI+9*(^;{JkQCpsHz2B*Q(WOz20oMy&yPW+ClLn641mUpko+NdP#lB%2Hk-)zaXOXd z(v*~86++O+yg{ort2g+nE7m%)(^I^tm|<{A$g(mis!T!SHB&O1O4HN4&*<1qqU1EP-6tt8*Un`}N>Q|pl2bD}ZY>PlQ52xbfDuLH0g3>j zI14kDy92yhX$*%HU+bs&+Wd=@DgWDux9BacI& z7#}}#YWe2vA9(%Dh73>re&gksTv^XOz4gGA4}KEwe*5G~V)HNKu}`!0Yo|#3;>X$N zet9eR;}fm>zJ2uicf0qV)eryuDd_;85LY1mKVJTMxbkIx?fu^R zi{<0{#r>nqJNahQZbZ+gTe~DWM4f6^bb` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_4_3.png b/resources/g2/track/raptor/small_turn_left_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cd969789237a44d009ef36696b22b6675a0db4 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^dO$3|!3-qh#P{9+QYryHA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wGn%h2|!FcD4Wm-UWj3q&S!3+-1ZlnP@ot`d^Ar-f#UUKAX zRp4O>c#}WZ@m+m9v#8KRZ3}I&eoj`Wh?DzfuR1klW>=2x`-0b>9oRK3R|Q8+Sv4`G zXRhf>)lFHIn`Sn}y6O!gWa`1$?hnUAN^Kd)v=iZ~-)!&KJB`r)r`*CC*z7(8A5T-G@yGywpT Ct7NtS literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_1_1.png b/resources/g2/track/raptor/small_turn_left_bank_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..39f61f46f993fe342b31bbaa77912d29942d90c6 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp@K+MCz3?%z9kG}>|>H$6>u0Z<#Y~%m+>hGgh|Bsh{ z9d^yXo!HU`8J$J)bwua5j4YCY#7!nvA b7$30bE@b4W_~WnuXb^*^tDnm{r-UW|^;kTx literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_1_2.png b/resources/g2/track/raptor/small_turn_left_bank_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbe526c54bb82eac9cb2b7cf5fdb0682941a531 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)p!3-oN7|wwNv;urWT!Hle?e_m?8-Fg}{l8xQ zee~-8@$%2Zm2X@3@AuZ#fxU(G2lyR-v+=g!e<)jz7? z_bU2_+q9({CM4Q2UNyL4^k!ml6qAR{CHrG4e~uTwop$H=RQE7O8NoHC6LmwG1aFF_ lE_f*7f9sL<{;U31@@M!mv+v;gzy!3P!PC{xWt~$(69BV9T8#hz literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_1_3.png b/resources/g2/track/raptor/small_turn_left_bank_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e25523f2c206cbd3da9af8f62d9e237cd2486f GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRa!3-oB#YF9alx~1eh%1o(U$6c?diDQ!`RC!v zx2^jx`)lv_)?e*xyj?wiy1nsY`S@mY{eE%(YHs_&oO}Er{Ut$u!3+-1ZlnP@KAtX) zAr*|Q2RnJ040u=!o<{{vxKSVak7aj4tW8c|W&BCYkmqXLpHgbgtkeTn%yUWDC)@Z< wmv8?`J_!~LCad3D@7(_4VPd~6W0zRHL#?#8#Y%^{Kyw*9UHx3vIVCg!0L}J6SpWb4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_1_4.png b/resources/g2/track/raptor/small_turn_left_bank_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..044bb0ad8dd5cb4777028c6d8f3affa6f079b73d GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6I!3-n=6T)nOluCe4h%1o(A20trT=}xU_I_{u z)y~G-)$^y@8!wiRZ#LKO7xzzRFrImF!DgU3#*!evUU^mK6yskk-u z;zPc}3LGp6-E%m;{+(Zb&?|jYX>gt3Wc~J?Q-q8!eVbvpI8WKwU^?%jEVCPaF&k`` z3!RajZhFIK*X4qUX0^M$!3TZ3KZTUb#&sqr{hDvJyZcc8(mqKBueDq2rX;`Hbw%R; zo8C@7t9?&-HGY}+x3kT8^H;&Xn`7o?k7=r3mKC33npu#&-2CBh?l(r9oeZ)%_kfOL N@O1TaS?83{1OO!TXPp25 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_2_2.png b/resources/g2/track/raptor/small_turn_left_bank_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e12837d83af0b3d1a96ef1f97095c0579decf282 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^96-#(#0(@QewEe%DV_kI5LY0*T|IxXe0;ySe?gt8 z50KAT666=m;PC858j!>1>EaktaVt52H=$yy6a(`;#@FQ^`sM&-7(8A5T-G@yGywpz Cq8l0j literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_2_3.png b/resources/g2/track/raptor/small_turn_left_bank_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..11ee7e8d7f0f95558c0daa2d50e5e9ef9236d693 GIT binary patch literal 1019 zcmX9-Ux?du9RJ?#PwrM{H+!?=ip!*E22t~nK^}reFSpe*av9684`pV%fEBCDScD1z z1NP23io~;OA2O&Kv5Xw+@<@KRl=xJu;3obsCXOq@H1oZ`F_8AUcR3X ze7@fc$ComDcF*kwfIW-PFPwRH-+BH5tJ~1&d zIXO8sHHBf=^z`)1%uF(!PSZ5S^PD6JijvbbwNxtAYV~H*_5Ds54o4%J0*(byh~;vL zLIE%8RJp>|EV0p)y_VJvD!snVlUSCGsY24o;-*5>HF~4Ow`$pTQw_JugV5d{`k55S zBosL?C9I)htxCMxNQ~MkG@#H(Mmr`#ei}dokTFb+$Bk6VBnX>jH$-tOpYIyRt$H1` zS}8h_=8}|%voeuU$*e&uCaYO|$q}laWVdBE%;QXo%A{F|6ci?>@@iQu*X6pax`E+` z)nL%*ZMWhaBqT`Y0oQ>rF{Yl(G>Ke`Q-f@!r`bc(M;juUP?%IPLsqhEL*YG53Q9`1 zruCiDuvOa*9Mt#Y35FoEG?VA}q9j!m#VQt?l}f8#4_vp`=?sTM1Su7W8b&wbyqA*N zWWL9j`#F11^oC|<)Ew+|w^59Y$C+d@gQq2uQdm|K#IhVM)0>s*R-+mE!KlZ9EMS@x zH)Px_ke1FlWy!PhTaM9fS%a=W8r?!1Ko&p)FaaEZEr31-D1yi%T|Dz=j&^vuB~Tra9Awi-#*slF zi$*So0wFqn=E>OYdq42zi6sf1{rmScKQjoVM0 z{b+ePc3|^T_?BUabJuSE_+j?o?E1>9?|pG`_3+AC`u!DW{lfB7YmY5H{OFPSzxMq( zd+wpNmB)X2jtuN!y1wsPM*V;Sdv`Lc8MtN*5c X$j^S@Oi^^A zpNA{ow(h^|uf5+}f3>smcJ=&bbNzmCf6EOM8-Yq0OM?7@862M7NCR?GJY5_^DsJUY z^yE9@z`=Y_&3W3t|JCkuOZZr>Z**`wls0#X<_o=?A5XH)4_sttxwha%>cbPWHg*&R z+)}UFH2W6cWUFr3_3KV67cQ^AUli~venQISbT3=Idny0FtE32D;hnj4ihWfyAd%8G=R4}q0 zJSf;=z{6rtX=pR!_5KKskDiY61>XHz#c`e|wD3FAM&k=V*D~fW`@SHB$;+(Zgw_WR jE*92H!U|6gJmvp*M9A|{!PM12;}|?${an^LB{Ts5V|5&=FTu0Z;Kz54%n`RC!vm;JT( zd+RTjkM9@vpIX(!0+eGc3GxeOaCmkj4ahO~ba4!+U<^HYknw;553}L?!dZXKpIyGB z@baaR%ldZ>Utb!%c)_}KanD!o4329Xgn0XwiN>z!Hn)Dt&}#GePdd;D22WQ%mvv4F FO#rlFH#GnN literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_3_4.png b/resources/g2/track/raptor/small_turn_left_bank_3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..27a09c2cd5d08a68565cd3cd1fd6b514cbc9c4e1 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^Qa~)p!3-oN7|wwNbOU@sT!Hla=+*z@<)4Qu-?r|* z?61AwTYt5)@pkq6>GsBp<>ULs{j0g{(;1BI8Kjl>z4-&wz*rLG7tG-B>_!@plj`Z> z7*cVo_L8Sig94AsMTKU=-h2Odh`pG^e>?ncqlj4Ba_iaI&X3&8#BX(&ZV;HgIrE8D zh~H_8y!@{&+0xy+_N@FeHSP-=$Gyu}rb*1c_AlA4AjvZ9+VNXKO{LQ(eK_24Qf{-j Y?Ri#gL%<3h1gTQ6;2~w^;U3Q8Z^q#FeILJ<@Are> z_kFyznO{C~><9oXZ=72{pUhK99bHT%{kzqL2p|PpuUt5r(3zQ;+1c4tDm6DZH$OkW zu&{t(*y7^i($W&1%jH;>5k)~!Buy(ChHhC_v)S%;y&xDw(KL=(1_T~tDP1gP%Vn}s zWomW4*^)b5wdWiCus#|)B8?UJv@YRhfwVQMZLm9*=r;@ft{&~yCXus04e|u2G*kqz z6|AFUemyhnWaB=8CJc&IbYLSC%Y|X=s{z?Kbj#g3aax zoRLXhrSdvmFj>v!jh1M+QlqChebtLfBu6m$9Iw!l#uar@ugSHx+V*rWG=r!SPCBD~ zKO;a^0lWlc6(}3y+IYT86@5Vu3-yuVOzi;e$aGfYh)SNW7x<1Q_6#Mov|-a2yVlfi z?uRZK2bnBK(FK+(31UT2>YCQ7RJ!%L-)@JVHyRA4(c{F?K0h} z3T{p5wMx6LIrLkTVGzfANB}4R7yvea3$P0?#sDRdMN~DA>!4^TQ=qfZ5WverBm+_a z={Tyh$dQp(M*SL!9C#Ew2a*T{87phJS)m(tzT;@Uo)w1fWD=r8izoqGO$#RmZmh3eIC1^j_1B)fviih)6}f8{@1(cCQE&YG`>o4A zUi$R27q_-f-%PKZ{CxSwtH=I1O1$O0{`W7pKfHDL!uHPLr4zij^vTM#cj=Q~zkm1p zZT0yxUmkz+x6`+O?Ot`RkRQqa-u>ghr`}jYKRo=3SZTp~UqnAu{yf*da}j^}ka~9e j8DcfNckemNd~kg8ekvDRH}5~4xPpzdo9o}6dHeGJ>3OF( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_4_2.png b/resources/g2/track/raptor/small_turn_left_bank_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a78617b7ab87847a97ae2c68271983a80abcf159 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~p!VDxo^Ia$eQW60^A+G=9<)4QuU-sAD@2$Vu z*|=Zazna@VoxwQ&g3k`18XZp;$B+s})`N_U4h|v?8~3u!XDbQ5KbLJ=-_nH{3Pv3~ kPR-{E-%p?S{?IM^k~wVGa?ZXI2kK++boFyt=akR{0JI+~P5=M^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_4_3.png b/resources/g2/track/raptor/small_turn_left_bank_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c777adde85724fd7a3e16aea5b43bc335744fc24 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^x;B9B+WWorS34VTSI?hrZ@gGOzF*wGn%h2|!C0sF1xOoXNswPKgTu2M zX+X|&PZ!6Kid(&x0{L1DI9x9>eOeM4^?m;>&#N<6x~={GyG6i><8M$`+6vp<84YH4 z&l#^+@nWNPEc&cwBai%I^KlvRHa;+~V)?$L?;urMc&n?WVI2 fQ!g7l+y0H2SB}j*$jRd;(1{G5u6{1-oD!MO7E1aTw;k{0a!|7TMo$INUhT)U<< zMul7ZbuuD`z3)cR0_YVHQ*VTJp$^e=(84HVb~k|9Nx4IGQb^b`lA_G<0V$sKgHXdK zGrPf5A+d$f&J3}Igs&=Sw`0@^supSvS6QQ2_d(D;zU9nk@CuL5h)Jx~LrG8+P&H#okY6x^!?PP{Ku)=*i(^Q| zt-1Y6$0sK5=|uWx8w7 pa#y4OD|Y?<_;N;1+tR~%n{KmiSn*@lGoTX~JYD@<);T3K0RY`4Ttxr? literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..25d30809d3a80373926f27243142a36e693a28f3 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^#z4%&!3-pS1eYcNDU|@95LY1mJY4y*zxIA_{ngIK z+tu@@+Z!*Ik8d{D?-%#4=C)5~Fiuc8cNeIRu_VYZn8D%MjWi&q$x+}e7*XFcUpM9!* z0z@ayJYBUVW!bLWNp0HbP0l+XkKzWrr~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_2.png b/resources/g2/track/raptor/small_turn_left_bank_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2235653220e8992c1c2014fb0833b2b4dc95d412 GIT binary patch literal 309 zcmV-50m}Y~P)I?0000gP)t-s00030 ze<$x-tN&jg=T{@!JCD;(E5A!Gt3xxlCvT%4Uym10dka5j05hriuUh~B00DGTPE!Ct z=GbNc006m3L_t(|+LhEv62%}01W*USG@AQg_ZMdROPc+wZqcL^a%$nHR%OYkT^p&a zHf^enF}-RGXZj{eRl5wh7?9OQ?_iH3U7(S~#e``yO%4eHD#p4XM!^$Z`NN2jF+;?h zi#bH(CY~ox3Kmi9GDzNyeI(f|dX1Ny`49&jiWE6)hd6wbl@empV`5_ovV}hciDJ>p z#wB6_o>{Vu`6oPgm7jpmGx=iP3}5-L>=u*y)$$^eR-xwy4j~E4iy$xF00000NkvXX Hu0mjfXJUE@ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_1.png b/resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b63e84d7892ea17e0092f49280c100de73d991d0 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eZ!3-q5rDLmrltF+`h%1o(Kil|!z54%n`RC!v zx2^jx`)lv_)?e*xyj?wiy1nsY`S@mY{eE%(YHs^<24l}tSuQ|5j3q&S!3+-1ZlnP@ zNuDl_Ar-fBFL?4DP~cz+wEwLJOTMf=)539FgppBUMqfqP68-pZ zOvzKuD=8ReuiZUinwrwK{)IYe)4!MZY-i1x-X6Sb%FV>@bxSK{Utj#M?RjVOBDp7w YzDJp|4k?Pr0BvLNboFyt=akR{0Cw_G1ONa4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_left_bank_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bc557cee514c7365190ac469ad58cac7b71d3be9 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^(m>3^!3-pq+%$6mQn~>?A+A9BbNTN7_3H1VSKqeo zzwEEQ-&=pRv+;KI{OR__i{;~+&Gq}m{j0g{(;1AVC(peL)WBF0nMiZcGYts@vM zXW``1aC~Rdy(kp{!2>lWUwJ*ZtgO@&uixgmdeirRk_GYIu~n*1{{`Qo bnw!lR+-E($Ccx}1&`t(VS3j3^P6-Qd`$e|vrMg+gVy@MaFZ=^E zyU!k6E&2Nd&(_Z#JOK-KY?SO1xAu%Yd567V_NGY%ht026&+A{a>Uxb!*uF(;{_t#; z(q0v(`qJc8X#4;0R6Xw7N&B7@noAlR^BByK+-&#Kg0ub3x`5!d>lbWnTK83P#mwqS l+X|a^Nk=9B=jc%T#KL)prMp;pZYj{k44$rjF6*2UngBFrZwmkb literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_gentle_up_4_2.png b/resources/g2/track/raptor/small_turn_left_bank_gentle_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..feaaf91ac95bbf84123b6ebb00f24b5c362d23f9 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^CP2)`!3-qB-OmdFDYF2d5LY1mf4lwv*~b6t)!#?2 z{vR*@JY4yZJ*9yocY-y6R4B1B*-tA z!Qt7BG$3c0r;B4q#jUv$Zwnn#;9*tFbn=$U{Qp0FZb9INu+`Q!hC0t3=A1s`e@8X# z#Ro|Tg-88%vP)JmDG2R1bXn5<=`2%pu6XD4@NBusQLgu|Z#%PYT}IM@GXVutPBG@Z z7rFTL+Qws3XP#X5ft_<>nCQijKxY>xj>{s`JY3~;k9@YjYaY7UIb~6t;xD^nx{*a^ ydRLd`{>$^fwyUEgv??X)k$;e2=%U}vZ~55W*)wO<9QFjdn8DN4&t;ucLK6V2cz09) literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_1.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b07d0800b10c826197fc6b004e515c8d1a1e744 GIT binary patch literal 305 zcmV-10nYx3P)P001Ni0{{R3OVeQ@0000sP)t-s00030 zw?F@zGxK-5|9>a%TdV(HALmyi+dGfbPb3b5W=MKvq5%&tN6((cgbxfz@4~WhIYr6QHu*P)k!w|_Zc2IM! z7ImnkFbX>}ZKw36SP6m3D^r@HWgg%PvaGSHm&05?;I+gKhFJ?R0+$@j>|ER1GPHtz zG-U=rHXvJL2<#_Rqd$VzTMZ}>(VVKRL>SR#KJfJm`V|Mq_D3x=00000NkvXXu0mjf DV61uD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_2.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed421116d1b2e1cda0484ae4b1fae7047e0deb59 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^(m<@q!3-on?^tvYNT~<-gt!9f|Mlws@+D_{24 z-tVoy+Sz!!dj52K7j#u_dzYYiVhycTqYDK@(8@*eh6{2Gn2%I0Zl zt}mLM8)Gj|O=fua($>eoOQEX&wpa8?-^*b}r=wS9-3?v6es}4CYf2tv@eU79eU)jE zUN0GNwI+elG)z4*}Q$iB}5*BXQ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..895462d4fd708ff34e9b0f7d11bddd2bd9b7a158 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CM!VDxsc|S7(DWL$L5LY1mJY4y*zxIA_{ngIK z)9sB{hW^_G6lE+4@(X5gcy=QV$dT}LaSW-rm7Ku9C?+77wBm%otDFM|4lpoqr85=_ T)J=U0RKwuu>gTe~DWM4f%QYba literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_2.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d261f0201309d975c8b5257697ec5959a4344cbc GIT binary patch literal 962 zcmXAoZ;0D;7{{Oco4eJc(+ULx=0&+h2of+a@**#?nLD~8<1&`9zK9Sd+d5VuN(SW! z8nIxxMG0CZH>wm2(iedhb}u4S$RLA)6~j124>MMz)4~o7Qsjht@iSxaeV&K!o9FZ5 z`#ifBx65m%UONQ3?xG+ejS>jhDCkR<7B#?ZiXAc;9eDb#92 z-K3i~=eDJ8Pwj`sFt*1NPoS_0m(#_fRUsUW>=?{`LkQiU!n>ci`UDPUE#W#&^P3`p^aQ);y2RJ zJ&t`eiSh-Oq$&(s<%PN|+nUy{*L$`db~%DxYVI#WGQnDO%$=LzJ3ow#@9=twFb!MDc9QgDPT%oVQfMsZni{ z_nUIRT^;z=C~Qwh(QI~vcz_Ck0pI}m00V#t1}KvxAk#p;hmw&*g3dsThoB6J1V{#? z7m>{%PeMTr4Vx(O;Cb*Yhyqk3tfm#MI@NN@T~F)x8*%JUr!mS{coi5k$2&#IBh-M@ z6V6E$e^&1wyTg-Uj7BM00G7bYbY9_!n#`D0(Xnb?%j)~BIP#}Sgl1z_6j1;u0fe$F zni=ke@P^r*OxU*jLdI|?D2iOGX{M<&bc3Z`p78}H6zKzrnpR3kC6Gm;HiH5l#bS2+ z?3=lNp8vqDOWQJ>{qyj8W3ICuGtFTaV;y>kEbOJ^TGMmN9u@xt!4_1oWHe@3tC zaQgS3zJ9v*^6tH(U!FdA=fADJo6p|*{5|v9y~X<{zrOl2v-4>C@XEg*etdQP?k791 z|MuOD_wRf(c>Lt{gQdTJSbO+|b?f{Y`>#8DZui^Ic0^^s4yDw6)b5?h*s!&^y>a*L HcR&3fPT!(Y literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_3.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..24b9c15e25d85b3ac8d5d81141d8f8a2c3b08aab GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^#y~93!3-p81zAIZluCe4h%1o(A20trT=}+j|7Cye z{oeYkosGAv=TEmcUMwHqFYaH>ZQm195dc)jSQ6wH%;50sMjDW_*3-o?q~g}x%NK=O z6*yP|j6@#(`~Ux**a@^>yt70w<&8kwm#IZ_ zSORl9dDNXl!}aHs_)gv%U^G2q@12pS=htwVB}UB#O|t^(fDEe?pOVPML$;8H}8}ecd%pV*hMaU{7OYKa0moWax8&t;ucLK6T97;x19 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_1.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd57c53e88e667c435748e5327987e9cf289673f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoX!3-pW)`Xb@DU|@95LY1mf4lwv*~b6t)&IxK zKMz;F?61AwTYt5)@pkq6#q#mh-1c?#(q%w(j3q&S!3+-1ZlnP@>7Fi*Ar-euCwTHP zC~~mK3KaeXno#KI_$E1Ymubs`)&oZsnJU@@tK#lx^&NT`{F@`l@t#eh|M8HJM9wEw zdJny>)O0V|$zc@ZlJ`yOGi!9j{iS8GSzW(dDt#=E%O>}&cp0jx|C!m!ktxgip)McL ON(N6?KbLh*2~7b0pH0R9 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..82a909515e2bb31c6123c1c0d5d2c7010c555fae GIT binary patch literal 971 zcmX9-Pl()f82$EdcDt@YW_4tPL>MqiT5^a>#1vA^)^v?-woN6_AQ1u`Ww1d~8D*4I zN0`cp0Y@2@QRWbE4#AGHhaBb*N`wXH5Ot|zi8|nbBNPl8aFIoSW+^HmIYjguEh@B{D#naySFvJBY zs8B2eSp&+&xNcGEQ+g;^vDO^hUg}0@PoWDYM^q)csqsBi9N21HH%D!I;@8u#eHi;_ z65$1oqBWK)3u0AOo2J>RR{PCn*zLwaFg`d)(-Z+=0oBIX9xe_Dbx4=TVq>Cv)9N5~ z53>IBXmp5HXdLH?MTsn_G-L9-Eh`NpKUV8ETl>9!62;kA07J%X6?Y8Mt=>^4d4R!0Q&$F3{Vb5L^T`v9!f?E1r`e}0RjmU1&|8JDxxNf zJOu?6G;E;6gX7>ikVViGtYQ|OD&2CWo@WjQ^*HvY(-`GmL>buHir^L%k2C_xN_aQb z{j54TY!8ouF&d>*0XPzq7+e>~ipti?vg=g5mNW2MapX^v2xVhVmQesG0fh1_8oAwF z5cOJTGT}PyyRe5tQPW4Q1v)p{H6286)V;d`Dr|980Y&zYaUc^SR6`@p%YkGv5j zue3h;A^Yp(^Ox||&iRGg!%L6t8Yi`DU!UIn;_d4jJLuLb_SNGXFZ}V{m!HmDzVFuO zzdW&i|CJkSlV5ND`_RYl{CE2MSI4O=zjpme;nB65zZb%_Q}PvAf7V$0$@}($@@IL+ P0k+O=Z{B$NrFZ`a%H5yz literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_1.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8690a429f350587f9354ae0361eca237184649a3 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8=!3-o5L`>fTDT4r?5LY1mzh3=)^y>fd^3TJS zZ(H|Y_SfF;t-spYc)NQ3bbI5)^6|~)`u*bm)!g>!492mqp7R6sFqQ=Q1v5B2yO9Ru ztn+kn45_#^^~z15!wMX%0lXsORcHVI&vg&p>|@P&=ew~Im!gn&fm+{$l1lhdY2>Ewl-yl+#s#F5`@ z>cg82y>mZ>JhIW-eO2Fh<+)d$o<=Lrr6gaP+*2P_P3 z3^}e1{3U0bFECwycS328&bijleifCz`AHn|S6De_b`FVdQ&MBb@05$%3 APXGV_ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_2.png b/resources/g2/track/raptor/small_turn_left_bank_to_gentle_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..17640d973c69653213f767c9d90b2caa04dc31a0 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^#z4%&!3-pS1eYcNDfIxK5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDzgRxLU);Z%+diGam|L;v8Bi%>NswPKgTu2MX+Tbsr;B4q#jU9q zPxCb!@VEpfKUUoK^Z)y`pVlnk%zdx6dhx~vjw0>@j^|hAe4gPd!oB3sncG&+cKd3+ z{B59j_T_|XshLyVUAKN*>2hzQ>nh3mQ)PGKUKLxums}8D@mEIh;WfWCd%PK#?f$fI ye1G+O%~jW5_bPYYjxg2u8#6i0uU;(gC98!eyOKfukrtq97(8A5T-G@yGywo}e`L}C literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_1_1.png b/resources/g2/track/raptor/small_turn_left_gentle_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7a164e1967b918bde1f7c4b0faeab4a41fcd9f09 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^l0a<2!3-olSd(`GDXjpX5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWI*<8P0+`pRJKApjs-y(wtsG6}P$S;_|;n|HeAZLT8i(^Q| zt-Y5H@*OtdU=BFs!EyT6|NYhzSL{xZSMyzbTwPiubcs*CB~x0!%xJa=&!_P{xs?>( z`C|T(zd>xZbN!BP+jHaM+az`k+XF8c{jRgbZjP9F(J0-%kFC04--)`AG9|WCA)lKf z6c+t#+_X$H@U+k7vso#x!~`ra%q?j=v1B51ztqm%UQ6b8Oh2+9*4(1a&0+R$rGRNQ w2Mn*gbvu8H#Zigp&56i|5=Jf#E(&`XPnNPQoiI0E9_V%kPgg&ebxsLQ04Cvci~s-t literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_1_2.png b/resources/g2/track/raptor/small_turn_left_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0ec18f87209cd2f692d28da92582df11b4aa56 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^l0dA;!3-p&?A+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwoJy#I)m{hlQ)4t4U8p0e!&b5&u*jvInz8{ z978H@&Ao6?=!gObb3n(URPo>c=iheh=dF%dpFhc>|OG+`%uu9 zjfdhce94$?Ujc@U8}iHZqaRSv5P+8-Z8y2@hb0k`_j`|6Z5}1KYDuMmh)Ri Y?w2eEDf2Y90bR)8>FVdQ&MBb@00#PMHvj+t literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_left_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e6866fee737ed10d33ae1e4c96165053d67fa4 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^Mj$o^GmyM<_UvyUB^Tfm;tHgnhbv$9*WT}~zuMV& zy1nsY`S^Zu|7vdgbOz%Tp{spB6^tc8e!&b5&u*jvIjx>9jv*C{Qx69E1v4_Z9<=;s zy6OMfY3t)YYd8v;7);K$diS&Kb**xI$=zDNr`&zHaVkI8zus2aVezCmyxe%b65sNI zHG6g(K9jE~<2UofbEg-N7Dn2BKfGsh@P(tRkFAp4^TX&HE?d qe@|z|WtF>sbnV*{cold4Y>#It)zcQ&e`^MG5QC?ypUXO@geCx6aA0Hr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_2_2.png b/resources/g2/track/raptor/small_turn_left_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..452394c53c31444b2f239e3d07e7152ca7224aa6 GIT binary patch literal 300 zcmV+{0n`48P)AC>V*}|GXVSc%e(>q2B+K970;FOhmNeL_|>?gS-l4 zzexH7LqszFM`o|hCw-9E=#uNaBGM*zNHXPxUhI)&eN!odbX_jR@zO y0KHE@nZK?yBi`=ACFyiK%{e8NKx<8Yr8yrt2nde$TbV-u0000~i_B-+&P~c!m zjTHU;pWWOwW9zv>wb>4u>U*~x4rM)ZbFB`;!r6L!4Q`n~)=WxED{ctiT_a&^(Ud3Y w5yj@1zN_%4XR*`uZL+f)AOD{-{ql5anMq8ME>W>|Kr0wLUHx3vIVCg!0D37!X#fBK literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_left_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff75c61382ae972bfd7e5baed4f6579f25ede88 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eZ!3-q5rDLmrltF+`h%1o(T)z8%z54s;)&Jw= zpNA`7_SfF;t-spYc)GpuV)^)HbNzmC|7vdgbOvL42I;`P*V%!37)yfuf*Bm1-ADs+ z$~;{hLn>~So(mUhG2mgo!172)`QYFD-N|N>3Eg$`yS?%yHTNgg^ClK8suOHp_jYfl zyjVi{)P-4p7uh$j>( t1~XTf%B7YoOi+9uJ^lIFty4ZR{c>VmqImenexM5&JYD@<);T3K0RZabS)Tv^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_left_gentle_up_4_1.png b/resources/g2/track/raptor/small_turn_left_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..41f9ef996e8de71a7e35f1dcf29a8e00da39b969 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^MnJ5S?mr`CpUU}b|yLV&1CF=06I^a^avu#1=yt0kE-faH5V7FCMliXpC3%b`iBJQS~ zk?n{@5AX?b1=9cP)&IxKKMz;FZQXy_ zUwgl|{%U9A?dti9<>ULs{j0g{(;1Ap6^ot$l`@tD`2{mLJiCzw z%l_K?z4cc+8*f+7pKfowSU$elT)$u3zna@VoxynXaTgPy2F8*gzhDN3XE)M-oYkH# zjv*Dd_Fg$C)S|${eBn}*fY{&v=kGd7r0$&%v+cXNCYPY1x~p>I?3ouE3^Z@q&X~cF z_HOR4ikNQk6JHlh`xNqer@%j^<6L`O;+PBnc3MpAU;WD^eZXM_!MdGNhn9Y*`*5L6N$gjK&>xLv4&RPd uw|^x%soW~m7k^~6LnOKL#J-8X|5?3uv6^g?+BF~OYz9wPKbLh*2~7ZiCv|QB literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_1_2.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..271b11e733b0bfb5d82a015932f9483e683639e4 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^CP2)`!3-qB-OmdFDct~{5LY1mxqSEkdiD3wtN+K# zKMz;F?61AwTYt5)@pOCRW^?_1asO&=`*a3ldj@H%Fs)Fa2F8*gzhDN3XE)M-oJLO< z$B>F!QzsteYf<1~eZA>JRP>+!=kH$Gb&y4L4)^q#P8t_yY&A4$m2`OdBj(ki@OSg` z&Ho14>qP}+eLntAP*?E7oc;U#Y$vrdFc_bH`Q61wIB?%YSJ~jz&#vTl2T$F_@nFN+ zYrku!+^ONL-t(@bA+lb5`Xh6n-y7#|Z~Sbfut?q`j;m)*)3Xmi$1r%h`njxgN@xNA D)x2el literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a852cc576bad40049a3cbf779316c9de16c5be18 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eZ!VDz)UT>%dQU(D&A+A9Bf4%zq=+*z@<)4Qu z-?r|*?61AwTYt5)@pkq6>GsCW=KB5O{?**}=?up94AK{W{@4%H!&nmJ7tG-B>_!@p zlkDl@7*cU7IYDFni?jyjZCkc%`O?M95f@omRVnVYZVwPJo$+q|bZWK39?`d{0&$hh z9jB|Gm9WnUXS?|8-PxH>71lAInYUg2)alcA?GEgyF+X*B?szopr00rDw8~^|S literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_2.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a74bffb64fffc705fdd4b2df25cf9cb289341721 GIT binary patch literal 960 zcmXAoPl()f6vyA}>~8jtHR6aP%^`>Xr&l`+JVUiqY*)q>r1_T}ydAHH1v|6Oq zX1WgV^_AgBi(+$b3Y zC?u~@l0nyPR(E-`FLnaC7peY43$rH45sXyhRa(}$h9MeVr903Dp%JEblJ(NXaJGtZ z0V*m~n?SaKaxrdDl}1z}7L2s+%uIjjCg@0^D>_G567AIap)N+Ins)T5XU>DpGWJ$! zfaVEa;V8P!a!onpA07wKfha!>mP%0P4&%M0+ z&*LBX_{xC_=kNddUSY27?_Ie1!mSVPUU>TOm94$Yf7@r}60ZO8%ZF!vxLlr~=byRp z<@=KH{WmwQFK+$z?_c;?Rfb2y`xbWoozFh`_Cd7%;EZ`)yptckn(tWCduuTNIog2SC_x9~at7~7KzH`_9={4`A|I&?TU+jJ~Eq&c9$gqF$VDHB_-u?7{U&5Ma literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_1.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e08844cda56bb54e32b21350bcab4659a42df017 GIT binary patch literal 1011 zcmX9-Z)oFm7=E{I%l_PqqaTU}$zkCl1TC67A_gvc*;!}CGM0lX5i*Qi4~qoM9fcK) zSfw8M5VhXLS+E`fdlr!C)6>&4 zGcy>5&Cbrw&CR9K=`_P+1c8@jQPUK|(97krPhA)>GLgr3Abl<*csZ4(t%^NOV$TiDH(va$G|bT812zwT@%-yz(G$ zMv;elA)aI@I>)eiUMR}4rD?Tdv1wUBy&m~~cYl8{7$6{Ypd5^8;6jU#+jPDwRC;sJ6127nFV0qg?wFhFBS0xB8Eb5Y!pD9{l1r*S zrN^8-P`qKWHFDa=eiwBHR1#Pc%VuzeCkrxD%8RyHaI0p^t45*Mk3%%Ge@?=Gxg;?#`Y&cw_1E zsif=RXSOa`;q`-OzFB?$$=g@%u1F(zmByKHUC(WGT15 z@c(3feVY8>=GE!F!GGNK-#`ATv$Q?=<|y_2&g{Rhe`h`NDo$;F^^~|ZHVZ4~*OqUc H+kEGLqXV*u literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..53413fecf13430fb936d70cdf5e2efe18bdfd1e7 GIT binary patch literal 299 zcmV+`0o4A9P)I?0000dP)t-s00030 zUmxdJBilQV(@!hEOE0TKGq)#imp?P3A776bPkReLX8<$gj-|W+0004WQchC}002ovPDHLkV1h$Cdd&a; literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_1.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..957b4cb5a5f630219b4e295234d368f3befe269e GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T3!3-pQwnz8?DU|@95LY1mzh3=+y!`WU<=fW% zm;JT(d+Tpk&tEJb-!JZ8&268~U>w8f{TQf@u_VYZn8D%MjWi%s7LZ@&^<~IL2iA`p5#+yy|oRuzWWoSLeYk20(Oo5q9jJ-t;F5CMV z_xf%B&bXIfu;{s*+O6q@t4^#pe3p3YgxR{vmqyFXb{T}_oR!rUTjg;=N%VAll3wx& zZ=Dp+E{Tg?`!(cOe)+F`(?>VlJ@V1x856T)E(hl_Ol01&S)h2&)B9Y;)-7k|mhCEe h7x4L8+#}PU3{JA_TuSF_BY|#a@O1TaS?83{1OTX=Yv}+0 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_2.png b/resources/g2/track/raptor/small_turn_right_bank_gentle_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b94a70bb419a6300cbfe58b69ae4aa67f7a95c1e GIT binary patch literal 323 zcmV-J0lfZ+P)R5)x2I#cM*M6>m@TupUv;iX=2X zSYs!#<0WwxNi^{}_gG;IDeE>hHZ$2v*BbyY@*H_Cge6*hT)m7Pr&_fTDT4r?5LY1mf41@ediD3wtN+K# zKMz;FZQXy_Uwgl|{%U9A?dti{?Tr`9$M=i-S99B^GZ-&8o@@iu!&nmJ7tG-B>_!@p zv%}NHF{I+w)GHT-S`;`~141}V*8Kl}Th?g#t(#(d&&#a$(>xGkB<$O>{!mGZ2uG~s zUH-EYiYhe%WsOhG^n+IO3#`;kTPaq0F!IW?(CoW$e1ExDT+6LrolwKUyzSq=x~}zH zfm@sE{Sk>}|nrU@0SnYwxm9f~oFR`4@4FXhxMeXxD0z^;Qf zK^MJs7BdCCGF`J+ydcny<7sF1x-P{Bcf1$vI%4zlmxI>i2h96^aWqe@J(mOY1B0il KpUXO@geCw87SmEWS|Sx3Ak!>yE@{4KeH@+?>)ZD`#$*I zd+*|Q;p~~UGXQY5_`=qubTVnJF3qL=A9;TlU=A+6v~wY)Gcz-@v$Jz^bMy1_3kwU2 zi;EbBEiElAFE8iv`8>nWg22nNsH$aM*G$uFwK~0?=lh3IluV}#4Lk>uxKb`>t5u>_ zryCa6YD?Xo(jVwSXpJY1Kw%|rMH6#IiLh0&qcaDlFld#6o)!%oapasNegOxCf*KFD zjCD0^U}Z+#>@>hpOrxoSPHlwzJb(nCV3?N47&vZ|q{DFsk~FMTMuu^x(?Np)&Sdj^ zj+O{cAqyH+G8on7^tNESVzVzhf#O9Kg2m}Vo|7q2Wy_kNHKayI>3EtK8h+Faxm zkl`UKL#_fu9Y`BvJGnxSEDv}sELmgSNo*e-NK{s3@mhhhN?cbJ`nnvN>ZqkpTr(N8 zPC^$={7jZ5sS?9hc%dfCma4XEwVq`SI-St-#)pSVk|4k}AX^yI%?N#54yejlXiUmZ zTZcE=mn0T~_Z|&0)6}`QdcTgCb(OoG}!_u2Stf z?>6LqyE1f*(V!iV{OR-#;sHtkI)Dw}0t^8r7@!oAfa*GO9Tbfu5;O*yJa`3&BtSAC zEr%=yITG@!C}^O_f&0O;APP{Du&SCfYE;uMbRD(dH^b14;}E4C+0EU*MtpfhEjsLD*eBHBjPX&QaE8TxJ<`Di+3MG<*`B0wn3 zqLIoy0B+XXlL^~yJ%AnrLb)tgt7^TjF|^6jEuL`&W+2js5*3&7NFk6xqBes(9))6h z{On^Zf8PIrtCzNA*gU@VdP?3cZaug2=!YNtSUmUE`s(J(zZ>Vp?6=nDzG|&r-*|_} zowJMaE0jkV~b{r5-Te4fk%KTA)&7+=B78^3-31ONB*N%@c6TOU7t?e_II|GNC^?X|l{ dr{CS1UH^3Ft7rH8qtp=;FKlmp`TXwN{{sV#s+9l$ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93c2906f48479f9df263284a9296544d9716d7f8 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoX!3-pW)`Xb@DU|@95LY1mKVJTMxbkIx?fu^R ztDTLf+Z!*Ik8d{DujaN-XE3&BkPbXGTLq|&u_VYZn8D%MjWi%9-qXb~q~ccTh1*;Q z3^Hq)x2d_1DeEhngZHA=2F!KRXh6f@6k_+A>ZTOO38R2ai9&yI7*)aW% zpX+mZ?Op2e8YjdYr?Kb$F5jT_lVzpUGL9eSH=hPcJ5@>Z_y1y=6tZbr56~(GPgg&e IbxsLQ0P5ySt^fc4 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_2.png b/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd5028ce9e8310c0d26ff013a77cd4127a8c1db GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^QXn=5Gmva>@4FAAR04cLT!HlediD3wtN+K#KMz;F zZQXy_Uwgl|{%U9A?dti9<>ULs{V#s3bO)+qED7=pW^j0RBMr#O@pN$vsbI`K$SBn0 zz{7mt%Onxz|Nqw)YbbNCgI8e_L PsDQ!K)z4*}Q$iB}DvTX% literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..83b553e581aabf8653792cecd6a8e2f2388b8d12 GIT binary patch literal 996 zcmX9-QHa}g9R6K#FvdHwUUhYZ?A9M07$~|*G_K4bYWp3kw_$y$;HLRrKP3i zME~de$e`G>&tbOpeSdG^6vpDalnWepYVR>b+Jw3c}e)08PS71-CTPF4B#% z;8m4QqtNrLVYe|E2D901Bmm?AOaL3e1Ly&aF+ee75tU8kxhNXS6c{Yj1@Lna$$%6< zMh4Yb>&Lf!pzNo57v8b2J2Fp}9#t~RgWV;eGkm*T2i!>5h6l$=@7f>k0 z;pd)7-F?`BofBIMy!88xQ!%-?xqj^AQ@fvBP!A=ZTwDAW{rqX~{++izuAYB!?S*%q zfA!4T(JR;Q9Py=_hkkMYcrd?qIf4H9{49R?+L8LbzjpmM-aY;HgDXD`HZERY*}VGR zx#vzl@umI2rCVQbA6q}QxUl|g^0W41hqsukJKMiP=1k)02Y0v0?|#_1`Ni&!?F)zh sJGb`!-$!AuBAoqq82owvBl-LEt#9sKa_WP)wg8(OTkBuF{N{)M1D*r2hX4Qo literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_3.png b/resources/g2/track/raptor/small_turn_right_bank_to_gentle_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c42adfda9b6b14551aab6ccf6bdf953a5737dd0c GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^#y~93!3-p81zAIZluCe4h%1o(U$6c@UjBKw@@0SR z{oeYkosGAv=P#Cz?-%#4=C)5~FiuKezaFTLu_VYZn8D%MjWi%P001Ni0{{R3OVeQ@0000pP)t-s00030 ze<$x-tN&jg=T{@!JCD;(E5A!Gt3xxlCvTTOGov40gEuda7f*W&KW6|lKL8s5ubX}V z0004WQchCeZg)mjz-7(Z~Rl(zGs-pKqxroCqays4aMAv}f zw5TSKx>Kl5J1^O7fpof}iA^G}(&>)sp`nS7zIuhENJ&Y5%c7B?2$>h3aFw0pg`cu; mmDrsT3OEj&U}`j0lUHNfNgaiY74}P)mhq zy}dzYp-=3n=12?!Sp-8c7$UB{2QXlZzW2ZkL&FHbd5@`N$R8tlE8IrOjig6iW3{D5 zW5(xdl8%+PW26cu?`s|Nr}CcYl0*h3ov2WoNmBx>e4{ZmtYH`^5LS=id0xvnP_SrtQ1-fIE_1 zNvWc-w8w#F%x3)H9tK6o<@XAewD}R!ftJV`%J$H-p^_RPB*;ZPVck=}5J-54; u#1+3v{s33}D_0xOjspk#H!cYI#e7qSV^SZ(@jRgW89ZJ6T-G@yGywqZ0dlnf literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_gentle_up_1_2.png b/resources/g2/track/raptor/small_turn_right_gentle_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8868c20cd918a89c8f727be8e56698cb3479e09 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^#vnEaGl<2%>?n}Z3h)VW1=63(cmJX2f4uzj zaOKPX+WWorS34U|w>MraAKx$TU(Icw&S1RqrdSG4HDgJTUoeBivm0qZPK&3DV@SoV zsTXhaH7IbfCA?u+^5x(9+ae2ZY&u+j^b7MHmWmVG1O<-?@aqUas+ym<>+;1Ty52dQ zG4mHDKD%_-V)+xf^}9}52QBZX^RIOkpHcr*_t8J$>vBJB?ge)pI4@&4i+gLqmLwCPdl)=j{an^LB{Ts5 D6mn^k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_gentle_up_2_1.png b/resources/g2/track/raptor/small_turn_right_gentle_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d06af0a1f40cce568332592b3770504eefdb3012 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMO!3-q#YF;}Cq*MZYLR^9L|9JW5;mVi&wfB4L zuXZ+`Zg0F;K0e=AzhB(Hn%h2|!Fb=J=(Rv~j3q&S!3+-1ZlnP@NuDl_Ar-fB&)?=d zpuoW#&|(z!=l}m$k+XV{@|G7^1O<;P?!PGdqdIS!Yjp5o-3IH1jTh3s*quG2(jL9= zk)pBlbl(IPPqBG@ukN(&eSYooSJ%+f5-)<^e2z{}`Pb#qud$P%shyeIEMs*I&^887 LS3j3^P6 zgzDE7lXLCGJZ@}xEjQ0XWr6b~IR}La4kk~TBEC-Syt``lgp|v7xo1CQ4mq=Vi6PKB N22WQ%mvv4FO#t&3Q0f2x literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_gentle_up_3_1.png b/resources/g2/track/raptor/small_turn_right_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b62455666e524a94cf83cfa0b5ef301294c4620 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^Mj$o^GmyM<_UvyUr5@lD;tHhy*Q@`Jmwz6veA~MJ zvcL9zZ~fKI#@p5N7t6=@i~Cn|+ov-ab1N1-11e=K3GxeOaCmkj4an*Bba4!+xHa{H zx7c9?4u?QS)rOn@tEvzD^7OlX#k}y5=%g0aw`>d!dwdxf%q7H+9Q+r3sb}Yfgm*tC z&X`#gIn(*k`k;{9P2I&^Pd*-G|84em<|?C^V&&yKzRfF%N|*9%ZV|lmtdF&M=jC}F z9w(-~wpb@0=Bv{FM(4q;`mvAxH)VFVruq-ZfDU8uboFyt I=akR{0Ha%JWdHyG literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/small_turn_right_gentle_up_3_2.png b/resources/g2/track/raptor/small_turn_right_gentle_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..811b85ad222884039e95b360415dd849e61ba8a1 GIT binary patch literal 305 zcmV-10nYx3P);fSb> zI-$xyKH7wcNvQbF*9pk1v-#|S3Oqj-J^5hOCHkm3Q;JskONB4^t%3vERJB5F_*$yU z)tahPtHQ1RpjJR7DU+a1FK~vdmTn5%*P_nkbL|vG$u@OlrGeA%j|{!3-pG?ijoRQU(D&A+A9Bf4%zuc=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzf{{eE%(YHs^<2IEj$6+xgL#*!evU7W1G1<#dk4?R5bV&CRLv-MP!EL+Xu0(tgUHnEN$m_ zSy~R=y2g3qq@JkY6K-ki<{GnGe2n+EB-q{ePE5Hd6#8Vf%Q_ z`@Qv7I~#9T&!28@yjVWIU);Z%+rB5JA^@n4u_VYZn8D%MjWi%#ZL;ZU&i{J9ku?g1tEvlwh`8=*$vVEI3X_eK4Jxd-06>-)~aa%gI zeaY16Chz6kD}yRMRw?hC^HlQe>Q!p#Cw_{>i>-;?V<9D@_=#<60`o@h(&j@z*D-jy L`njxgN@xNARH|aD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_1.png b/resources/g2/track/raptor/steep_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9545de4c3b6eeaaf5634034226d6a64df04946c9 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^>OdUC!VDx;lP;71Da8Pv5LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&!28@yjVWIU)-N-!`<6JMT{jue!&b5&u*jvIi8*_jv*Ddk`o+QW%PJv zG+brv*68k@e3hl-posYLnG#ygF;l{g5^g+Rw2!OXc9yW)Tgk2ISLOv)0~wv)3=9%B gwl_993LW-f@H(9*D7xU2571BsPgg&ebxsLQ05~2#ZvX%Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_2.png b/resources/g2/track/raptor/steep_2.png new file mode 100644 index 0000000000000000000000000000000000000000..33a99c0ce9c586719efe20b0159a11830e211357 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^>OgGD!VDx0CcmEsq_hHjLR^9L_vxqq&o=&CzWaZ@ z`fcm}{oeYkosGAv=TEmcUMwHqY_8ug?qAJq9~7`c8>pJGB*-tA!Qt7BG$1G1)5S5Q z;#P8k1G^TVgcFZn*Nmh&JKLBfnr>(5bH_V~>+G+#WD5R1cPa0TUGH1u4qT~idbR6) z(&gGThSJL?pPF!(TD{z7yr+b}Q6f3vz@piWjp|>RmMO3=6JSu8+;mFI<%$B(8U{~S KKbLh*2~7abzDte( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_3.png b/resources/g2/track/raptor/steep_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef62d3801c4bc75240c7674ec28da0ee92c7df GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^>OgGD!VDx0CcmEsq!a^uLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$d^NXyI)icg^Na|fBF2&+zhDN3XE)M-91l+y$B>F!$q5C82?to- z=yAX=dRItd^%vM;mOdUC!VDx;lP;71Da8Pv5LY1mf41@ediDSD^0%$~ zFZ*k+b~fIwp1)W=zF*wGn%mz06|WIc5o1Y^UoeBivm0qZj;E)KV@SoVuEcB!T8VwJ~tL# zR^?kO9(2uYKE$!e=8(e)4mPKkO^p)-e~1>Olo<#ZH8n8xc{$}SD0AYnVCb_d^ih9v R_cqXO22WQ%mvv4FO#tx4N5udD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_diag_4.png b/resources/g2/track/raptor/steep_diag_4.png new file mode 100644 index 0000000000000000000000000000000000000000..94002e40959e71de901a81a68bbd43b425ec8148 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^Y(SjI$P6UUe|CBa5(w}KaeW@HeA!?75W@mlpa`F* li(^Q|t>lbEiCYU;8B$I$a!z#js{_g~c)I$ztaD0e0swe87O?;T literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_diag_lift_1.png b/resources/g2/track/raptor/steep_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7996822f7fc6bd73a574b97bfc427e5c165d11d GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^4nXY5!VDzqJ#1Bhlth3}h%1oZ@2x-G-nd`fzna^g znVFf1iHVVs@x8$JIX1VY6Y|!}f+vhOLEhJ7cDUQ~{>|Q;7Bg&Q0b4 zhlRhyJAJv=EETt8*8Wq5wfsdD6N~;PulXu}^{Boun?f}Mn*!$n1{KCB3@v|~d44b? XEOy)Yv*NEH&=m}xu6{1-oD!M<;L)iHRw`njxgN@xNA)kh>y literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_diag_lift_3.png b/resources/g2/track/raptor/steep_diag_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..801efafe0e150d28a301858e09396aadd46f3518 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^4nXY5!VDzqJ#1BhlwyESh%1nO9_!@pljG^)7*cU7IUqrSVHStx z49^oBnoe#KLPkn6CkSS?^k^ujv{)-D2XRUs6tlDF(U8`YlQd0IkqY!zopr0INztJ^%m! literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_diag_lift_4.png b/resources/g2/track/raptor/steep_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..46055864a5c77f4db880068db395831a3bc38022 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^Y(SjI!VDzYh0o3eQbGYfA+FEEl`s2iH=FA-Gcz+W zF)=bS2DuhY0?NvJx;TbZ+)5TO5lcxZ5ll$n5lu)i5tB&0JX3dt3I{_TtAbhN`@ipi PN*O#|{an^LB{Ts5U632G literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_lift_1.png b/resources/g2/track/raptor/steep_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6afb602b2d903c0ef8033d7e2b69746e4ad3c7f0 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^>OdUC!VDx;lP;71DXjpX5LY1mJY4yHZcuplZgFAirP+hi5m^fE*uB7srr_ zTgeFytZ(-5%xFk`pX%fI%(!tD?~A5|t9h&qLVmpwo7Jdy>|Lo#j#``TZgFpuo?FIQ s=U3P+{sv?Sy-iFwki-wPW0@^Ou1~+2#Nvp@Kyw*9UHx3vIVCg!0L#=sPyhe` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_lift_2.png b/resources/g2/track/raptor/steep_lift_2.png new file mode 100644 index 0000000000000000000000000000000000000000..aa352d99eb05d415d5c8fb400d513e161243c3e6 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^>OgGD!VDx0CcmEsq_hHjLR^9L_vxqq&o=&CzWaZ@ z`fcm}{oeYkosGAv=TEmcUMwHqY_8ug?qAJq9~7`c8>pJGB*-tA!Qt7BG$1Fz)5S5Q z;#P8k1G^TVgcFZn*Nmh&JKLBfnr>(5bH_V~>+G+#U<&>|cPa0TUGH1u4qT{x&LVcV zyz^@9^k2K)^XT7AXA3Z&o0OyQxZ2}JuWG-cLBht_jg9JGn3gH9FB4!e%51tO5LB!W Pw2Q&h)z4*}Q$iB}H6=`~ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_lift_3.png b/resources/g2/track/raptor/steep_lift_3.png new file mode 100644 index 0000000000000000000000000000000000000000..97ab43af2e3d3b3965e36ab6b1cdfb1471ef0810 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^>OgGD!VDx0CcmEsq!a^uLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$d^NXyI)icg^Na|fBF2&+zhDN3XE)M-oM2BE$B>F!$q5C82?to- z=yAX=dRItd^%vM;m)#@B}NPhqT literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_lift_4.png b/resources/g2/track/raptor/steep_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..db0549c42050d219b86f78f37b7bcd893160b1f9 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^>OdUC!VDx;lP;71DT4r?5LY1mf41@ediDSD^0%$~ zFZ*ln_tszSY`k4Pf3bXgzqo%jw>=9B3o|n_6B837BcpgiEgoFp-sRtN({_7`p=tkyz7jT}Cy7EjSbBSZ0-rZ`Z7fpBWx#b(=e$uhA z&bqw9cd;2S-)swaXMX2`qZzlP17^!5g!#|oD3PuYPl@QRU&f_h3QZ1gE=I&v`=jPt>sZ<+$+8 kO9`#uHJY4z&o?&3mtEvK_(zopr00FFU<^TWy literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_1_2.png b/resources/g2/track/raptor/steep_to_flat_up_1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bb547f50ec272157ea560dc7fbc49d5bc0a728a5 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^sz9v6!3-p?`ZxXrQi=gSA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoxI9WgN9#q*nGGA*p17T1lzFGCp~0d* z|JS_dOMkXJV~d-&JYZYnot_|%(3fn+E32AY+;Zz|1*Qgl3UZ1*bG{|2)^_EuJ@cmo ztb8bVdx=!7%d4ubA;~R^uU?mItew6yx23%HTYc^7iC@=lu$?dPg1I7;UF{>s5?P=d O89ZJ6T-G@yGywp7*l7m< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_1_3.png b/resources/g2/track/raptor/steep_to_flat_up_1_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1181bedd7b2ebbc4de0bc4ac4f9bf94c30cc3f7c GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^8bGYV!3-qNJnB#ZQgQ)4A+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wm|Kjm_pbEy4AirP+hi5m^fShJe7srr_TSu=PXPG6@hyO5^S%ZOqpbMuJeRYwtZjZ_oAK3+U*wa->wq6 zboTSRSmX1*3lH}^ys{`MMz1#9;8n2Uw8dQ)_iueuvT0x1wdcF8&yT5pleKv9&Twm+ q;yceC?7gh2>>gFW^d*DDI~Gw9R*wlA*iC`XVeoYIb6Mw<&;$VAkYoY? literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_1_4.png b/resources/g2/track/raptor/steep_to_flat_up_1_4.png new file mode 100644 index 0000000000000000000000000000000000000000..33327219299f9aaa0b6fba628d541736bff4b6c3 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm3!3-pqrme35QgQ)4A+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwp1)W=zF*wm|Kjm_pbEy4AirP+hi5m^fSh_y7srr_TfLK_`3@*>urSI$ z_^W>>p-prPAYWM^r%DNBbw)fb&Epy!279||Zp2Z|6^T%z$>`uYO^R3+XFbD`b$SXU!oKa`ujd`vX zA?SL9P1j5@DKF4#LdRFB43Q&~>jfegc?)h-pUU(<^@e++&nNb+9l8qB5)Z`%CQV3c wJ`-{1=w1ccJ-nAD&&ylfV$fX8t)!F}a+NLXXk^z-praT(UHx3vIVCg!01s1FE&u=k literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_2_2.png b/resources/g2/track/raptor/steep_to_flat_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e32c3330f0aa096675178d0aaca9a06f1ae9f643 GIT binary patch literal 969 zcmX9-Ux?du9RJ?m+^rtHS+>AM$U~hu2ofP`9sBJ`m` zz&_N`X&4py&_ThVbp-A3kSJwj7+7JwnTO8xj*Jy4TJVq{edxmpKQjiO@Au2+<@@=- z=li|ByOUWtwRQ>sR<T&qiSaaWcfHUZ{f_u}QPn9j`1%+Aiv&CSiv&o3-2 zEG{l$7`C*uw7k5Gr_*VcWkgX>6iL%^hM||s<$Ar@Zo9tU55s6OVHps3kflT}mnsy< zVu`6#`FcZcwbhPi^n&VeWQ#PG zuoSGNV_r2mXr(4S0*x6oQPGKoke>#S0aOgrlSz{xEQ+#ueqWZm`TW2%kDE>8c?6qE z3pgW_yh>$sI%~3;#TyN=>`1kaV)s-x%#$3!WYWAsOB$EcMZF?dnrhS4-N5w2S}<-6 zr(RNklmd7j$P!Q%#x?Owo632D9%QRS!;UN;?aOpZ=b0 zSDywB8u`f-N6}f9%L`&rQL38OC>Gn*s@H4=t~>1aqbNc^=s?vmwv`k+gwmt)L$NZ- z+2dj-vig(u_+&6e2|AhNa6Ch%6`Ij_-jL*q8ZRrgtF>;c9s0p!D1a(qhLSW@(kjr6 zlHgR7P9xuS%z@V!5B$mG7zqGb00Y1RZ~(dhBMeXsSwtlRIW`IhG6gydH38fVgfbun zkdC7&i)k@>6C-O8IJ=LYY};1O9{ckWt&u8 zN)LG}$~lu_XIk%_xI;9Es1$G{mSK`Pfh;I&DKA-O!LFGdrxy6mIP}qE$Vn1%0fm52 zoJA#;dk&&pYK%r)qy8L5uP5emN}-^YN;=DwIi@bKj>viv)0gRSHjPvgnG|ZU$Q4i^ z#mCRRn)vtG4}5ZIM}fEhI{YXm#qG`Wm)CE8@!R>c_f}undhcYocJ%JKgSE}C-u(OF zOVdwpg=cTBe{*oOxOL%`2iMd89RKwB#_H*xclUljbNlo!(f8V!H|#q%etrG%qbs++ zzI9i0Q6_<3&w;|GPVH-G8ug^~2qxcRs%M+P5#>`|t2&^Xa26A3s_7WAEVb U+@Ck_*aB>C?QH(A@xf>R1D%GVY5)KL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_2_3.png b/resources/g2/track/raptor/steep_to_flat_up_2_3.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf1d6f89178e9fcbe8d7ab7f231e8c95d280cf3 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ|!3-o{SMa<6Qi=gSA+A9Bf4uzjaOKPX+WWor zS34U|w>MraAKx$TU(Icw&R}f%d0jeC5o1Y^UoeBivm0qZPJ*Y4V@SoV*7MO^2MlEKCe%J*E{soFJF9ak{4Uq!_ml7nk5|GrylEa_x%nynRZGc3#(&m3Nh1%)9^Sot=!;t5|;Scv-w1XcvR0tDnm{ Hr-UW|%Un!X literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_2_4.png b/resources/g2/track/raptor/steep_to_flat_up_2_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1914e12a399355a67dd270e41c45b9c2c4a49ee7 GIT binary patch literal 966 zcmXAoQHa}g9LIlm?Ol4ijoj!%!8}APn3EuJLT^7}k| zf4>_S_DiQuJaGa5PVJrFxtPu;)7r{q(th^$n>s)SF1&VWH?=D(E32!knM@{|&91Gj zt*@_R7?#WBHa0d2#bS|V8Br7zMbfm2X&Uu-|oo0zB&lZQPiByT#?4g{H7rl>@w+SRM%t=>SE9?kNQSDY$UO}oQEX>R2pgm zI11J?u%L-gdilkOKna5uDmr!$3X1?TfQn%Tj@ty`P?XE_2eLe@RwuT7)a{}mAlQ6S zC@?a~t5nIL%QmYyyx9@!p41vB?nw3HD#;N{smLp|q;VBPG#YZFt9E_EkL)mRMM-bE z3~&MR3KXh9T0l7%*DaL#R3#9MsN9^I?%WB{flTK$j;NLBW|{A4;=oj*x;AN>Gp{}m z+RMm8vk=d76kTSysvy=BrKxG1TCLw~2HkGt`_u7wKA$5X44~Q=+rz~Hp^WJ2RBX&D zZc-b}o$;cd98Z>Llg4qbP$-c_g=RFKHzm2Drpv5;vo-AX<1kuG1yCi-RB&4*9i8r2 zg4a+6o$AoDCqXBfgp0)y5&+5oCV&Ir0Sp0V7@$$rpDVofwJa8mdV(^MU>I!RBCCAp?mOb!VQRpRch!#^$l8_H5287Zq z8Y%9vh`QC8&A3kcvCPp(tW*?T*DT9mnL5X`1=bVUKw`!+os^46C6P^`4vTyNMN)eF z+_RexAN|0!i~9-{q? zKJ&$Ni`wl!$RBQ>{BMgek5=LGXWu^fX7|IBzx;gr-i**_hyt#4it$$Xyhd+IH_unK*`LMUU LzjNo+D1}={X~E*&Op$Vb#yt(Sti9KY_T2@#gTd3)&t;ucLK6V!30JrP literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_3_2.png b/resources/g2/track/raptor/steep_to_flat_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e41f4630e916045700ae7976f12aa4f33ede40a3 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3P3E#!3-q3o8ry^Da8Pv5LY1mzh3=+y!`WU<=fW% zm;JT(d+Tpk&tEJb-!JZ8&27K4{N!DrBF2&+zhDN3XE)M-oIFn#$B>F!t(P2y4k&Oi zJ8%YW`CnhKd|K6pMRUqeB>1Sxy16Wx&V&_rJK#vvc+~SDwjy UBDwHF70_k|Pgg&ebxsLQ0H<0|VgLXD literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_3_3.png b/resources/g2/track/raptor/steep_to_flat_up_3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c22ac8fa426beda3f05057311c3e7a77d502b880 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^DnQK1!3-pG-_$t)Da8Pv5LY1mzh3=+y!`WU<=fW% zm;JT(d+V=uHr}qDzgRxLU)=x2d@GP5#*!evUg{bw< xql2@YO6yq?pAg@wh%#igaC<>lp-m6g@i zRSd%lg~Hm}TDe-S(lo{MoFoaVDjSC0YPB4vKOFjDc$y@$ETbvlSP+E`SuQmim8MCx zJFL?a2Sa5P7*X7rOkJMD>gz z(6OLX91luagrk%~nS#!3gu*I-2%un?UMyNTZWDydvd5x$qG@BxI_vjQ5a4vF%9Sax z!YV{fC+ili+N{yzTb|GzNp7V0iB@57s#awsQcxLL=k>PO?kjy?_hTzex^X&~%!48a zB?-zJR7@ajjOmwaLqZNXJ+5~qhC8!EbS#o3mBE`evQuXVDnBx$xTTIAW9qeLfisUi zG!2U-h9K)Sqj7vwk~*r|Yc_|SPSEeizCSrVoy}$la2*H-qX$KPgi8^rP5AaycGKo) zW}jxm^n5%=8)UJ_l*_eBRU#>sWeq`WEBP{W*y)}OhDjJ_6AlysGo+%WRO|-XGdZs< zje6RNXN`kiIu5h!3~>N;00Y1V@BmH#rWl|cB9BZ1c`i!EA^|!LT@L&jBqAUQkX}X| z8o46!8z^d{#D&MfGa&F#7qNy~wwh$ut_@suG-}1Mm!>hwwQvn+bAz+XqFYgXLQhzG zCVN?PGq-WlMrPSMi7t>C;^1>EZVu; z6W}egH=Qy)=Lw7`;$>NCG*r{nX{yCg4o7=D9SGE^NT&5FQYy$IP>)7FhhiZ=e&))? z-;aObotyg->^%DQc23N_-B%7TfBND5y-PnlTUg#f$bUaL`f+RL^8Brrf7|8@&iDU4 z|Iz36=DqLk3NLLwy!fVh=b4LI_uuGfeeL7z!|C#iH}1au-gAprw{O4;pUC&_T>J9D zPha2OyX9_Y2mW8%^e>+D#jPvv?)v>{YMeuT(^c6* z*{@J>9OXiLFH-1?tN=Aie*rV517wv?5vh0339`v`CRxb(y^)oa w7DlH;Wu%j*EI3bD=-R@J=_<`Ep4-gq4{)Ce;L-b)hyVZp07*qoM6N<$f&g%u8UO$Q literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_4_2.png b/resources/g2/track/raptor/steep_to_flat_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cff897274408d8ef921a1875cc3c20a4f06e7695 GIT binary patch literal 303 zcmV+~0nq-5P)HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qSR-_-6nB00DGTPE!Ct z=GbNc006T|L_t(|+O3t#3dJA{L^aW9P5l4gy~IM7ow?9#x;Zc}p{3-h7UEP1ZYHJe z9dh3kw>-w-I>`;lb;U8ZMRG!LSCa(axv-2YDyWtf$qB)Y#Du6NF|?X_bb`C%VlFJ^ zu?J)9nV6u})@@G;jN8Z5NY4CQd$w77je0D6d(60QWGm~xaXYj(K5c~_ zjgz%cWj8777OhHUWh*6HskBup{I{52Qt*YH&kxKT2qkY15mW#G002ovPDHLkV1hEl BeYXGr literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_4_3.png b/resources/g2/track/raptor/steep_to_flat_up_4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..aa449307b1a26e9d74cf542bd9412de4c1fc8f72 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^sz9vB!3-obFHTYiQYryHA+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwp1)W=zF*wGn%h2|!8j>>{d%A}#*!evUq% zqQJotAfUzb_y7O9JA7x^o|M`4_0dyRs|6h$9j_GM28C|ryBU%5Ch%bOG)5Wm+p&D+ z!S`h)S7hEwwJ^>Wk~HF8$HFZ9RlWI*@q{%UT^=dElOoR>MX+@-)^6X|`kDR45ADz8 wGi?tnNt~S0oOpe64x8_>U)*mmoH}sJuD+GkIe=GH9OxhhPgg&ebxsLQ0Q4qZ$N&HU literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_flat_up_4_4.png b/resources/g2/track/raptor/steep_to_flat_up_4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8d98c8f3a385adb16c0fc4f27f1099ca49a794 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT-!3-qdMBnoQQYryHA+A9Bf4%zuc=_ky%9s7M z_j~KFb~fIwp1)W=zF*wGn%h2|!8j>>{d%A}#*!evU>xe?Z7wI>a>5IJ?OSb=P_#D6NRUY&D zj4b&N_LZy=9&xL_t(&1z-C!|uk4BH4=)_00001bW%=J06^y0W&i*H zu1Q2eRCwCGlF1GOAq+!9#tcyY|9>l%_Gkxn)SREZff+xzn>_fq5R^htp-|pXE5Abb z5!47&7j(7OWxWvO9Lhei)>)_wI6Re3>j99E4G5`Fy9JGU#zO(BUR_YgPb6P{7l-ah zsG|{rex{}P8}EK%gc|o#{qEgQOG&>^bV|Js(-ak&hQ2j^$1^;oVw`%00004+Wq)#*!evUI@rhHDxnxu;w*LX1T%4@~($1th4{Zf#mj3%Le%m g8P^ya^ego1UuVe*{al^$6=)!Xr>mdKI;Vst05mH*fB*mh literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_2_2.png b/resources/g2/track/raptor/steep_to_gentle_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..68b1cb759627f832fe0d94c1825543eb13171655 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W8!3<(eRA&TIiUB?$u0Z;>b^m^E{ngIK+tu@@ z+Z!*Ik8d{D?-%#4=C)5~Fz#J9|2EBDAEMjAWpI44iB|62{!3P$0y~PA z|Kq<`#AKVj(v8z5=b-LF>k~$+4AY)X>OXi^#rBhj(uQtz>#1@_cd+QD+h5fM+Q{JP L>gTe~DWM4f9CS)E literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_3_1.png b/resources/g2/track/raptor/steep_to_gentle_up_3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ce4d2ba410e66bc86d7998923cb292a839d7921 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^5z~q@)9ULR^9L|9bWR@$%2Zm2X@3 zU-sAD@2$UGJ%6!${PoD`T0m*Wk|4ie28U-i(tsR$PZ!6Kid)GErhMKB4UA#Vj*g0{ z68cv>JOcwRh@45&=QlG83knKiEj)E_!I22gB~$h;TFkKK2*(-i!iJfw3$Gi+Ha&v--BiD2_S|@HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7Ga!;sUH||90d!JM zQvg8b*k%9#0NF`IK~#9!t&>L%!!Qg4StP1a`TuhRIYy4&4G>>^8Eg|MBH~^IeZ`%? zx-(cZ*j#_bGTVh!4r@=;{$l+Ri_Gfo<^t44aYI-}j$&pAo7w$f&wH%7KN#3!W<8V% zdITccjvPd^j5}Hb4Y+8NiS}ZnW&gnwV6l#;0?&Os)f9O~7E?u7%;Bo46?ry7?06or z0(%}Y6|`+tra)c=8Z4kx0b&h_)d{h6uYtvgX_FM2S3J*nMHGIRD qm=R*x@TJR~gAm)X3pBjOIKMaNF$k8tLI~9W0000|n2p8bat+fWimn<4wpv#6EvjE0FiOW+FNa?Atxkhm-ezU24DAvnnz4{yj*bx-&12<2gX zJls#{oi53{{SM1h*hjiQJStCr`&fFfuVDZ1n0*Q!{vz!9@IQv&@qGcjexE8&Rh}yS f?Fdv{pveCKX1@vH6J2=}00000NkvXXu0mjf|CNqO literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_diag_2.png b/resources/g2/track/raptor/steep_to_gentle_up_diag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ababe0511845739ae46d9ee5f621482bdb344a9 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ#!VDx+6^wu+gG7K&i0k|4)&Jw=pNA`7_SfF; zt-oD8f3bXgzqtRMKd!<+HOihYjv*Ddl1u&_II*Imjg>`GqE}Kv;_^Li!)bTLQ*?Ig ZvoIVN;^HsZ6OsTj)6><@Wt~$(697S}C0GCe literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_diag_3.png b/resources/g2/track/raptor/steep_to_gentle_up_diag_3.png new file mode 100644 index 0000000000000000000000000000000000000000..53096259846112fb43604b5d300c6e608783d0bf GIT binary patch literal 366 zcmV-!0g?WRP)W-Bmk75Aa_Mpo(_6JFT^*;}XzXYu!kIb=Ae- zgaD8IK?p_y0L(@&#$l=+$OM)UMn}S?^|mA(YwH{6bLISGpsC$CULU z8G$_)l#hz@^&u=``yem!H%;rb4VfMZz?2*-5rLx`C2h=zOgw|PQ6iLXVICWbPp7cl{kI)+|p+G<)NyDV!peln)8=HZTF9QRQg;?i%w!P1Q>KHs-{an^LB{Ts5 D821~> literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_diag_lift_1.png b/resources/g2/track/raptor/steep_to_gentle_up_diag_lift_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0cdde1a366aed8f9f062fab357bee3e30dcbcf0e GIT binary patch literal 361 zcmV-v0ha!WP)K18L%T!4ky)&$|syr!)w4U4v* zTWgI0+F4_VS;p9GG zc1ZWoui*V{kNoOvUGWfp#G_C96Zub@T|83$T2J7366+qXU_8yNkH(X)FX;IG^k-!~ z>YiWFr_5Ky^oeK{c}iXhzW|>H0Z=)Yyj~7pS3qNN7GXnzy0s;a70Re5EED8Vs00DGTPE!Ct z=GbNc00A3GL_t(|+NG9362u?~1ObU+)c=2X3o+ST9rJ*$nTDt<6teO(Y!vSo&yv zuqX&nVdlwbSP-*I9U_kCyw9lS-=#@b5Z<(!i&+iE8)Pp>wVaF92~kZPRyUnm$)(t0 ztS-A%R*;wBI(B#Lw({mkGIi`v#mh{_i~%9Y9;a>;nCtBFiGd-!%8YU8lz|{TMl=zY z-R1h)ScpDYAw+%O~I literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_diag_lift_4.png b/resources/g2/track/raptor/steep_to_gentle_up_diag_lift_4.png new file mode 100644 index 0000000000000000000000000000000000000000..20af2faf5397c32cb542be81d0f1bab4e2a88d3e GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^Y(VVD!VDxC_Mcb}B!vQeLR_DRD_{24ZZ_9vW@ct$ zVq#=u400`)1eBHaba4!+xRorxBbt(6B9@R)BAAfCBPvmtX^?52 Lu6{1-oD!M0`sm6PPguCj8?r`BeNu>YIqRQ@4ruJrZ2+h#_fO0=4_2qfqu_d5G zc#^#6ht^B3+<7kf+GW2a5NgSP(Jc2@{0UzQuS(&UMRf(a+metDisKuP^F(@J!y%R%YedjmsVZjb`w4^>bP0 Hl+XkKN`6P6 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_lift_2_2.png b/resources/g2/track/raptor/steep_to_gentle_up_lift_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..584c482a0c83009d55bf4b32f90b94359ade5137 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W8!3<(eRA&TIiUB?$u0Z;>b^m^E{ngIK+tu@@ z+Z!*Ik8d{D?-%#4=C)5~Fz#J9|2FFxBt+jcXQbZb^WCsZ{!$7*Ktt%)szV4H-D!tV^tRV{eNrJm(DL+>sy?@ zUEk7keUA0n>JN1a71J(xCfsw~p&G&->85+?!Lv!z51v(#{p6vvpz~q*MZYLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$JTo&h6B837BjX>>J->kJ7)yfuf*Bm1-ADs+96VhdLn>}1Cj=Jp zCNwZkJ8^Y$nO^J17!g+1);-G`Z@ziz=jGMZpW~LOVad!W-)lW`njxgN@xNA_mekI literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_gentle_up_lift_3_2.png b/resources/g2/track/raptor/steep_to_gentle_up_lift_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..75a57801ca569bc427938a9bc7ce81ea77b87dd8 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^azHG|!3-q-?s(%0q*MZYLO}HYc=_ky%D1iiFZ*ln z_tszSY`k4Pf3bXgzqo%jw|zQ;@y;2`w1DauOM?7@862M7NCR@xJY5_^DsHv*8}c1C z5ICHo&71oD|NplW8021g?+8***m!~McJ_mN|HPHo_~sv9XJo+W^m_R!)(J`qoc9|K z^;-x0d@p(HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GXnzy0s;a70RaMW zZxjFk00DGTPE!Ct=GbNc009a~L_t(|+KrVYsmSxmbh|x0Kmckw5^ZSHn&@^1 z;IQ%}0(c?-Gi-y}>OZ)R)y}3dhUMCj;*Mb>u^amBMrJaPNWj>vWMJq`+nt@;Bm~R6 wLK`MzF@m&B%>i_@%07*qoM6N<$f_>kldjJ3c literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_vertical_up_1.png b/resources/g2/track/raptor/steep_to_vertical_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5a30ef0d4dafa9459d3d183b90967df87e08d727 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^5Eakt zaqH})-C`{Y0?zEmc=$j5uP^6*>k(2md#g$N9hC&LdUqxJv&CMTxtj$h7O$-pP&|~+ z5-s!~mSZNz@5)75j&p7to3qWeC4aG2;x;Y8hf^bBoy3o_&(|t9ovL^5{&kI2$0T1> z)Ylh%S>|NBVI_l=M{~k-1`DQ!&D`uvaqP|w+YiV#ZDnwnpUY^WB*LVgbS9B8W!v%T zeoB+Gm;Y<`d;I+9_f&O`=%HJAq0WOM?7@862M7NCR?qc)B=-RNPuS zRUyZTz+d|V%tp5MG;@?eg_y+U?gQu&X%Q~loCIAt} Bc3%Jh literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_vertical_up_3.png b/resources/g2/track/raptor/steep_to_vertical_up_3.png new file mode 100644 index 0000000000000000000000000000000000000000..58bffc143f1d3e20252be935d4a02122d1729044 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^5=UoF^ds(V?s7PG>G!ILo6b9fg=^MS z+)*n@Xn4DV`F@mh=Eax`va%9a_E~LmkBoZqgem66bg|e^|0jETIk9N#vb?ek0|rl5KbLh*2~7az C)_Dy8 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/steep_to_vertical_up_4.png b/resources/g2/track/raptor/steep_to_vertical_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca7a1c6a1da0612b20ec296456103dd1f4281b8 GIT binary patch literal 363 zcmV-x0hIoUP)HS0mdykJC>pze_KxLo>H0Z=)Yyj~7pS3qNN7GnkRlRsaA10d!JM zQvg8b*k%9#0PIObK~#9!t(4gcg)j_6n;5$#_5VNj()!pLp>TZ>Jao2#DW!CILQl@u zb(wA7A0NXEg9btR0F|D&F^I~*I?+x*U=S}T2f!D&H!wU31doq`t9QCdP_X8$f5`jv zps^T;YN~j6Gga)as$i`?Ccy5hs>r=f08NaT#JNeuCjOcjGl5#n#8;C&aP(!O;IhX3 z8TdX3oO$3XDzJQ06{0070{$scMMU;oy*CvRq9sRKGna@c(lVmuOKZ3H9$4$iW96zq zi&UBS$f^`F3#$^mN_ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_1.png b/resources/g2/track/raptor/vertical_1.png new file mode 100644 index 0000000000000000000000000000000000000000..118f80f7c28d0fd34ad632c6a62066c5e9ba13a3 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^96+qh!VDy%y~2Eflw5#Mh%1nOAHDj2y!`WU<=fW% z`@QwItLHD4kM9@vujaPTEM24wRKZvh>nTNJ4^vkVr`a tN2u581P)$PX^%rP%X1i+omVh1Gi>SAkyJmcItQqO!PC{xWt~$(69DPRD4zfT literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_2.png b/resources/g2/track/raptor/vertical_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccc9d86357284f7b81c71cacafb31b59e6aa7bd GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^96+qh!VDy%y~2Eflth3}h%1nOAHDj2y!`WU<=fW% z`@Qx1#r>tJ{{7zi ztDTJ(%g0x9+ov-acec+h0!lNM1o;IsI6S+N2ILrfx;TbZ+)7SJ@JUEWFcS$$%FqrE z0urslsw>tA>1;aEHT6+Yc#}8hsw6Xk?nc*6Muy9GHC!Z)&FcVaXYh3Ob6Mw<&;$VL CYARj)0k1JPSq?O>)Aj`=clD4^tcrG)8u@( zy~(xfW(bq>VjmcB-^2u|I_wV1XP3>?j-h+XlL^EeU+>^Qn9JS7nBY>2y#_00+~yIq znZwGDh8=jnWtX7kC0+oY!{sn&uiX!(V%(mY5x(h+V!I#226}B65L*Y{Hea%TdUhUkH1SVt3xxlCvTTOGov40gEuda7f*W&Kbtq?(f|Me0d!JM zQvg8b*k%9#0KiE^K~#9!m6Smegdh+DQJetcu{AE70_ zQ4@S3j3^P6@%m literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_to_steep_up_4.png b/resources/g2/track/raptor/vertical_to_steep_up_4.png new file mode 100644 index 0000000000000000000000000000000000000000..555bdced5edef2a072790584de27665eb2e1a17e GIT binary patch literal 345 zcmV-f0jBb$N8@hWck0yGYwliSbTAbcz%cu9==?U#J zjtA-O%VzNLX3hGE{A;Kg^LSnO@e*_b!G}!i?9FB00000NkvXXu0mjfX_Shh literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_left_up_1.png b/resources/g2/track/raptor/vertical_twist_left_up_1.png new file mode 100644 index 0000000000000000000000000000000000000000..53493c98e94186192ead99db5eca9ea3d14b26f7 GIT binary patch literal 309 zcmV-50m}Y~P)i7BnK#H4>ib3RJ@e%nO*gCcH_GV4si>agY23=w}$*jqsxD z#3CRE4k0WBp&}#t72+A_3B-!BCZu7X{slwyh>Q?~0s@XPwy_+b!?6*HkbBV6Hq(1B zY?FH!3tpHMcx?e9kD@`e^?#YiX#6^IlC05QK=;YO;YoS}l;{y}erT1}00000NkvXX Hu0mjfZ5VhC literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_left_up_2_1.png b/resources/g2/track/raptor/vertical_twist_left_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..82e21ab637d08edac378056a980a46a450c3e3f7 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^96+qk!VDyJI;NQcDct~{5LY1mK6>^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzf{{eE%(YHoW0e~W)W4U8p0e!&b5&u*jvIhmd= zjv*C{tOqv=G6pg@9Q@mVLq;@)vyDwJpuz3Pt)OPEDMgJJ63lmdE&^S^F>+0R zI1UN5Y@I3Cq8TsbC}Z-O^V8O2N*Np8cGU^gTe~DWM4f0fbLL literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_left_up_2_2.png b/resources/g2/track/raptor/vertical_twist_left_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..eb02c3d953c5af7edee2ef3e38dcf31e1e82c845 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tw!VF>s9!&*O>H$6>u0Z;8`R@18t8ZKPU-sAD z@2$Vu*?7Bp{&aie#q#mZ=KB5O{?**}SvxQ71S(}L3GxeOaCmkj4amv$ba4!+U}QbG zvGkAugTukg{#qF}Op8-^Z}}Y4xX04JpzYlGM|lV+HyoCW$K+_xLDB=)PGS?4+7 ztSyIe_c}+hLawF-PeoFcCr3p8d(m3JRw-~~UGx0~tv5^sQf5~zZdBkXn%KSIWc&Pf ZeTQGN*PAB^UI1Fm;OXk;vd$@?2>|u>QxgCH literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_left_up_3.png b/resources/g2/track/raptor/vertical_twist_left_up_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5613fb676647b24fbed34caa0abce71006c607 GIT binary patch literal 1058 zcmX9-acCQL6n<^eUb?oXC9ne{%UEEs9+Kfv&Uucry_U4z?A6{zWcec!%Xgvh>->yEK1ZU{p072!S~+d`{#Xp zeD7UcUW$zGdvYHDj4v+CtvGYcDbeF{`o_rQDF7ENA3rhg(1C%0!NEb7%jI^vhlYlR zhleo?^LRWXBO`b)7$nIs%QAw%iDFEarF1%-&lk((O0Cwg?QX9}hJm4h=SE{OUosg; zDd9|(&KLMnIbJp8x|MCUb(X-Q^r*z)YBZpUp`uJ~rCBo{t(PTxJJYfCezz9!L!5vV z1Db%9B+Sfunc!EXhEOdCzyriFO!9hFzh4W5bei7c`Rzoasj3f(MP!98RZ`Swxxl6kE>{)wdc0yM0+c@-3DN?=iBwEtr3{}b#)}oHVyQJd zXLU-gzUgJaCjg#+fC3>6ql$Q>9EzEYWJR+rS?_8!w8axXk@BY^L^ev7M7AmmR$6T4 z<+hRTn)$wEpmxpcqe4WKq!J995`?TM7E-BlHft7(R;AKvG`ig`0>1>IJVuthY}GH+ ziA0Odv}1ZFRqbkxUb(Z^?4wb_>!ol!5(o-JSfpv0<1=w*nNrT?wo7HZX7ySO#5qhB zylOn4C5eK<7#X2jNNgKw(=2qFwO;Q5VgRB5GJpnP0Bi%aF+dJ@7AZ0^bYwUA5J)8C z7^p|t?HL2&+s*$s5M#rw9 zUW?*5Q~_iILQWPLNA5BFX{FF^Q-%Cv$n`oKiwVi3s3;N{PE+ALLmDh;a^VI~bfQ5N z4OS|{aI%H>YZsx@EA6;*7PkeZAY-sr(b9(Aa zWo`N0zhLHO;NJI_FT6eS`r?tp&0C*OO z1bjh1edx29$fkXI_U`zt^#0$*zZ<`cZ~nWc44yT=KEs~*@AR&>oqP4;>EBmQI^JM$ LerfLJ?CSde)+xc< literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_left_up_4_1.png b/resources/g2/track/raptor/vertical_twist_left_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb51e63f2a14784d5c1832dcedb7353bbbc737e2 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^96)T$!VDxM=7d}WQYryHA+A9Bf4%zuc=_ky%9s7M z_j~KFb~autAKz@Q-!JZ8&268~VEk~!r8_`%j3q&S!3+-1ZlnP@xt=bLAr*|Q2MtS| z97P-sJ}e8#5sjVLAd=(4pc}PFft`KN6p^2^XP%4y9z89(N8#}-*R<}n$rBAf{^epG@+E8n*6 zzwEEQ-&=pRv+;KI{OR__i{;~+&Gq}m{j0g{(;1BI8KnPxyK4v3!&nmJ7tG-B>_!@p zlk4f?7*fH=deG3%$&ta~;KSNvC&x`wzh*ffm+Vo0&LPtn5P2zb#+&rE$I}nrKKcAx z^}d=XcX=LZ)#Vk6vV7c|TFK^kAvo#oV%=p68W#xsuh$i6vf((CqflnZ>XW`1Byn}U* po;V=E`(yc?25T1+!J3W}(hX0!<+gmhsmcJ=(}_Qs3lZ@&pGkGy4$zjU+o;1 zqQoK8xq!8Iu0qFTyFJnwTREE|mj79Q=w6w5yDi5fcL5WD$qLOLU)Hc&3bk0Sn0v-A cvHKzSszdz2hZOgm0ouyo>FVdQ&MBb@0Lqt8_y7O^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/vertical_twist_right_up_2.png b/resources/g2/track/raptor/vertical_twist_right_up_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0554039c2c70e471cdd9d4fbdb756735ab5efc37 GIT binary patch literal 331 zcmV-R0kr;!P)fd^3TJS zZ(H|Y_SfF;t-spYc(HtZzqo%jw|zQ;u_kZ19Z)G_NswPKgTu2MX+TbXGJT4a-SK35<+aDKvK_Db)zhB-m1_A9qeago?7KIv5dZeMBa`W-d!2e#_PvmbU zGN-!!YO7yb(9C#1W5&{zS$y|b@Yy-W%@!?f%u!@=cs9!&*Ox&b~Ru0Z;Ky!`WU<=fW%m;JT( zd+V=uHr}qDKi%GVv3z{9xqiR6e>Jy#I)kx2gY-3hAx@wM#*!evU7A+M;3-!tl~wZr0QdY&VjRJ^ijX`Hg;)!sIt8 z?;ic=TiLqcg4Av0422b?9lkTpCLR-D*~qEP=a>^EKP6oE-Ykx!j@1=e*W+~_O0hT! q+-r9E!{K*F@1ua*{5^4c=_ky%D1ii zFZ*ln_tszSY`k4Pf4aT#V)^)HbNzmC|7vdgbOvL42I+s_?%DzMFqQ=Q1v5B2yO9Ru z%=L6}45_$v_S{9j!wMX%0WF-vjLgmcN7{4vaT8hN7>csq8e`yUWI iqHtEBKbzssHTJEFf{n^E@^yg@W$<+Mb6Mw<&;$V3h-(D^ literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_left_steep_up_1_1.png b/resources/g2/track/raptor/very_small_turn_left_steep_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..08a6a7d62ff7e57631a1f5abe4a74656adc0808e GIT binary patch literal 372 zcmV-)0gL{LP)MOtF-f7woO6k*!hE}GpN z^FOGi^aI0G`~VDqJCqd%063nGN&oc@sHyq zj3bd$ukZY_ew45+ajZj?5J#`u;u^PM{un2>aXjj_>GCmtx^4x;CzevMY}cQ_YYoop S-VAjB0000=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_left_steep_up_2_1.png b/resources/g2/track/raptor/very_small_turn_left_steep_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b012286c5a2bd55ca16eea898be38b95403f92d2 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^@<43D!3-o_rG@_iDa8Pv5LY1mJY4yF!TQ3{(u^4hN zJ4DQO`1GGWzR=X|Rz~LBjdzZ$u{>~vRUuxW!G8I#ssq<8edjPd2%Y{__0?a=SJz*E zWjt{G^)D9H{zBQitK;4MUf)?AZ~j3+amU}CG3+N_Uj4l1arJ}3(~VZT=0e#I+&^0h zi`P#Rcsh;6bb8^dAM@I~CWma~{kZS(%4B8V;>$6|7e4-*ySuMmGmCA`t;;*bfevKw MboFyt=akR{0Jp|$Hvj+t literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_left_steep_up_2_2.png b/resources/g2/track/raptor/very_small_turn_left_steep_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a36efa55ae061ca62e4e39eec5a182d2c34670d GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^(m<@n!3-ps-U)~RDY*cj5LY05+q!?hxBhBpuq=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_left_steep_up_3_2.png b/resources/g2/track/raptor/very_small_turn_left_steep_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cdece4d937e7449d6d1ec0f24401804cef69eb41 GIT binary patch literal 344 zcmV-e0jK_nP)HS0mdykJC>pze_KxLo>H0ZMovI7>?wTR?m%QNLc&|D#bq)ccXKQPv5jNsAqM8{UYPuznU}yD8Fh_n4rO<=%$a zgFbw$`#0WDST@W0tl+vEnY+A_nT)P6_-uQ~_Srb4eP%|pFq`!^c~A3?kGRT=XQmx` nv*);E$;@Ym^RhaN>yzxitYVFP9QCmo=w=2_S3j3^P6)C literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_left_steep_up_4_2.png b/resources/g2/track/raptor/very_small_turn_left_steep_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd55a99aa67f901ad84683002f6dc714ed79d73 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^l0a<0!3-oXPf=VCq*MZYLR^9L|9JW5;mWtI`!D-z z@AuYU?QFbVJ%6!$e80GVHMe~_gYnK8%d~*%7)yfuf*Bm1-ADs+W_h|ehE&{Id%=Gf;5ZN%D_u2>$?q%z9ezKoPLRWZ92!jeIkBESt2|;ZB<_H zuKMJ3L1U3?q0?u@UFR|u`tCZy_>@ugp6iQ%*%G=*;SX{x7rqgUYAF}|=NR9ez!vaw T*KJLpD;Ydp{an^LB{Ts5V5?`| literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_1_1.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_1_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e86c4e5b907bde0c1c7af7a9e51f1a23852a9456 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^VnD3J!3-qBx_2A`QtAOdA+A9Bf4uzjaOK<9{g?f< z_j~KFb~fIwoB*_l zoq{d7u1z|rhb&x=#uZ&FEJ_i%Y1>uXe_7n}-!$vfiy!E^PgK>gQT-a2%FXqB+UMBG z)lV39PG3EPTU9IOHQydD`7Q6xEhs%+d{<8E{-7; zx3*p|6gq6c;S#uk!85Mt|LbK1sW(#YL_EDNyx4KcoW~q5eYYNcY8kRLrX_t4( literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_2_1.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_2_2.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea7f810ac1f010ab0ce7ce6602e6015adb439c0 GIT binary patch literal 328 zcmV-O0k{5%P)y`BjLH9>yN4)X&OO!q*`hcP+Adyv^FA+V+m+&M6K+Bnj7&cbO821 zE%_I~$HF(z)<9whh|g9qIRKb^Z)^Ze`~YwdzMcg?`P@0c6Su%w*l{0xwOI1!!+q#a z|Gn{y_vQU(y8(RY5695Y$a-ttHwNjAU$u86rEy3adTre$z3u0t=W%GZnOTq2W@g5U aHnRUi#|m8jqhE;t0000LUhBb;(pTr$Z8ieAvxSnHp#o3@JbxSRqqhX>C>jrs- zs|;y()_*abA#-AR!z6~sJe&sCIBX}#Dr{opnR(mq?txu*jAl3TCFmyDu|$+IzqglO W#@=V86|D~R5`(9!pUXO@geCy-#(8A` literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_3_2.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_3_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6760a0487e254fabdd6e3a171f93f6546d98fb39 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^GC-`s!3-pCS!BrqDU|@95LY1mKVJTMxbki5{>%Q_ z`@Qv7I~#9T&tEJb-!JZ8&268~V7zn2GA*Dw#*!evU~p$1RxObbURQikxru!xr=3TvN9Gf!&?Ry<*Fx$hD5XTjKU_5P zLF=h)if^JS{a4(I`^kL6v|t(Is_Px$8?Vj{ar|-ORHC`>!%1souikv+;XUQaNAKlY z=Sys&V?F0y+IP84z2z_e`vqkZS8LQwUarsi!Svz`t3)M#t|rh?44$rjF6*2UngBwS BWJdr1 literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_4_1.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b0dee7efaf079baddb3637ab40cb2a6fc93c96ce GIT binary patch literal 1102 zcmX9-acCQL6n<%&UE8$HAVQo$t`hM6I5fijaosX^o7WQSZN1tnM2Y1JHw-M)t2ZfQBzj0QcilduNbKkEFMG5FqleE+-; zzVE&FCnrLK{g3qnz~K1vqf?#f?$lIocc))}^z4fO-7tB4daOeo4o6p4S9f=JPfw52 z>D;$(ABJJQy}f;XeO|xcPf-DuWdwnfq==%(sZ=VLE0jt`wYq9qt#+FV022hBb44Pa zSPYLR0_jXJm*0eEuuXYp{gH%2M{q#cDs{4pGpu~Fu2U~E752@ncONA zP^IFdJbuO-;PIeHgk&WuEj%v@aeaGvQ!SV#|tP zrlfjKY3iv~CAVwps9AM;Xo3t=bd+J^f{>AFR0 zE&GHT8EvrXW<;~&<(9hIF4=qaUF0I&ZrbY&;eLS(NWq}O@oBNMEK$m2SBfR8YPK5; zh#aN}?xcvTF*2WE^t4dUM_2S@y^^=<)pmOeF#urz1waMR0agH-7@!V#79|vZY~#3r@Xlv<6AM1)vON+e_|kfH-QhSFK8!Ua}& z(hmEPh@&Kd@)R-{WOAM3r=N1&d+-BqOic)I^v|_dJLKQ-(PPsiAAEbB`=UDBJ9Zo0 zdSpIu!ZUneS|S&BE^8}y|GM9k{q3{GgWsFK+?_b|f^%W>{>d&Pyf9PzN^#Eb;HL+- z58Yc|+8Ek+`o{XT&C4@i&aDwcaW-CY+kssFu3!xxHXcV``G>m zvr3HdNBNuHjD6nE` DDbL=e literal 0 HcmV?d00001 diff --git a/resources/g2/track/raptor/very_small_turn_right_steep_up_4_2.png b/resources/g2/track/raptor/very_small_turn_right_steep_up_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..251476d3532a8d2dc3c050cb22b09314a37e9ff8 GIT binary patch literal 860 zcmX9-F^HpR6n-=wvfYv6jS`?u<*V2zW0jv72kWG-#yB& z?!LPNfL9Mc-@otc#Y+qaeSTg3kO2(f-7g>Bz6>ueE-x_aJ z33*E!xoB5bH}k9w_uaO6KAh2r!Ev4- zWNM-@tR)DJqAtvSnY#^^yUn&Ps_rO)sbG$VdnOgmn3XFg3oTnscZqk%SIwd5y01tC z&;cBP5Fi2A0h};EJyZ#~4oYHFA5X_^Z4TI3WscO-^{8dGLU+qDq3M$*l*b5uU3M|5cEG4K>7 zv$!ErGmUenO6bkvrI#hksz{o;K;4m76qEw00ioWDMKAXar0=dyCw>)ugHx80VQ90N z<+?V<`aBznTq1F~!tPb3(I?2HkVm5xhf)z$N`L(P_oIJbe&CPyj~e{=<)7dB=I-JC e&4=Ni*2kV-!o`2T|N2+Y;Nk7#{og-*{PaJsac8Ok literal 0 HcmV?d00001 diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 1b1da1abea..f61993f652 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -95,6 +95,7 @@ static constexpr const char RideTypeViewOrder[] = { RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER, RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER, RIDE_TYPE_HYBRID_COASTER, + RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER, // Gentle rides RIDE_TYPE_MONORAIL_CYCLES, diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index a8139fdcb0..ae1919630e 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -323,6 +323,7 @@ + @@ -758,6 +759,7 @@ + @@ -865,4 +867,4 @@ - \ No newline at end of file + diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index b1b959b217..a445f8fb93 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -111,6 +111,7 @@ enum STR_RIDE_NAME_59 = 91, STR_RIDE_NAME_LIM_LAUNCHED_ROLLER_COASTER = 92, STR_RIDE_NAME_HYBRID_COASTER = 93, + STR_RIDE_NAME_SINGLE_RAIL_ROLLER_COASTER = 94, STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER = 512, STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER = 513, @@ -201,6 +202,7 @@ enum STR_RIDE_DESCRIPTION_LIM_LAUNCHED_ROLLER_COASTER = 602, STR_RIDE_DESCRIPTION_HYBRID_COASTER = 603, + STR_RIDE_DESCRIPTION_SINGLE_RAIL_ROLLER_COASTER = 604, STR_GUEST_X = 767, STR_HANDYMAN_X = 768, diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index be65539797..3cb364b1ca 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -1018,6 +1018,7 @@ uint8_t RideObject::ParseRideType(const std::string& s) { "mine_ride", RIDE_TYPE_MINE_RIDE }, { "lim_launched_rc", RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER }, { "hybrid_rc", RIDE_TYPE_HYBRID_COASTER }, + { "single_rail_rc", RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER } }; auto result = LookupTable.find(s); return (result != LookupTable.end()) ? result->second : static_cast(RIDE_TYPE_NULL); diff --git a/src/openrct2/ride/Ride.h b/src/openrct2/ride/Ride.h index 1ec76b5468..dcf12d769b 100644 --- a/src/openrct2/ride/Ride.h +++ b/src/openrct2/ride/Ride.h @@ -647,6 +647,7 @@ enum RIDE_TYPE_SPINNING_WILD_MOUSE, RIDE_TYPE_CLASSIC_MINI_ROLLER_COASTER, RIDE_TYPE_HYBRID_COASTER, + RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER, RIDE_TYPE_COUNT }; diff --git a/src/openrct2/ride/RideData.cpp b/src/openrct2/ride/RideData.cpp index c09cc186b9..a0851f3133 100644 --- a/src/openrct2/ride/RideData.cpp +++ b/src/openrct2/ride/RideData.cpp @@ -54,6 +54,7 @@ #include "coaster/meta/ReverseFreefallCoaster.h" #include "coaster/meta/ReverserRollerCoaster.h" #include "coaster/meta/SideFrictionRollerCoaster.h" +#include "coaster/meta/SingleRailRollerCoaster.h" #include "coaster/meta/SpinningWildMouse.h" #include "coaster/meta/SpiralRollerCoaster.h" #include "coaster/meta/StandUpRollerCoaster.h" @@ -310,6 +311,7 @@ constexpr const RideTypeDescriptor RideTypeDescriptors[RIDE_TYPE_COUNT] = { /* RIDE_TYPE_SPINNING_WILD_MOUSE, */ SpinningWildMouseRTD, /* RIDE_TYPE_CLASSIC_MINI_ROLLER_COASTER, */ ClassicMiniRollerCoasterRTD, /* RIDE_TYPE_HYBRID_COASTER */ HybridCoasterRTD, + /* RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER */ SingleRailRollerCoasterRTD, }; bool RideTypeDescriptor::HasFlag(uint64_t flag) const diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 36171e64e9..cfd732763a 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -4390,6 +4390,52 @@ void ride_ratings_calculate_hybrid_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } +void ride_ratings_calculate_single_rail_roller_coaster(Ride* ride) +{ + if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) + return; + + ride->unreliability_factor = 16; + set_unreliability_factor(ride); + + RatingTuple ratings; + ride_ratings_set(&ratings, RIDE_RATING(3, 50), RIDE_RATING(0, 60), RIDE_RATING(0, 40)); + ride_ratings_apply_length(&ratings, ride, 6000, 764); + ride_ratings_apply_synchronisation(&ratings, ride, RIDE_RATING(0, 40), RIDE_RATING(0, 05)); + ride_ratings_apply_train_length(&ratings, ride, 187245); + ride_ratings_apply_max_speed(&ratings, ride, 44281, 88562, 35424); + ride_ratings_apply_average_speed(&ratings, ride, 364088, 436906); + ride_ratings_apply_duration(&ratings, ride, 150, 26214); + ride_ratings_apply_gforces(&ratings, ride, 36864, 35746, 49648); + ride_ratings_apply_turns(&ratings, ride, 26749, 34767, 45749); + ride_ratings_apply_drops(&ratings, ride, 29127, 46811, 49152); + ride_ratings_apply_sheltered_ratings(&ratings, ride, 15420, 32768, 35108); + ride_ratings_apply_proximity(&ratings, 22367); + ride_ratings_apply_scenery(&ratings, ride, 6693); + + if (ride->inversions == 0) + ride_ratings_apply_highest_drop_height_penalty(&ratings, ride, 14, 2, 2, 2); // Done + + ride_ratings_apply_max_speed_penalty(&ratings, ride, 0xA0000, 2, 2, 2); // Done + + if (ride->inversions == 0) + { + ride_ratings_apply_max_negative_g_penalty(&ratings, ride, FIXED_2DP(0, 40), 2, 2, 2); // Done + ride_ratings_apply_num_drops_penalty(&ratings, ride, 2, 2, 2, 2); // Done + } + + ride_ratings_apply_excessive_lateral_g_penalty(&ratings, ride, 24576, 35746, 49648); // Done + ride_ratings_apply_intensity_penalty(&ratings); + ride_ratings_apply_adjustments(ride, &ratings); + + ride->ratings = ratings; + + ride->upkeep_cost = ride_compute_upkeep(ride); + ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; + + ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; +} + #pragma endregion #pragma region Ride rating calculation function table diff --git a/src/openrct2/ride/RideRatings.h b/src/openrct2/ride/RideRatings.h index 5a92411be4..69f85a3c7e 100644 --- a/src/openrct2/ride/RideRatings.h +++ b/src/openrct2/ride/RideRatings.h @@ -140,4 +140,5 @@ void ride_ratings_calculate_mini_roller_coaster(Ride* ride); void ride_ratings_calculate_mine_ride(Ride* ride); void ride_ratings_calculate_lim_launched_roller_coaster(Ride* ride); void ride_ratings_calculate_hybrid_coaster(Ride* ride); +void ride_ratings_calculate_single_rail_roller_coaster(Ride* ride); void ride_ratings_calculate_drink_stall(Ride* ride); diff --git a/src/openrct2/ride/TrackPaint.h b/src/openrct2/ride/TrackPaint.h index a9e4531599..07cac144dd 100644 --- a/src/openrct2/ride/TrackPaint.h +++ b/src/openrct2/ride/TrackPaint.h @@ -473,5 +473,9 @@ namespace HybridRC { TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType); } +namespace SingleRailRC +{ + TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType); +} #endif diff --git a/src/openrct2/ride/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/ride/coaster/SingleRailRollerCoaster.cpp new file mode 100644 index 0000000000..df74d5aaa0 --- /dev/null +++ b/src/openrct2/ride/coaster/SingleRailRollerCoaster.cpp @@ -0,0 +1,13418 @@ +#pragma region Copyright(c) 2014 - 2017 OpenRCT2 Developers +/***************************************************************************** + * OpenRCT2, an open source clone of Roller Coaster Tycoon 2. + * + * OpenRCT2 is the work of many authors, a full list can be found in contributors.md + * For more information, visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 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 3 of the License, or + * (at your option) any later version. + * + * A full copy of the GNU General Public License can be found in licence.txt + *****************************************************************************/ +#pragma endregion + +#include "../../drawing/Drawing.h" +#include "../../interface/Viewport.h" +#include "../../paint/Paint.h" +#include "../../paint/Supports.h" +#include "../../sprites.h" +#include "../../world/Map.h" +#include "../../world/Sprite.h" +#include "../RideData.h" +#include "../TrackData.h" +#include "../TrackPaint.h" + +namespace SingleRailRC +{ + static void TrackFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT + 1), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT + 2), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT + 3), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 0), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 1: + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 1), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackStation( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + static constexpr const uint32_t imageIds[4][3] = { + { (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 0), (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 0), SPR_STATION_BASE_B_SW_NE }, + { (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 1), (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 1), SPR_STATION_BASE_B_NW_SE }, + { (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 0), (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 0), SPR_STATION_BASE_B_SW_NE }, + { (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 1), (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 1), SPR_STATION_BASE_B_NW_SE }, + }; + + if (tileElement->AsTrack()->GetTrackType() == TrackElemType::EndStation) + { + PaintAddImageAsParentRotated( + session, direction, imageIds[direction][1] | session->TrackColours[SCHEME_TRACK], 0, 0, 32, 20, 1, height, 0, 6, + height + 3); + } + else + { + PaintAddImageAsParentRotated( + session, direction, imageIds[direction][0] | session->TrackColours[SCHEME_TRACK], 0, 0, 32, 20, 1, height, 0, 6, + height + 3); + } + PaintAddImageAsParentRotated( + session, direction, imageIds[direction][2] | session->TrackColours[SCHEME_MISC], 0, 0, 32, 28, 2, height - 2, 0, 2, + height); + track_paint_util_draw_station_metal_supports_2(session, direction, height, session->TrackColours[SCHEME_SUPPORTS], 0); + track_paint_util_draw_station_2(session, rideIndex, direction, height, tileElement, 4, 7); + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_SQUARE_FLAT); + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void Track25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 8), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 9), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 10), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 11), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 8), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 9), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 10), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 11), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void Track60DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 12), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 13), 0, + 0, 32, 1, 98, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 14), 0, + 0, 32, 1, 98, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 15), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 32, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 12), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 13), 0, 0, + 32, 1, 98, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 14), 0, 0, + 32, 1, 98, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 15), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 32, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 56, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + } + + static void TrackFlatTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 1), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 2), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 3), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 0), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 1), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 2), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 3), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void Track25DegUpTo60DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 1), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 2), 0, + 0, 32, 1, 66, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 3), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 4), 0, + 0, 32, 1, 66, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 5), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 12, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 0), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 1), 0, 0, + 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 2), 0, 0, + 32, 1, 66, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 3), 0, 0, + 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 4), 0, 0, + 32, 1, 66, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 5), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 12, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 24, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + } + + static void Track60DegUpTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 6), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 7), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 8), 0, + 0, 32, 1, 66, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 9), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 10), 0, + 0, 32, 1, 66, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP + 11), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 6), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 7), 0, 0, + 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 8), 0, 0, + 32, 1, 66, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 9), 0, 0, + 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 10), 0, 0, + 32, 1, 66, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP + 11), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 24, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + } + + static void Track25DegUpToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 4), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 5), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 6), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE + 7), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 4), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 5), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 6), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE + 7), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void Track25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track60DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track60DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackFlatTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpToFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownTo60DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track60DegUpTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track60DegDownTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpTo60DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track90DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 8), + 0, 0, 2, 20, 31, height, 4, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 9), + 0, 0, 2, 20, 31, height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 10), + 0, 0, 2, 20, 31, height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 11), + 0, 0, 2, 20, 31, height, 4, 6, height + 8); + break; + } + paint_util_set_vertical_tunnel(session, height + 32); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + break; + } + } + + static void Track90DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track90DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track60DegUpTo90DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 0), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 1), + 0, 0, 2, 20, 55, height, 24, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 2), + 0, 0, 2, 20, 55, height, 24, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 3), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 36, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_vertical_tunnel(session, height + 56); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + break; + } + } + + static void Track90DegDownTo60DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track60DegUpTo90DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track90DegUpTo60DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 4), 0, 0, 32, + 20, 3, height, 0, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 5), 0, 0, 2, + 20, 31, height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 6), 0, 0, 2, + 20, 31, height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 7), 0, 0, 32, + 20, 3, height, 0, 6, height + 8); + break; + } + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height + 48, TUNNEL_2); + break; + case 2: + paint_util_push_tunnel_left(session, height + 48, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 80, 0x20); + } + + static void Track60DegDownTo90DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 6), + 0, 0, 2, 20, 31, height, 24, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 7), + 0, 0, 32, 20, 3, height, 0, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 4), + 0, 0, 32, 20, 3, height, 0, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL + 5), + 0, 0, 2, 20, 31, height, 24, 6, height + 8); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 48, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 80, 0x20); + break; + case 1: + break; + } + } + + static void TrackLeftQuarterTurn3( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 3), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 6), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 9), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 1), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 4), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 7), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 10), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 2), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 5), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 8), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE + 11), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightQuarterTurn3( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackLeftQuarterTurn3(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftQuarterTurn5( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 5), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 10), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 15), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 1), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 6), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 11), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 16), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 2), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 7), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 12), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 17), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 3), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 8), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 13), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 18), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 4), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 9), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 14), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE + 19), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightQuarterTurn5( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackLeftQuarterTurn5(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftEighthToDiag( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 4), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 8), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 12), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 1), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 5), 0, 0, 34, 16, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 9), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 13), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 2), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 6), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 10), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 14), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 3), 0, 0, 16, 16, 3, + height, 16, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 7), 0, 0, 16, 18, 3, + height, 0, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 11), 0, 0, 16, 16, 3, + height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 15), 0, 0, 16, 16, 3, + height, 16, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightEighthToDiag( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 16), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 20), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 24), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 28), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 17), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 21), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 25), 0, 0, 34, 16, 3, + height, 0, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 29), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 18), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 22), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 26), 0, 0, 28, 28, 3, + height, 4, 4, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 30), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 19), 0, 0, 16, 16, 3, + height, 16, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 23), 0, 0, 16, 16, 3, + height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 27), 0, 0, 16, 18, 3, + height, 0, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE + 31), 0, 0, 16, 16, 3, + height, 16, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftEighthToOrthogonal( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; + TrackRightEighthToDiag(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightEighthToOrthogonal( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; + TrackLeftEighthToDiag(session, rideIndex, trackSequence, (direction + 3) & 3, height, tileElement); + } + + static void TrackDiagFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_DIAGONAL + 3), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_DIAGONAL + 0), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_DIAGONAL + 2), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiag25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 11), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 11), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 8), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 8), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 10), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + } + } + + static void TrackDiag25DegUpToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 7), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 4), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 6), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 5), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 5), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + } + } + + static void TrackDiagFlatTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 3), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 0), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 2), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height + 2, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height + 2, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiag25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 9), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 9), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 10), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 8), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 8), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 11), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 11), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + } + } + + static void TrackDiagFlatTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 5), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 5), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 6), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 4), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 7), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + break; + } + + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackDiag25DegDownToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 2), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 0), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL + 3), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiag60DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 11), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 11), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 8), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 8), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 10), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 38, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 9), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 36, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 38, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 36, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 38, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 9), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 36, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 38, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 36, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + } + } + + static void TrackDiag25DegUpTo60DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 3), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 0), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 2), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackDiag60DegUpTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 7), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 4), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 6), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 5), -16, + -16, 16, 16, 3, height, 0, 0, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 5), -16, -16, + 16, 16, 3, height, 0, 0, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 21, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackDiag60DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 9), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 9), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 10), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 8), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 8), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 24, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 11), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 24, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 24, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 11), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 24, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + break; + } + } + + static void TrackDiag25DegDownTo60DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 5), -16, + -16, 16, 16, 3, height, 0, 0, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 5), -16, -16, + 16, 16, 3, height, 0, 0, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 6), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 4), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 7), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 17, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackDiag60DegDownTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 1), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 1), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 2), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 0), -16, -16, + 32, 32, 3, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL + 3), -16, -16, + 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackFlatToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 1), 0, + 0, 32, 1, 26, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 2), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 3), 0, + 0, 32, 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 4), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 5), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackFlatToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 6), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 7), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 8), 0, + 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 9), 0, + 0, 32, 1, 26, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 10), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 11), + 0, 0, 32, 1, 26, height, 0, 27, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackLeftBankToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatToRightBank(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBankToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatToLeftBank(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBankTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 12), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 13), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 14), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 15), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 16), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 17), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackRightBankTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 18), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 19), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 20), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 21), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 22), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 23), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void Track25DegUpToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 24), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 25), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 26), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 27), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 28), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 29), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void Track25DegUpToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 30), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 31), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 32), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 33), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 34), + 0, 0, 32, 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 35), + 0, 0, 32, 1, 34, height, 0, 27, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void TrackLeftBankTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpToRightBank(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBankTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpToLeftBank(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBankTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBankTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 36), + 0, 0, 32, 1, 26, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 37), + 0, 0, 32, 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 38), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION + 39), + 0, 0, 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBank(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackDiagFlatToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 1), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiagFlatToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 9), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 5), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 8), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiagLeftBankToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 6), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 7), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 8), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 5), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 9), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiagRightBankToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 2), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 3), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 0), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 1), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 4), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiagLeftBankTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 14), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 11), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 13), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 12), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiagRightBankTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 19), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 15), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 17), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 18), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 16), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiag25DegUpToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 24), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 20), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 21), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 23), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 22), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + } + } + + static void TrackDiag25DegUpToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 29), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 25), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 27), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 28), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 26), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + } + } + + static void TrackDiagLeftBankTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 26), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 27), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 28), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 25), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 29), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + break; + } + + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackDiagRightBankTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 22), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 23), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 20), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 21), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 24), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + break; + } + + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackDiag25DegDownToLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 16), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 17), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 18), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 15), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 19), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiag25DegDownToRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 12), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 13), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 10), -16, + -16, 32, 32, 3, height, -16, -16, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 11), -16, + -16, 32, 32, 0, height, -16, -16, height + 35); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 14), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackDiagLeftBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 33), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 30), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 32), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 31), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackDiagRightBank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 31), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 32), -16, + -16, 32, 32, 3, height, -16, -16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 30), -16, + -16, 32, 32, 0, height, -16, -16, height + 27); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL + 33), -16, + -16, 32, 32, 3, height, -16, -16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftQuarterTurn3Bank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 0), 0, 0, 32, + 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 1), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 4), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 7), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 11), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 2), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 5), 0, 0, 16, + 16, 1, height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 8), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 12), 0, 0, 16, + 16, 3, height, 16, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 3), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 6), 0, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 9), 0, 0, 20, + 32, 3, height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 10), 0, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED + 13), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightQuarterTurn3Bank( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackLeftQuarterTurn3Bank(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackBankedLeftQuarterTurn5( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 0), 0, 0, 32, + 20, 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 1), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 6), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 11), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 17), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 2), 0, 0, 32, + 16, 3, height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 7), 0, 0, 32, + 16, 1, height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 12), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 18), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 3), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 8), 0, 0, 16, + 16, 1, height, 16, 16, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 13), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 19), 0, 0, 16, + 16, 3, height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 4), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 9), 0, 0, 16, + 32, 1, height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 14), 0, 0, 16, + 32, 3, height, 0, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 20), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 5), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 10), 0, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 15), 0, 0, 20, + 32, 3, height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 16), 0, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED + 21), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackBankedRightQuarterTurn5( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackBankedLeftQuarterTurn5(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftEighthBankToDiag( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 0), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 4), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 8), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 12), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 1), 0, 0, 32, + 16, 3, height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 5), 0, 0, 34, + 16, 0, height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 9), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 13), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 2), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 6), 0, 0, 16, + 16, 0, height, 16, 16, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 10), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 14), 0, 0, 16, + 16, 3, height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 3), 0, 0, 16, + 16, 3, height, 16, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 7), 0, 0, 16, + 18, 0, height, 0, 16, height + 27); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 11), 0, 0, 16, + 16, 3, height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 15), 0, 0, 16, + 16, 3, height, 16, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightEighthBankToDiag( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 16), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 20), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 24), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 28), 0, 0, 32, + 1, 26, height, 0, 27, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 17), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 21), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 25), 0, 0, 34, + 16, 0, height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 29), 0, 0, 32, + 16, 3, height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 18), 0, 0, 16, + 16, 3, height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 22), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 26), 0, 0, 28, + 28, 0, height, 4, 4, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 30), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 19), 0, 0, 16, + 16, 3, height, 16, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 23), 0, 0, 16, + 16, 3, height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 27), 0, 0, 16, + 18, 0, height, 0, 16, height + 27); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED + 31), 0, 0, 16, + 16, 3, height, 16, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftEighthBankToOrthogonal( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; + TrackRightEighthBankToDiag(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightEighthBankToOrthogonal( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence]; + TrackLeftEighthBankToDiag(session, rideIndex, trackSequence, (direction + 3) & 3, height, tileElement); + } + + static void TrackLeftQuarterTurn3Tile25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 0), 0, 6, 32, + 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 2), 0, 6, 32, + 20, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 4), 0, 6, 32, + 20, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 6), 0, 6, 32, + 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 1), 6, 0, 20, + 32, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 3), 6, 0, 20, + 32, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 5), 6, 0, 20, + 32, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 7), 6, 0, 20, + 32, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackRightQuarterTurn3Tile25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 8), 0, 6, 32, + 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 10), 0, 6, 32, + 20, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 12), 0, 6, 32, + 20, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 14), 0, 6, 32, + 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 9), 6, 0, 20, + 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 11), 6, 0, 20, + 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 13), 6, 0, 20, + 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 10, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE + 15), 6, 0, 20, + 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackLeftQuarterTurn3Tile25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackRightQuarterTurn3Tile25DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightQuarterTurn3Tile25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackLeftQuarterTurn3Tile25DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftQuarterTurn525DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 0), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 5), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 10), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 15), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 1), 0, 0, 32, + 16, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 6), 0, 0, 32, + 16, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 11), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 16), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 2), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 7), 0, 0, 16, + 16, 3, height, 16, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 12), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 17), 0, 0, 16, + 16, 3, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 3), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 8), 0, 0, 16, + 32, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 13), 0, 0, 16, + 32, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 18), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 4), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 9), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 14), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 19), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackRightQuarterTurn525DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 20), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 25), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 30), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 35), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 21), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 26), 0, 0, 32, + 16, 3, height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 31), 0, 0, 32, + 16, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 36), 0, 0, 32, + 16, 3, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 22), 0, 0, 16, + 16, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 27), 0, 0, 16, + 16, 3, height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 32), 0, 0, 16, + 16, 3, height, 16, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 37), 0, 0, 16, + 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 23), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 28), 0, 0, 16, + 32, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 33), 0, 0, 16, + 32, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 38), 0, 0, 16, + 32, 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 24), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 29), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 34), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE + 39), 0, 0, 20, + 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackLeftQuarterTurn525DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackRightQuarterTurn525DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightQuarterTurn525DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackLeftQuarterTurn525DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftQuarterTurn160DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 0), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 1), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 2), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 3), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 4), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 5), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 6), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 7), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + } + track_paint_util_left_quarter_turn_1_tile_tunnel(session, direction, height, -8, TUNNEL_1, +56, TUNNEL_2); + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + } + + static void TrackRightQuarterTurn160DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 8), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 9), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 10), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 11), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 12), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 13), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 14), + 0, 0, 28, 28, 3, height, 2, 2, height); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE + 15), + 0, 0, 28, 28, 1, height, 2, 2, height + 99); + break; + } + track_paint_util_right_quarter_turn_1_tile_tunnel(session, direction, height, -8, TUNNEL_1, +56, TUNNEL_2); + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 104, 0x20); + } + + static void TrackLeftQuarterTurn160DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightQuarterTurn160DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightQuarterTurn160DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftQuarterTurn160DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftQuarterTurn190DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 0), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 1), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 2), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 3), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 4), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 5), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + } + paint_util_set_vertical_tunnel(session, height + 96); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 96, 0x20); + break; + case 1: + break; + } + } + + static void TrackRightQuarterTurn190DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 6), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 7), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 8), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 9), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 10), 0, 0, 2, 20, + 63, height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST + 11), 0, 0, 2, 20, + 63, height, 4, 6, height + 8); + break; + } + paint_util_set_vertical_tunnel(session, height + 96); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 96, 0x20); + break; + case 1: + break; + } + } + + static void TrackLeftQuarterTurn190DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightQuarterTurn190DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightQuarterTurn190DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftQuarterTurn190DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void Track25DegUpToLeftBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 1), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 2), 0, 0, 32, 1, 34, + height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 3), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 4), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void Track25DegUpToRightBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 5), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 6), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 7), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 8), 0, 0, 32, 1, 34, + height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 9), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackLeftBanked25DegUpTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 10), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 11), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 12), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 13), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 14), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackRightBanked25DegUpTo25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 15), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 16), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 17), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 18), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 19), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void TrackLeftBanked25DegDownTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpToRightBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBanked25DegDownTo25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpToLeftBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownToLeftBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBanked25DegUpTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownToRightBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBanked25DegUpTo25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBankedFlatToLeftBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 20), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 21), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 22), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 23), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackRightBankedFlatToRightBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 24), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 25), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 26), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 27), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackLeftBanked25DegUpToLeftBankedFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 28), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 29), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 30), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 31), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void TrackRightBanked25DegUpToRightBankedFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 32), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 33), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 34), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 35), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void TrackLeftBankedFlatToLeftBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBanked25DegUpToRightBankedFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBankedFlatToRightBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBanked25DegUpToLeftBankedFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBanked25DegDownToLeftBankedFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBankedFlatToRightBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBanked25DegDownToRightBankedFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBankedFlatToLeftBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegUpLeftBanked( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 36), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 37), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 38), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 39), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void Track25DegUpRightBanked( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 40), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 41), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 42), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 43), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + } + + static void Track25DegDownLeftBanked( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpRightBanked(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track25DegDownRightBanked( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track25DegUpLeftBanked(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackFlatToLeftBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 44), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 45), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 46), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 47), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 48), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackFlatToRightBanked25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 49), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 50), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 51), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 52), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 53), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackLeftBanked25DegUpToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 54), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 55), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 56), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 57), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 58), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void TrackRightBanked25DegUpToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 59), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 60), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 61), 0, 0, 32, 20, + 3, height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 62), 0, 0, 32, 1, + 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION + 63), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_14); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + } + + static void TrackFlatToLeftBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBanked25DegUpToFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackFlatToRightBanked25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBanked25DegUpToFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBanked25DegDownToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatToRightBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBanked25DegDownToFlat( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatToLeftBanked25DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackLeftBankedQuarterTurn3Tile25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 0), 0, + 6, 32, 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 2), 0, + 6, 32, 1, 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 4), 0, + 6, 32, 20, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 6), 0, + 6, 32, 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 1), 6, + 0, 20, 32, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 3), 6, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 5), 6, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 7), 6, + 0, 20, 32, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackRightBankedQuarterTurn3Tile25DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 8), 0, + 6, 32, 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 10), 0, + 6, 32, 20, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 12), 0, + 6, 32, 1, 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 14), 0, + 6, 32, 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 9), 6, + 0, 20, 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 11), 6, + 0, 1, 32, 34, height, 27, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 13), 6, + 0, 1, 32, 34, height, 27, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 10, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED + 15), 6, + 0, 20, 32, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackLeftBankedQuarterTurn3Tile25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackRightBankedQuarterTurn3Tile25DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightBankedQuarterTurn3Tile25DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackLeftBankedQuarterTurn3Tile25DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftBankedQuarterTurn525DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 5), 0, + 0, 32, 1, 34, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 10), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 15), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 1), 0, + 0, 32, 16, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 6), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 11), 0, + 0, 32, 16, 3, height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 16), 0, + 0, 32, 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 2), 0, + 0, 16, 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 7), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 12), 0, + 0, 16, 16, 3, height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 17), 0, + 0, 16, 16, 3, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 3), 0, + 0, 16, 32, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 8), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 13), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 18), 0, + 0, 16, 32, 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 4), 0, + 0, 20, 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 9), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 14), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 19), 0, + 0, 20, 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackRightBankedQuarterTurn525DegUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 20), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 25), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 30), 0, + 0, 32, 1, 34, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 35), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 21), 0, + 0, 32, 16, 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 26), 0, + 0, 32, 16, 3, height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 31), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 36), 0, + 0, 32, 16, 3, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 22), 0, + 0, 16, 16, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 27), 0, + 0, 16, 16, 3, height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 32), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 37), 0, + 0, 16, 16, 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 23), 0, + 0, 16, 32, 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 28), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 33), 0, + 0, 1, 1, 34, height, 30, 30, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 38), 0, + 0, 16, 32, 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 24), 0, + 0, 20, 32, 3, height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 29), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 34), 0, + 0, 1, 32, 34, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED + 39), 0, + 0, 20, 32, 3, height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_2); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackLeftBankedQuarterTurn525DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackRightBankedQuarterTurn525DegUp(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightBankedQuarterTurn525DegDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackLeftBankedQuarterTurn525DegUp(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackSBendLeft( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 4), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 3), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 7), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 1), 0, + 0, 32, 26, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 5), 0, + 0, 32, 26, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 1, height - 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 2), 0, + 0, 32, 26, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 6), 0, + 0, 32, 26, 3, height, 0, 6, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 2), 0, + 0, 32, 26, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 6), 0, + 0, 32, 26, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 1), 0, + 0, 32, 26, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 5), 0, + 0, 32, 26, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 1, height - 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 3), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 7), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 0), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 4), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 2: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackSBendRight( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 8), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 12), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 11), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 15), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 9), 0, + 0, 32, 26, 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 13), 0, + 0, 32, 26, 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 10), 0, + 0, 32, 26, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 14), 0, + 0, 32, 26, 3, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 10), 0, + 0, 32, 26, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 14), 0, + 0, 32, 26, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 9), 0, + 0, 32, 26, 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 13), 0, + 0, 32, 26, 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 11), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 15), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 8), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_S_BEND + 12), 0, + 0, 32, 20, 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 2: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftHalfBankedHelixUpSmall( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 1), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 4), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 7), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 11), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 2), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 5), 0, 0, 16, 16, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 8), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 12), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 3), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 6), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 9), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 10), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 13), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 11), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 0), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 1), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 4), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 7), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 12), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 2), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 5), 0, 0, 16, 16, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 8), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 7: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 13), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 3), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 6), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 9), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 10), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackRightHalfBankedHelixUpSmall( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 14), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 17), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 21), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 24), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 25), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 15), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 18), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 22), 0, 0, 16, 16, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 26), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 16), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 19), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 20), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 23), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 27), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 17), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 21), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 24), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 25), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 14), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 18), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 22), 0, 0, 16, 16, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 26), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 15), 0, 0, 16, 16, 3, + height, 16, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 7: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 19), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 20), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 23), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 27), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX + 16), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 6, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftHalfBankedHelixDownSmall( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (trackSequence >= 4) + { + trackSequence -= 4; + direction = (direction - 1) & 3; + } + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackRightHalfBankedHelixUpSmall(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightHalfBankedHelixDownSmall( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (trackSequence >= 4) + { + trackSequence -= 4; + direction = (direction + 1) & 3; + } + trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence]; + TrackLeftHalfBankedHelixUpSmall(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftHalfBankedHelixUpLarge( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 1), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 6), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 11), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 17), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 2), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 7), 0, 0, 32, 16, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 12), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 18), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 3), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 8), 0, 0, 16, 16, 1, + height, 16, 16, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 13), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 19), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 4), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 9), 0, 0, 16, 32, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 14), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 20), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 5), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 10), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 15), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 16), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 21), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 7: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 17), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 0), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 1), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 6), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 11), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 8: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 9: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 18), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 2), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 7), 0, 0, 16, 32, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 12), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 10: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 19), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 3), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 8), 0, 0, 16, 16, 1, + height, 16, 16, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 13), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 11: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 12: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 20), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 4), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 9), 0, 0, 32, 16, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 14), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 13: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 21), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 5), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 10), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 15), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 16), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + static void TrackRightHalfBankedHelixUpLarge( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 22), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 27), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 33), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 38), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 39), 0, 0, 32, 1, 26, + height, 0, 27, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 23), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 28), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 34), 0, 0, 32, 16, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 40), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 24), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 29), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 35), 0, 0, 16, 16, 1, + height, 16, 16, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 41), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 4: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 25), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 30), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 36), 0, 0, 16, 32, 1, + height, 0, 0, height + 27); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 42), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 26), 0, 0, 20, 32, 3, + height, 6, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 31), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 32), 0, 0, 1, 32, 26, + height, 27, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 37), 0, 0, 1, 32, 26, + height, 27, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 43), 0, 0, 20, 32, 3, + height, 6, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 7: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 27), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 33), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 38), 0, 0, 20, 32, 3, + height, 6, 0, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 39), 0, 0, 1, 32, 26, + height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 22), 0, 0, 20, 32, 3, + height, 6, 0, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 1, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 8: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 9: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 28), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 34), 0, 0, 16, 32, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 40), 0, 0, 16, 32, 3, + height, 0, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 23), 0, 0, 16, 32, 3, + height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 10: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 29), 0, 0, 16, 16, 3, + height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 35), 0, 0, 16, 16, 1, + height, 16, 16, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 41), 0, 0, 16, 16, 3, + height, 16, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 24), 0, 0, 16, 16, 3, + height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 11: + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 12: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 30), 0, 0, 32, 16, 3, + height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 36), 0, 0, 32, 16, 1, + height, 0, 0, height + 27); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 42), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 25), 0, 0, 32, 16, 3, + height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 13: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 31), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 32), 0, 0, 32, 1, 26, + height, 0, 27, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 37), 0, 0, 32, 1, 26, + height, 0, 27, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 43), 0, 0, 32, 20, 3, + height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX + 26), 0, 0, 32, 20, 3, + height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 8, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + } + } + + static void TrackLeftHalfBankedHelixDownLarge( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (trackSequence >= 7) + { + trackSequence -= 7; + direction = (direction - 1) & 3; + } + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackRightHalfBankedHelixUpLarge(session, rideIndex, trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightHalfBankedHelixDownLarge( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (trackSequence >= 7) + { + trackSequence -= 7; + direction = (direction + 1) & 3; + } + trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence]; + TrackLeftHalfBankedHelixUpLarge(session, rideIndex, trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void TrackLeftBarrelRollUpToDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 1), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 4, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 6), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 7), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 12), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 13), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 0, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 18), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 19), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 2), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 3), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 8), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 9), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 14), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 15), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 20), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 21), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 4), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 5), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 10), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 11), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 16), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 17), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 22), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 23), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + } + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height, TUNNEL_INVERTED_3); + break; + case 2: + paint_util_push_tunnel_left(session, height, TUNNEL_INVERTED_3); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackRightBarrelRollUpToDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 24), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 25), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 30), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 31), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 0, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 36), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 37), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 4, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 42), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 43), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 4, height + 1, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 26), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 27), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 32), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 33), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 38), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 39), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 44), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 45), 0, 0, 32, 20, 0, + height, 0, 6, height + 28); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 28), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 29), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 34), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 35), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 40), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 41), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 46), 0, 0, 32, 20, 3, + height, 0, 6, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL + 47), 0, 0, 32, 20, 0, + height, 0, 6, height + 44); + break; + } + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height, TUNNEL_INVERTED_3); + break; + case 2: + paint_util_push_tunnel_left(session, height, TUNNEL_INVERTED_3); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackLeftBarrelRollDownToUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftBarrelRollUpToDown(session, rideIndex, 2 - trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackRightBarrelRollDownToUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightBarrelRollUpToDown(session, rideIndex, 2 - trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackHalfLoopUp( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 0), + 0, 6, 32, 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 4), + 0, 6, 32, 20, 11, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 8), + 0, 6, 32, 20, 9, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 12), + 0, 6, 32, 20, 7, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 1), + 0, 0, 32, 20, 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 5), + 0, 14, 3, 20, 63, height, 28, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 15, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 9), + 0, 6, 3, 20, 63, height, 28, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 13), + 0, 6, 32, 20, 3, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 2), + 16, 0, 2, 16, 119, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 6), + 12, 0, 3, 16, 119, height, 12, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 10), + 10, 16, 4, 12, 119, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 14), + 16, 16, 2, 16, 119, height, 15, 6, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 168, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 3), + 0, 0, 32, 16, 3, height + 32); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 7), + 0, 0, 32, 16, 3, height + 32); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 11), + 0, 16, 32, 12, 3, height + 32); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP + 15), + 0, 16, 32, 12, 3, height + 32); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackHalfLoopDown( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackHalfLoopUp(session, rideIndex, 3 - trackSequence, direction, height, tileElement); + } + + static void TrackBrakes( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 0), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + case 1: + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BRAKE + 1), 0, 0, 32, + 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackOnRidePhoto( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, IMAGE_TYPE_REMAP | SPR_STATION_BASE_D, 0, 0, 32, 32, 1, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 0), 0, 0, 32, 20, + 0, height, 0, 6, height + 3); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, IMAGE_TYPE_REMAP | SPR_STATION_BASE_D, 0, 0, 32, 32, 1, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 1), 0, 0, 32, 20, + 0, height, 0, 6, height + 3); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, IMAGE_TYPE_REMAP | SPR_STATION_BASE_D, 0, 0, 32, 32, 1, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 0), 0, 0, 32, 20, + 0, height, 0, 6, height + 3); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, IMAGE_TYPE_REMAP | SPR_STATION_BASE_D, 0, 0, 32, 32, 1, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT + 1), 0, 0, 32, 20, + 0, height, 0, 6, height + 3); + break; + } + track_paint_util_onride_photo_paint(session, direction, height + 3, tileElement); + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + } + + static void TrackFlatTo60DegUpLongBase( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 0), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 4), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 8), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 12), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 1), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 5), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 9), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 13), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 2), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 6), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 10), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 14), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 10, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 3), 0, 0, 32, 20, 3, + height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 7), 0, 0, 32, 1, 98, + height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 11), 0, 0, 32, 1, + 98, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 15), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 19, height, session->TrackColours[SCHEME_SUPPORTS]); + } + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height + 24, TUNNEL_2); + break; + case 2: + paint_util_push_tunnel_left(session, height + 24, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 80, 0x20); + break; + } + } + static void Track60DegUpToFlatLongBase( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 16), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 20), 0, 0, 32, 1, + 98, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 24), 0, 0, 32, 1, + 98, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 28), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 24, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 80, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 17), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 21), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 25), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 29), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 18, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 80, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 18), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 22), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 26), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 30), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 13, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 19), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 23), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 27), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP + 31), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + } + switch (direction) + { + case 1: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 2: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + break; + } + } + + static void TrackFlatTo60DegDownLongBase( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track60DegUpToFlatLongBase(session, rideIndex, 3 - trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track60DegDownToFlatLongBase( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatTo60DegUpLongBase(session, rideIndex, 3 - trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackBlockBrakes( + paint_session* session, uint16_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (direction) + { + case 0: + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 0), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + case 1: + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE + 1), 0, 0, + 32, 20, 3, height, 0, 6, height); + break; + } + if (track_paint_util_should_paint_supports(session->MapPosition)) + { + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 0, height, session->TrackColours[SCHEME_SUPPORTS]); + } + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 32, 0x20); + } + + static void TrackLeftCorkscrewUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 0), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 3), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 6), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 9), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + } + + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 1), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 4), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 7), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 10), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + } + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 2), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 5), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 8), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 11), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + } + + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 33, session->TrackColours[SCHEME_SUPPORTS]); + + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackRightCorkscrewUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 12), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 15), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 18), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 21), + 0, 0, 32, 20, 3, height, 0, 6, height + 4); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 2, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 13), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 16), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 19), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 22), + 0, 0, 20, 20, 3, height, 6, 6, height + 10); + break; + } + paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 14), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 17), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 20), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW + 23), + 0, 0, 20, 32, 3, height, 6, 0, height + 24); + break; + } + + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 33, session->TrackColours[SCHEME_SUPPORTS]); + + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height + 8, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height + 8, TUNNEL_0); + break; + } + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackLeftCorkscrewDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightCorkscrewUp(session, rideIndex, 2 - trackSequence, (direction + 1) & 3, height, tileElement); + } + + static void TrackRightCorkscrewDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftCorkscrewUp(session, rideIndex, 2 - trackSequence, (direction - 1) & 3, height, tileElement); + } + + static void Track90DegToInvertedFlatQuarterLoopUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 0), 0, 0, 2, 20, 31, + height, 4, 6, height + 8); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 3), 0, 0, 2, 20, 31, + height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 6), 0, 0, 2, 20, 31, + height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 9), 0, 0, 2, 20, 31, + height, 4, 6, height + 8); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 88, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 1), 0, 0, 2, 20, 31, + height, -8, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 4), 0, 0, 2, 20, 63, + height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 7), 0, 0, 2, 20, 63, + height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 10), 0, 0, 2, 20, 31, + height, -8, 6, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 2), 0, 0, 32, 20, 3, + height, 0, 6, height + 24); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 5), 0, 0, 2, 20, 31, + height, 24, 6, height + 8); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 8), 0, 0, 2, 20, 31, + height, 24, 6, height + 8); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP + 11), 0, 0, 32, 20, 3, + height, 0, 6, height + 24); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height + 16, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + } + } + + static void TrackInvertedFlatTo90DegQuarterLoopDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track90DegToInvertedFlatQuarterLoopUp(session, rideIndex, 2 - trackSequence, direction, height, tileElement); + } + + static void TrackLeftBankToLeftQuarterTurn3Tile25DegUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 0), 0, 6, 32, + 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 2), 0, 6, 32, + 20, 3, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 3), 0, 6, 32, + 1, 26, height, 0, 27, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 5), 0, 6, 32, + 20, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 7), 0, 6, 32, + 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 1), 6, 0, 20, + 32, 3, height, 0, 6, height - 6); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 4), 6, 0, 20, + 32, 3, height, 0, 6, height - 6); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 6), 6, 0, 20, + 32, 3, height, 0, 6, height - 6); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 8), 6, 0, 20, + 32, 3, height, 0, 6, height - 6); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height - 6, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_2); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + static void TrackRightBankToRightQuarterTurn3Tile25DegUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 9), 0, 6, 32, + 20, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 11), 0, 6, + 32, 20, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 13), 0, 6, + 32, 20, 3, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 14), 0, 6, + 32, 1, 26, height, 0, 27, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 16), 0, 6, + 32, 20, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 10), 6, 0, + 20, 32, 3, height, 0, 6, height - 6); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 12), 6, 0, + 20, 32, 3, height, 0, 6, height - 6); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 15), 6, 0, + 20, 32, 3, height, 0, 6, height - 6); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 17), 6, 0, + 20, 32, 3, height, 0, 6, height - 6); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height - 6, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height, TUNNEL_2); + break; + case 1: + paint_util_push_tunnel_left(session, height, TUNNEL_2); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + static void TrackLeftQuarterTurn3Tile25DegDownToLeftBank( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 12), 0, 6, + 32, 20, 3, height, 0, 6, height - 6); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 15), 0, 6, + 32, 20, 3, height, 0, 6, height - 6); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 17), 0, 6, + 32, 20, 3, height, 0, 6, height - 6); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 10), 0, 6, + 32, 20, 3, height, 0, 6, height - 6); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height - 6, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 11), 6, 0, + 20, 32, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 13), 6, 0, + 20, 32, 3, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 14), 6, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 16), 6, 0, + 20, 32, 3, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 9), 6, 0, 20, + 32, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 2: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 3: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + static void TrackRightQuarterTurn3Tile25DegDownToRightBank( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 8), 0, 6, 32, + 20, 3, height, 0, 6, height - 6); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 1), 0, 6, 32, + 20, 3, height, 0, 6, height - 6); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 4), 0, 6, 32, + 20, 3, height, 0, 6, height - 6); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 6), 0, 6, 32, + 20, 3, height, 0, 6, height - 6); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height - 6, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 2: + paint_util_set_general_support_height(session, height + 48, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 7), 6, 0, 20, + 32, 3, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 0), 6, 0, 20, + 32, 3, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 2), 6, 0, 20, + 32, 3, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 3), 6, 0, 1, + 32, 26, height, 27, 0, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION + 5), 6, 0, 20, + 32, 3, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + switch (direction) + { + case 0: + paint_util_push_tunnel_right(session, height, TUNNEL_0); + break; + case 1: + paint_util_push_tunnel_left(session, height, TUNNEL_0); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + static void TrackLeftLargeHalfLoopUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 0), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 7), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 14), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 21), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 1), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 15, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 8), 0, 0, 32, 20, + 9, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 15), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 22), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 2), 0, 0, 32, 16, + 3, height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 9), 0, 0, 32, 16, + 0, height, 0, 0, height + 70); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 16), 0, 0, 32, 16, + 0, height, 0, 16, height + 70); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 23), 0, 0, 32, 16, + 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 88, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 3), 0, 0, 32, 16, + 3, height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 10), 0, 0, 32, 16, + 0, height, 0, 0, height + 200); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 17), 0, 0, 32, 16, + 0, height, 0, 16, height + 200); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 0, height + 28, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 24), 0, 0, 32, 16, + 3, height, 0, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 224, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 4), 0, 0, 16, 16, + 3, height, 16, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 11), 0, 0, 16, 16, + 0, height, 0, 16, height + 110); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 18), 0, 0, 16, 16, + 0, height, 0, 0, height + 100); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 25), 0, 0, 16, 16, + 3, height, 16, 0, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 128, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 5), 0, 0, 32, 16, + 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 12), 0, 0, 32, 16, + 0, height, 0, 16, height + 200); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 19), 0, 0, 32, 16, + 0, height, 0, 0, height + 200); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 26), 0, 0, 32, 16, + 3, height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 224, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 6), 0, 0, 32, 16, + 0, height, 0, 16, height + 32); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 13), 0, 0, 32, 16, + 0, height, 0, 16, height + 32); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 20), 0, 0, 32, 16, + 0, height, 0, 0, height + 32); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 27), 0, 0, 32, 16, + 0, height, 0, 0, height + 32); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + break; + } + } + + static void TrackRightLargeHalfLoopUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 28), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 35), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 42), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 49), 0, 0, 32, 20, + 3, height, 0, 6, height); + break; + } + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 8, height, session->TrackColours[SCHEME_SUPPORTS]); + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 56, 0x20); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 29), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 36), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 43), 0, 0, 32, 20, + 9, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 9, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 50), 0, 0, 32, 20, + 3, height, 0, 6, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 15, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 30), 0, 0, 32, 16, + 3, height, 0, 16, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 37), 0, 0, 32, 16, + 0, height, 0, 16, height + 70); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 44), 0, 0, 32, 16, + 0, height, 0, 0, height + 70); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 51), 0, 0, 32, 16, + 3, height, 0, 0, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 88, 0x20); + break; + case 3: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 31), 0, 0, 32, 16, + 3, height, 0, 16, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 8, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 38), 0, 0, 32, 16, + 0, height, 0, 16, height + 200); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 7, 0, height + 28, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 45), 0, 0, 32, 16, + 0, height, 0, 0, height + 200); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 5, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 52), 0, 0, 32, 16, + 3, height, 0, 0, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 6, 28, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 224, 0x20); + break; + case 4: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 32), 0, 0, 16, 16, + 3, height, 16, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 39), 0, 0, 16, 16, + 0, height, 0, 0, height + 100); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 46), 0, 0, 16, 16, + 0, height, 0, 16, height + 110); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 53), 0, 0, 16, 16, + 3, height, 16, 16, height); + break; + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 128, 0x20); + break; + case 5: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 33), 0, 0, 32, 16, + 3, height, 0, 0, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 40), 0, 0, 32, 16, + 0, height, 0, 0, height + 200); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 47), 0, 0, 32, 16, + 0, height, 0, 16, height + 200); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 54), 0, 0, 32, 16, + 3, height, 0, 16, height); + break; + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 224, 0x20); + break; + case 6: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 34), 0, 0, 32, 16, + 0, height, 0, 0, height + 32); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 41), 0, 0, 32, 16, + 0, height, 0, 0, height + 32); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 48), 0, 0, 32, 16, + 0, height, 0, 16, height + 32); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP + 55), 0, 0, 32, 16, + 0, height, 0, 16, height + 32); + break; + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, + paint_util_rotate_segments( + SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), + 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 40, 0x20); + break; + } + } + + static void TrackRightLargeHalfLoopDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackRightLargeHalfLoopUp(session, rideIndex, 6 - trackSequence, direction, height, tileElement); + } + + static void TrackLeftLargeHalfLoopDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackLeftLargeHalfLoopUp(session, rideIndex, 6 - trackSequence, direction, height, tileElement); + } + + static void TrackFlatTo60DegUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 0), 0, 0, 32, + 27, 4, height, 0, 2, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 2), 0, 0, 1, + 24, 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 1), 0, 0, 32, + 2, 43, height, 0, 4, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 4, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 4), 0, 0, 1, + 24, 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 3), 0, 0, 32, + 2, 43, height, 0, 4, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 4, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 5), 0, 0, 32, + 27, 4, height, 0, 2, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 0), 0, 0, 32, 27, + 4, height, 0, 2, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 2), 0, 0, 1, 24, + 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 1), 0, 0, 32, 2, + 43, height, 0, 4, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 4, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 4), 0, 0, 1, 24, + 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 3), 0, 0, 32, 2, + 43, height, 0, 4, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 0, height + 4, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 5), 0, 0, 32, 27, + 4, height, 0, 2, height); + metal_a_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 4, 3, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height, TUNNEL_0); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 24, TUNNEL_2); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + } + + static void Track60DegUpToFlat( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 6), 0, 0, 32, + 27, 4, height, 0, 2, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 7), 0, 0, 1, + 24, 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 8), 0, 0, 32, + 2, 43, height, 0, 4, height); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 10), 0, 0, 1, + 24, 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 9), 0, 0, 32, + 2, 43, height, 0, 4, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 11), 0, 0, + 32, 27, 4, height, 0, 2, height); + break; + } + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 6), 0, 0, 32, 27, + 4, height, 0, 2, height); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 7), 0, 0, 32, 2, + 43, height, 0, 4, height); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 8), 0, 0, 1, 24, + 43, height, 29, 4, height + 2); + break; + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 10), 0, 0, 1, 24, + 43, height, 29, 4, height + 2); + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 9), 0, 0, 32, 2, + 43, height, 0, 4, height); + break; + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 11), 0, 0, 32, 27, + 4, height, 0, 2, height); + break; + } + metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 4, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + } + if (direction == 0 || direction == 3) + { + paint_util_push_tunnel_rotated(session, direction, height - 8, TUNNEL_1); + } + else + { + paint_util_push_tunnel_rotated(session, direction, height + 24, TUNNEL_0); + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + } + + static void TrackFlatTo60DegDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + Track60DegUpToFlat(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void Track60DegDownToFlat( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + TrackFlatTo60DegUp(session, rideIndex, trackSequence, (direction + 2) & 3, height, tileElement); + } + + static void TrackDiagFlatTo60DegUp( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 15), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 15), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 12), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 12), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 14), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 14), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 13), + -16, -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 13), -16, + -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 7, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + static void TrackDiag60DegUpToFlat( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 19), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 19), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 16), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 16), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 18), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 18), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 17), + -16, -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 17), -16, + -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 20, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackDiagFlatTo60DegDown( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 17), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 17), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 18), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 18), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 16), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 16), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 19), + -16, -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 19), -16, + -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 16, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 72, 0x20); + break; + } + } + + static void TrackDiag60DegDownToFlat( + paint_session* session, ride_id_t rideIndex, uint8_t trackSequence, uint8_t direction, int32_t height, + const TileElement* tileElement) + { + switch (trackSequence) + { + case 0: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 13), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 13), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 1: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 14), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 14), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 2: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 12), + -16, -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + else + { + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 12), -16, + -16, 32, 32, 4, height, -16, -16, height); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_D4, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + case 3: + if (tileElement->AsTrack()->HasChain()) + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP + 15), + -16, -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + else + { + switch (direction) + { + case 0: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 1, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, + session->TrackColours[SCHEME_TRACK] | (SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP + 15), -16, + -16, 32, 32, 4, height, -16, -16, height); + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 0, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 2: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 2, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + case 3: + metal_b_supports_paint_setup( + session, METAL_SUPPORTS_TUBES, 3, 5, height, session->TrackColours[SCHEME_SUPPORTS]); + break; + } + } + paint_util_set_segment_support_height( + session, paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, + 0); + paint_util_set_general_support_height(session, height + 64, 0x20); + break; + } + } + + TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType) + { + switch (trackType) + { + case TrackElemType::Flat: + return TrackFlat; + case TrackElemType::EndStation: + case TrackElemType::BeginStation: + case TrackElemType::MiddleStation: + return TrackStation; + case TrackElemType::Up25: + return Track25DegUp; + case TrackElemType::Up60: + return Track60DegUp; + case TrackElemType::FlatToUp25: + return TrackFlatTo25DegUp; + case TrackElemType::Up25ToUp60: + return Track25DegUpTo60DegUp; + case TrackElemType::Up60ToUp25: + return Track60DegUpTo25DegUp; + case TrackElemType::Up25ToFlat: + return Track25DegUpToFlat; + case TrackElemType::Down25: + return Track25DegDown; + case TrackElemType::Down60: + return Track60DegDown; + case TrackElemType::FlatToDown25: + return TrackFlatTo25DegDown; + case TrackElemType::Down25ToDown60: + return Track25DegDownTo60DegDown; + case TrackElemType::Down60ToDown25: + return Track60DegDownTo25DegDown; + case TrackElemType::Down25ToFlat: + return Track25DegDownToFlat; + case TrackElemType::Up90: + return Track90DegUp; + case TrackElemType::Down90: + return Track90DegDown; + case TrackElemType::Up60ToUp90: + return Track60DegUpTo90DegUp; + case TrackElemType::Down90ToDown60: + return Track90DegDownTo60DegDown; + case TrackElemType::Up90ToUp60: + return Track90DegUpTo60DegUp; + case TrackElemType::Down60ToDown90: + return Track60DegDownTo90DegDown; + case TrackElemType::LeftQuarterTurn5Tiles: + return TrackLeftQuarterTurn5; + case TrackElemType::RightQuarterTurn5Tiles: + return TrackRightQuarterTurn5; + case TrackElemType::FlatToLeftBank: + return TrackFlatToLeftBank; + case TrackElemType::FlatToRightBank: + return TrackFlatToRightBank; + case TrackElemType::LeftBankToFlat: + return TrackLeftBankToFlat; + case TrackElemType::RightBankToFlat: + return TrackRightBankToFlat; + case TrackElemType::BankedLeftQuarterTurn5Tiles: + return TrackBankedLeftQuarterTurn5; + case TrackElemType::BankedRightQuarterTurn5Tiles: + return TrackBankedRightQuarterTurn5; + case TrackElemType::LeftBankToUp25: + return TrackLeftBankTo25DegUp; + case TrackElemType::RightBankToUp25: + return TrackRightBankTo25DegUp; + case TrackElemType::Up25ToLeftBank: + return Track25DegUpToLeftBank; + case TrackElemType::Up25ToRightBank: + return Track25DegUpToRightBank; + case TrackElemType::LeftBankToDown25: + return TrackLeftBankTo25DegDown; + case TrackElemType::RightBankToDown25: + return TrackRightBankTo25DegDown; + case TrackElemType::Down25ToLeftBank: + return Track25DegDownToLeftBank; + case TrackElemType::Down25ToRightBank: + return Track25DegDownToRightBank; + case TrackElemType::LeftBank: + return TrackLeftBank; + case TrackElemType::RightBank: + return TrackRightBank; + case TrackElemType::LeftQuarterTurn5TilesUp25: + return TrackLeftQuarterTurn525DegUp; + case TrackElemType::RightQuarterTurn5TilesUp25: + return TrackRightQuarterTurn525DegUp; + case TrackElemType::LeftQuarterTurn5TilesDown25: + return TrackLeftQuarterTurn525DegDown; + case TrackElemType::RightQuarterTurn5TilesDown25: + return TrackRightQuarterTurn525DegDown; + case TrackElemType::SBendLeft: + return TrackSBendLeft; + case TrackElemType::SBendRight: + return TrackSBendRight; + case TrackElemType::LeftQuarterTurn3Tiles: + return TrackLeftQuarterTurn3; + case TrackElemType::RightQuarterTurn3Tiles: + return TrackRightQuarterTurn3; + case TrackElemType::LeftBankedQuarterTurn3Tiles: + return TrackLeftQuarterTurn3Bank; + case TrackElemType::RightBankedQuarterTurn3Tiles: + return TrackRightQuarterTurn3Bank; + case TrackElemType::LeftQuarterTurn3TilesUp25: + return TrackLeftQuarterTurn3Tile25DegUp; + case TrackElemType::RightQuarterTurn3TilesUp25: + return TrackRightQuarterTurn3Tile25DegUp; + case TrackElemType::LeftQuarterTurn3TilesDown25: + return TrackLeftQuarterTurn3Tile25DegDown; + case TrackElemType::RightQuarterTurn3TilesDown25: + return TrackRightQuarterTurn3Tile25DegDown; + case TrackElemType::LeftHalfBankedHelixUpSmall: + return TrackLeftHalfBankedHelixUpSmall; + case TrackElemType::RightHalfBankedHelixUpSmall: + return TrackRightHalfBankedHelixUpSmall; + case TrackElemType::LeftHalfBankedHelixDownSmall: + return TrackLeftHalfBankedHelixDownSmall; + case TrackElemType::RightHalfBankedHelixDownSmall: + return TrackRightHalfBankedHelixDownSmall; + case TrackElemType::LeftHalfBankedHelixUpLarge: + return TrackLeftHalfBankedHelixUpLarge; + case TrackElemType::RightHalfBankedHelixUpLarge: + return TrackRightHalfBankedHelixUpLarge; + case TrackElemType::LeftHalfBankedHelixDownLarge: + return TrackLeftHalfBankedHelixDownLarge; + case TrackElemType::RightHalfBankedHelixDownLarge: + return TrackRightHalfBankedHelixDownLarge; + case TrackElemType::LeftQuarterTurn1TileUp60: + return TrackLeftQuarterTurn160DegUp; + case TrackElemType::RightQuarterTurn1TileUp60: + return TrackRightQuarterTurn160DegUp; + case TrackElemType::LeftQuarterTurn1TileDown60: + return TrackLeftQuarterTurn160DegDown; + case TrackElemType::RightQuarterTurn1TileDown60: + return TrackRightQuarterTurn160DegDown; + case TrackElemType::Brakes: + return TrackBrakes; + case TrackElemType::Up25LeftBanked: + return Track25DegUpLeftBanked; + case TrackElemType::Up25RightBanked: + return Track25DegUpRightBanked; + case TrackElemType::OnRidePhoto: + return TrackOnRidePhoto; + case TrackElemType::Down25LeftBanked: + return Track25DegDownLeftBanked; + case TrackElemType::Down25RightBanked: + return Track25DegDownRightBanked; + case TrackElemType::FlatToUp60LongBase: + return TrackFlatTo60DegUpLongBase; + case TrackElemType::Up60ToFlatLongBase: + return Track60DegUpToFlatLongBase; + case TrackElemType::FlatToDown60LongBase: + return TrackFlatTo60DegDownLongBase; + case TrackElemType::Down60ToFlatLongBase: + return Track60DegDownToFlatLongBase; + case TrackElemType::LeftEighthToDiag: + return TrackLeftEighthToDiag; + case TrackElemType::RightEighthToDiag: + return TrackRightEighthToDiag; + case TrackElemType::LeftEighthToOrthogonal: + return TrackLeftEighthToOrthogonal; + case TrackElemType::RightEighthToOrthogonal: + return TrackRightEighthToOrthogonal; + case TrackElemType::LeftEighthBankToDiag: + return TrackLeftEighthBankToDiag; + case TrackElemType::RightEighthBankToDiag: + return TrackRightEighthBankToDiag; + case TrackElemType::LeftEighthBankToOrthogonal: + return TrackLeftEighthBankToOrthogonal; + case TrackElemType::RightEighthBankToOrthogonal: + return TrackRightEighthBankToOrthogonal; + case TrackElemType::DiagFlat: + return TrackDiagFlat; + case TrackElemType::DiagUp25: + return TrackDiag25DegUp; + case TrackElemType::DiagUp60: + return TrackDiag60DegUp; + case TrackElemType::DiagFlatToUp25: + return TrackDiagFlatTo25DegUp; + case TrackElemType::DiagUp25ToUp60: + return TrackDiag25DegUpTo60DegUp; + case TrackElemType::DiagUp60ToUp25: + return TrackDiag60DegUpTo25DegUp; + case TrackElemType::DiagUp25ToFlat: + return TrackDiag25DegUpToFlat; + case TrackElemType::DiagDown25: + return TrackDiag25DegDown; + case TrackElemType::DiagDown60: + return TrackDiag60DegDown; + case TrackElemType::DiagFlatToDown25: + return TrackDiagFlatTo25DegDown; + case TrackElemType::DiagDown25ToDown60: + return TrackDiag25DegDownTo60DegDown; + case TrackElemType::DiagDown60ToDown25: + return TrackDiag60DegDownTo25DegDown; + case TrackElemType::DiagDown25ToFlat: + return TrackDiag25DegDownToFlat; + case TrackElemType::DiagFlatToLeftBank: + return TrackDiagFlatToLeftBank; + case TrackElemType::DiagFlatToRightBank: + return TrackDiagFlatToRightBank; + case TrackElemType::DiagLeftBankToFlat: + return TrackDiagLeftBankToFlat; + case TrackElemType::DiagRightBankToFlat: + return TrackDiagRightBankToFlat; + case TrackElemType::DiagLeftBankToUp25: + return TrackDiagLeftBankTo25DegUp; + case TrackElemType::DiagRightBankToUp25: + return TrackDiagRightBankTo25DegUp; + case TrackElemType::DiagUp25ToLeftBank: + return TrackDiag25DegUpToLeftBank; + case TrackElemType::DiagUp25ToRightBank: + return TrackDiag25DegUpToRightBank; + case TrackElemType::DiagLeftBankToDown25: + return TrackDiagLeftBankTo25DegDown; + case TrackElemType::DiagRightBankToDown25: + return TrackDiagRightBankTo25DegDown; + case TrackElemType::DiagDown25ToLeftBank: + return TrackDiag25DegDownToLeftBank; + case TrackElemType::DiagDown25ToRightBank: + return TrackDiag25DegDownToRightBank; + case TrackElemType::DiagLeftBank: + return TrackDiagLeftBank; + case TrackElemType::DiagRightBank: + return TrackDiagRightBank; + case TrackElemType::BlockBrakes: + return TrackBlockBrakes; + case TrackElemType::LeftBankedQuarterTurn3TileUp25: + return TrackLeftBankedQuarterTurn3Tile25DegUp; + case TrackElemType::RightBankedQuarterTurn3TileUp25: + return TrackRightBankedQuarterTurn3Tile25DegUp; + case TrackElemType::LeftBankedQuarterTurn3TileDown25: + return TrackLeftBankedQuarterTurn3Tile25DegDown; + case TrackElemType::RightBankedQuarterTurn3TileDown25: + return TrackRightBankedQuarterTurn3Tile25DegDown; + case TrackElemType::LeftBankedQuarterTurn5TileUp25: + return TrackLeftBankedQuarterTurn525DegUp; + case TrackElemType::RightBankedQuarterTurn5TileUp25: + return TrackRightBankedQuarterTurn525DegUp; + case TrackElemType::LeftBankedQuarterTurn5TileDown25: + return TrackLeftBankedQuarterTurn525DegDown; + case TrackElemType::RightBankedQuarterTurn5TileDown25: + return TrackRightBankedQuarterTurn525DegDown; + case TrackElemType::Up25ToLeftBankedUp25: + return Track25DegUpToLeftBanked25DegUp; + case TrackElemType::Up25ToRightBankedUp25: + return Track25DegUpToRightBanked25DegUp; + case TrackElemType::LeftBankedUp25ToUp25: + return TrackLeftBanked25DegUpTo25DegUp; + case TrackElemType::RightBankedUp25ToUp25: + return TrackRightBanked25DegUpTo25DegUp; + case TrackElemType::Down25ToLeftBankedDown25: + return Track25DegDownToLeftBanked25DegDown; + case TrackElemType::Down25ToRightBankedDown25: + return Track25DegDownToRightBanked25DegDown; + case TrackElemType::LeftBankedDown25ToDown25: + return TrackLeftBanked25DegDownTo25DegDown; + case TrackElemType::RightBankedDown25ToDown25: + return TrackRightBanked25DegDownTo25DegDown; + case TrackElemType::LeftBankedFlatToLeftBankedUp25: + return TrackLeftBankedFlatToLeftBanked25DegUp; + case TrackElemType::RightBankedFlatToRightBankedUp25: + return TrackRightBankedFlatToRightBanked25DegUp; + case TrackElemType::LeftBankedUp25ToLeftBankedFlat: + return TrackLeftBanked25DegUpToLeftBankedFlat; + case TrackElemType::RightBankedUp25ToRightBankedFlat: + return TrackRightBanked25DegUpToRightBankedFlat; + case TrackElemType::LeftBankedFlatToLeftBankedDown25: + return TrackLeftBankedFlatToLeftBanked25DegDown; + case TrackElemType::RightBankedFlatToRightBankedDown25: + return TrackRightBankedFlatToRightBanked25DegDown; + case TrackElemType::LeftBankedDown25ToLeftBankedFlat: + return TrackLeftBanked25DegDownToLeftBankedFlat; + case TrackElemType::RightBankedDown25ToRightBankedFlat: + return TrackRightBanked25DegDownToRightBankedFlat; + case TrackElemType::FlatToLeftBankedUp25: + return TrackFlatToLeftBanked25DegUp; + case TrackElemType::FlatToRightBankedUp25: + return TrackFlatToRightBanked25DegUp; + case TrackElemType::LeftBankedUp25ToFlat: + return TrackLeftBanked25DegUpToFlat; + case TrackElemType::RightBankedUp25ToFlat: + return TrackRightBanked25DegUpToFlat; + case TrackElemType::FlatToLeftBankedDown25: + return TrackFlatToLeftBanked25DegDown; + case TrackElemType::FlatToRightBankedDown25: + return TrackFlatToRightBanked25DegDown; + case TrackElemType::LeftBankedDown25ToFlat: + return TrackLeftBanked25DegDownToFlat; + case TrackElemType::RightBankedDown25ToFlat: + return TrackRightBanked25DegDownToFlat; + case TrackElemType::LeftQuarterTurn1TileUp90: + return TrackLeftQuarterTurn190DegUp; + case TrackElemType::RightQuarterTurn1TileUp90: + return TrackRightQuarterTurn190DegUp; + case TrackElemType::LeftQuarterTurn1TileDown90: + return TrackLeftQuarterTurn190DegDown; + case TrackElemType::RightQuarterTurn1TileDown90: + return TrackRightQuarterTurn190DegDown; + case TrackElemType::LeftBarrelRollUpToDown: + return TrackLeftBarrelRollUpToDown; + case TrackElemType::RightBarrelRollUpToDown: + return TrackRightBarrelRollUpToDown; + case TrackElemType::LeftBarrelRollDownToUp: + return TrackLeftBarrelRollDownToUp; + case TrackElemType::RightBarrelRollDownToUp: + return TrackRightBarrelRollDownToUp; + case TrackElemType::HalfLoopUp: + return TrackHalfLoopUp; + case TrackElemType::HalfLoopDown: + return TrackHalfLoopDown; + case TrackElemType::LeftCorkscrewUp: + return TrackLeftCorkscrewUp; + case TrackElemType::RightCorkscrewUp: + return TrackRightCorkscrewUp; + case TrackElemType::LeftCorkscrewDown: + return TrackLeftCorkscrewDown; + case TrackElemType::RightCorkscrewDown: + return TrackRightCorkscrewDown; + case TrackElemType::Up90ToInvertedFlatQuarterLoop: + return Track90DegToInvertedFlatQuarterLoopUp; + case TrackElemType::InvertedFlatToDown90QuarterLoop: + return TrackInvertedFlatTo90DegQuarterLoopDown; + case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + return TrackLeftBankToLeftQuarterTurn3Tile25DegUp; + case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + return TrackRightBankToRightQuarterTurn3Tile25DegUp; + case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + return TrackLeftQuarterTurn3Tile25DegDownToLeftBank; + case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + return TrackRightQuarterTurn3Tile25DegDownToRightBank; + case TrackElemType::LeftLargeHalfLoopUp: + return TrackLeftLargeHalfLoopUp; + case TrackElemType::RightLargeHalfLoopUp: + return TrackRightLargeHalfLoopUp; + case TrackElemType::RightLargeHalfLoopDown: + return TrackRightLargeHalfLoopDown; + case TrackElemType::LeftLargeHalfLoopDown: + return TrackLeftLargeHalfLoopDown; + case TrackElemType::FlatToUp60: + return TrackFlatTo60DegUp; + case TrackElemType::Up60ToFlat: + return Track60DegUpToFlat; + case TrackElemType::FlatToDown60: + return TrackFlatTo60DegDown; + case TrackElemType::Down60ToFlat: + return Track60DegDownToFlat; + case TrackElemType::DiagFlatToUp60: + return TrackDiagFlatTo60DegUp; + case TrackElemType::DiagUp60ToFlat: + return TrackDiag60DegUpToFlat; + case TrackElemType::DiagFlatToDown60: + return TrackDiagFlatTo60DegDown; + case TrackElemType::DiagDown60ToFlat: + return TrackDiag60DegDownToFlat; + } + return nullptr; + } + +} // namespace SingleRailRC diff --git a/src/openrct2/ride/coaster/meta/SingleRailRollerCoaster.h b/src/openrct2/ride/coaster/meta/SingleRailRollerCoaster.h new file mode 100644 index 0000000000..cd21cd9032 --- /dev/null +++ b/src/openrct2/ride/coaster/meta/SingleRailRollerCoaster.h @@ -0,0 +1,54 @@ +/***************************************************************************** + * Copyright (c) 2014-2020 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../../RideData.h" +#include "../../Track.h" + +// clang-format off +constexpr const RideTypeDescriptor SingleRailRollerCoasterRTD = +{ + SET_FIELD(AlternateType, RIDE_TYPE_NULL), + SET_FIELD(Category, RIDE_CATEGORY_ROLLERCOASTER), + SET_FIELD(EnabledTrackPieces, (1ULL << TRACK_FLAT) | (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) |(1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BARREL_ROLL) | (1ULL << TRACK_SLOPE_CURVE_BANKED) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_QUARTER_LOOP)| (1ULL << TRACK_HALF_LOOP)), + SET_FIELD(ExtraTrackPieces, (1ULL << TRACK_SLOPE_STEEP_LONG) | (1ULL << TRACK_HALF_LOOP_LARGE)), + SET_FIELD(CoveredTrackPieces, 0), + SET_FIELD(StartTrackPiece, TrackElemType::EndStation), + SET_FIELD(TrackPaintFunction, SingleRailRC::GetTrackPaintFunction), + SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_HAS_LARGE_CURVES | + RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS), + SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned)), + SET_FIELD(DefaultMode, RideMode::ContinuousCircuit), + SET_FIELD(OperatingSettings, { 0, 0, 30, 15, 52, 0 }), + SET_FIELD(Naming, { STR_RIDE_NAME_SINGLE_RAIL_ROLLER_COASTER, STR_RIDE_DESCRIPTION_SINGLE_RAIL_ROLLER_COASTER }), + SET_FIELD(NameConvention, { RideComponentType::Train, RideComponentType::Track, RideComponentType::Station }), + SET_FIELD(EnumName, nameof(RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER)), + SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)), + SET_FIELD(Heights, { 28, 24, 5, 7}), + SET_FIELD(MaxMass, 18), + SET_FIELD(LiftData, { OpenRCT2::Audio::SoundId::LiftClassic, 5, 8 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_single_rail_roller_coaster), + SET_FIELD(RatingsMultipliers, { 52, 36, 10 }), + SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), + SET_FIELD(BuildCosts, { 75, 5, 50}), + SET_FIELD(DefaultPrices, { 20, 20 }), + SET_FIELD(DefaultMusic, MUSIC_STYLE_ROCK), + SET_FIELD(PhotoItem, ShopItem::Photo), + SET_FIELD(BonusValue, 80), + SET_FIELD(ColourPresets, TRACK_COLOUR_PRESETS( + { COLOUR_LIGHT_ORANGE, COLOUR_LIGHT_ORANGE, COLOUR_WHITE }, + { COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BLACK }, + { COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_DARK_GREEN } + )), + SET_FIELD(ColourPreview, { SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_TRACK, SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_SUPPORTS }), + SET_FIELD(ColourKey, RideColourKey::Ride), +}; +// clang-format on diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index b8fea28f33..912a2ac043 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1033,7 +1033,55 @@ enum SPR_G2_HYBRID_LIFT_TRACK_STEEP_DIAGONAL = SPR_G2_HYBRID_LIFT_BEGIN + 48, SPR_G2_HYBRID_END = SPR_G2_HYBRID_LIFT_BEGIN + 60, - SPR_G2_END = SPR_G2_HYBRID_END, + SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_TRACK = SPR_G2_HYBRID_END, + SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_SUPPORTS = SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_TRACK + 1, + SPR_G2_SINGLE_RAIL_BEGIN = SPR_RIDE_DESIGN_PREVIEW_SINGLE_RAIL_ROLLER_COASTER_TRACK + 2, + SPR_G2_SINGLE_RAIL_TRACK_FLAT = SPR_G2_SINGLE_RAIL_BEGIN, + SPR_G2_SINGLE_RAIL_TRACK_BRAKE = SPR_G2_SINGLE_RAIL_BEGIN + 2, + SPR_G2_SINGLE_RAIL_TRACK_BLOCK_BRAKE = SPR_G2_SINGLE_RAIL_BEGIN + 4, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE = SPR_G2_SINGLE_RAIL_BEGIN + 6, + SPR_G2_SINGLE_RAIL_TRACK_STEEP = SPR_G2_SINGLE_RAIL_BEGIN + 18, + SPR_G2_SINGLE_RAIL_TRACK_VERTICAL = SPR_G2_SINGLE_RAIL_BEGIN + 34, + SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 46, + SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 58, + SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 78, + SPR_G2_SINGLE_RAIL_TRACK_FLAT_DIAGONAL = SPR_G2_SINGLE_RAIL_BEGIN + 110, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE_DIAGONAL = SPR_G2_SINGLE_RAIL_BEGIN + 114, + SPR_G2_SINGLE_RAIL_TRACK_STEEP_DIAGONAL = SPR_G2_SINGLE_RAIL_BEGIN + 126, + SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION = SPR_G2_SINGLE_RAIL_BEGIN + 138, + SPR_G2_SINGLE_RAIL_TRACK_BANK_TRANSITION_DIAGONAL = SPR_G2_SINGLE_RAIL_BEGIN + 178, + SPR_G2_SINGLE_RAIL_TRACK_SMALL_CURVE_BANKED = SPR_G2_SINGLE_RAIL_BEGIN + 212, + SPR_G2_SINGLE_RAIL_TRACK_MEDIUM_CURVE_BANKED = SPR_G2_SINGLE_RAIL_BEGIN + 226, + SPR_G2_SINGLE_RAIL_TRACK_LARGE_CURVE_BANKED = SPR_G2_SINGLE_RAIL_BEGIN + 248, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 280, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 296, + SPR_G2_SINGLE_RAIL_TRACK_STEEP_SMALL_CURVE = SPR_G2_SINGLE_RAIL_BEGIN + 336, + SPR_G2_SINGLE_RAIL_TRACK_VERTICAL_TWIST = SPR_G2_SINGLE_RAIL_BEGIN + 352, + SPR_G2_SINGLE_RAIL_TRACK_SLOPE_BANK_TRANSITION = SPR_G2_SINGLE_RAIL_BEGIN + 364, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE_SMALL_CURVE_BANKED = SPR_G2_SINGLE_RAIL_BEGIN + 428, + SPR_G2_SINGLE_RAIL_TRACK_GENTLE_MEDIUM_CURVE_BANKED = SPR_G2_SINGLE_RAIL_BEGIN + 444, + SPR_G2_SINGLE_RAIL_TRACK_S_BEND = SPR_G2_SINGLE_RAIL_BEGIN + 484, + SPR_G2_SINGLE_RAIL_TRACK_SMALL_HELIX = SPR_G2_SINGLE_RAIL_BEGIN + 500, + SPR_G2_SINGLE_RAIL_TRACK_LARGE_HELIX = SPR_G2_SINGLE_RAIL_BEGIN + 528, + SPR_G2_SINGLE_RAIL_TRACK_BARREL_ROLL = SPR_G2_SINGLE_RAIL_BEGIN + 572, + SPR_G2_SINGLE_RAIL_TRACK_HALF_LOOP = SPR_G2_SINGLE_RAIL_BEGIN + 620, + SPR_G2_SINGLE_RAIL_TRACK_FLAT_TO_STEEP = SPR_G2_SINGLE_RAIL_BEGIN + 636, + SPR_G2_SINGLE_RAIL_TRACK_QUARTER_LOOP = SPR_G2_SINGLE_RAIL_BEGIN + 668, + SPR_G2_SINGLE_RAIL_TRACK_CORKSCREW = SPR_G2_SINGLE_RAIL_BEGIN + 680, + SPR_G2_SINGLE_RAIL_TRACK_TURN_BANK_TRANSITION = SPR_G2_SINGLE_RAIL_BEGIN + 704, + SPR_G2_SINGLE_RAIL_TRACK_LARGE_HALF_LOOP = SPR_G2_SINGLE_RAIL_BEGIN + 722, + SPR_G2_SINGLE_RAIL_TRACK_SMALL_FLAT_TO_STEEP = SPR_G2_SINGLE_RAIL_BEGIN + 778, + SPR_G2_SINGLE_RAIL_LIFT_BEGIN = SPR_G2_SINGLE_RAIL_BEGIN + 798, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT = SPR_G2_SINGLE_RAIL_LIFT_BEGIN, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 4, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 16, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_FLAT_DIAGONAL = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 32, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_GENTLE_DIAGONAL = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 36, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_STEEP_DIAGONAL = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 48, + SPR_G2_SINGLE_RAIL_LIFT_TRACK_SMALL_FLAT_TO_STEEP = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 60, + SPR_G2_SINGLE_RAIL_END = SPR_G2_SINGLE_RAIL_LIFT_BEGIN + 80, + + SPR_G2_END = SPR_G2_SINGLE_RAIL_END, SPR_CSG_BEGIN = SPR_G2_END, SPR_CSG_END = SPR_CSG_BEGIN + RCT1_NUM_LL_CSG_ENTRIES, diff --git a/test/testpaint/Compat.cpp b/test/testpaint/Compat.cpp index f8f703c729..31e248e6c9 100644 --- a/test/testpaint/Compat.cpp +++ b/test/testpaint/Compat.cpp @@ -861,6 +861,10 @@ void ride_ratings_calculate_hybrid_coaster([[maybe_unused]] Ride* ride) { } +void ride_ratings_calculate_single_rail_roller_coaster([[maybe_unused]] Ride* ride) +{ +} + const RideTypeDescriptor& Ride::GetRideTypeDescriptor() const { return RideTypeDescriptors[type];