RenderRoofCityLamps3D PROC uses ebx esi edi local px:DWORD,py:DWORD,x1:DWORD,y1:DWORD xor esi,esi roof_city_lamp: mov eax,roofCityLamps3D[esi*8] mov px,eax mov edx,roofCityLamps3D[esi*8+4] mov py,edx invoke ProjectCityPoint3D,eax,edx cmp edx,FP_1 jle roof_city_lamp_next cmp edx,180*FP_1 ja roof_city_lamp_next cmp eax,-8 jl roof_city_lamp_next cmp eax,SCREEN_W+8 jg roof_city_lamp_next mov eax,px add eax,FP_1/12 mov x1,eax mov eax,py add eax,FP_1/12 mov y1,eax invoke DrawRoofSolid3D,px,x1,py,y1,ROOF_CITY_STREET_Z,ROOF_CITY_STREET_Z+5*FP_1,ROOF_METAL mov eax,px sub eax,FP_1/5 mov edx,px add edx,FP_1/5 mov ecx,py sub ecx,FP_1/5 mov edi,py add edi,FP_1/5 invoke DrawRoofSolid3D,eax,edx,ecx,edi,ROOF_CITY_STREET_Z+FP_1*49/10,ROOF_CITY_STREET_Z+FP_1*51/10,ROOF_LIGHT roof_city_lamp_next: inc esi cmp esi,ROOF_CITY_LAMP_COUNT jb roof_city_lamp ret RenderRoofCityLamps3D ENDP DrawRoofCar3D PROC uses ebx esi edi centreX:DWORD,centreY:DWORD,axis:DWORD,style:DWORD local x0:DWORD,x1:DWORD,y0:DWORD,y1:DWORD,bodyMat:DWORD,cabinX0:DWORD,cabinX1:DWORD local cabinY0:DWORD,cabinY1:DWORD invoke ProjectCityPoint3D,centreX,centreY cmp edx,FP_1 jle roof_car_done cmp eax,-30 jl roof_car_done cmp eax,SCREEN_W+30 jg roof_car_done mov ebx,FP_1*19/10 mov ecx,FP_1*8/10 cmp axis,0 je @F xchg ebx,ecx @@: mov eax,centreX sub eax,ebx mov x0,eax mov eax,centreX add eax,ebx mov x1,eax mov eax,centreY sub eax,ecx mov y0,eax mov eax,centreY add eax,ecx mov y1,eax mov bodyMat,ROOF_CITY_ROOF test style,1 jz @F mov bodyMat,ROOF_BRASS @@: invoke DrawRoofSolid3D,x0,x1,y0,y1,ROOF_CITY_STREET_Z+FP_1/4,ROOF_CITY_STREET_Z+FP_1*85/100,bodyMat mov ebx,FP_1*9/10 mov ecx,FP_1*65/100 cmp axis,0 je @F xchg ebx,ecx @@: mov eax,centreX sub eax,ebx mov cabinX0,eax mov eax,centreX add eax,ebx mov cabinX1,eax mov eax,centreY sub eax,ecx mov cabinY0,eax mov eax,centreY add eax,ecx mov cabinY1,eax invoke DrawRoofSolid3D,cabinX0,cabinX1,cabinY0,cabinY1,ROOF_CITY_STREET_Z+FP_1*85/100,ROOF_CITY_STREET_Z+FP_1*135/100,ROOF_MODERN_FACADE+1 roof_car_done: ret DrawRoofCar3D ENDP RenderRoofTraffic3D PROC uses ebx esi edi local px:DWORD,py:DWORD,material:DWORD xor esi,esi roof_city_car: mov eax,esi imul eax,17000 add eax,animationClock3D mov ecx,393 mul ecx mov ecx,340*FP_1 div ecx sub edx,160*FP_1 mov px,edx mov py,-FP_1*59/10 test esi,1 jz @F neg edx mov px,edx mov py,-FP_1*81/10 @@: cmp esi,4 jb roof_city_car_x mov eax,px mov py,eax mov px,FP_1*391/10 test esi,1 jz @F mov px,FP_1*369/10 @@: invoke DrawRoofCar3D,px,py,1,esi jmp roof_city_car_next roof_city_car_x: invoke DrawRoofCar3D,px,py,0,esi roof_city_car_next: inc esi cmp esi,8 jb roof_city_car xor esi,esi roof_city_boat: imul eax,esi,47000 add eax,animationClock3D mov ecx,98 mul ecx mov ecx,340*FP_1 div ecx sub edx,160*FP_1 mov px,edx mov py,68*FP_1 invoke DrawRoofEllipsoid3D,px,py,ROOF_CITY_STREET_Z-FP_1*16/10,3*FP_1,FP_1,FP_1/2,ROOF_CITY_ROOF mov eax,px sub eax,FP_1 mov ebx,px add ebx,FP_1 invoke DrawRoofSolid3D,eax,ebx,FP_1*674/10,FP_1*686/10,ROOF_CITY_STREET_Z-FP_1*14/10,ROOF_CITY_STREET_Z-FP_1*7/10,ROOF_PLASTER inc esi cmp esi,3 jb roof_city_boat ret RenderRoofTraffic3D ENDP