trunk/src/mame/drivers/coolridr.c
| r21409 | r21410 | |
| 395 | 395 | UINT16 m_textBytesToWrite; |
| 396 | 396 | INT16 m_blitterSerialCount; |
| 397 | 397 | UINT8 m_blitterMode; |
| 398 | UINT8 m_blittype; |
| 398 | 399 | UINT16 m_blitterAddr; |
| 399 | 400 | UINT16 m_textOffset; |
| 400 | 401 | UINT32 m_blitterClearMode; |
| r21409 | r21410 | |
| 417 | 418 | required_shared_ptr<UINT16> m_soundram2; |
| 418 | 419 | bitmap_rgb32 m_temp_bitmap_sprites[4]; |
| 419 | 420 | bitmap_rgb32 m_temp_bitmap_sprites2[4]; |
| 421 | bitmap_ind16 m_zbuffer_bitmap; |
| 422 | bitmap_ind16 m_zbuffer_bitmap2; |
| 423 | |
| 420 | 424 | bitmap_rgb32 m_screen1_bitmap; |
| 421 | 425 | bitmap_rgb32 m_screen2_bitmap; |
| 422 | 426 | int m_color; |
| r21409 | r21410 | |
| 492 | 496 | { |
| 493 | 497 | machine().primary_screen->register_screen_bitmap(m_temp_bitmap_sprites[0]); |
| 494 | 498 | machine().primary_screen->register_screen_bitmap(m_temp_bitmap_sprites2[0]); |
| 499 | machine().primary_screen->register_screen_bitmap(m_zbuffer_bitmap); |
| 500 | machine().primary_screen->register_screen_bitmap(m_zbuffer_bitmap2); |
| 495 | 501 | |
| 502 | |
| 503 | |
| 504 | |
| 496 | 505 | // testing, not right |
| 497 | 506 | machine().primary_screen->register_screen_bitmap(m_temp_bitmap_sprites[1]); |
| 498 | 507 | machine().primary_screen->register_screen_bitmap(m_temp_bitmap_sprites2[1]); |
| r21409 | r21410 | |
| 631 | 640 | UINT32* indirect_zoom; |
| 632 | 641 | UINT32 spriteblit[12]; |
| 633 | 642 | bitmap_rgb32* drawbitmap; |
| 643 | bitmap_ind16* zbitmap; |
| 644 | UINT16 zpri; |
| 645 | UINT8 blittype; |
| 634 | 646 | coolridr_state* state; |
| 635 | 647 | }; |
| 636 | 648 | |
| r21409 | r21410 | |
| 644 | 656 | const int drawy = pixelOffsetY+y; \ |
| 645 | 657 | if ((drawy>383) || (drawy<0)) continue; \ |
| 646 | 658 | line = &drawbitmap->pix32(drawy); \ |
| 659 | zline = &object->zbitmap->pix16(drawy); \ |
| 647 | 660 | int blockwide = ((16*hZoomTable[realy])/0x40); \ |
| 648 | 661 | UINT32 incx = 0x8000000 / hZoomTable[realy]; \ |
| 649 | 662 | |
| 663 | |
| 664 | |
| 665 | #define YLOOP_START_NO_LINEZOOM \ |
| 666 | for (int y = 0; y < blockhigh; y++) \ |
| 667 | { \ |
| 668 | int realy = ((y*incy)>>21); \ |
| 669 | const int drawy = pixelOffsetY+y; \ |
| 670 | if ((drawy>383) || (drawy<0)) continue; \ |
| 671 | line = &drawbitmap->pix32(drawy); \ |
| 672 | zline = &object->zbitmap->pix16(drawy); \ |
| 673 | |
| 674 | |
| 650 | 675 | #define XLOOP_START \ |
| 651 | 676 | for (int x = 0; x < blockwide; x++) \ |
| 652 | 677 | { \ |
| 653 | 678 | const int drawx = pixelOffsetX+x; \ |
| 654 | | if ((drawx>=495 || drawx<0)) continue; \ |
| 679 | if ((drawx>495 || drawx<0)) continue; \ |
| 655 | 680 | int realx = ((x*incx)>>21); \ |
| 656 | 681 | |
| 657 | 682 | |
| r21409 | r21410 | |
| 663 | 688 | of each rom ... ROM 1 + 2 gives the full palette data for each pixel, in even/odd order. |
| 664 | 689 | TODO: fix anything that isn't text. |
| 665 | 690 | */ |
| 691 | |
| 692 | // because of our copy bitmap any black pens get removed.. obviously this is wrong |
| 693 | |
| 666 | 694 | #define DRAW_PIX \ |
| 667 | | if (pix) \ |
| 695 | if (pix&0x7fff) \ |
| 668 | 696 | { \ |
| 697 | if (object->blittype==0) \ |
| 669 | 698 | { \ |
| 670 | | if (!line[drawx]) \ |
| 699 | if (object->zpri < zline[drawx]) \ |
| 671 | 700 | { \ |
| 672 | | int r,g,b; \ |
| 673 | | r = pal5bit((pix >> 10) & 0x1f); \ |
| 674 | | g = pal5bit((pix >> 5) & 0x1f); \ |
| 675 | | b = pal5bit((pix >> 0) & 0x1f); \ |
| 676 | | line[drawx] = r<<16 | g<<8 | b; \ |
| 701 | { \ |
| 702 | int r,g,b; \ |
| 703 | r = pal5bit((pix >> 10) & 0x1f); \ |
| 704 | g = pal5bit((pix >> 5) & 0x1f); \ |
| 705 | b = pal5bit((pix >> 0) & 0x1f); \ |
| 706 | line[drawx] = r<<16 | g<<8 | b; \ |
| 707 | zline[drawx] = object->zpri; \ |
| 708 | } \ |
| 677 | 709 | } \ |
| 678 | 710 | } \ |
| 711 | else if (object->blittype==1) \ |
| 712 | { \ |
| 713 | if (object->zpri < zline[drawx]) \ |
| 714 | { \ |
| 715 | { \ |
| 716 | int r,g,b; \ |
| 717 | r = pal5bit((pix >> 10) & 0x1f); \ |
| 718 | g = pal5bit((pix >> 5) & 0x1f); \ |
| 719 | b = pal5bit((pix >> 0) & 0x1f); \ |
| 720 | line[drawx] = r<<16 | g<<8 | b; \ |
| 721 | zline[drawx] = object->zpri; \ |
| 722 | } \ |
| 723 | } \ |
| 724 | } \ |
| 725 | if (object->blittype==2) \ |
| 726 | { \ |
| 727 | if (object->zpri < zline[drawx]) \ |
| 728 | { \ |
| 729 | { \ |
| 730 | int r,g,b; \ |
| 731 | r = pal5bit((pix >> 10) & 0x1f); \ |
| 732 | g = pal5bit((pix >> 5) & 0x1f); \ |
| 733 | b = pal5bit((pix >> 0) & 0x1f); \ |
| 734 | line[drawx] = r<<16 | g<<8 | b; \ |
| 735 | zline[drawx] = object->zpri; \ |
| 736 | } \ |
| 737 | } \ |
| 738 | } \ |
| 739 | if (object->blittype==3) \ |
| 740 | { \ |
| 741 | if (object->zpri < zline[drawx]) \ |
| 742 | { \ |
| 743 | { \ |
| 744 | int r,g,b; \ |
| 745 | r = pal5bit((pix >> 10) & 0x1f); \ |
| 746 | g = pal5bit((pix >> 5) & 0x1f); \ |
| 747 | b = pal5bit((pix >> 0) & 0x1f); \ |
| 748 | line[drawx] = r<<16 | g<<8 | b; \ |
| 749 | zline[drawx] = object->zpri; \ |
| 750 | } \ |
| 751 | } \ |
| 752 | } \ |
| 679 | 753 | } \ |
| 680 | 754 | |
| 681 | 755 | |
| r21409 | r21410 | |
| 797 | 871 | /************* object->spriteblit[9] *************/ |
| 798 | 872 | |
| 799 | 873 | int vPosition = (object->spriteblit[9] & 0xffff0000) >> 16; |
| 800 | | int hPosition = (object->spriteblit[9] & 0x0000ffff); |
| 874 | int hPositionx = (object->spriteblit[9] & 0x0000ffff); |
| 801 | 875 | |
| 802 | | if (hPosition & 0x8000) hPosition -= 0x10000; |
| 876 | if (hPositionx & 0x8000) hPositionx -= 0x10000; |
| 803 | 877 | if (vPosition & 0x8000) vPosition -= 0x10000; |
| 804 | 878 | |
| 805 | 879 | /************* object->spriteblit[10] *************/ |
| r21409 | r21410 | |
| 882 | 956 | |
| 883 | 957 | UINT16 hZoomTable[16]; |
| 884 | 958 | int hPositionTable[16]; |
| 959 | int hPosition = 0; |
| 885 | 960 | |
| 886 | | |
| 887 | | for (int idx=0;idx<16;idx++) |
| 961 | if (indirect_zoom_enable) |
| 888 | 962 | { |
| 889 | | |
| 890 | | if (indirect_zoom_enable) |
| 963 | for (int idx=0;idx<16;idx++) |
| 891 | 964 | { |
| 892 | 965 | UINT32 dword = object->indirect_zoom[blit10]; |
| 893 | 966 | |
| r21409 | r21410 | |
| 897 | 970 | int linescroll = dword&0x7fff; |
| 898 | 971 | if (linescroll & 0x4000) linescroll -= 0x8000; |
| 899 | 972 | |
| 900 | | hPositionTable[idx] = linescroll + hPosition; |
| 973 | hPositionTable[idx] = linescroll + hPositionx; |
| 901 | 974 | blit10++; |
| 902 | 975 | |
| 976 | // DON'T use the table hZoom in this calc? (road..) |
| 977 | int sizex = used_hCellCount * 16 * hZoom; |
| 903 | 978 | |
| 979 | hPositionTable[idx] *= 0x40; |
| 980 | |
| 981 | switch (hOrigin & 3) |
| 982 | { |
| 983 | case 0: |
| 984 | // left |
| 985 | break; |
| 986 | case 1: |
| 987 | hPositionTable[idx] -= sizex / 2; |
| 988 | // middle? |
| 989 | break; |
| 990 | case 2: |
| 991 | hPositionTable[idx] -= sizex; |
| 992 | // right? |
| 993 | break; |
| 994 | case 3: |
| 995 | // invalid? |
| 996 | break; |
| 997 | } |
| 904 | 998 | } |
| 905 | | else |
| 906 | | { |
| 907 | | hZoomTable[idx] = hZoom; |
| 908 | | hPositionTable[idx] = hPosition; |
| 909 | | } |
| 999 | } |
| 1000 | else |
| 1001 | { |
| 910 | 1002 | |
| 911 | | // DON'T use the table hZoom in this calc? (road..) |
| 912 | 1003 | int sizex = used_hCellCount * 16 * hZoom; |
| 913 | 1004 | |
| 914 | | hPositionTable[idx] *= 0x40; |
| 1005 | hPosition = hPositionx * 0x40; |
| 915 | 1006 | |
| 916 | 1007 | switch (hOrigin & 3) |
| 917 | 1008 | { |
| r21409 | r21410 | |
| 919 | 1010 | // left |
| 920 | 1011 | break; |
| 921 | 1012 | case 1: |
| 922 | | hPositionTable[idx] -= sizex / 2; |
| 1013 | hPosition -= sizex / 2; |
| 923 | 1014 | // middle? |
| 924 | 1015 | break; |
| 925 | 1016 | case 2: |
| 926 | | hPositionTable[idx] -= sizex; |
| 1017 | hPosition -= sizex; |
| 927 | 1018 | // right? |
| 928 | 1019 | break; |
| 929 | 1020 | case 3: |
| 930 | 1021 | // invalid? |
| 931 | 1022 | break; |
| 932 | 1023 | } |
| 933 | | |
| 934 | 1024 | } |
| 935 | 1025 | |
| 936 | 1026 | |
| 1027 | |
| 937 | 1028 | for (int h = 0; h < used_hCellCount; h++) |
| 938 | 1029 | { |
| 939 | | |
| 1030 | if (!indirect_zoom_enable) |
| 1031 | { |
| 1032 | // int offs = ((hPosition) + (h* 16 * hZoom)) / 0x40; |
| 1033 | // if (offs>495) continue; |
| 1034 | } |
| 940 | 1035 | |
| 941 | | |
| 942 | 1036 | UINT32 lastSpriteNumber = 0xffffffff; |
| 943 | 1037 | |
| 944 | 1038 | int lookupnum; |
| r21409 | r21410 | |
| 1067 | 1161 | |
| 1068 | 1162 | // DEBUG: Draw 16x16 block |
| 1069 | 1163 | UINT32* line; |
| 1164 | UINT16* zline; |
| 1070 | 1165 | |
| 1071 | 1166 | |
| 1072 | | |
| 1073 | | if (blit_rotate) |
| 1167 | if (indirect_zoom_enable) |
| 1074 | 1168 | { |
| 1075 | | if (used_flipy) |
| 1169 | if (blit_rotate) |
| 1076 | 1170 | { |
| 1077 | | YLOOP_START |
| 1171 | if (used_flipy) |
| 1172 | { |
| 1173 | YLOOP_START |
| 1078 | 1174 | |
| 1079 | | if (used_flipx) |
| 1080 | | { |
| 1081 | | XLOOP_START |
| 1175 | if (used_flipx) |
| 1176 | { |
| 1177 | XLOOP_START |
| 1082 | 1178 | |
| 1083 | | UINT16 pix = tempshape[(15-realx)*16+(15-realy)]; |
| 1084 | | DRAW_PIX |
| 1179 | UINT16 pix = tempshape[(15-realx)*16+(15-realy)]; |
| 1180 | DRAW_PIX |
| 1181 | } |
| 1085 | 1182 | } |
| 1183 | else |
| 1184 | { |
| 1185 | XLOOP_START |
| 1186 | |
| 1187 | UINT16 pix = tempshape[(15-realx)*16+realy]; |
| 1188 | DRAW_PIX |
| 1189 | } |
| 1190 | } |
| 1086 | 1191 | } |
| 1087 | | else |
| 1088 | | { |
| 1089 | | XLOOP_START |
| 1192 | } |
| 1193 | else |
| 1194 | { |
| 1195 | YLOOP_START |
| 1090 | 1196 | |
| 1091 | | UINT16 pix = tempshape[(15-realx)*16+realy]; |
| 1092 | | DRAW_PIX |
| 1197 | if (used_flipx) |
| 1198 | { |
| 1199 | XLOOP_START |
| 1200 | |
| 1201 | UINT16 pix = tempshape[realx*16+(15-realy)]; |
| 1202 | DRAW_PIX |
| 1203 | } |
| 1093 | 1204 | } |
| 1205 | else |
| 1206 | { |
| 1207 | XLOOP_START |
| 1208 | |
| 1209 | UINT16 pix = tempshape[realx*16+realy]; |
| 1210 | DRAW_PIX |
| 1211 | } |
| 1212 | } |
| 1094 | 1213 | } |
| 1095 | 1214 | } |
| 1096 | 1215 | } |
| 1097 | | else |
| 1216 | else // no rotate |
| 1098 | 1217 | { |
| 1099 | | YLOOP_START |
| 1218 | if (used_flipy) |
| 1219 | { |
| 1220 | YLOOP_START |
| 1100 | 1221 | |
| 1222 | if (used_flipx) |
| 1223 | { |
| 1224 | XLOOP_START |
| 1101 | 1225 | |
| 1102 | | if (used_flipx) |
| 1103 | | { |
| 1104 | | XLOOP_START |
| 1105 | | |
| 1106 | | UINT16 pix = tempshape[realx*16+(15-realy)]; |
| 1107 | | DRAW_PIX |
| 1226 | UINT16 pix = tempshape[(15-realy)*16+(15-realx)]; |
| 1227 | DRAW_PIX |
| 1228 | } |
| 1108 | 1229 | } |
| 1230 | else |
| 1231 | { |
| 1232 | XLOOP_START |
| 1233 | UINT16 pix = tempshape[(15-realy)*16+realx]; |
| 1234 | DRAW_PIX |
| 1235 | } |
| 1236 | } |
| 1109 | 1237 | } |
| 1110 | | else |
| 1111 | | { |
| 1112 | | XLOOP_START |
| 1238 | } |
| 1239 | else // no rotate, no flipy |
| 1240 | { |
| 1241 | YLOOP_START |
| 1113 | 1242 | |
| 1114 | | UINT16 pix = tempshape[realx*16+realy]; |
| 1115 | | DRAW_PIX |
| 1243 | if (used_flipx) |
| 1244 | { |
| 1245 | XLOOP_START |
| 1246 | |
| 1247 | UINT16 pix = tempshape[realy*16+(15-realx)]; |
| 1248 | DRAW_PIX |
| 1249 | } |
| 1116 | 1250 | } |
| 1251 | else // no rotate, no flipy, no flipx |
| 1252 | { |
| 1253 | XLOOP_START |
| 1254 | |
| 1255 | UINT16 pix = tempshape[realy*16+realx]; |
| 1256 | DRAW_PIX |
| 1257 | } |
| 1258 | } |
| 1117 | 1259 | } |
| 1118 | 1260 | } |
| 1119 | 1261 | } |
| 1120 | 1262 | } |
| 1121 | | else // no rotate |
| 1263 | else // no indirect zoom |
| 1122 | 1264 | { |
| 1123 | | if (used_flipy) |
| 1265 | if (!hZoom) |
| 1124 | 1266 | { |
| 1125 | | YLOOP_START |
| 1267 | // abort, but make sure we clean up |
| 1268 | goto end; |
| 1269 | } |
| 1270 | const int pixelOffsetX = ((hPosition) + (h* 16 * hZoom)) / 0x40; |
| 1271 | int blockwide = ((16*hZoom)/0x40); |
| 1272 | UINT32 incx = 0x8000000 / hZoom; |
| 1126 | 1273 | |
| 1127 | | if (used_flipx) |
| 1128 | | { |
| 1129 | | XLOOP_START |
| 1274 | if (blit_rotate) |
| 1275 | { |
| 1276 | if (used_flipy) |
| 1277 | { |
| 1278 | YLOOP_START_NO_LINEZOOM |
| 1130 | 1279 | |
| 1131 | | UINT16 pix = tempshape[(15-realy)*16+(15-realx)]; |
| 1132 | | DRAW_PIX |
| 1280 | if (used_flipx) |
| 1281 | { |
| 1282 | XLOOP_START |
| 1283 | |
| 1284 | UINT16 pix = tempshape[(15-realx)*16+(15-realy)]; |
| 1285 | DRAW_PIX |
| 1286 | } |
| 1133 | 1287 | } |
| 1288 | else |
| 1289 | { |
| 1290 | XLOOP_START |
| 1291 | |
| 1292 | UINT16 pix = tempshape[(15-realx)*16+realy]; |
| 1293 | DRAW_PIX |
| 1294 | } |
| 1295 | } |
| 1134 | 1296 | } |
| 1135 | | else |
| 1136 | | { |
| 1137 | | XLOOP_START |
| 1138 | | UINT16 pix = tempshape[(15-realy)*16+realx]; |
| 1139 | | DRAW_PIX |
| 1297 | } |
| 1298 | else |
| 1299 | { |
| 1300 | YLOOP_START_NO_LINEZOOM |
| 1301 | |
| 1302 | if (used_flipx) |
| 1303 | { |
| 1304 | XLOOP_START |
| 1305 | |
| 1306 | UINT16 pix = tempshape[realx*16+(15-realy)]; |
| 1307 | DRAW_PIX |
| 1308 | } |
| 1140 | 1309 | } |
| 1310 | else |
| 1311 | { |
| 1312 | XLOOP_START |
| 1313 | |
| 1314 | UINT16 pix = tempshape[realx*16+realy]; |
| 1315 | DRAW_PIX |
| 1316 | } |
| 1317 | } |
| 1141 | 1318 | } |
| 1142 | 1319 | } |
| 1143 | 1320 | } |
| 1144 | | else // no rotate, no flipy |
| 1321 | else // no rotate |
| 1145 | 1322 | { |
| 1146 | | YLOOP_START |
| 1323 | if (used_flipy) |
| 1324 | { |
| 1325 | YLOOP_START_NO_LINEZOOM |
| 1147 | 1326 | |
| 1327 | if (used_flipx) |
| 1328 | { |
| 1329 | XLOOP_START |
| 1148 | 1330 | |
| 1149 | | if (used_flipx) |
| 1150 | | { |
| 1151 | | XLOOP_START |
| 1152 | | |
| 1153 | | UINT16 pix = tempshape[realy*16+(15-realx)]; |
| 1154 | | DRAW_PIX |
| 1331 | UINT16 pix = tempshape[(15-realy)*16+(15-realx)]; |
| 1332 | DRAW_PIX |
| 1333 | } |
| 1155 | 1334 | } |
| 1335 | else |
| 1336 | { |
| 1337 | XLOOP_START |
| 1338 | UINT16 pix = tempshape[(15-realy)*16+realx]; |
| 1339 | DRAW_PIX |
| 1340 | } |
| 1341 | } |
| 1156 | 1342 | } |
| 1157 | | else // no rotate, no flipy, no flipx |
| 1158 | | { |
| 1159 | | XLOOP_START |
| 1343 | } |
| 1344 | else // no rotate, no flipy |
| 1345 | { |
| 1346 | YLOOP_START_NO_LINEZOOM |
| 1160 | 1347 | |
| 1161 | | UINT16 pix = tempshape[realy*16+realx]; |
| 1162 | | DRAW_PIX |
| 1348 | if (used_flipx) |
| 1349 | { |
| 1350 | XLOOP_START |
| 1351 | |
| 1352 | UINT16 pix = tempshape[realy*16+(15-realx)]; |
| 1353 | DRAW_PIX |
| 1354 | } |
| 1163 | 1355 | } |
| 1356 | else // no rotate, no flipy, no flipx |
| 1357 | { |
| 1358 | XLOOP_START |
| 1359 | |
| 1360 | UINT16 pix = tempshape[realy*16+realx]; |
| 1361 | DRAW_PIX |
| 1362 | } |
| 1363 | } |
| 1164 | 1364 | } |
| 1165 | 1365 | } |
| 1166 | 1366 | } |
| 1167 | | } |
| 1367 | } // end no indirect zoom |
| 1168 | 1368 | } |
| 1169 | 1369 | } |
| 1370 | |
| 1170 | 1371 | |
| 1171 | 1372 | |
| 1172 | 1373 | end: |
| r21409 | r21410 | |
| 1333 | 1534 | { |
| 1334 | 1535 | testobject->indirect_zoom = NULL; |
| 1335 | 1536 | } |
| 1537 | |
| 1538 | testobject->zpri = m_blitterAddr; |
| 1539 | testobject->blittype = m_blittype; |
| 1540 | |
| 1336 | 1541 | osd_work_queue *queue; |
| 1337 | 1542 | // which queue, which bitmap |
| 1338 | 1543 | if (m_blitterMode == 0x30 || m_blitterMode == 0x40 || m_blitterMode == 0x50 || m_blitterMode == 0x60) |
| 1339 | 1544 | { |
| 1340 | 1545 | testobject->drawbitmap = &m_temp_bitmap_sprites[0]; |
| 1546 | testobject->zbitmap = &m_zbuffer_bitmap; |
| 1341 | 1547 | queue = m_work_queue[0]; |
| 1342 | 1548 | } |
| 1343 | 1549 | else // 0x90, 0xa0, 0xb0, 0xc0 |
| 1344 | 1550 | { |
| 1345 | 1551 | testobject->drawbitmap = &m_temp_bitmap_sprites2[0]; |
| 1552 | testobject->zbitmap = &m_zbuffer_bitmap2; |
| 1346 | 1553 | queue = m_work_queue[1]; |
| 1347 | 1554 | } |
| 1348 | 1555 | |
| r21409 | r21410 | |
| 1378 | 1585 | // The lower word always seems to be 0x0001 and the upper byte always 0xac. |
| 1379 | 1586 | m_blitterSerialCount = 0; |
| 1380 | 1587 | |
| 1588 | if (m_blitterMode>=0x80) |
| 1589 | m_blittype = m_blitterMode - 0x90; |
| 1590 | else |
| 1591 | m_blittype = m_blitterMode - 0x30; |
| 1592 | |
| 1593 | m_blittype>>=4; |
| 1594 | |
| 1595 | |
| 1381 | 1596 | m_blitterAddr = data & 0x00000fff; |
| 1382 | 1597 | |
| 1383 | 1598 | // maybe it's actually treated like RAM, and blittermode determines the nature of the write (forward inc, backward inc, no inc etc.) |
| r21409 | r21410 | |
| 1448 | 1663 | // use the 11th blit write also as the trigger |
| 1449 | 1664 | if (m_blitterSerialCount == 12) |
| 1450 | 1665 | { |
| 1451 | | blit_current_sprite(space); |
| 1666 | //if (m_blittype==2) |
| 1667 | blit_current_sprite(space); |
| 1452 | 1668 | } |
| 1453 | 1669 | |
| 1454 | 1670 | } |
| r21409 | r21410 | |
| 1540 | 1756 | osd_work_queue_wait(m_work_queue[0], osd_ticks_per_second() * 100); |
| 1541 | 1757 | copybitmap(m_screen1_bitmap, m_temp_bitmap_sprites[i], 0, 0, 0, 0, visarea); |
| 1542 | 1758 | m_temp_bitmap_sprites[i].fill(0, visarea); |
| 1759 | m_zbuffer_bitmap.fill(0xffff, visarea); |
| 1543 | 1760 | } |
| 1544 | 1761 | |
| 1545 | 1762 | if(m_blitterClearMode == 0x8c800000) |
| r21409 | r21410 | |
| 1547 | 1764 | osd_work_queue_wait(m_work_queue[1], osd_ticks_per_second() * 100); |
| 1548 | 1765 | copybitmap(m_screen2_bitmap, m_temp_bitmap_sprites2[i], 0, 0, 0, 0, visarea); |
| 1549 | 1766 | m_temp_bitmap_sprites2[i].fill(0, visarea); |
| 1767 | m_zbuffer_bitmap2.fill(0xffff, visarea); |
| 1550 | 1768 | } |
| 1551 | 1769 | |
| 1552 | 1770 | //printf("frame\n"); |