@@ -235,115 +235,114 @@ class NwmResolver extends IdResolver {
235235 builder ++= withProjections(n~ SE & n2~ WS , IdTile (off8(id + 0x8000 + rev11), R0F0 ), when = asymmOrShared(n) && asymmOrShared(n2))
236236 }
237237
238- // T-intersections
239- // OxO NWM-Thru
240- for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
241- add(nwmRangeId(n) + 0x3000 , n~ WE & Street ~ CS ) // Street
242- add(nwmRangeId(n) + 0x3100 , n~ WE & Road ~ CS ) // Road
243- add(nwmRangeId(n) + 0x3200 , n~ WE & Onewayroad ~ CS ) // Onewayroad
244- add(nwmRangeId(n) + 0x4300 , n~ WE & Avenue ~ NC , when = n != Owr1 ) // Avenue
245- add(nwmRangeId(n) + 0x3800 , n~ NS & Tla3 ~ CE ) // TLA-3
246- add(nwmRangeId(n) + 0x3900 , n~ NS & Ave2 ~ CE ) // AVE-2
247- add(nwmRangeId(n) + 0x3A00 , n~ NS & Ard3 ~ EC , when = n != Owr1 && n != Tla3 ) // ARD-3a
248- // add(nwmRangeId(n) + 0x3A80, n~NS & Ard3~EC, when = n != Owr1 && (n == Ard3)) // ARD-3b
249- add(nwmRangeId(n) + 0x3B00 , n~ NS & Owr1 ~ CE ) // OWR-1
250- add(nwmRangeId(n) + 0x3C00 , n~ NS & Owr3 ~ CE , when = n != Ave2 || n != Owr1 ) // OWR-3
251- add(nwmRangeId(n) + 0x3D00 , n~ NS & Nrd4 ~ CE , when = n != Owr1 ) // NRD-4
252- add(nwmRangeId(n) + 0x4800 , n~ NS & Tla5 ~ EC , when = n != Owr1 ) // TLA-5
253- add(nwmRangeId(n) + 0x4A00 , n~ NS & Rd4 ~ EC , when = n != Owr1 ) // RD-4
254- }
238+ }
255239
256- for (n <- Seq (Ard3 , Owr3 , Nrd4 )) {
257- add(nwmRangeId(n) + 0x4B00 , n~ NS & Rd6 ~ EC ) // RD-4
258- add(nwmRangeId(n) + 0x4C00 , n~ NS & Ave6 ~ EC ) // AVE-6
259- add(nwmRangeId(n) + 0x4C09 , n~ NS & Tla7m ~ EC ) // TLA-M
260- add(nwmRangeId(n) + 0x4D09 , n~ NS & Ave6m ~ EC ) // AVE-M
261- }
240+ // T-intersections
241+ // OxO NWM-Thru
242+ for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
243+ add(nwmRangeId(n) + 0x3000 , n~ WE & Street ~ CS ) // Street
244+ add(nwmRangeId(n) + 0x3100 , n~ WE & Road ~ CS ) // Road
245+ add(nwmRangeId(n) + 0x3200 , n~ WE & Onewayroad ~ CS ) // Onewayroad
246+ add(nwmRangeId(n) + 0x4300 , n~ WE & Avenue ~ NC , when = n != Owr1 ) // Avenue
247+ add(nwmRangeId(n) + 0x3800 , n~ NS & Tla3 ~ CE ) // TLA-3
248+ add(nwmRangeId(n) + 0x3900 , n~ NS & Ave2 ~ CE ) // AVE-2
249+ add(nwmRangeId(n) + 0x3A00 , n~ NS & Ard3 ~ EC , when = n != Owr1 && n != Tla3 ) // ARD-3a
250+ // add(nwmRangeId(n) + 0x3A80, n~NS & Ard3~EC, when = n != Owr1 && (n == Ard3)) // ARD-3b
251+ add(nwmRangeId(n) + 0x3B00 , n~ NS & Owr1 ~ CE ) // OWR-1
252+ add(nwmRangeId(n) + 0x3C00 , n~ NS & Owr3 ~ CE , when = n != Ave2 || n != Owr1 ) // OWR-3
253+ add(nwmRangeId(n) + 0x3D00 , n~ NS & Nrd4 ~ CE , when = n != Owr1 ) // NRD-4
254+ add(nwmRangeId(n) + 0x4800 , n~ NS & Tla5 ~ EC , when = n != Owr1 ) // TLA-5
255+ add(nwmRangeId(n) + 0x4A00 , n~ NS & Rd4 ~ EC , when = n != Owr1 ) // RD-4
256+ }
262257
263- for (n <- Seq (Nrd4 )) {
264- add(nwmRangeId(n) + 0x4900 , n~ NS & Owr4 ~ EC ) // OWR-4
265- add(nwmRangeId(n) + 0x4909 , n~ NS & Owr4m ~ EC ) // OWR-4m
266- add(nwmRangeId(n) + 0x4D00 , n~ NS & Ave8 ~ EC ) // AVE-8
267- }
258+ for (n <- Seq (Ard3 , Owr3 , Nrd4 )) {
259+ add(nwmRangeId(n) + 0x4B00 , n~ NS & Rd6 ~ EC ) // RD-4
260+ add(nwmRangeId(n) + 0x4C00 , n~ NS & Ave6 ~ EC ) // AVE-6
261+ add(nwmRangeId(n) + 0x4C09 , n~ NS & Tla7m ~ EC ) // TLA-M
262+ add(nwmRangeId(n) + 0x4D09 , n~ NS & Ave6m ~ EC ) // AVE-M
263+ }
268264
269- for (n <- Seq (Tla3 )) {
270- builder.addOne((Tla3 ~ NS ).projectLeft & Ard3 ~ CE , IdTile (0x51003A80 , R0F0 , nonMirroredOnly))
271- builder.addOne((Tla3 ~ NS ).projectRight & Ard3 ~ EC , IdTile (0x51003A00 , R0F0 , nonMirroredOnly))
272- }
273-
274- for (n <- Seq (Ard3 )) {
275- add(nwmRangeId(n) + 0x3080 , n~ EW & Street ~ CS ) // Street
276- add(nwmRangeId(n) + 0x3180 , n~ EW & Road ~ CS ) // Road
277- add(nwmRangeId(n) + 0x3280 , n~ EW & Onewayroad ~ CS ) // Onewayroad
278- add(nwmRangeId(n) + 0x4380 , n~ EW & Avenue ~ NC ) // Avenue
279- add(nwmRangeId(n) + 0x3880 , n~ SN & Tla3 ~ CE ) // TLA-3b
280- add(nwmRangeId(n) + 0x3980 , n~ SN & Ave2 ~ CE ) // AVE-2b
281- add(nwmRangeId(n) + 0x3A80 , n~ SN & Ard3 ~ CE ) // ARD-3b
282- add(nwmRangeId(n) + 0x3B80 , n~ SN & Owr1 ~ CE ) // OWR-1b
283- add(nwmRangeId(n) + 0x3C80 , n~ SN & Owr3 ~ CE ) // OWR-3b
284- add(nwmRangeId(n) + 0x3D80 , n~ SN & Nrd4 ~ CE ) // NRD-4b
285- add(nwmRangeId(n) + 0x4880 , n~ SN & Tla5 ~ EC ) // TLA-5b
286- add(nwmRangeId(n) + 0x4A80 , n~ SN & Rd4 ~ EC ) // RD-4b
287- add(nwmRangeId(n) + 0x4B80 , n~ SN & Rd6 ~ EC ) // RD-6b
288- add(nwmRangeId(n) + 0x4C80 , n~ SN & Ave6 ~ EC ) // AVE-6b
289- add(nwmRangeId(n) + 0x4C89 , n~ SN & Tla7m ~ EC ) // TLA-Mb
290- add(nwmRangeId(n) + 0x4D89 , n~ SN & Ave6m ~ EC ) // AVE-Mb
291- }
292-
293- for (n <- Seq (Tla5 , Owr4 , Owr4m , Owr5 , Rd4 , Rd6 , Ave6 , Ave8 )) {
294- add(nwmRangeId(n) + 0x3000 , n~ EW & Street ~ NC ) // Street Short
295- add(nwmRangeId(n) + 0x3080 , n~ WE & Street ~ NC ) // Street Long
296- add(nwmRangeId(n) + 0x3100 , n~ EW & Road ~ NC ) // Road Short
297- add(nwmRangeId(n) + 0x3180 , n~ WE & Road ~ NC ) // Road Long
298- add(nwmRangeId(n) + 0x3200 , n~ EW & Onewayroad ~ NC ) // Onewayroad Short
299- add(nwmRangeId(n) + 0x3280 , n~ WE & Onewayroad ~ NC ) // Onewayroad Long
300- add(nwmRangeId(n) + 0x4300 , n~ EW & Avenue ~ NC ) // Avenue Short
301- add(nwmRangeId(n) + 0x4400 , n~ WE & Avenue ~ NC ) // Avenue Long
302- add(nwmRangeId(n) + 0x3800 , n~ EW & Tla3 ~ NC ) // TLA-3 Short
303- add(nwmRangeId(n) + 0x3880 , n~ WE & Tla3 ~ NC ) // TLA-3 Long
304- add(nwmRangeId(n) + 0x3900 , n~ EW & Ave2 ~ NC ) // AVE-2 Short
305- add(nwmRangeId(n) + 0x3980 , n~ WE & Ave2 ~ NC ) // AVE-2 Long
306- add(nwmRangeId(n) + 0x3A00 , n~ EW & Ard3 ~ NC ) // ARD-3 Short
307- add(nwmRangeId(n) + 0x3A80 , n~ WE & Ard3 ~ NC ) // ARD-3 Long
308- add(nwmRangeId(n) + 0x3B00 , n~ EW & Owr1 ~ NC ) // OWR-1 Short
309- add(nwmRangeId(n) + 0x3B80 , n~ WE & Owr1 ~ NC ) // OWR-1 Long
310- add(nwmRangeId(n) + 0x3C00 , n~ EW & Owr3 ~ NC ) // OWR-3 Short - restrict to Owr4/m, Owr5, Rd6, Ave6, Ave8
311- add(nwmRangeId(n) + 0x3C80 , n~ WE & Owr3 ~ NC ) // OWR-3 Long
312- add(nwmRangeId(n) + 0x3D00 , n~ EW & Nrd4 ~ NC ) // NRD-4 Short
313- add(nwmRangeId(n) + 0x3D80 , n~ WE & Nrd4 ~ NC ) // NRD-4 Long
314- add(nwmRangeId(n) + 0x3E00 , n~ WE & Tla5 ~ NC ) // TLA-5 Long
315- add(nwmRangeId(n) + 0x3F00 , n~ WE & Owr4 ~ NC ) // OWR-4 Long
316- add(nwmRangeId(n) + 0x3F09 , n~ WE & Owr4m ~ NC ) // OWR-4m Long
317- add(nwmRangeId(n) + 0x4000 , n~ WE & Owr5 ~ NC ) // OWR-5 Long
318- add(nwmRangeId(n) + 0x4100 , n~ WE & Rd4 ~ NC ) // RD-4 Long
319- add(nwmRangeId(n) + 0x4200 , n~ WE & Rd6 ~ NC ) // RD-6 Long
320- add(nwmRangeId(n) + 0x4800 , n~ WE & Ave6 ~ NC ) // AVE-6 Long
321- add(nwmRangeId(n) + 0x4880 , n~ WE & Tla7m ~ NC ) // TLA-M Long
322- add(nwmRangeId(n) + 0x4900 , n~ WE & Ave8 ~ NC ) // AVE-8 Long
323- add(nwmRangeId(n) + 0x4980 , n~ WE & Ave6m ~ NC ) // AVE-M Long
324- }
325-
326- // OxO NWM-End
327- for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
328- add(nwmRangeId(n) + 0x4000 , n~ CE & Street ~ NS ) // Street
329- add(nwmRangeId(n) + 0x4100 , n~ CE & Road ~ NS ) // Road
330- add(nwmRangeId(n) + 0x4200 , n~ CE & Onewayroad ~ NS ) // Onewayroad
331- add(nwmRangeId(n) + 0x3300 , n~ CE & Avenue ~ SN , when = n != Owr3 ) // Avenue Short - disable for OWR-3
332- add(nwmRangeId(n) + 0x3400 , n~ WC & Avenue ~ SN ) // Avenue Long
333- }
334- // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
335- for (n <- Seq (Tla5 , Owr4 , Owr4m , Rd4 , Rd6 , Ave6 , Ave8 , Tla7m , Ave6m )) {
336- add(nwmRangeId(n) + 0x3400 , n~ NC & Avenue ~ WE , when = n != Owr5 ) // Avenue Long
337- }
338- // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
339- for (n <- Seq (Tla5 , Rd4 )) {
340- add(nwmRangeId(n) + 0x4500 , n~ CE & Road ~ NS ) // Road - dummy for OWR-5/RD-6/AVE-6/AVE-8
341- add(nwmRangeId(n) + 0x4600 , n~ CE & Onewayroad ~ NS ) // Onewayroad - dummy for OWR-5/RD-6/AVE-6/AVE-8
342- add(nwmRangeId(n) + 0x4700 , n~ CE & Street ~ NS ) // Street
343- // add(nwmRangeId(n) + 0x3300, n~NC & Avenue~EW) // Avenue Short - disable for all but TLA-5 and RD-4
344- }
265+ for (n <- Seq (Nrd4 )) {
266+ add(nwmRangeId(n) + 0x4900 , n~ NS & Owr4 ~ EC ) // OWR-4
267+ add(nwmRangeId(n) + 0x4909 , n~ NS & Owr4m ~ EC ) // OWR-4m
268+ add(nwmRangeId(n) + 0x4D00 , n~ NS & Ave8 ~ EC ) // AVE-8
269+ }
270+
271+ for (n <- Seq (Tla3 )) {
272+ builder.addOne((Tla3 ~ NS ).projectLeft & Ard3 ~ CE , IdTile (0x51003A80 , R0F0 , nonMirroredOnly))
273+ builder.addOne((Tla3 ~ NS ).projectRight & Ard3 ~ EC , IdTile (0x51003A00 , R0F0 , nonMirroredOnly))
274+ }
345275
276+ for (n <- Seq (Ard3 )) {
277+ add(nwmRangeId(n) + 0x3080 , n~ EW & Street ~ CS ) // Street
278+ add(nwmRangeId(n) + 0x3180 , n~ EW & Road ~ CS ) // Road
279+ add(nwmRangeId(n) + 0x3280 , n~ EW & Onewayroad ~ CS ) // Onewayroad
280+ add(nwmRangeId(n) + 0x4380 , n~ EW & Avenue ~ NC ) // Avenue
281+ add(nwmRangeId(n) + 0x3880 , n~ SN & Tla3 ~ CE ) // TLA-3b
282+ add(nwmRangeId(n) + 0x3980 , n~ SN & Ave2 ~ CE ) // AVE-2b
283+ add(nwmRangeId(n) + 0x3A80 , n~ SN & Ard3 ~ CE ) // ARD-3b
284+ add(nwmRangeId(n) + 0x3B80 , n~ SN & Owr1 ~ CE ) // OWR-1b
285+ add(nwmRangeId(n) + 0x3C80 , n~ SN & Owr3 ~ CE ) // OWR-3b
286+ add(nwmRangeId(n) + 0x3D80 , n~ SN & Nrd4 ~ CE ) // NRD-4b
287+ add(nwmRangeId(n) + 0x4880 , n~ SN & Tla5 ~ EC ) // TLA-5b
288+ add(nwmRangeId(n) + 0x4A80 , n~ SN & Rd4 ~ EC ) // RD-4b
289+ add(nwmRangeId(n) + 0x4B80 , n~ SN & Rd6 ~ EC ) // RD-6b
290+ add(nwmRangeId(n) + 0x4C80 , n~ SN & Ave6 ~ EC ) // AVE-6b
291+ add(nwmRangeId(n) + 0x4C89 , n~ SN & Tla7m ~ EC ) // TLA-Mb
292+ add(nwmRangeId(n) + 0x4D89 , n~ SN & Ave6m ~ EC ) // AVE-Mb
293+ }
294+
295+ for (n <- Seq (Tla5 , Owr4 , Owr4m , Owr5 , Rd4 , Rd6 , Ave6 , Ave8 )) {
296+ add(nwmRangeId(n) + 0x3000 , n~ EW & Street ~ NC ) // Street Short
297+ add(nwmRangeId(n) + 0x3080 , n~ WE & Street ~ NC ) // Street Long
298+ add(nwmRangeId(n) + 0x3100 , n~ EW & Road ~ NC ) // Road Short
299+ add(nwmRangeId(n) + 0x3180 , n~ WE & Road ~ NC ) // Road Long
300+ add(nwmRangeId(n) + 0x3200 , n~ EW & Onewayroad ~ NC ) // Onewayroad Short
301+ add(nwmRangeId(n) + 0x3280 , n~ WE & Onewayroad ~ NC ) // Onewayroad Long
302+ add(nwmRangeId(n) + 0x4300 , n~ EW & Avenue ~ NC ) // Avenue Short
303+ add(nwmRangeId(n) + 0x4400 , n~ WE & Avenue ~ NC ) // Avenue Long
304+ add(nwmRangeId(n) + 0x3800 , n~ EW & Tla3 ~ NC ) // TLA-3 Short
305+ add(nwmRangeId(n) + 0x3880 , n~ WE & Tla3 ~ NC ) // TLA-3 Long
306+ add(nwmRangeId(n) + 0x3900 , n~ EW & Ave2 ~ NC ) // AVE-2 Short
307+ add(nwmRangeId(n) + 0x3980 , n~ WE & Ave2 ~ NC ) // AVE-2 Long
308+ add(nwmRangeId(n) + 0x3A00 , n~ EW & Ard3 ~ NC ) // ARD-3 Short
309+ add(nwmRangeId(n) + 0x3A80 , n~ WE & Ard3 ~ NC ) // ARD-3 Long
310+ add(nwmRangeId(n) + 0x3B00 , n~ EW & Owr1 ~ NC ) // OWR-1 Short
311+ add(nwmRangeId(n) + 0x3B80 , n~ WE & Owr1 ~ NC ) // OWR-1 Long
312+ add(nwmRangeId(n) + 0x3C00 , n~ EW & Owr3 ~ NC ) // OWR-3 Short - restrict to Owr4/m, Owr5, Rd6, Ave6, Ave8
313+ add(nwmRangeId(n) + 0x3C80 , n~ WE & Owr3 ~ NC ) // OWR-3 Long
314+ add(nwmRangeId(n) + 0x3D00 , n~ EW & Nrd4 ~ NC ) // NRD-4 Short
315+ add(nwmRangeId(n) + 0x3D80 , n~ WE & Nrd4 ~ NC ) // NRD-4 Long
316+ add(nwmRangeId(n) + 0x3E00 , n~ WE & Tla5 ~ NC ) // TLA-5 Long
317+ add(nwmRangeId(n) + 0x3F00 , n~ WE & Owr4 ~ NC ) // OWR-4 Long
318+ add(nwmRangeId(n) + 0x3F09 , n~ WE & Owr4m ~ NC ) // OWR-4m Long
319+ add(nwmRangeId(n) + 0x4000 , n~ WE & Owr5 ~ NC ) // OWR-5 Long
320+ add(nwmRangeId(n) + 0x4100 , n~ WE & Rd4 ~ NC ) // RD-4 Long
321+ add(nwmRangeId(n) + 0x4200 , n~ WE & Rd6 ~ NC ) // RD-6 Long
322+ add(nwmRangeId(n) + 0x4800 , n~ WE & Ave6 ~ NC ) // AVE-6 Long
323+ add(nwmRangeId(n) + 0x4880 , n~ WE & Tla7m ~ NC ) // TLA-M Long
324+ add(nwmRangeId(n) + 0x4900 , n~ WE & Ave8 ~ NC ) // AVE-8 Long
325+ add(nwmRangeId(n) + 0x4980 , n~ WE & Ave6m ~ NC ) // AVE-M Long
326+ }
346327
328+ // OxO NWM-End
329+ for (n <- Seq (Tla3 , Ave2 , Ard3 , Owr1 , Owr3 , Nrd4 )) {
330+ add(nwmRangeId(n) + 0x4000 , n~ CE & Street ~ NS ) // Street
331+ add(nwmRangeId(n) + 0x4100 , n~ CE & Road ~ NS ) // Road
332+ add(nwmRangeId(n) + 0x4200 , n~ CE & Onewayroad ~ NS ) // Onewayroad
333+ add(nwmRangeId(n) + 0x3300 , n~ CE & Avenue ~ SN , when = n != Owr3 ) // Avenue Short - disable for OWR-3
334+ add(nwmRangeId(n) + 0x3400 , n~ WC & Avenue ~ SN ) // Avenue Long
335+ }
336+ // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
337+ for (n <- Seq (Tla5 , Owr4 , Owr4m , Rd4 , Rd6 , Ave6 , Ave8 , Tla7m , Ave6m )) {
338+ add(nwmRangeId(n) + 0x3400 , n~ NC & Avenue ~ WE , when = n != Owr5 ) // Avenue Long
339+ }
340+ // OWR-5 does not have any valid T-ints with Maxis networks - just itself, RD-6, and the Triple-Tile networks
341+ for (n <- Seq (Tla5 , Rd4 )) {
342+ add(nwmRangeId(n) + 0x4500 , n~ CE & Road ~ NS ) // Road - dummy for OWR-5/RD-6/AVE-6/AVE-8
343+ add(nwmRangeId(n) + 0x4600 , n~ CE & Onewayroad ~ NS ) // Onewayroad - dummy for OWR-5/RD-6/AVE-6/AVE-8
344+ add(nwmRangeId(n) + 0x4700 , n~ CE & Street ~ NS ) // Street
345+ // add(nwmRangeId(n) + 0x3300, n~NC & Avenue~EW) // Avenue Short - disable for all but TLA-5 and RD-4
347346 }
348347
349348 builder.result()
0 commit comments