Previous 199869 Revisions Next

r40660 Wednesday 9th September, 2015 at 18:50:32 UTC by Samuele Zannoli
chihiro.c/xbox.c: Various updates [Samuele Zannoli]
- support render targets different than rgb32
- support 16 bit depth buffer
- support independent clearing of stencil and depth values
- update rom loading
- add xbox hack to avoid stalling
- set xbox bios 4134 as the one used
[src/mame/drivers]chihiro.c
[src/mame/includes]chihiro.h
[src/mame/machine]xbox.c
[src/mame/video]chihiro.c
[src/mess/drivers]xbox.c

trunk/src/mame/drivers/chihiro.c
r249171r249172
896896      ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
897897
898898#define CHIHIRO_BIOS \
899   ROM_REGION( 0x80000, "bios", 0) \
899   ROM_REGION( 0x100000, "bios", 0) \
900900   ROM_SYSTEM_BIOS( 0, "bios0", "Chihiro Bios" ) \
901901   ROM_LOAD_BIOS( 0,  "chihiro_xbox_bios.bin", 0x000000, 0x80000, CRC(66232714) SHA1(b700b0041af8f84835e45d1d1250247bf7077188) ) \
902902   ROM_REGION( 0x404080, "others", 0) \
trunk/src/mame/includes/chihiro.h
r249171r249172
224224      dilate_rendertarget = 0;
225225      antialiasing_rendertarget = 0;
226226      type_rendertarget = nv2a_renderer::LINEAR;
227      depth_rendertarget = nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8;
228      color_rendertarget = nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8;
227      depthformat_rendertarget = nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8;
228      colorformat_rendertarget = nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8;
229      bytespixel_rendertarget = 4;
230      antialias_control = 0;
229231      rendertarget = NULL;
230232      depthbuffer = NULL;
231233      displayedtarget = NULL;
r249171r249172
254256   void geforce_read_dma_object(UINT32 handle, UINT32 &offset, UINT32 &size);
255257   int geforce_exec_method(address_space &space, UINT32 channel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen);
256258   UINT32 texture_get_texel(int number, int x, int y);
259   UINT8 *read_pixel(int x, int y, UINT32 c[4]);
257260   void write_pixel(int x, int y, UINT32 color, UINT32 depth);
258261   void combiner_initialize_registers(UINT32 argb8[6]);
259262   void combiner_initialize_stage(int stage_number);
r249171r249172
293296   int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit);
294297   int read_vertices_0x1818(address_space & space, vertex_nv *destination, UINT32 address, int limit);
295298   void convert_vertices_poly(vertex_nv *source, vertex_t *destination, int count);
299   void clear_depth_buffer(int what, UINT32 value);
296300   inline UINT8 *direct_access_ptr(offs_t address);
297301   TIMER_CALLBACK_MEMBER(puller_timer_work);
298302
r249171r249172
321325   int dilate_rendertarget;
322326   int antialiasing_rendertarget;
323327   int type_rendertarget;
324   int depth_rendertarget;
325   int color_rendertarget;
328   int depthformat_rendertarget;
329   int colorformat_rendertarget;
330   int bytespixel_rendertarget;
331   UINT32 antialias_control;
326332   UINT32 *rendertarget;
327333   UINT32 *depthbuffer;
328334   UINT32 *displayedtarget;
trunk/src/mame/machine/xbox.c
r249171r249172
14181418   AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(usbctrl_r, usbctrl_w)
14191419   AM_RANGE(0xfe800000, 0xfe85ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
14201420   AM_RANGE(0xfec00000, 0xfec001ff) AM_READWRITE(audio_ac93_r, audio_ac93_w)
1421   AM_RANGE(0xff000000, 0xff07ffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
1421   AM_RANGE(0xff000000, 0xff0fffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
14221422ADDRESS_MAP_END
14231423
14241424ADDRESS_MAP_START(xbox_base_map_io, AS_IO, 32, xbox_base_state)
trunk/src/mame/video/chihiro.c
r249171r249172
12401240   }
12411241}
12421242
1243inline UINT8 *nv2a_renderer::read_pixel(int x, int y, UINT32 c[4])
1244{
1245   UINT32 offset;
1246   UINT32 color;
1247   UINT32 *addr;
1248   UINT16 *addr16;
1249   UINT8 *addr8;
1250
1251   if (type_rendertarget == SWIZZLED)
1252      offset = (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]) * bytespixel_rendertarget;
1253   else // type_rendertarget == LINEAR*/
1254      offset = pitch_rendertarget * y + x * bytespixel_rendertarget;
1255   switch (colorformat_rendertarget) {
1256   case NV2A_COLOR_FORMAT_R5G6B5:
1257      addr16 = (UINT16 *)((UINT8 *)rendertarget + offset);
1258      color = *addr16;
1259      c[3] = 0xff;
1260      c[2] = pal5bit((color & 0xf800) >> 11);
1261      c[1] = pal6bit((color & 0x07e0) >> 5);
1262      c[0] = pal5bit(color & 0x1f);
1263      return (UINT8 *)addr16;
1264   case NV2A_COLOR_FORMAT_X8R8G8B8:
1265      addr = (UINT32 *)((UINT8 *)rendertarget + offset);
1266      color = *addr;
1267
1268      c[3] = 0xff;
1269      c[2] = (color >> 16) & 255;
1270      c[1] = (color >> 8) & 255;
1271      c[0] = color & 255;
1272      return (UINT8 *)addr;
1273   case NV2A_COLOR_FORMAT_A8R8G8B8:
1274      addr = (UINT32 *)((UINT8 *)rendertarget + offset);
1275      color = *addr;
1276      c[3] = color >> 24;
1277      c[2] = (color >> 16) & 255;
1278      c[1] = (color >> 8) & 255;
1279      c[0] = color & 255;
1280      return (UINT8 *)addr;
1281   case NV2A_COLOR_FORMAT_B8:
1282      addr8 = (UINT8 *)rendertarget + offset;
1283      c[0] = *addr8;
1284      c[1] = c[2] = 0;
1285      c[3] = 0xff;
1286      return addr8;
1287   }
1288   return NULL;
1289}
1290
12431291void nv2a_renderer::write_pixel(int x, int y, UINT32 color, UINT32 depth)
12441292{
1245   UINT32 *addr, *daddr;
1246   UINT32 fbcolor, deptsten;
1293   UINT8 *addr;
1294   UINT32 *daddr32;
1295   UINT16 *daddr16;
1296   UINT32 deptsten;
12471297   UINT32 c[4], fb[4], s[4], d[4], cc[4];
12481298   UINT32 dep, sten, stenc, stenv;
12491299   bool stencil_passed;
12501300   bool depth_passed;
12511301
1252   if (type_rendertarget == SWIZZLED)
1253      addr = rendertarget + (dilated0[dilate_rendertarget][x] + dilated1[dilate_rendertarget][y]);
1254   else // type_rendertarget == LINEAR*/
1255      addr = rendertarget + (pitch_rendertarget / 4)*y + x;
1256   fbcolor = 0;
1302   fb[3] = fb[2] = fb[1] = fb[0] = 0;
1303   addr = NULL;
12571304   if (color_mask != 0)
1258      fbcolor = *addr;
1259   daddr=depthbuffer + (pitch_depthbuffer / 4)*y + x;
1260   deptsten = *daddr;
1305      addr = read_pixel(x, y, fb);
1306   if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1307      daddr32 = depthbuffer + (pitch_depthbuffer / 4) * y + x;
1308      deptsten = *daddr32;
1309      dep = deptsten >> 8;
1310      sten = deptsten & 255;
1311      daddr16 = NULL;
1312   }
1313   else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1314      daddr16 = (UINT16 *)depthbuffer + (pitch_depthbuffer / 2) * y + x;
1315      deptsten = *daddr16;
1316      dep = (deptsten << 8) | 0xff;
1317      sten = 0;
1318      daddr32 = NULL;
1319   }
1320   else {
1321      daddr32 = NULL;
1322      daddr16 = NULL;
1323      dep = 0xffffff;
1324      sten = 0;
1325   }
1326   if (depth > 0xffffff)
1327      depth = 0xffffff;
12611328   c[3] = color >> 24;
12621329   c[2] = (color >> 16) & 255;
12631330   c[1] = (color >> 8) & 255;
12641331   c[0] = color & 255;
1265   fb[3] = fbcolor >> 24;
1266   fb[2] = (fbcolor >> 16) & 255;
1267   fb[1] = (fbcolor >> 8) & 255;
1268   fb[0] = fbcolor & 255;
12691332   cc[3] = blend_color >> 24;
12701333   cc[2] = (blend_color >> 16) & 255;
12711334   cc[1] = (blend_color >> 8) & 255;
12721335   cc[0] = blend_color & 255;
1273   dep = deptsten >> 8;
1274   sten = deptsten & 255;
1275   if (depth > 0xffffff)
1276      depth = 0xffffff;
1277   if (depth & 0x80000000)
1278      depth = 0;
12791336   // ownership test and scissor test not done
12801337   // alpha test
12811338   if (alpha_test_enabled) {
r249171r249172
13831440               sten = 255;
13841441            break;
13851442         }
1386         deptsten = (dep << 8) | sten;
1387         *daddr = deptsten;
1443         if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1444            deptsten = (dep << 8) | sten;
1445            *daddr32 = deptsten;
1446         }
1447         else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1448            deptsten = dep >> 8;
1449            *daddr16 = (UINT16)deptsten;
1450         }
13881451         return;
13891452      }
13901453   }
r249171r249172
14581521               sten = 255;
14591522            break;
14601523         }
1461         deptsten = (dep << 8) | sten;
1462         *daddr = deptsten;
1524         if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1525            deptsten = (dep << 8) | sten;
1526            *daddr32 = deptsten;
1527         }
1528         else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1529            deptsten = dep >> 8;
1530            *daddr16 = (UINT16)deptsten;
1531         }
14631532         return;
14641533      }
14651534      switch (stencil_op_zpass) {
r249171r249172
17821851      }
17831852   }
17841853   if (color_mask != 0) {
1785      UINT32 fbcolor_tmp;
1854      UINT32 ct,ft,w;
17861855
1787      fbcolor_tmp = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1788      *addr = (fbcolor & ~color_mask) | (fbcolor_tmp & color_mask);
1856      ct = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1857      ft = (fb[3] << 24) | (fb[2] << 16) | (fb[1] << 8) | fb[0];
1858      w = (ft & ~color_mask) | (ct & color_mask);
1859      switch (colorformat_rendertarget) {
1860      case NV2A_COLOR_FORMAT_R5G6B5:
1861         w = ((w >> 8) & 0xf800) + ((w >> 5) & 0x7e0) + ((w >> 3) & 0x1f);
1862         *((UINT16 *)addr) = (UINT16)w;
1863         break;
1864      case NV2A_COLOR_FORMAT_X8R8G8B8:
1865         *((UINT32 *)addr) = w;
1866         break;
1867      case NV2A_COLOR_FORMAT_A8R8G8B8:
1868         *((UINT32 *)addr) = w;
1869         break;
1870      case NV2A_COLOR_FORMAT_B8:
1871         *addr = (UINT8)w;
1872         break;
1873      }
17891874   }
17901875   if (depth_write_enabled)
17911876      dep = depth;
1792   deptsten = (dep << 8) | sten;
1793   *daddr = deptsten;
1877   if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
1878      deptsten = (dep << 8) | sten;
1879      *daddr32 = deptsten;
1880   }
1881   else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
1882      deptsten = dep >> 8;
1883      *daddr16 = (UINT16)deptsten;
1884   }
17941885}
17951886
17961887void nv2a_renderer::render_color(INT32 scanline, const extent_t &extent, const nvidia_object_data &objectdata, int threadid)
r249171r249172
22382329   }
22392330}
22402331
2332void nv2a_renderer::clear_depth_buffer(int what, UINT32 value)
2333{
2334   int m;
2335
2336   m = antialias_control;
2337   if (antialiasing_rendertarget != 0)
2338      m = 2;
2339   else
2340      m = 1;
2341   if (what == 3) {
2342      if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
2343         UINT32 *p, *pl;
2344         int x, y;
2345
2346         pl = (UINT32 *)depthbuffer;
2347         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2348            p = pl;
2349            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2350               *p = value;
2351               p++;
2352            }
2353            pl = pl + pitch_rendertarget / 4;
2354         }
2355      }
2356      else if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) {
2357         UINT16 *p, *pl;
2358         int x, y;
2359
2360         pl = (UINT16 *)depthbuffer;
2361         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2362            p = pl;
2363            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2364               *p = (UINT16)value;
2365               p++;
2366            }
2367            pl = pl + pitch_rendertarget / 2;
2368         }
2369      }
2370   }
2371   else {
2372      if (depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z24S8) {
2373         UINT32 mask;
2374         UINT32 *p, *pl;
2375         int x, y;
2376
2377         if ((what & 0x03) == 2)
2378            mask = 0x000000ff;
2379         else
2380            mask = 0xffffff00;
2381         value = value & mask;
2382         pl = depthbuffer;
2383         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2384            p = pl;
2385            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2386               *p = (*p & ~mask) | value;
2387               p++;
2388            }
2389            pl = pl + pitch_rendertarget / 4;
2390         }
2391      }
2392      else if ((depthformat_rendertarget == NV2A_RT_DEPTH_FORMAT_Z16) && (what == 1)) {
2393         UINT16 *p, *pl;
2394         int x, y;
2395
2396         pl = (UINT16 *)depthbuffer;
2397         for (y = (limits_rendertarget.bottom() + 1) * m; y != 0; y--) {
2398            p = pl;
2399            for (x = (limits_rendertarget.right() + 1) * m; x != 0; x--) {
2400               *p = (UINT16)value;
2401               p++;
2402            }
2403            pl = pl + pitch_rendertarget / 2;
2404         }
2405      }
2406   }
2407}
2408
22412409int nv2a_renderer::geforce_exec_method(address_space & space, UINT32 chanel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen)
22422410{
22432411   UINT32 maddress;
r249171r249172
23592527            convert_vertices_poly(vert, xy, 4);
23602528            render_polygon<4>(limits_rendertarget, renderspans, 4 + 4 * 2, xy); // 4 rgba, 4 texture units 2 uv
23612529         }
2530         wait();
23622531      }
23632532      else if (type == nv2a_renderer::TRIANGLE_FAN) {
23642533         if ((countlen * mult + indexesleft_count) >= 3) {
r249171r249172
24052574            convert_vertices_poly(vert, xy, 3);
24062575            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
24072576         }
2577         wait();
24082578      }
24092579      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
24102580         if ((countlen * mult + indexesleft_count) >= 3) {
r249171r249172
24322602                  xy[(n + 2) & 3].y = xy[(n + 2) & 3].y + 1.0f;
24332603               render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[((n & 1) + n) & 3], xy[((~n & 1) + n) & 3], xy[(2 + n) & 3]);
24342604            }
2605            wait();
24352606         }
24362607      }
24372608      else {
r249171r249172
25192690            address = address + c * 3;
25202691            render_triangle(limits_rendertarget, renderspans, 4 + 4 * 2, xy[0], xy[1], xy[2]); // 4 rgba, 4 texture units 2 uv
25212692         }
2693         wait();
25222694      }
25232695      else if (type == nv2a_renderer::TRIANGLE_STRIP) {
25242696         vertex_nv vert[4];
r249171r249172
26662838      space.write_dword(base + offset, data);
26672839      countlen--;
26682840   }
2841   if (maddress == 0x1d7c) {
2842      antialias_control = data;
2843      countlen--;
2844   }
26692845   if (maddress == 0x1d98) {
26702846      countlen--;
26712847   }
r249171r249172
26752851   if (maddress == 0x1d94) {
26762852      int m;
26772853
2678      m = channel[chanel][subchannel].object.method[0x1d7c / 4];
2854      m = antialias_control;
26792855      if (antialiasing_rendertarget != 0)
26802856         m = 2;
26812857      else
r249171r249172
26832859      // possible buffers: color, depth, stencil
26842860      // clear framebuffer
26852861      if (data & 0xf0) {
2686         bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4); // why *2 ?
2687         // clear colors
2688         UINT32 color = channel[chanel][subchannel].object.method[0x1d90 / 4];
2689         bm.fill(color);
2862         if (bytespixel_rendertarget == 4) {
2863            bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4);
2864
2865            UINT32 color = channel[chanel][subchannel].object.method[0x1d90 / 4];
2866            bm.fill(color);
2867         }
2868         else if (bytespixel_rendertarget == 2) {
2869            bitmap_ind16 bm((UINT16 *)rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 2);
2870
2871            UINT16 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xffff;
2872
2873            bm.fill(color);
2874         }
2875         else if (bytespixel_rendertarget == 1) {
2876            UINT8 color = channel[chanel][subchannel].object.method[0x1d90 / 4] & 0xff;
2877
2878            memset(rendertarget, color, pitch_rendertarget*(limits_rendertarget.bottom() + 1) * m);
2879         }
26902880#ifdef LOG_NV2A
26912881         printf("clearscreen\n\r");
26922882#endif
26932883      }
2694      if ((data & 0x03) == 3) {
2695         bitmap_rgb32 bm(depthbuffer, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4); // why *2 ?
2696         // clear zbuffer and stencil
2697         UINT32 depth_stencil = channel[chanel][subchannel].object.method[0x1d8c / 4];
2698         bm.fill(depth_stencil);
2699      }
2700      else if (((data & 0x03) == 1) || ((data & 0x03) == 2))
2701         logerror("Unsupported clear method parameter %d\n\r", data & 0x03);
2884      clear_depth_buffer(data & 3, channel[chanel][subchannel].object.method[0x1d8c / 4]);
27022885      countlen--;
27032886   }
27042887   if (maddress == 0x0200) {
r249171r249172
27202903      log2width_rendertarget = (data >> 16) & 255;
27212904      antialiasing_rendertarget = (data >> 12) & 15;
27222905      type_rendertarget = (data >> 8) & 15;
2723      depth_rendertarget = (data >> 4) & 15;
2724      color_rendertarget = (data >> 0) & 15;;
2906      depthformat_rendertarget = (data >> 4) & 15;
2907      colorformat_rendertarget = (data >> 0) & 15;
2908      switch (colorformat_rendertarget) {
2909      case NV2A_COLOR_FORMAT_R5G6B5:
2910         bytespixel_rendertarget = 2;
2911         break;
2912      case NV2A_COLOR_FORMAT_X8R8G8B8:
2913      case NV2A_COLOR_FORMAT_A8R8G8B8:
2914         bytespixel_rendertarget = 4;
2915         break;
2916      case NV2A_COLOR_FORMAT_B8:
2917         bytespixel_rendertarget = 1;
2918         break;
2919      default:
2920#ifdef LOG_NV2A
2921         printf("Unknown render target color format %d\n\r", colorformat_rendertarget);
2922#endif
2923         bytespixel_rendertarget = 4;
2924         break;
2925      }
27252926      dilate_rendertarget = dilatechose[(log2width_rendertarget << 4) + log2height_rendertarget];
27262927   }
27272928   if (maddress == 0x020c) {
trunk/src/mess/drivers/xbox.c
r249171r249172
122122
123123void xbox_state::hack_eeprom()
124124{
125   // 8003b744,3b744=0x90 0x90
126   /*m_maincpu->space(0).write_byte(0x3b744, 0x90);
127   m_maincpu->space(0).write_byte(0x3b745, 0x90);
128   m_maincpu->space(0).write_byte(0x3b766, 0xc9);
129   m_maincpu->space(0).write_byte(0x3b767, 0xc3);*/
125   // 8004e5da,4e5da=0xc3
126   m_maincpu->space(0).write_byte(0x4e5da, 0xc3);
130127}
131128
132129/*static const struct {
r249171r249172
196193***************************************************************************/
197194
198195ROM_START( xbox )
199   ROM_REGION( 0x200, "mcpx", 0 )
196   ROM_REGION( 0x400, "mcpx", 0 )
197   // mcpx_1_0.bin is bad, first byte (0x7f) sould be removed and a byte with value 0xee added at the end
200198   ROM_LOAD( "mcpx_1_0.bin", 0, 0x200, CRC(f31429fc) SHA1(a9ecbf8896d10db81594923e485862aa3aac7b58) )
201   ROM_LOAD( "mcpx_1_1.bin", 0, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
199   ROM_LOAD( "mcpx_1_1.bin", 0x200, 0x200, CRC(94ce376b) SHA1(6c875f17f773aaec51eb434068bb6c657c4343c0) )
202200
203   ROM_REGION( 0x80000, "bios", 0)
204   ROM_LOAD( "xbox-5530.bin", 0x000000, 0x040000, CRC(9569c4d3) SHA1(40fa73277013be3168135e1768b09623a987ff63) )
205   ROM_LOAD( "xbox-5713.bin", 0x040000, 0x040000, CRC(58fd8173) SHA1(8b7ccc4648ccd78cdb7b65cfca09621eaf2d4238) )
206   ROM_COPY( "mcpx", 0, 0x7fe00, 0x200 )
201   ROM_REGION( 0x100000, "bios", 0)
202   ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
203   ROM_COPY( "mcpx", 1, 0x7fe00, 0x1ff)
207204
208205
209206   ROM_REGION( 0x1000000, "tbp", 0 ) // To Be Processed, of course
210207   ROM_LOAD( "3944_1024k.bin", 0x000000, 0x100000, CRC(32a9ecb6) SHA1(67054fc88bda94e33e86f1b19be60efec0724fb6) )
211208   ROM_LOAD( "4034_1024k.bin", 0x000000, 0x100000, CRC(0d6fc88f) SHA1(ab676b712204fb1728bf89f9cd541a8f5a64ab97) )
212   ROM_LOAD( "4134_1024k.bin", 0x000000, 0x100000, CRC(49d8055a) SHA1(d46cef771a63dc8024fe36d7ab5b959087ac999f) )
213209   ROM_LOAD( "4817_1024k.bin", 0x000000, 0x100000, CRC(3f30863a) SHA1(dc955bd4d3ca71e01214a49e5d0aba615270c03c) )
214210   ROM_LOAD( "5101_256k.bin", 0x000000, 0x040000, CRC(e8a9224e) SHA1(5108e1025f48071c07a6823661d708c66dee97a9) )
211   ROM_LOAD( "xbox-5530.bin", 0x000000, 0x040000, CRC(9569c4d3) SHA1(40fa73277013be3168135e1768b09623a987ff63) )
212   ROM_LOAD( "xbox-5713.bin", 0x040000, 0x040000, CRC(58fd8173) SHA1(8b7ccc4648ccd78cdb7b65cfca09621eaf2d4238) )
215213   ROM_LOAD( "5838_256k.bin", 0x000000, 0x040000, CRC(5be2413d) SHA1(b9489e883c650b5e5fe2f83a32237dbf74f0e9f1) )
216214ROM_END
217215// See src/emu/gamedrv.h for details


Previous 199869 Revisions Next


© 1997-2024 The MAME Team