diff --git a/assets/animations/rooftop/lighting-v1.bin b/assets/animations/rooftop/lighting-v1.bin index 7fa159f..b1a1b10 100644 Binary files a/assets/animations/rooftop/lighting-v1.bin and b/assets/animations/rooftop/lighting-v1.bin differ diff --git a/assets/animations/rooftop/mesh-city-v1.bin b/assets/animations/rooftop/mesh-city-v1.bin index 712a09b..0d82612 100644 Binary files a/assets/animations/rooftop/mesh-city-v1.bin and b/assets/animations/rooftop/mesh-city-v1.bin differ diff --git a/assets/sprites/rooftop/district-map-v1.json b/assets/sprites/rooftop/district-map-v1.json index 936088e..579fb99 100644 --- a/assets/sprites/rooftop/district-map-v1.json +++ b/assets/sprites/rooftop/district-map-v1.json @@ -36,6 +36,2090 @@ 254, 398 ], + "waterfront_buildings": [ + [ + -461, + -449.45, + 38, + 53, + -47, + 189, + 5 + ], + [ + -448.55, + -435, + 38, + 53, + -44, + 190, + 5 + ], + [ + -461, + -447.45, + 82, + 96, + -40, + 192, + 5 + ], + [ + -446.55, + -435, + 82, + 96, + -48, + 193, + 5 + ], + [ + -425, + -414.45, + 39, + 53, + -39, + 190, + 5 + ], + [ + -413.55, + -399, + 39, + 53, + -47, + 191, + 5 + ], + [ + -425, + -412.45, + 82, + 94, + -43, + 193, + 5 + ], + [ + -411.55, + -399, + 82, + 94, + -40, + 186, + 5 + ], + [ + -389, + -375.45, + 39, + 53, + -40, + 191, + 5 + ], + [ + -374.55, + -363, + 39, + 53, + -48, + 192, + 5 + ], + [ + -389, + -378.45, + 82, + 94, + -44, + 186, + 5 + ], + [ + -377.55, + -363, + 82, + 94, + -41, + 187, + 5 + ], + [ + -353, + -340.45, + 36, + 53, + -43, + 192, + 5 + ], + [ + -339.55, + -327, + 36, + 53, + -40, + 193, + 5 + ], + [ + -353, + -339.45, + 82, + 94, + -45, + 187, + 5 + ], + [ + -338.55, + -327, + 82, + 94, + -42, + 188, + 5 + ], + [ + -317, + -306.45, + 36, + 53, + -44, + 193, + 5 + ], + [ + -305.55, + -291, + 36, + 53, + -41, + 186, + 5 + ], + [ + -317, + -304.45, + 82, + 95, + -48, + 188, + 5 + ], + [ + -303.55, + -291, + 82, + 95, + -45, + 189, + 5 + ], + [ + -281, + -267.45, + 36, + 53, + -45, + 186, + 5 + ], + [ + -266.55, + -255, + 36, + 53, + -42, + 187, + 5 + ], + [ + -281, + -270.45, + 82, + 95, + -38, + 189, + 5 + ], + [ + -269.55, + -255, + 82, + 95, + -46, + 190, + 5 + ], + [ + -245, + -232.45, + 37, + 53, + -48, + 187, + 5 + ], + [ + -231.55, + -219, + 37, + 53, + -45, + 188, + 5 + ], + [ + -245, + -230.45, + 82, + 96, + -41, + 190, + 5 + ], + [ + -229.55, + -219, + 82, + 96, + -38, + 191, + 5 + ], + [ + -209, + -198.45, + 37, + 53, + -38, + 188, + 5 + ], + [ + -197.55, + -183, + 37, + 53, + -46, + 189, + 5 + ], + [ + -209, + -196.45, + 82, + 96, + -42, + 191, + 5 + ], + [ + -195.55, + -183, + 82, + 96, + -39, + 192, + 5 + ], + [ + -173, + -158.45, + 38, + 53, + -41, + 189, + 5 + ], + [ + -157.55, + -147, + 38, + 53, + -38, + 190, + 5 + ], + [ + -173, + -162.45, + 82, + 96, + -43, + 192, + 5 + ], + [ + -161.55, + -147, + 82, + 96, + -40, + 193, + 5 + ], + [ + -137, + -124.45, + 38, + 53, + -42, + 190, + 5 + ], + [ + -123.55, + -111, + 38, + 53, + -39, + 191, + 5 + ], + [ + -137, + -122.45, + 82, + 94, + -46, + 193, + 5 + ], + [ + -121.55, + -111, + 82, + 94, + -43, + 186, + 5 + ], + [ + -101, + -90.45, + 38, + 53, + -43, + 191, + 5 + ], + [ + -89.55, + -75, + 38, + 53, + -40, + 192, + 5 + ], + [ + -101, + -88.45, + 82, + 94, + -47, + 186, + 5 + ], + [ + -87.55, + -75, + 82, + 94, + -44, + 187, + 5 + ], + [ + -65, + -50.45, + 39, + 53, + -46, + 192, + 5 + ], + [ + -49.55, + -39, + 39, + 53, + -43, + 193, + 5 + ], + [ + -65, + -54.45, + 82, + 94, + -48, + 187, + 5 + ], + [ + -53.55, + -39, + 82, + 94, + -45, + 188, + 5 + ], + [ + -29, + -16.45, + 39, + 53, + -47, + 193, + 5 + ], + [ + -15.55, + -3, + 39, + 53, + -44, + 186, + 5 + ], + [ + -29, + -14.45, + 82, + 95, + -40, + 188, + 5 + ], + [ + -13.55, + -3, + 82, + 95, + -48, + 189, + 5 + ], + [ + 7, + 17.55, + 39, + 53, + -48, + 186, + 5 + ], + [ + 18.45, + 33, + 39, + 53, + -45, + 187, + 5 + ], + [ + 7, + 19.55, + 82, + 95, + -41, + 189, + 5 + ], + [ + 20.45, + 33, + 82, + 95, + -38, + 190, + 5 + ], + [ + 43, + 57.55, + 36, + 53, + -40, + 187, + 5 + ], + [ + 58.45, + 69, + 36, + 53, + -48, + 188, + 5 + ], + [ + 43, + 54.55, + 82, + 96, + -44, + 190, + 5 + ], + [ + 55.45, + 69, + 82, + 96, + -41, + 191, + 5 + ] + ], + "canal_quay_parts": [ + [ + 0, + -520, + 70, + 55, + 60, + -62, + -59.75, + 162 + ], + [ + 0, + -520, + -37.6, + 59.65, + 60.0, + -59.75, + -58.85, + 162 + ], + [ + 0, + -520, + -37.6, + 59.61, + 60.04, + -58.85, + -58.7, + 168 + ], + [ + 0, + -30.4, + 34.4, + 59.65, + 60.0, + -59.75, + -58.85, + 162 + ], + [ + 0, + -30.4, + 34.4, + 59.61, + 60.04, + -58.85, + -58.7, + 168 + ], + [ + 0, + 41.6, + 70, + 59.65, + 60.0, + -59.75, + -58.85, + 162 + ], + [ + 0, + 41.6, + 70, + 59.61, + 60.04, + -58.85, + -58.7, + 168 + ], + [ + 0, + -520, + 70, + 76, + 81, + -62, + -59.75, + 162 + ], + [ + 0, + -520, + -37.6, + 76, + 76.35, + -59.75, + -58.85, + 162 + ], + [ + 0, + -520, + -37.6, + 75.96, + 76.39, + -58.85, + -58.7, + 168 + ], + [ + 0, + -30.4, + 34.4, + 76, + 76.35, + -59.75, + -58.85, + 162 + ], + [ + 0, + -30.4, + 34.4, + 75.96, + 76.39, + -58.85, + -58.7, + 168 + ], + [ + 0, + 41.6, + 70, + 76, + 76.35, + -59.75, + -58.85, + 162 + ], + [ + 0, + 41.6, + 70, + 75.96, + 76.39, + -58.85, + -58.7, + 168 + ], + [ + 0, + -184.12, + -183.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -184, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -181, + -179, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -180.8, + -180.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -179.4, + -179.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -184.12, + -183.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -184, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -181, + -179, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -180.8, + -180.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -179.4, + -179.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -166.12, + -165.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -166, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -163, + -161, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -162.8, + -162.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -161.4, + -161.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -166.12, + -165.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -166, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -163, + -161, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -162.8, + -162.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -161.4, + -161.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -148.12, + -147.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -148, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -145, + -143, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -144.8, + -144.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -143.4, + -143.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -148.12, + -147.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -148, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -145, + -143, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -144.8, + -144.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -143.4, + -143.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -130.12, + -129.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -130, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -127, + -125, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -126.8, + -126.61999999999999, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -125.4, + -125.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -130.12, + -129.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -130, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -127, + -125, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -126.8, + -126.61999999999999, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -125.4, + -125.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -112.12, + -111.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -112, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -109, + -107, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -108.8, + -108.61999999999999, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -107.4, + -107.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -112.12, + -111.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -112, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -109, + -107, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -108.8, + -108.61999999999999, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -107.4, + -107.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -94.12, + -93.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -94, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -91, + -89, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -90.8, + -90.61999999999999, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -89.4, + -89.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -94.12, + -93.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -94, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -91, + -89, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -90.8, + -90.61999999999999, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -89.4, + -89.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -76.12, + -75.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -76, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -73, + -71, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -72.8, + -72.61999999999999, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -71.4, + -71.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -76.12, + -75.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -76, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -73, + -71, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -72.8, + -72.61999999999999, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -71.4, + -71.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -58.12, + -57.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -58, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -55, + -53, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -54.8, + -54.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -53.4, + -53.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -58.12, + -57.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -58, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -55, + -53, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -54.8, + -54.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -53.4, + -53.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -40.12, + -39.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -40, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -37, + -35, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -36.8, + -36.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -35.4, + -35.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -40.12, + -39.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -40, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -37, + -35, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -36.8, + -36.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -35.4, + -35.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -22.12, + -21.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -22, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -19, + -17, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -18.8, + -18.62, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -17.4, + -17.22, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -22.12, + -21.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -22, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -19, + -17, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -18.8, + -18.62, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -17.4, + -17.22, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + -4.12, + -3.88, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + -4, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -1, + 1, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + -0.7999999999999998, + -0.6199999999999999, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 0.5999999999999996, + 0.7799999999999996, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + -4.12, + -3.88, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + -4, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + -1, + 1, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + -0.7999999999999998, + -0.6199999999999999, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 0.5999999999999996, + 0.7799999999999996, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 13.88, + 14.12, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + 14, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 17, + 19, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + 17.2, + 17.38, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 18.6, + 18.78, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 13.88, + 14.12, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + 14, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 17, + 19, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + 17.2, + 17.38, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 18.6, + 18.78, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 31.88, + 32.12, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + 32, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 35, + 37, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + 35.2, + 35.38, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 36.6, + 36.78, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 31.88, + 32.12, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + 32, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 35, + 37, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + 35.2, + 35.38, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 36.6, + 36.78, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 49.88, + 50.12, + 56.580000000000005, + 56.82, + -59.75, + -56.8, + 162 + ], + [ + 1, + 50, + 56.7, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 53, + 55, + 56.45, + 56.95, + -59.35, + -59.15, + 196 + ], + [ + 0, + 53.2, + 53.38, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 54.6, + 54.78, + 56.5, + 56.900000000000006, + -59.75, + -59.35, + 165 + ], + [ + 0, + 49.88, + 50.12, + 79.17999999999999, + 79.42, + -59.75, + -56.8, + 162 + ], + [ + 1, + 50, + 79.3, + -56.8, + 1.5, + 1.5, + 2.1, + 207 + ], + [ + 0, + 53, + 55, + 79.05, + 79.55, + -59.35, + -59.15, + 196 + ], + [ + 0, + 53.2, + 53.38, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ], + [ + 0, + 54.6, + 54.78, + 79.1, + 79.5, + -59.75, + -59.35, + 165 + ] + ], "lots": [ { "centre": [ @@ -2247,6 +4331,24 @@ ] ], "buildings": [ + [ + 18.45, + 33, + 39, + 53, + -45, + 187, + 5 + ], + [ + 7, + 17.55, + 39, + 53, + -48, + 186, + 5 + ], [ 14, 25, @@ -2256,6 +4358,24 @@ 203, 0 ], + [ + 43, + 57.55, + 36, + 53, + -40, + 187, + 5 + ], + [ + -15.55, + -3, + 39, + 53, + -44, + 186, + 5 + ], [ 50, 61, @@ -2274,6 +4394,24 @@ 203, 0 ], + [ + 58.45, + 69, + 36, + 53, + -48, + 188, + 5 + ], + [ + -29, + -16.45, + 39, + 53, + -47, + 193, + 5 + ], [ 6, 34, @@ -2364,6 +4502,15 @@ 192, 1 ], + [ + -49.55, + -39, + 39, + 53, + -43, + 193, + 5 + ], [ -9, -2, @@ -2400,6 +4547,33 @@ 191, 1 ], + [ + 7, + 19.55, + 82, + 95, + -41, + 189, + 5 + ], + [ + 20.45, + 33, + 82, + 95, + -38, + 190, + 5 + ], + [ + -13.55, + -3, + 82, + 95, + -48, + 189, + 5 + ], [ 6, 34, @@ -2427,6 +4601,24 @@ 192, 3 ], + [ + 43, + 54.55, + 82, + 96, + -44, + 190, + 5 + ], + [ + -65, + -50.45, + 39, + 53, + -46, + 192, + 5 + ], [ -30, -23, @@ -2463,6 +4655,24 @@ 191, 0 ], + [ + -29, + -14.45, + 82, + 95, + -40, + 188, + 5 + ], + [ + 55.45, + 69, + 82, + 96, + -41, + 191, + 5 + ], [ -30, -2, @@ -2535,6 +4745,15 @@ 193, 3 ], + [ + -53.55, + -39, + 82, + 94, + -45, + 188, + 5 + ], [ -30, -2, @@ -2580,6 +4799,15 @@ 192, 0 ], + [ + -89.55, + -75, + 38, + 53, + -40, + 192, + 5 + ], [ 120, 136, @@ -2643,6 +4871,15 @@ 190, 0 ], + [ + -65, + -54.45, + 82, + 94, + -48, + 187, + 5 + ], [ -9, -2, @@ -2742,6 +4979,15 @@ 193, 2 ], + [ + -101, + -90.45, + 38, + 53, + -43, + 191, + 5 + ], [ 78, 106, @@ -2832,6 +5078,15 @@ 187, 2 ], + [ + -87.55, + -75, + 82, + 94, + -44, + 187, + 5 + ], [ -60, -44, @@ -2886,6 +5141,15 @@ 187, 3 ], + [ + -101, + -88.45, + 82, + 94, + -47, + 186, + 5 + ], [ 42, 70, @@ -2931,6 +5195,15 @@ 187, 1 ], + [ + -123.55, + -111, + 38, + 53, + -39, + 191, + 5 + ], [ 6, 13, @@ -3120,6 +5393,24 @@ 190, 1 ], + [ + -137, + -124.45, + 38, + 53, + -42, + 190, + 5 + ], + [ + -121.55, + -111, + 82, + 94, + -43, + 186, + 5 + ], [ -138, -110, @@ -3282,6 +5573,15 @@ 192, 2 ], + [ + -137, + -122.45, + 82, + 94, + -46, + 193, + 5 + ], [ 6, 34, @@ -3489,6 +5789,15 @@ 191, 2 ], + [ + -157.55, + -147, + 38, + 53, + -38, + 190, + 5 + ], [ 12, 28, @@ -3759,6 +6068,15 @@ 191, 1 ], + [ + -173, + -158.45, + 38, + 53, + -41, + 189, + 5 + ], [ 78, 85, @@ -3813,6 +6131,15 @@ 187, 2 ], + [ + -161.55, + -147, + 82, + 96, + -40, + 193, + 5 + ], [ -30, -2, @@ -3984,6 +6311,15 @@ 190, 0 ], + [ + -173, + -162.45, + 82, + 96, + -43, + 192, + 5 + ], [ 156, 172, @@ -4146,6 +6482,15 @@ 186, 2 ], + [ + -197.55, + -183, + 37, + 53, + -46, + 189, + 5 + ], [ -102, -95, @@ -4290,6 +6635,15 @@ 187, 0 ], + [ + -195.55, + -183, + 82, + 96, + -39, + 192, + 5 + ], [ 150, 157, @@ -4344,6 +6698,15 @@ 187, 2 ], + [ + -209, + -198.45, + 37, + 53, + -38, + 188, + 5 + ], [ 192, 208, @@ -4353,6 +6716,15 @@ 204, 0 ], + [ + -209, + -196.45, + 82, + 96, + -42, + 191, + 5 + ], [ -138, -131, @@ -4515,6 +6887,15 @@ 190, 2 ], + [ + -231.55, + -219, + 37, + 53, + -45, + 188, + 5 + ], [ -1, 41, @@ -4542,6 +6923,24 @@ 190, 4 ], + [ + -229.55, + -219, + 82, + 96, + -38, + 191, + 5 + ], + [ + -245, + -232.45, + 37, + 53, + -48, + 187, + 5 + ], [ -174, -146, @@ -4641,6 +7040,24 @@ 191, 4 ], + [ + -245, + -230.45, + 82, + 96, + -41, + 190, + 5 + ], + [ + -266.55, + -255, + 36, + 53, + -42, + 187, + 5 + ], [ -129, -87, @@ -4713,6 +7130,33 @@ 192, 4 ], + [ + -269.55, + -255, + 82, + 95, + -46, + 190, + 5 + ], + [ + -281, + -267.45, + 36, + 53, + -45, + 186, + 5 + ], + [ + -281, + -270.45, + 82, + 95, + -38, + 189, + 5 + ], [ 0, 40, @@ -4812,6 +7256,15 @@ 191, 4 ], + [ + -305.55, + -291, + 36, + 53, + -41, + 186, + 5 + ], [ -68, -20, @@ -4866,6 +7319,15 @@ 192, 4 ], + [ + -303.55, + -291, + 82, + 95, + -45, + 189, + 5 + ], [ 312, 328, @@ -4884,6 +7346,24 @@ 200, 2 ], + [ + -317, + -306.45, + 36, + 53, + -44, + 193, + 5 + ], + [ + -317, + -304.45, + 82, + 95, + -48, + 188, + 5 + ], [ -127, -89, @@ -4956,6 +7436,24 @@ 193, 4 ], + [ + -339.55, + -327, + 36, + 53, + -40, + 193, + 5 + ], + [ + -338.55, + -327, + 82, + 94, + -42, + 188, + 5 + ], [ -256, -216, @@ -4992,6 +7490,15 @@ 186, 4 ], + [ + -353, + -340.45, + 36, + 53, + -43, + 192, + 5 + ], [ -196, -148, @@ -5064,6 +7571,15 @@ 186, 4 ], + [ + -353, + -339.45, + 82, + 94, + -45, + 187, + 5 + ], [ 347, 363, @@ -5163,6 +7679,15 @@ 193, 4 ], + [ + -374.55, + -363, + 39, + 53, + -48, + 192, + 5 + ], [ 382, 398, @@ -5181,6 +7706,15 @@ 202, 2 ], + [ + -377.55, + -363, + 82, + 94, + -41, + 187, + 5 + ], [ 337, 353, @@ -5199,6 +7733,15 @@ 202, 2 ], + [ + -389, + -375.45, + 39, + 53, + -40, + 191, + 5 + ], [ -126, -90, @@ -5343,6 +7886,24 @@ 187, 4 ], + [ + -389, + -378.45, + 82, + 94, + -44, + 186, + 5 + ], + [ + -413.55, + -399, + 39, + 53, + -47, + 191, + 5 + ], [ -195, -149, @@ -5415,6 +7976,33 @@ 187, 4 ], + [ + -411.55, + -399, + 82, + 94, + -40, + 186, + 5 + ], + [ + -425, + -414.45, + 39, + 53, + -39, + 190, + 5 + ], + [ + -425, + -412.45, + 82, + 94, + -43, + 193, + 5 + ], [ 3, 37, @@ -5622,6 +8210,15 @@ 188, 4 ], + [ + -448.55, + -435, + 38, + 53, + -44, + 190, + 5 + ], [ -125, -91, @@ -5712,6 +8309,15 @@ 201, 2 ], + [ + -446.55, + -435, + 82, + 96, + -48, + 193, + 5 + ], [ 397, 413, @@ -5730,6 +8336,24 @@ 200, 2 ], + [ + -461, + -449.45, + 38, + 53, + -47, + 189, + 5 + ], + [ + -461, + -447.45, + 82, + 96, + -40, + 192, + 5 + ], [ -193, -151, diff --git a/assets/sprites/rooftop/mesh-v1.json b/assets/sprites/rooftop/mesh-v1.json index 503dbef..01538a5 100644 --- a/assets/sprites/rooftop/mesh-v1.json +++ b/assets/sprites/rooftop/mesh-v1.json @@ -2,7 +2,7 @@ "format": "RGM1: count/bytes + material/3*(position,normal,uv)", "gl_axes": "X/Z/Y; normals explicitly outward; no runtime model engine", "triangles": { - "scene": 35386, + "scene": 44400, "car": 360, "boat": 170 }, @@ -6660,6 +6660,6 @@ true ] ], - "removed_invisible_triangles": 18309, + "removed_invisible_triangles": 20717, "front_face": "CCW" } diff --git a/bin/poker.exe b/bin/poker.exe index c5429fd..f07b9e4 100644 Binary files a/bin/poker.exe and b/bin/poker.exe differ diff --git a/build/AssemblerCasinoLauncher.cs b/build/AssemblerCasinoLauncher.cs index 8f4070e..e8307a1 100644 --- a/build/AssemblerCasinoLauncher.cs +++ b/build/AssemblerCasinoLauncher.cs @@ -8,7 +8,7 @@ namespace AssemblerCasinoLauncher { static class Program { - const string ExpectedPokerSha256 = "63C04B59D74772621A7563EA70DFA6764C60684459EE7D046AF30B555A01FF15"; + const string ExpectedPokerSha256 = "CF04525CD5C9C87412001FF4F4CBBCA1C7019F71A53FEBA3BB8051323B0EB634"; [STAThread] static void Main() diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index c5429fd..f07b9e4 100644 Binary files a/build/graphics/poker.exe and b/build/graphics/poker.exe differ diff --git a/dist/Assembler Casino.exe b/dist/Assembler Casino.exe index 0b6e644..29e5432 100644 Binary files a/dist/Assembler Casino.exe and b/dist/Assembler Casino.exe differ diff --git a/docs/ROOFTOP.md b/docs/ROOFTOP.md index 90a81b3..fa1eb02 100644 --- a/docs/ROOFTOP.md +++ b/docs/ROOFTOP.md @@ -83,7 +83,13 @@ readback synchronisation, without a redundant preceding glFinish. and gameplay do not change with the render profile; other rooms are unaffected. - The offline mesh packer discards only triangles that face away from every possible rooftop eye position. Runtime back-face culling handles head turns. - The static mesh now contains 35,386 triangles instead of 53,695. + The static mesh, including driver-safe ground and canal frontage, stays under 48,000 + triangles. Never-visible faces are pruned before shipping. +- Terrain and light-map triangles crossing the near district are at most 64 m + wide, with finer cells near the terrace. This avoids relying on per-fragment + fog for multi-kilometre polygons on integrated OpenGL drivers. Water animation + uses its own display list from the same tessellated mesh, not two giant quads. + GL_NICEST requests accurate fog, but the geometry remains safe if ignored. - CPU foreground surfaces use projected screen bounds and camera-facing box sides. The final frame avoids an extra GDI scaling/alpha-blending pass. - Mipmap generation is optional on older OpenGL drivers. If hardware rendering @@ -97,6 +103,12 @@ Integrated Intel graphics use shared system memory; the small dedicated-memory figure alone is not a useful rendering budget. Actual laptop performance must be checked on that machine, not inferred from the desktop benchmark. +The western canal has two rows of varied waterfront facades, raised stone quays, +bridge openings, trees and benches. These replace the empty cleared block rows; +they use the same world records in the GL and software renderers. The offline +`pack_rooftop.py --district-only` option rebuilds layout and lighting without +repacking unchanged sky, hand-animation or material assets. + The art direction takes atmospheric inspiration from the rooftop reference: https://www.loftprojectetagi.ru/visitors/krysha/ . It is an original game backdrop, not an exact survey or reproduction of that venue. Generated source images are @@ -121,3 +133,6 @@ written under `build/hall-expansion/roof-*.png`. `--parity` verifies tested procedures against the full shipping object before publishing. The native harness also checks all three resolution profiles, automatic downgrade, F8 switching, and software roads/water with both present and missing city textures. +It also captures GL_FASTEST fog, checks ground-cell bounds and water tessellation. +These are compatibility checks on the test machine, not a substitute for confirming +the result on the laptop's actual Intel driver. diff --git a/poker.exe b/poker.exe index c5429fd..f07b9e4 100644 Binary files a/poker.exe and b/poker.exe differ diff --git a/src_graphics/rooftop_district_data.inc b/src_graphics/rooftop_district_data.inc index 70a1621..8a52fd0 100644 --- a/src_graphics/rooftop_district_data.inc +++ b/src_graphics/rooftop_district_data.inc @@ -1,10 +1,16 @@ ; Generated city block footprints and rooftop-relative heights. -ROOF_BUILDING_COUNT equ 518 +ROOF_BUILDING_COUNT equ 578 .data roofDistrict3D LABEL DWORD + dd 1209139,2162688,2555904,3473408,-2949120,187,5 + dd 458752,1150157,2555904,3473408,-3145728,186,5 dd 917504,1638400,-1966080,-1310720,-3538944,203,0 + dd 2818048,3771597,2359296,3473408,-2621440,187,5 + dd -1019085,-196608,2555904,3473408,-2883584,186,5 dd 3276800,3997696,-1966080,-1310720,-3211264,203,0 dd -1441792,-720896,-1966080,-1310720,-3407872,203,0 + dd 3830579,4521984,2359296,3473408,-3145728,188,5 + dd -1900544,-1078067,2555904,3473408,-3080192,193,5 dd 393216,2228224,-3538944,-3080192,-2339635,192,1 dd 5111808,5570560,262144,1179648,-3014656,192,2 dd -1966080,-131072,-3538944,-3080192,-3126067,189,1 @@ -15,17 +21,25 @@ roofDistrict3D LABEL DWORD dd -4325376,-2490368,1179648,1638400,-2929459,188,1 dd 5111808,6946816,-196608,262144,-3014656,192,0 dd 5111808,6946816,1179648,1638400,-2994995,192,1 + dd -3247309,-2555904,2555904,3473408,-2818048,193,5 dd -589824,-131072,-4456448,-3538944,-3126067,189,3 dd 2752512,3211264,-4456448,-3538944,-2293760,187,2 dd -4325376,-2490368,-1179648,-720896,-2536243,187,1 dd 5111808,6946816,-1179648,-720896,-2929459,191,1 + dd 458752,1281229,5373952,6225920,-2686976,189,5 + dd 1340211,2162688,5373952,6225920,-2490368,190,5 + dd -888013,-196608,5373952,6225920,-3145728,189,5 dd 393216,2228224,-4915200,-4456448,-2359296,192,0 dd -4325376,-3866624,262144,1179648,-2949120,188,2 dd 6488064,6946816,262144,1179648,-2994995,192,3 + dd 2818048,3574989,5373952,6291456,-2883584,190,5 + dd -4259840,-3306291,2555904,3473408,-3014656,192,5 dd -1966080,-1507328,-4456448,-3538944,-3145728,189,2 dd 4128768,4587520,-4456448,-3538944,-2274099,187,3 dd -4325376,-2490368,-2555904,-2097152,-2555904,187,0 dd 5111808,6946816,-2555904,-2097152,-2949120,191,0 + dd -1900544,-946995,5373952,6225920,-2621440,188,5 + dd 3633971,4521984,5373952,6291456,-2686976,191,5 dd -1966080,-131072,-4915200,-4456448,-3145728,189,0 dd 2752512,4587520,-4915200,-4456448,-2293760,187,0 dd -4325376,-3866624,-2097152,-1179648,-2555904,187,2 @@ -34,11 +48,13 @@ roofDistrict3D LABEL DWORD dd 5111808,5570560,-4456448,-3538944,-2555904,190,2 dd 393216,2228224,-5898240,-5439488,-2994995,191,1 dd -5308416,-4849664,262144,1179648,-2667315,193,3 + dd -3509453,-2555904,5373952,6160384,-2949120,188,5 dd -1966080,-131072,-5898240,-5439488,-3060531,188,1 dd -5308416,-4849664,-2097152,-1179648,-2274099,192,3 dd 7471104,7929856,-2097152,-1179648,-2863923,186,1 dd -1966080,-131072,6881280,7340032,-3014656,186,0 dd 2752512,4587520,6881280,7340032,-2883584,192,0 + dd -5868749,-4915200,2490368,3473408,-2621440,192,5 dd 7864320,8912896,65536,1376256,-1441792,199,0 dd 393216,851968,-6815744,-5898240,-3014656,191,2 dd -6684672,-4849664,-196608,262144,-2686976,193,0 @@ -46,6 +62,7 @@ roofDistrict3D LABEL DWORD dd -4325376,-2490368,-4915200,-4456448,-2162688,186,0 dd -4325376,-3866624,-4456448,-3538944,-2162688,186,2 dd 5111808,6946816,-4915200,-4456448,-2555904,190,0 + dd -4259840,-3568435,5373952,6160384,-3145728,187,5 dd -589824,-131072,-6815744,-5898240,-3060531,188,3 dd -6684672,-4849664,-1179648,-720896,-2274099,192,1 dd 7471104,9306112,-1179648,-720896,-2883584,186,0 @@ -57,6 +74,7 @@ roofDistrict3D LABEL DWORD dd -1966080,-1507328,7340032,8257536,-3014656,186,2 dd 393216,2228224,-7274496,-6815744,-3014656,191,0 dd -6684672,-6225920,262144,1179648,-2686976,193,2 + dd -6619136,-5927731,2490368,3473408,-2818048,191,5 dd 5111808,6946816,-5898240,-5439488,-2143027,189,1 dd 7471104,7929856,-4456448,-3538944,-2490368,193,2 dd 5111808,6946816,6881280,7340032,-3145728,187,0 @@ -67,17 +85,20 @@ roofDistrict3D LABEL DWORD dd 5111808,5570560,-6815744,-5898240,-2162688,189,2 dd 7471104,9306112,-3538944,-3080192,-2470707,193,1 dd 5111808,5570560,7340032,8257536,-3145728,187,2 + dd -5737677,-4915200,5373952,6160384,-2883584,187,5 dd -3932160,-2883584,-7012352,-5701632,-2097152,204,0 dd -6291456,-5242880,-4653056,-3342336,-2293760,204,0 dd 393216,2228224,-8257536,-7798784,-2601779,190,1 dd 393216,2228224,9240576,9699328,-2293760,190,0 dd 7471104,9306112,-4915200,-4456448,-2490368,193,0 dd 6488064,6946816,7340032,8257536,-3126067,187,3 + dd -6619136,-5796659,5373952,6160384,-3080192,186,5 dd 2752512,4587520,-8257536,-7798784,-2863923,193,1 dd 2752512,4587520,9240576,9699328,-2228224,193,0 dd 5111808,6946816,-7274496,-6815744,-2162688,189,0 dd 8847360,9306112,-4456448,-3538944,-2470707,193,3 dd 5111808,6946816,8257536,8716288,-3126067,187,1 + dd -8096973,-7274496,2490368,3473408,-2555904,191,5 dd 393216,851968,-9175040,-8257536,-2621440,190,2 dd -9043968,-7208960,-196608,262144,-2752512,190,0 dd -9043968,-7208960,1179648,1638400,-2732851,190,1 @@ -99,6 +120,8 @@ roofDistrict3D LABEL DWORD dd 393216,2228224,-9633792,-9175040,-2621440,190,0 dd -9043968,-8585216,262144,1179648,-2752512,190,2 dd 393216,2228224,10616832,11075584,-2274099,190,1 + dd -8978432,-8155955,2490368,3473408,-2752512,190,5 + dd -7965901,-7274496,5373952,6160384,-2818048,186,5 dd -9043968,-7208960,-3538944,-3080192,-2994995,188,1 dd 9830400,11665408,-3538944,-3080192,-2732851,188,1 dd -2949120,-2490368,9699328,10616832,-3126067,192,3 @@ -117,6 +140,7 @@ roofDistrict3D LABEL DWORD dd -9043968,-7208960,-4915200,-4456448,-3014656,188,0 dd 9830400,11665408,-4915200,-4456448,-2752512,188,0 dd -4325376,-3866624,9699328,10616832,-3145728,192,2 + dd -8978432,-8024883,5373952,6160384,-3014656,193,5 dd 393216,2228224,-10616832,-10158080,-2208563,189,1 dd -10027008,-9568256,262144,1179648,-2470707,187,3 dd -4325376,-2490368,-9633792,-9175040,-2424832,192,0 @@ -140,6 +164,7 @@ roofDistrict3D LABEL DWORD dd 9830400,11665408,-5898240,-5439488,-2339635,187,1 dd 9830400,11665408,6881280,7340032,-2293760,193,0 dd 7471104,7929856,9699328,10616832,-2424832,191,2 + dd -10325197,-9633792,2490368,3473408,-2490368,190,5 dd 786432,1835008,11862016,13172736,-1900544,204,0 dd 393216,851968,-11534336,-10616832,-2228224,189,2 dd -11403264,-9568256,-196608,262144,-2490368,187,0 @@ -170,12 +195,14 @@ roofDistrict3D LABEL DWORD dd 11206656,11665408,7340032,8257536,-2274099,193,3 dd -6684672,-4849664,10616832,11075584,-2863923,189,1 dd 7471104,9306112,10616832,11075584,-2405171,191,1 + dd -11337728,-10384179,2490368,3473408,-2686976,189,5 dd 5111808,5570560,-11534336,-10616832,-2424832,187,2 dd -11403264,-9568256,-3538944,-3080192,-3060531,193,1 dd 12189696,14024704,-3538944,-3080192,-2667315,191,1 dd 5111808,5570560,12058624,12976128,-2883584,189,2 dd 393216,2228224,-11993088,-11534336,-2228224,189,0 dd -11403264,-10944512,262144,1179648,-2490368,187,2 + dd -10587341,-9633792,5373952,6291456,-2621440,193,5 dd -1966080,-131072,-11993088,-11534336,-2293760,186,0 dd -11403264,-10944512,-2097152,-1179648,-3145728,186,2 dd 13565952,14024704,-2097152,-1179648,-3060531,192,3 @@ -195,6 +222,7 @@ roofDistrict3D LABEL DWORD dd -10027008,-9568256,7340032,8257536,-2601779,190,3 dd 12189696,12648448,7340032,8257536,-2228224,188,2 dd -6684672,-4849664,11599872,12058624,-2228224,190,0 + dd -11337728,-10646323,5373952,6291456,-2818048,192,5 dd 10223616,11272192,9502720,10813440,-1900544,204,0 dd 5111808,6946816,-11993088,-11534336,-2424832,187,0 dd -11403264,-10944512,-4456448,-3538944,-3080192,193,2 @@ -213,6 +241,7 @@ roofDistrict3D LABEL DWORD dd 9830400,11665408,-9633792,-9175040,-3014656,186,0 dd -9043968,-7208960,10616832,11075584,-2929459,186,1 dd -9043968,-8585216,9699328,10616832,-2949120,186,2 + dd -12946637,-11993088,2424832,3473408,-3014656,189,5 dd -6684672,-6225920,-11534336,-10616832,-3145728,188,2 dd 12189696,14024704,-7274496,-6815744,-2293760,190,0 dd -11403264,-9568256,8257536,8716288,-2601779,190,1 @@ -229,13 +258,16 @@ roofDistrict3D LABEL DWORD dd 12189696,12648448,9699328,10616832,-2621440,189,2 dd -9043968,-7208960,11599872,12058624,-2293760,187,0 dd 9830400,11665408,11599872,12058624,-3080192,187,0 + dd -12815565,-11993088,5373952,6291456,-2555904,192,5 dd 9830400,10289152,-11534336,-10616832,-2621440,193,2 dd -11403264,-9568256,-8257536,-7798784,-2274099,191,1 dd -11403264,-9568256,9240576,9699328,-3014656,191,0 dd 12189696,14024704,9240576,9699328,-2621440,189,0 dd -7667712,-7208960,12058624,12976128,-2274099,187,3 dd 9830400,10289152,12058624,12976128,-3080192,187,2 + dd -13697024,-13005619,2424832,3473408,-2490368,188,5 dd 12582912,13631488,-9371648,-8060928,-2293760,204,0 + dd -13697024,-12874547,5373952,6291456,-2752512,191,5 dd -9043968,-8585216,-11534336,-10616832,-2883584,193,2 dd -11403264,-9568256,-9633792,-9175040,-2293760,191,0 dd -11403264,-9568256,10616832,11075584,-2994995,191,1 @@ -254,9 +286,12 @@ roofDistrict3D LABEL DWORD dd 12189696,12648448,-11534336,-10616832,-2883584,188,2 dd 12189696,14024704,11599872,12058624,-3014656,190,0 dd 12189696,12648448,12058624,12976128,-3014656,190,2 + dd -15174861,-14352384,2424832,3473408,-2949120,188,5 dd -65536,2686976,-17629184,-14483456,-2359296,190,4 dd -17170432,-13762560,-851968,2293760,-2686976,190,4 dd -131072,2752512,15925248,19070976,-2293760,190,4 + dd -15043789,-14352384,5373952,6291456,-2490368,191,5 + dd -16056320,-15233843,2424832,3473408,-3145728,187,5 dd -11403264,-9568256,-11993088,-11534336,-2949120,190,0 dd -11403264,-10944512,-11534336,-10616832,-2949120,190,2 dd 12189696,14024704,-11993088,-11534336,-2883584,188,0 @@ -268,6 +303,8 @@ roofDistrict3D LABEL DWORD dd 16384000,19791872,-5046272,-1900544,-2686976,189,4 dd -3997696,-1769472,15925248,19070976,-2621440,189,4 dd 4390912,6619136,15925248,19070976,-1966080,191,4 + dd -16056320,-15102771,5373952,6291456,-2686976,190,5 + dd -17468621,-16711680,2359296,3473408,-2752512,187,5 dd -8454144,-5701632,-17629184,-14483456,-3014656,188,4 dd 8323072,11075584,-17629184,-14483456,-1703936,192,4 dd -16973824,-13959168,-9240576,-6094848,-2228224,188,4 @@ -276,6 +313,9 @@ roofDistrict3D LABEL DWORD dd 16777216,19398656,7536640,10682368,-2424832,192,4 dd -8519680,-5636096,15925248,19070976,-2949120,188,4 dd 8257536,11141120,15925248,19070976,-1638400,192,4 + dd -17665229,-16711680,5373952,6225920,-3014656,190,5 + dd -18415616,-17527603,2359296,3473408,-2949120,186,5 + dd -18415616,-17724211,5373952,6225920,-2490368,189,5 dd 0,2621440,-21823488,-18677760,-3080192,189,4 dd -12910592,-9633792,-17629184,-14483456,-1441792,187,4 dd 12779520,15007744,-17629184,-14483456,-3276800,193,4 @@ -287,14 +327,18 @@ roofDistrict3D LABEL DWORD dd -12386304,-10158080,15925248,19070976,-3276800,187,4 dd 12713984,15073280,15925248,19070976,-3211264,193,4 dd -196608,2818048,20119552,23265280,-1572864,191,4 + dd -20024525,-19070976,2359296,3473408,-2686976,186,5 dd -4456448,-1310720,-21823488,-18677760,-1507328,188,4 dd 3866624,7143424,-21823488,-18677760,-2752512,190,4 dd -20905984,-18415616,-5046272,-1900544,-1835008,188,4 dd 20905984,23658496,-5046272,-1900544,-2359296,190,4 dd -4063232,-1703936,20119552,23265280,-1900544,190,4 dd 4259840,6750208,20119552,23265280,-3145728,192,4 + dd -19893453,-19070976,5373952,6225920,-2949120,189,5 dd 20447232,21495808,-9175040,-7864320,1966080,200,2 dd 20643840,21299200,-8978432,-8060928,2424832,200,2 + dd -20774912,-20083507,2359296,3473408,-2883584,193,5 + dd -20774912,-19952435,5373952,6225920,-3145728,188,5 dd -8323072,-5832704,-21823488,-18677760,-1835008,187,4 dd 8388608,11010048,-21823488,-18677760,-2424832,191,4 dd -20840448,-18481152,-9240576,-6094848,-2555904,187,4 @@ -303,10 +347,13 @@ roofDistrict3D LABEL DWORD dd 20643840,23920640,7536640,10682368,-2097152,193,4 dd -8585216,-5570560,20119552,23265280,-2228224,189,4 dd 8126464,11272192,20119552,23265280,-2818048,193,4 + dd -22252749,-21430272,2359296,3473408,-2621440,193,5 + dd -22187213,-21430272,5373952,6160384,-2752512,188,5 dd -16777216,-14155776,-17629184,-14483456,-1769472,186,4 dd 16646144,19529728,-17629184,-14483456,-2949120,186,4 dd -16842752,-14090240,15925248,19070976,-1703936,186,4 dd 16580608,19595264,15925248,19070976,-2883584,186,4 + dd -23134208,-22311731,2359296,3473408,-2818048,192,5 dd -12845056,-9699328,-21823488,-18677760,-2162688,186,4 dd 12255232,15532032,-21823488,-18677760,-2097152,192,4 dd -20774912,-18546688,-13434880,-10289152,-3276800,186,4 @@ -315,6 +362,7 @@ roofDistrict3D LABEL DWORD dd 21168128,23396352,11730944,14876672,-3276800,186,4 dd -12451840,-10092544,20119552,23265280,-2555904,188,4 dd 12648448,15138816,20119552,23265280,-2490368,186,4 + dd -23134208,-22246195,5373952,6160384,-2949120,187,5 dd 22740992,23789568,-11468800,-10158080,4325376,201,2 dd 22937600,23592960,-11272192,-10354688,4784128,201,2 dd 131072,2490368,-26017792,-22872064,-1900544,188,4 @@ -326,10 +374,13 @@ roofDistrict3D LABEL DWORD dd 24772608,28180480,-5046272,-1900544,-2031616,191,4 dd -4194304,-1572864,24313856,27459584,-3080192,191,4 dd 4194304,6815744,24313856,27459584,-2424832,193,4 + dd -24546509,-23789568,2555904,3473408,-3145728,192,5 dd 25034752,26083328,-8847360,-7536640,3145728,202,2 dd 25231360,25886720,-8650752,-7733248,3604480,202,2 + dd -24743117,-23789568,5373952,6160384,-2686976,187,5 dd 22085632,23134208,-15400960,-14090240,3604480,202,2 dd 22282240,22937600,-15204352,-14286848,4063232,202,2 + dd -25493504,-24605491,2555904,3473408,-2621440,191,5 dd -8257536,-5898240,-26017792,-22872064,-2555904,186,4 dd 8454144,10944512,-26017792,-22872064,-3145728,190,4 dd -25362432,-22347776,-9240576,-6094848,-2883584,186,4 @@ -346,6 +397,8 @@ roofDistrict3D LABEL DWORD dd 21102592,23461888,15925248,19070976,-2555904,187,4 dd -16973824,-13959168,20119552,23265280,-2883584,187,4 dd 16515072,19660800,20119552,23265280,-2162688,187,4 + dd -25493504,-24802099,5373952,6160384,-2883584,186,5 + dd -27102413,-26148864,2555904,3473408,-3080192,191,5 dd -12779520,-9764864,-26017792,-22872064,-2883584,193,4 dd 12320768,15466496,-26017792,-22872064,-2818048,191,4 dd -25231360,-22478848,-13434880,-10289152,-1703936,193,4 @@ -354,6 +407,9 @@ roofDistrict3D LABEL DWORD dd 25034752,27918336,11730944,14876672,-2949120,187,4 dd -12517376,-10027008,24313856,27459584,-1835008,189,4 dd 12582912,15204352,24313856,27459584,-1769472,187,4 + dd -26971341,-26148864,5373952,6160384,-2621440,186,5 + dd -27852800,-27161395,2555904,3473408,-2555904,190,5 + dd -27852800,-27030323,5373952,6160384,-2818048,193,5 dd 196608,2424832,-30212096,-27066368,-2621440,187,4 dd -29360128,-26738688,-851968,2293760,-1769472,187,4 dd -393216,3014656,28508160,31653888,-2031616,193,4 @@ -377,6 +433,7 @@ roofDistrict3D LABEL DWORD dd 24969216,27983872,15925248,19070976,-2228224,188,4 dd -17039360,-13893632,24313856,27459584,-2162688,188,4 dd 16449536,19726336,24313856,27459584,-1441792,188,4 + dd -29396173,-28508160,2490368,3473408,-2883584,190,5 dd -8192000,-5963776,-30212096,-27066368,-3276800,193,4 dd 8585216,10813440,-30212096,-27066368,-1966080,189,4 dd -29229056,-26869760,-9240576,-6094848,-3211264,193,4 @@ -387,8 +444,11 @@ roofDistrict3D LABEL DWORD dd 8585216,10813440,28508160,31653888,-3276800,187,4 dd 29622272,30670848,-10158080,-8847360,2752512,201,2 dd 29818880,30474240,-9961472,-9043968,3211264,201,2 + dd -29265101,-28508160,5373952,6291456,-3145728,193,5 dd 26017792,27066368,-17694720,-16384000,4718592,200,2 dd 26214400,26869760,-17498112,-16580608,5177344,200,2 + dd -30212096,-29455155,2490368,3473408,-3080192,189,5 + dd -30212096,-29324083,5373952,6291456,-2621440,192,5 dd -12648448,-9895936,-30212096,-27066368,-1703936,192,4 dd 12451840,15335424,-30212096,-27066368,-1638400,190,4 dd -29753344,-26345472,-13434880,-10289152,-2031616,192,4 @@ -760,7 +820,7 @@ roofCityLamps3D LABEL DWORD dd 41025536,5111808 dd 42205184,1769472 dd 42205184,5111808 -ROOF_LANDMARK_PARTS equ 26 +ROOF_LANDMARK_PARTS equ 180 roofLandmarkParts3D LABEL DWORD dd 0,131072,2490368,6619136,8978432,-3932160,-1441792,193 dd 0,524288,2097152,7012352,8585216,-1441792,-1048576,168 @@ -788,6 +848,160 @@ roofLandmarkParts3D LABEL DWORD dd 0,10354688,11141120,327680,1114112,-1703936,-524288,206 dd 0,10485760,11010048,458752,983040,-524288,262144,191 dd 2,10747904,720896,262144,235930,235930,2621440,166 + dd 0,-34078720,4587520,3604480,3932160,-4063232,-3915776,162 + dd 0,-34078720,-2464154,3909222,3932160,-3915776,-3856794,162 + dd 0,-34078720,-2464154,3906601,3934781,-3856794,-3846963,168 + dd 0,-1992294,2254438,3909222,3932160,-3915776,-3856794,162 + dd 0,-1992294,2254438,3906601,3934781,-3856794,-3846963,168 + dd 0,2726298,4587520,3909222,3932160,-3915776,-3856794,162 + dd 0,2726298,4587520,3906601,3934781,-3856794,-3846963,168 + dd 0,-34078720,4587520,4980736,5308416,-4063232,-3915776,162 + dd 0,-34078720,-2464154,4980736,5003674,-3915776,-3856794,162 + dd 0,-34078720,-2464154,4978115,5006295,-3856794,-3846963,168 + dd 0,-1992294,2254438,4980736,5003674,-3915776,-3856794,162 + dd 0,-1992294,2254438,4978115,5006295,-3856794,-3846963,168 + dd 0,2726298,4587520,4980736,5003674,-3915776,-3856794,162 + dd 0,2726298,4587520,4978115,5006295,-3856794,-3846963,168 + dd 0,-12066488,-12050760,3708027,3723756,-3915776,-3722445,162 + dd 1,-12058624,3715891,-3722445,98304,98304,137626,207 + dd 0,-11862016,-11730944,3699507,3732275,-3889562,-3876454,196 + dd 0,-11848909,-11837112,3702784,3728998,-3915776,-3889562,165 + dd 0,-11757158,-11745362,3702784,3728998,-3915776,-3889562,165 + dd 0,-12066488,-12050760,5189140,5204869,-3915776,-3722445,162 + dd 1,-12058624,5197005,-3722445,98304,98304,137626,207 + dd 0,-11862016,-11730944,5180621,5213389,-3889562,-3876454,196 + dd 0,-11848909,-11837112,5183898,5210112,-3915776,-3889562,165 + dd 0,-11757158,-11745362,5183898,5210112,-3915776,-3889562,165 + dd 0,-10886840,-10871112,3708027,3723756,-3915776,-3722445,162 + dd 1,-10878976,3715891,-3722445,98304,98304,137626,207 + dd 0,-10682368,-10551296,3699507,3732275,-3889562,-3876454,196 + dd 0,-10669261,-10657464,3702784,3728998,-3915776,-3889562,165 + dd 0,-10577510,-10565714,3702784,3728998,-3915776,-3889562,165 + dd 0,-10886840,-10871112,5189140,5204869,-3915776,-3722445,162 + dd 1,-10878976,5197005,-3722445,98304,98304,137626,207 + dd 0,-10682368,-10551296,5180621,5213389,-3889562,-3876454,196 + dd 0,-10669261,-10657464,5183898,5210112,-3915776,-3889562,165 + dd 0,-10577510,-10565714,5183898,5210112,-3915776,-3889562,165 + dd 0,-9707192,-9691464,3708027,3723756,-3915776,-3722445,162 + dd 1,-9699328,3715891,-3722445,98304,98304,137626,207 + dd 0,-9502720,-9371648,3699507,3732275,-3889562,-3876454,196 + dd 0,-9489613,-9477816,3702784,3728998,-3915776,-3889562,165 + dd 0,-9397862,-9386066,3702784,3728998,-3915776,-3889562,165 + dd 0,-9707192,-9691464,5189140,5204869,-3915776,-3722445,162 + dd 1,-9699328,5197005,-3722445,98304,98304,137626,207 + dd 0,-9502720,-9371648,5180621,5213389,-3889562,-3876454,196 + dd 0,-9489613,-9477816,5183898,5210112,-3915776,-3889562,165 + dd 0,-9397862,-9386066,5183898,5210112,-3915776,-3889562,165 + dd 0,-8527544,-8511816,3708027,3723756,-3915776,-3722445,162 + dd 1,-8519680,3715891,-3722445,98304,98304,137626,207 + dd 0,-8323072,-8192000,3699507,3732275,-3889562,-3876454,196 + dd 0,-8309965,-8298168,3702784,3728998,-3915776,-3889562,165 + dd 0,-8218214,-8206418,3702784,3728998,-3915776,-3889562,165 + dd 0,-8527544,-8511816,5189140,5204869,-3915776,-3722445,162 + dd 1,-8519680,5197005,-3722445,98304,98304,137626,207 + dd 0,-8323072,-8192000,5180621,5213389,-3889562,-3876454,196 + dd 0,-8309965,-8298168,5183898,5210112,-3915776,-3889562,165 + dd 0,-8218214,-8206418,5183898,5210112,-3915776,-3889562,165 + dd 0,-7347896,-7332168,3708027,3723756,-3915776,-3722445,162 + dd 1,-7340032,3715891,-3722445,98304,98304,137626,207 + dd 0,-7143424,-7012352,3699507,3732275,-3889562,-3876454,196 + dd 0,-7130317,-7118520,3702784,3728998,-3915776,-3889562,165 + dd 0,-7038566,-7026770,3702784,3728998,-3915776,-3889562,165 + dd 0,-7347896,-7332168,5189140,5204869,-3915776,-3722445,162 + dd 1,-7340032,5197005,-3722445,98304,98304,137626,207 + dd 0,-7143424,-7012352,5180621,5213389,-3889562,-3876454,196 + dd 0,-7130317,-7118520,5183898,5210112,-3915776,-3889562,165 + dd 0,-7038566,-7026770,5183898,5210112,-3915776,-3889562,165 + dd 0,-6168248,-6152520,3708027,3723756,-3915776,-3722445,162 + dd 1,-6160384,3715891,-3722445,98304,98304,137626,207 + dd 0,-5963776,-5832704,3699507,3732275,-3889562,-3876454,196 + dd 0,-5950669,-5938872,3702784,3728998,-3915776,-3889562,165 + dd 0,-5858918,-5847122,3702784,3728998,-3915776,-3889562,165 + dd 0,-6168248,-6152520,5189140,5204869,-3915776,-3722445,162 + dd 1,-6160384,5197005,-3722445,98304,98304,137626,207 + dd 0,-5963776,-5832704,5180621,5213389,-3889562,-3876454,196 + dd 0,-5950669,-5938872,5183898,5210112,-3915776,-3889562,165 + dd 0,-5858918,-5847122,5183898,5210112,-3915776,-3889562,165 + dd 0,-4988600,-4972872,3708027,3723756,-3915776,-3722445,162 + dd 1,-4980736,3715891,-3722445,98304,98304,137626,207 + dd 0,-4784128,-4653056,3699507,3732275,-3889562,-3876454,196 + dd 0,-4771021,-4759224,3702784,3728998,-3915776,-3889562,165 + dd 0,-4679270,-4667474,3702784,3728998,-3915776,-3889562,165 + dd 0,-4988600,-4972872,5189140,5204869,-3915776,-3722445,162 + dd 1,-4980736,5197005,-3722445,98304,98304,137626,207 + dd 0,-4784128,-4653056,5180621,5213389,-3889562,-3876454,196 + dd 0,-4771021,-4759224,5183898,5210112,-3915776,-3889562,165 + dd 0,-4679270,-4667474,5183898,5210112,-3915776,-3889562,165 + dd 0,-3808952,-3793224,3708027,3723756,-3915776,-3722445,162 + dd 1,-3801088,3715891,-3722445,98304,98304,137626,207 + dd 0,-3604480,-3473408,3699507,3732275,-3889562,-3876454,196 + dd 0,-3591373,-3579576,3702784,3728998,-3915776,-3889562,165 + dd 0,-3499622,-3487826,3702784,3728998,-3915776,-3889562,165 + dd 0,-3808952,-3793224,5189140,5204869,-3915776,-3722445,162 + dd 1,-3801088,5197005,-3722445,98304,98304,137626,207 + dd 0,-3604480,-3473408,5180621,5213389,-3889562,-3876454,196 + dd 0,-3591373,-3579576,5183898,5210112,-3915776,-3889562,165 + dd 0,-3499622,-3487826,5183898,5210112,-3915776,-3889562,165 + dd 0,-2629304,-2613576,3708027,3723756,-3915776,-3722445,162 + dd 1,-2621440,3715891,-3722445,98304,98304,137626,207 + dd 0,-2424832,-2293760,3699507,3732275,-3889562,-3876454,196 + dd 0,-2411725,-2399928,3702784,3728998,-3915776,-3889562,165 + dd 0,-2319974,-2308178,3702784,3728998,-3915776,-3889562,165 + dd 0,-2629304,-2613576,5189140,5204869,-3915776,-3722445,162 + dd 1,-2621440,5197005,-3722445,98304,98304,137626,207 + dd 0,-2424832,-2293760,5180621,5213389,-3889562,-3876454,196 + dd 0,-2411725,-2399928,5183898,5210112,-3915776,-3889562,165 + dd 0,-2319974,-2308178,5183898,5210112,-3915776,-3889562,165 + dd 0,-1449656,-1433928,3708027,3723756,-3915776,-3722445,162 + dd 1,-1441792,3715891,-3722445,98304,98304,137626,207 + dd 0,-1245184,-1114112,3699507,3732275,-3889562,-3876454,196 + dd 0,-1232077,-1220280,3702784,3728998,-3915776,-3889562,165 + dd 0,-1140326,-1128530,3702784,3728998,-3915776,-3889562,165 + dd 0,-1449656,-1433928,5189140,5204869,-3915776,-3722445,162 + dd 1,-1441792,5197005,-3722445,98304,98304,137626,207 + dd 0,-1245184,-1114112,5180621,5213389,-3889562,-3876454,196 + dd 0,-1232077,-1220280,5183898,5210112,-3915776,-3889562,165 + dd 0,-1140326,-1128530,5183898,5210112,-3915776,-3889562,165 + dd 0,-270008,-254280,3708027,3723756,-3915776,-3722445,162 + dd 1,-262144,3715891,-3722445,98304,98304,137626,207 + dd 0,-65536,65536,3699507,3732275,-3889562,-3876454,196 + dd 0,-52429,-40632,3702784,3728998,-3915776,-3889562,165 + dd 0,39322,51118,3702784,3728998,-3915776,-3889562,165 + dd 0,-270008,-254280,5189140,5204869,-3915776,-3722445,162 + dd 1,-262144,5197005,-3722445,98304,98304,137626,207 + dd 0,-65536,65536,5180621,5213389,-3889562,-3876454,196 + dd 0,-52429,-40632,5183898,5210112,-3915776,-3889562,165 + dd 0,39322,51118,5183898,5210112,-3915776,-3889562,165 + dd 0,909640,925368,3708027,3723756,-3915776,-3722445,162 + dd 1,917504,3715891,-3722445,98304,98304,137626,207 + dd 0,1114112,1245184,3699507,3732275,-3889562,-3876454,196 + dd 0,1127219,1139016,3702784,3728998,-3915776,-3889562,165 + dd 0,1218970,1230766,3702784,3728998,-3915776,-3889562,165 + dd 0,909640,925368,5189140,5204869,-3915776,-3722445,162 + dd 1,917504,5197005,-3722445,98304,98304,137626,207 + dd 0,1114112,1245184,5180621,5213389,-3889562,-3876454,196 + dd 0,1127219,1139016,5183898,5210112,-3915776,-3889562,165 + dd 0,1218970,1230766,5183898,5210112,-3915776,-3889562,165 + dd 0,2089288,2105016,3708027,3723756,-3915776,-3722445,162 + dd 1,2097152,3715891,-3722445,98304,98304,137626,207 + dd 0,2293760,2424832,3699507,3732275,-3889562,-3876454,196 + dd 0,2306867,2318664,3702784,3728998,-3915776,-3889562,165 + dd 0,2398618,2410414,3702784,3728998,-3915776,-3889562,165 + dd 0,2089288,2105016,5189140,5204869,-3915776,-3722445,162 + dd 1,2097152,5197005,-3722445,98304,98304,137626,207 + dd 0,2293760,2424832,5180621,5213389,-3889562,-3876454,196 + dd 0,2306867,2318664,5183898,5210112,-3915776,-3889562,165 + dd 0,2398618,2410414,5183898,5210112,-3915776,-3889562,165 + dd 0,3268936,3284664,3708027,3723756,-3915776,-3722445,162 + dd 1,3276800,3715891,-3722445,98304,98304,137626,207 + dd 0,3473408,3604480,3699507,3732275,-3889562,-3876454,196 + dd 0,3486515,3498312,3702784,3728998,-3915776,-3889562,165 + dd 0,3578266,3590062,3702784,3728998,-3915776,-3889562,165 + dd 0,3268936,3284664,5189140,5204869,-3915776,-3722445,162 + dd 1,3276800,5197005,-3722445,98304,98304,137626,207 + dd 0,3473408,3604480,5180621,5213389,-3889562,-3876454,196 + dd 0,3486515,3498312,5183898,5210112,-3915776,-3889562,165 + dd 0,3578266,3590062,5183898,5210112,-3915776,-3889562,165 roofFog3D db 0,1,1,2,3,4,4,5,6,6,7,8,8,9,10,10,11,11,12,13,13,14,15,15,16,16,17,18,18,19,19,20 db 20,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36 db 37,37,38,38,38,39,39,40,40,41,41,42,42,42,43,43,44,44,44,45,45,46,46,46,47,47,48,48,48,49,49,50 diff --git a/src_graphics/rooftop_gl.inc b/src_graphics/rooftop_gl.inc index f37d6e0..191fc86 100644 --- a/src_graphics/rooftop_gl.inc +++ b/src_graphics/rooftop_gl.inc @@ -173,6 +173,13 @@ roof_gl_list_triangle: mov inside,0 @@: mov currentMat,ebx + ; Mode 2 compiles only tessellated water, with texture state set at playback. + cmp emission,2 + jne roof_gl_list_material + cmp ebx,ROOF_CITY_WATER + jne roof_gl_list_skip + jmp roof_gl_list_begin +roof_gl_list_material: sub ebx,ROOF_DECK mov eax,roofHDDayTextures3D[ebx*4] cmp theme,0 @@ -512,7 +519,7 @@ roof_hd_emission_next: invoke UploadRoofGLSky3D,OFFSET roofNightArt3D,roofHDSkyTextures3D[4] test eax,eax jz roof_hd_init_failed - invoke glGenLists,9 + invoke glGenLists,ROOF_GL_LIST_COUNT test eax,eax jz roof_hd_init_failed mov roofHDLists3D,eax @@ -530,6 +537,9 @@ roof_hd_compile_model: inc model cmp model,3 jb roof_hd_compile_model + mov eax,roofHDLists3D + add eax,ROOF_GL_WATER_LIST + invoke BuildRoofGLList3D,OFFSET roofHDMeshScene3D,0,2,eax invoke FreeRoofMesh3D,OFFSET roofHDMeshScene3D invoke FreeRoofMesh3D,OFFSET roofHDMeshCar3D invoke FreeRoofMesh3D,OFFSET roofHDMeshBoat3D @@ -816,16 +826,9 @@ DrawRoofGLWater3D PROC uses ebx esi @@: invoke glBindTexture,0DE1h,eax invoke glNormal3f,0,3F800000h,0 - invoke glBegin,7 - mov esi,OFFSET roofGLWaterVertices3D - mov ebx,8 -roof_gl_water_vertex: - invoke glTexCoord2f,[esi+12],[esi+16] - invoke glVertex3f,[esi],[esi+4],[esi+8] - add esi,20 - dec ebx - jnz roof_gl_water_vertex - invoke glEnd + mov eax,roofHDLists3D + add eax,ROOF_GL_WATER_LIST + invoke glCallList,eax invoke glMatrixMode,1702h invoke glLoadIdentity invoke glMatrixMode,1700h @@ -925,6 +928,7 @@ roof_hd_render_refresh: invoke glShadeModel,1D01h invoke glEnable,0B60h invoke glFogi,0B65h,801h + invoke glHint,0C54h,roofGLFogHint3D invoke glFogf,0B62h,3B2A64C3h mov eax,OFFSET roofGLFogCurrent3D mov ebx,OFFSET roofGLAmbientDay3D @@ -1041,7 +1045,7 @@ FreeRoofHD3D PROC uses ebx esi edi invoke wglMakeCurrent,roofHDDC3D,roofHDRC3D cmp roofHDLists3D,0 je @F - invoke glDeleteLists,roofHDLists3D,9 + invoke glDeleteLists,roofHDLists3D,ROOF_GL_LIST_COUNT mov roofHDLists3D,0 @@: invoke glDeleteTextures,ROOF_GL_TEXTURES,OFFSET roofHDDayTextures3D diff --git a/src_graphics/rooftop_gl_api.inc b/src_graphics/rooftop_gl_api.inc index edbb5fc..7d10bdf 100644 --- a/src_graphics/rooftop_gl_api.inc +++ b/src_graphics/rooftop_gl_api.inc @@ -37,6 +37,7 @@ glColorMaterial PROTO STDCALL :DWORD,:DWORD glFogfv PROTO STDCALL :DWORD,:DWORD glFogf PROTO STDCALL :DWORD,:DWORD glFogi PROTO STDCALL :DWORD,:DWORD +glHint PROTO STDCALL :DWORD,:DWORD glShadeModel PROTO STDCALL :DWORD glBlendFunc PROTO STDCALL :DWORD,:DWORD glDepthMask PROTO STDCALL :DWORD diff --git a/src_graphics/rooftop_gl_data.inc b/src_graphics/rooftop_gl_data.inc index 5e607ad..890090f 100644 --- a/src_graphics/rooftop_gl_data.inc +++ b/src_graphics/rooftop_gl_data.inc @@ -2,6 +2,8 @@ include src_graphics\rooftop_gl_api.inc ROOF_HD_W equ 1280 ROOF_HD_H equ 960 ROOF_GL_TEXTURES equ 49 +ROOF_GL_LIST_COUNT equ 10 +ROOF_GL_WATER_LIST equ 9 InitRoofHD3D PROTO FreeRoofHD3D PROTO RenderRoofHD3D PROTO @@ -33,6 +35,7 @@ roofHDFBO3D dd 0 roofHDColorTex3D dd 0 roofHDDepth3D dd 0 roofHDLists3D dd 0 +roofGLFogHint3D dd 1102h roofHDSkyTextures3D dd 2 dup(0) roofHDDayTextures3D dd ROOF_GL_TEXTURES dup(0) roofHDNightTextures3D dd ROOF_GL_TEXTURES dup(0) @@ -117,14 +120,6 @@ roofGLFogBlack3D REAL4 0.0,0.0,0.0,1.0 roofGLColorScale3D REAL4 255.0 roofGLWaveDiv3D REAL4 100000.0 roofGLHalf3D REAL4 0.5 -roofGLWaterVertices3D REAL4 -2000.0,-62.0,76.0,-166.666667,6.333333 - REAL4 2000.0,-62.0,76.0,166.666667,6.333333 - REAL4 2000.0,-62.0,60.0,166.666667,5.0 - REAL4 -2000.0,-62.0,60.0,-166.666667,5.0 - REAL4 70.0,-62.0,60.0,5.833333,5.0 - REAL4 2000.0,-62.0,60.0,166.666667,5.0 - REAL4 2000.0,-62.0,29.0,166.666667,2.416667 - REAL4 70.0,-62.0,29.0,5.833333,2.416667 roofGLAmbientDay3D REAL4 0.43,0.43,0.48,1.0 roofGLAmbientNight3D REAL4 0.20,0.23,0.32,1.0 roofGLSunColorDay3D REAL4 0.75,0.57,0.39,1.0 @@ -167,6 +162,8 @@ roofQualityEcoText3D db 202,208,219,216,192,58,32,221,202,206,0 roofQualityHighText3D db 202,208,219,216,192,58,32,196,197,210,192,203,200,0 roofLogPath3D db "runtime\roof-renderer.txt",0 roofLogHeader3D db "Native MASM rooftop renderer",13,10,0 +roofLogTerrain3D db "Terrain path: tiled ground and animated mesh water v2",13,10,0 +roofLogTriangles3D db "City mesh triangles: ",0 roofLogVendor3D db "Vendor: ",0 roofLogRenderer3D db "Renderer: ",0 roofLogVersion3D db "OpenGL: ",0 diff --git a/src_graphics/rooftop_quality.inc b/src_graphics/rooftop_quality.inc index a9a043d..8bf2a79 100644 --- a/src_graphics/rooftop_quality.inc +++ b/src_graphics/rooftop_quality.inc @@ -214,12 +214,18 @@ roof_log_write: WriteRoofLogString3D ENDP WriteRoofRendererInfo3D PROC uses ebx esi + local number[16]:BYTE invoke CreateDirectoryA,OFFSET runtime3D,0 invoke CreateFileA,OFFSET roofLogPath3D,40000000h,1,0,2,80h,0 cmp eax,-1 je roof_log_done mov ebx,eax invoke WriteRoofLogString3D,ebx,OFFSET roofLogHeader3D + invoke WriteRoofLogString3D,ebx,OFFSET roofLogTerrain3D + invoke WriteRoofLogString3D,ebx,OFFSET roofLogTriangles3D + invoke FormatNumber,roofHDMeshScene3D[4],ADDR number + invoke WriteRoofLogString3D,ebx,ADDR number + invoke WriteRoofLogString3D,ebx,OFFSET roofLogNL3D mov esi,0 roof_log_gl_string: mov eax,OFFSET roofLogVendor3D diff --git a/tools/generators/pack_rooftop.py b/tools/generators/pack_rooftop.py index 44d953b..a2013a3 100644 --- a/tools/generators/pack_rooftop.py +++ b/tools/generators/pack_rooftop.py @@ -183,6 +183,12 @@ def main(): lit_windows += count night_city.append(frame) pack("city-night-v1.bin",night_city) + count = pack_city_district() + pack_roof_map() + print(f"Packed roof: sunset/night, {lit_windows} distinct lit window apertures, 32 hand frames, {count} buildings.") + + +def pack_city_district(): # A connected street/courtyard district, not a ring of independent props. blocks = [] lots,parks = [],[] @@ -248,6 +254,19 @@ def main(): y = 6-(i%3)*8 if side < 0 else 106+(i%4)*9 h = 16+(i*7)%24 blocks.append((x-11,x+11,y-10,y+10,-60+h,186+i%8,4)) + # Canal clearance removes water footprints, not entire empty city blocks. + waterfront = [] + for gx in range(-13,2): + x = 20+gx*36 + for bank in (0,1): + key = (gx*19+bank*7)%31 + front,back = (53,39-key%4) if bank == 0 else (82,94+key%3) + y0,y1 = sorted((front,back)) + mid = x-2+key%5 + for index,(x0,x1) in enumerate(((x-13,mid-.45),(mid+.45,x+13))): + top = -60+12+(key+index*3)%11 + waterfront.append((x0,x1,y0,y1,top,186+(gx+bank*3+index)%8,5)) + blocks.extend(waterfront) blocks.sort(key=lambda b:(((b[0]+b[1])/2-20)**2+((b[2]+b[3])/2-11)**2)) # Ground-only baked illumination follows the same real building footprints. elevation = np.zeros((512,512),dtype=np.float32) @@ -328,6 +347,27 @@ def main(): spire(0,(-19,-13,-64,-58,0,9),206) spire(0,(-18,-14,-63,-59,9,15),191) spire(2,(-16,-61,15,1.8,1.8,20),166) + # The same modest quay geometry is consumed by both native renderers. + quays = [] + def quay_piece(kind,coords,mat): + piece = (kind,*[round(v*65536) for v in coords],mat) + pieces.append(piece) + quays.append((kind,*coords,mat)) + for y0,y1 in ((55,60),(76,81)): + quay_piece(0,(-520,70,y0,y1,-62,-59.75),162) + edge = 59.65 if y0 < 60 else 76 + for a,b in ((-520,-37.6),(-30.4,34.4),(41.6,70)): + quay_piece(0,(a,b,edge,edge+.35,-59.75,-58.85),162) + quay_piece(0,(a,b,edge-.04,edge+.39,-58.85,-58.7),168) + for x in range(-184,68,18): + if min(abs(x-b) for b in (-34,38)) < 6: + continue + for y in (56.7,79.3): + quay_piece(0,(x-.12,x+.12,y-.12,y+.12,-59.75,-56.8),162) + quay_piece(1,(x,y,-56.8,1.5,1.5,2.1),207) + quay_piece(0,(x+3,x+5,y-.25,y+.25,-59.35,-59.15),196) + for leg in (x+3.2,x+4.6): + quay_piece(0,(leg,leg+.18,y-.2,y+.2,-59.75,-59.35),165) district += [f"ROOF_LANDMARK_PARTS equ {len(pieces)}","roofLandmarkParts3D LABEL DWORD"] district += [" dd "+",".join(map(str,piece)) for piece in pieces] fog = [min(190,round(d*180/(d+250))) for d in range(1024)] @@ -340,8 +380,13 @@ def main(): "casino":[10.9,29.1,.9,21.1],"street_spacing":36,"street_width":8, "street_level":-60,"canal":[-190,230,60,76],"bridges":[-34,38,110], "east_river":[70,1800,29,76],"river_bridges":[110,254,398], + "waterfront_buildings":waterfront,"canal_quay_parts":quays, "lots":lots,"parks":parks,"lamps":lamps,"towers":towers,"buildings":blocks, "landmarks":{"dome":[20,119],"spire":[164,11]}},indent=2)+"\n",encoding="ascii") + return len(blocks) + + +def pack_roof_map(): # Collision-only enclosure uses a valid legacy prepass material; the final # rooftop pass replaces its tall walls with low world-space railings. roof = [[102]*32 for _ in range(32)] @@ -362,8 +407,13 @@ def main(): "lighting":[512,512,3],"city_renderer":"world-space MASM geometry; sky only is raster", "source":"Built-in image generation; runtime geometry and interaction are assembly-only", "reference":"https://www.loftprojectetagi.ru/visitors/krysha/"},indent=2)+"\n",encoding="ascii") - print(f"Packed roof: sunset/night, {lit_windows} distinct lit window apertures, 32 hand frames, {len(blocks)} buildings.") if __name__ == "__main__": - main() + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("--district-only",action="store_true") + if parser.parse_args().district_only: + print(f"Packed city district: {pack_city_district()} building parts") + else: + main() diff --git a/tools/generators/pack_rooftop_gl.py b/tools/generators/pack_rooftop_gl.py index 2aa9e9e..85c567c 100644 --- a/tools/generators/pack_rooftop_gl.py +++ b/tools/generators/pack_rooftop_gl.py @@ -48,9 +48,23 @@ class Mesh: self.horizontal(x0,x1,y0,y1,z1,roof or material) def horizontal(self,x0,x1,y0,y1,z,material,uv=None): - points = [(x0,y1,z),(x1,y1,z),(x1,y0,z),(x0,y0,z)] uv = uv or [(0,0),(1,0),(1,1),(0,1)] - self.quad(material,list(reversed(points)),list(reversed(uv))) + # Vertex-fog drivers must not interpolate a whole city from distant corners. + def cuts(lo,hi): + if hi-lo <= 64: + return [lo,hi] + candidates = list(range(-512,513,64))+[-96,-32,32,96,-1536,-1024,-768,768,1024,1536] + return [lo,*sorted(v for v in candidates if lo < v < hi),hi] + def texcoord(x,y): + s,t = (x-x0)/(x1-x0),(y1-y)/(y1-y0) + return tuple((1-t)*((1-s)*uv[0][i]+s*uv[1][i])+ + t*((1-s)*uv[3][i]+s*uv[2][i]) for i in range(2)) + xs,ys = cuts(x0,x1),cuts(y0,y1) + for a,b in zip(xs,xs[1:]): + for c,d in zip(ys,ys[1:]): + points = [(a,d,z),(b,d,z),(b,c,z),(a,c,z)] + coords = [texcoord(x,y) for x,y,_ in points] + self.quad(material,list(reversed(points)),list(reversed(coords))) def ellipsoid(self,x,y,z,rx,ry,rz,material,upper=False,rings=10,sides=24): end = math.pi/2 if upper else math.pi @@ -231,7 +245,9 @@ def main(): else: scene.box(*coords,mat) elif kind == 1: - scene.ellipsoid(*coords,mat,upper=True,rings=14,sides=48) + foliage = mat == 207 + scene.ellipsoid(*coords,mat,upper=not foliage, + rings=4 if foliage else 14,sides=8 if foliage else 48) elif kind == 2: x,y,z,rx,ry,h = coords h *= .65 diff --git a/tools/tests/check_hall_expansion.py b/tools/tests/check_hall_expansion.py index 9dd419b..ea6ffa3 100644 --- a/tools/tests/check_hall_expansion.py +++ b/tools/tests/check_hall_expansion.py @@ -185,6 +185,14 @@ def check_rooftop_navigation(): assert city["street_level"] == -60 assert len(city["parks"]) >= 6 and len(city["towers"]) >= 8 assert len(city["buildings"]) > 400 + waterfront = city["waterfront_buildings"] + assert len(waterfront) == 60 + assert all(b in city["buildings"] for b in waterfront) + assert all(b[3] <= 54 or b[2] >= 82 for b in waterfront), "canal must stay open" + for bank in (0,1): + row = [b for b in waterfront if (b[3] < 60) == (bank == 0)] + assert len(row) == 30 and min(b[0] for b in row) < -450 and max(b[1] for b in row) >= 68 + assert len(city["canal_quay_parts"]) > 100 heights = {round(b[4]+60,1) for b in city["buildings"]} assert len(heights) >= 35 and min(heights) <= 6 and max(heights) >= 150 assert len({(round(b[1]-b[0],1),round(b[3]-b[2],1)) for b in city["buildings"]}) >= 15 @@ -393,7 +401,26 @@ def main(): right = Image.open(OUT/"roof-hd-look-right.bmp").convert("RGB") assert left.tobytes() != east.tobytes() != right.tobytes(), "leaning must allow actual head turns" mesh = json.loads((ROOT/"assets/sprites/rooftop/mesh-v1.json").read_text()) - assert mesh["triangles"]["scene"] < 36000, "never-visible static faces must be pruned" + assert mesh["triangles"]["scene"] < 48000, "driver-safe ground must stay within the optimised mesh budget" + assert mesh["removed_invisible_triangles"] > 18000 + packed_mesh = (ROOT/"assets/animations/rooftop/mesh-city-v1.bin").read_bytes() + water_tiles = 0 + for at in range(12,len(packed_mesh),100): + mat,*values = struct.unpack_from(" .99 for v in vertices): + continue + xs,zs = [v[0] for v in vertices],[v[2] for v in vertices] + if max(xs) > -480 and min(xs) < 480 and max(zs) > -480 and min(zs) < 480: + assert max(xs)-min(xs) <= 64.01 and max(zs)-min(zs) <= 64.01, "giant vertex-fog ground polygon" + assert water_tiles >= 80, "animated water must reuse the tessellated scene mesh" + fast_fog = Image.open(OUT/"roof-hd-vertex-fog.bmp").convert("RGB") + nice_fog = Image.open(OUT/"roof-hd-canal-quays.bmp").convert("RGB") + assert max(ImageStat.Stat(ImageChops.difference(fast_fog,nice_fog)).mean) < 20 for profile in ("eco", "auto"): low = Image.open(OUT/f"roof-hd-{profile}.bmp").convert("RGB") difference = ImageStat.Stat(ImageChops.difference(low, east)).mean diff --git a/tools/tests/rooftop_test.inc b/tools/tests/rooftop_test.inc index 0dd9098..17f6a4d 100644 --- a/tools/tests/rooftop_test.inc +++ b/tools/tests/rooftop_test.inc @@ -24,6 +24,10 @@ roofTestHDComposite db "build\hall-expansion\roof-hd-terrace.bmp",0 roofTestHDMotion db "build\hall-expansion\roof-hd-traffic.bmp",0 roofTestHDLeft db "build\hall-expansion\roof-hd-look-left.bmp",0 roofTestHDRight db "build\hall-expansion\roof-hd-look-right.bmp",0 +roofTestHDQuay db "build\hall-expansion\roof-hd-canal-quays.bmp",0 +roofTestHDQuayNight db "build\hall-expansion\roof-hd-canal-night.bmp",0 +roofTestHDFastFog db "build\hall-expansion\roof-hd-vertex-fog.bmp",0 +roofTestHDWest db "build\hall-expansion\roof-hd-west.bmp",0 roofTestHDEco db "build\hall-expansion\roof-hd-eco.bmp",0 roofTestHDAuto db "build\hall-expansion\roof-hd-auto.bmp",0 roofTestSoftware db "build\hall-expansion\roof-software-ground.bmp",0 @@ -172,8 +176,23 @@ roof_test_driver_write: mov roofNight3D,1 invoke RoofTestHDSnapshot,OFFSET roofTestHDNight mov roofNight3D,0 + mov playerX,12*FP_1 + mov playerY,10*FP_1 + mov playerAngle,224 + invoke RoofTestHDSnapshot,OFFSET roofTestHDQuay + mov roofGLFogHint3D,1101h + mov roofHDRenderClock3D,-1 + invoke RoofTestHDSnapshot,OFFSET roofTestHDFastFog + mov roofGLFogHint3D,1102h + mov roofHDRenderClock3D,-1 + mov roofNight3D,1 + invoke RoofTestHDSnapshot,OFFSET roofTestHDQuayNight + mov roofNight3D,0 + mov playerAngle,256 + invoke RoofTestHDSnapshot,OFFSET roofTestHDWest mov playerX,20*FP_1 mov playerY,7*FP_1 + mov playerAngle,128 invoke RoofTestHDSnapshot,OFFSET roofTestHDComposite invoke GetTickCount mov started,eax