Previous 199869 Revisions Next

r41727 Saturday 14th November, 2015 at 17:51:37 UTC by Scott Stone
Merge branch 'master' of https://github.com/mamedev/mame
[/trunk]makefile
[scripts]genie.lua
[scripts/src]3rdparty.lua
[src/devices/cpu/dsp56k]dsp56mem.h
[src/devices/cpu/i86]i286.cpp
[src/mame/drivers]namcos23.cpp
[src/mame/includes]chihiro.h
[src/mame/machine]naomim2.cpp xbox.cpp
[src/mame/video]chihiro.cpp

trunk/makefile
r250238r250239
846846vs2015: generate
847847   $(SILENT) $(GENIE) $(PARAMS) vs2015
848848
849vs2015_intel: generate
850   $(SILENT) $(GENIE) $(PARAMS) --vs=intel-15 vs2015
851
852vs2015_xp: generate
853   $(SILENT) $(GENIE) $(PARAMS) --vs=vs2013-xp vs2015
854
855vs2015_clang: generate
856   $(SILENT) $(GENIE) $(PARAMS) --vs=vs2013-clang vs2015
857
858vs2015_winrt: generate
859   $(SILENT) $(GENIE) $(PARAMS) --vs=winstore81 vs2015
860
849861android-arm: generate
850862ifndef ANDROID_NDK_ARM
851863   $(error ANDROID_NDK_ARM is not set)
trunk/scripts/genie.lua
r250238r250239
12541254         "/Qwd1478",          -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated
12551255         "/Qwd1879",          -- warning #1879: unimplemented pragma ignored
12561256         "/Qwd3291",          -- warning #3291: invalid narrowing conversion from "double" to "int"
1257         "/Qwd1195",
1258         "/Qwd1786",
1259         "/Qwd592", -- For lua, false positive?
1257         "/Qwd1195",          -- error #1195: conversion from integer to smaller pointer
1258         "/Qwd47",            -- error #47: incompatible redefinition of macro "xxx"
1259         "/Qwd265",            -- error #265: floating-point operation result is out of range
12601260      }
12611261end
12621262
trunk/scripts/src/3rdparty.lua
r250238r250239
2424         "/wd4127", -- warning C4127: conditional expression is constant
2525         "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
2626      }
27if _OPTIONS["vs"]=="intel-15" then
28      buildoptions {
29         "/Qwd111",           -- remark #111: statement is unreachable
30         "/Qwd1879",          -- warning #1879: unimplemented pragma ignored
31         "/Qwd2557",          -- remark #2557: comparison between signed and unsigned operands
32         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
33      }
34end
2735   configuration { "vs2015" }
2836      buildoptions {
2937         "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
r250238r250239
5664         "/wd4127", -- warning C4127: conditional expression is constant
5765         "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
5866      }
59
67if _OPTIONS["vs"]=="intel-15" then
68      buildoptions {
69         "/Qwd111",           -- remark #111: statement is unreachable
70         "/Qwd280",           -- remark #280: selector expression is constant
71      }
72end
6073   configuration "Debug"
6174      defines {
6275         "verbose=-1",
r250238r250239
106119   includedirs {
107120      MAME_DIR .. "src/osd",
108121   }
109   
122if _OPTIONS["vs"]=="intel-15" then
123      buildoptions {
124         "/Qwd2557",          -- remark #2557: comparison between signed and unsigned operands
125      }
126end   
110127   files {
111128      MAME_DIR .. "3rdparty/softfloat/softfloat.c",
112129      MAME_DIR .. "3rdparty/softfloat/fsincos.c",
r250238r250239
128145         "/wd4127", -- warning C4127: conditional expression is constant
129146         "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
130147      }
148if _OPTIONS["vs"]=="intel-15" then
149      buildoptions {
150         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
151      }
152end   
131153
132154   configuration { }
133155
r250238r250239
201223         "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter   
202224         "/wd4702", -- warning C4702: unreachable code
203225      }
226if _OPTIONS["vs"]=="intel-15" then
227      buildoptions {
228         "/Qwd111",           -- remark #111: statement is unreachable
229         "/Qwd177",           -- remark #177: function "xxx" was declared but never referenced
230         "/Qwd181",           -- remark #181: argument of type "UINT32={unsigned int}" is incompatible with format "%d", expecting argument of type "int"
231         "/Qwd188",           -- error #188: enumerated type mixed with another type
232         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
233      }
234end   
204235
205236   configuration { "vs2015" }
206237      buildoptions {
r250238r250239
269300      buildoptions {
270301         "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
271302      }
303if _OPTIONS["vs"]=="intel-15" then
304      buildoptions {
305         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
306      }
307end
272308   configuration { "vs2015" }
273309      buildoptions {
274310         "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
r250238r250239
326362         "/wd4702", -- warning C4702: unreachable code
327363         "/wd4310", -- warning C4310: cast truncates constant value
328364      }
329
365if _OPTIONS["vs"]=="intel-15" then
366      buildoptions {
367         "/Qwd592", -- error #592: variable "xxx" is used before its value is set
368      }
369end
330370   configuration { }
331371      defines {
332372         "LUA_COMPAT_ALL",
r250238r250239
467507         "/wd4100", -- warning C4100: 'xxx' : unreferenced formal parameter
468508         "/wd4706", -- warning C4706: assignment within conditional expression
469509      }
510if _OPTIONS["vs"]=="intel-15" then
511      buildoptions {
512         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
513         "/Qwd2557",          -- remark #2557: comparison between signed and unsigned operands
514      }
515end
470516
471517   configuration { "vs2015" }
472518      buildoptions {
r250238r250239
521567         "/wd4244", -- warning C4244: 'argument' : conversion from 'xxx' to 'xxx', possible loss of data
522568         "/wd4706", -- warning C4706: assignment within conditional expression
523569      }
570if _OPTIONS["vs"]=="intel-15" then
571      buildoptions {
572         "/Qwd188",           -- error #188: enumerated type mixed with another type
573         "/Qwd344",           -- remark #344: typedef name has already been declared (with same type)
574         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
575         "/Qwd2557",          -- remark #2557: comparison between signed and unsigned operands
576      }
577end
524578
525579   configuration { "vs2015" }
526580      buildoptions {
r250238r250239
595649         "/wd4611", -- warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
596650         "/wd4310", -- warning C4310: cast truncates constant value         
597651      }
598
652if _OPTIONS["vs"]=="intel-15" then
653      buildoptions {
654         "/Qwd906",           -- message #906: effect of this "#pragma pack" directive is local to function "xxx"
655         "/Qwd1879",          -- warning #1879: unimplemented pragma ignored
656         "/Qwd82",            -- remark #82: storage class is not first
657      }
658end
599659   configuration { }
600660
601661   includedirs {     
r250238r250239
714774         "/wd4189", -- warning C4189: 'xxx' : local variable is initialized but not referenced
715775         "/wd4127", -- warning C4127: conditional expression is constant
716776      }
717
777if _OPTIONS["vs"]=="intel-15" then
778      buildoptions {
779         "/Qwd869",           -- remark #869: parameter "xxx" was never referenced
780         "/Qwd1478",          -- warning #1478: function "xxx" (declared at line yyy of "zzz") was declared deprecated
781         "/Qwd2544",          -- message #2544: empty dependent statement in if-statement
782         "/Qwd1879",          -- warning #1879: unimplemented pragma ignored
783      }
784end
718785   configuration { "vs2015" }
719786      buildoptions {
720787         "/wd4456", -- warning C4456: declaration of 'xxx' hides previous local declaration
r250238r250239
856923         "-Wno-unused-variable",
857924      }
858925
926   configuration { "vs*" }
927if _OPTIONS["vs"]=="intel-15" then
928      buildoptions {
929         "/Qwd1195",          -- error #1195: conversion from integer to smaller pointer
930      }
931end
932
859933   configuration { }
860934
861935   includedirs {
trunk/src/devices/cpu/dsp56k/dsp56mem.h
r250238r250239
1313void mem_reset(dsp56k_core* cpustate);
1414
1515// Adjusts the documented address to match the offset in peripheral RAM
16#define A2O(a) (a-0xffc0)
16#define A2O(a) (a - 0xffc0)
1717
1818// Adjusts the offset in peripheral RAM to match the documented address
19#define O2A(a) (a+0xffc0)
19#define O2A(a) (a + 0xffc0)
2020
2121// The memory 'registers'
2222#define PBC      (cpustate->peripheral_ram[A2O(0xffc0)])
trunk/src/devices/cpu/i86/i286.cpp
r250238r250239
12921292                     LOADDESC(0x848, DS);
12931293#undef LOADDESC
12941294                     // void cast supresses warning
1295#define LOADDESC(addr, reg, r) { desc[1] = read_word(addr); desc[2] = read_word(addr+2); desc[0] = read_word(addr+4); \
1295#define LOADDESC(addr, reg, r) { desc[1] = read_word(addr); desc[2] = read_word(addr + 2); desc[0] = read_word(addr + 4); \
12961296reg.base = BASE(desc); (void)(r); reg.limit = LIMIT(desc); }
12971297                     LOADDESC(0x84e, m_gdtr, 1);
12981298                     LOADDESC(0x854, m_ldtr, m_ldtr.rights = RIGHTS(desc));
trunk/src/mame/drivers/namcos23.cpp
r250238r250239
30553055
30563056WRITE16_MEMBER(namcos23_state::mcu_pb_w)
30573057{
3058   m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
3058   m_sub_portb = (m_sub_portb & 0xc0) | (data & 0x3f);
30593059   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
30603060   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
30613061}
trunk/src/mame/includes/chihiro.h
r250238r250239
232232      depthbuffer = NULL;
233233      displayedtarget = NULL;
234234      puller_channel = 0;
235      puller_subchannel = 0;
236235      puller_waiting = 0;
237236      debug_grab_texttype = -1;
238237      debug_grab_textfile = NULL;
239      waitvblank_used = 0;
238      waitvblank_used = 1;
240239      memset(vertex_attribute_words, 0, sizeof(vertex_attribute_words));
241240      memset(vertex_attribute_offset, 0, sizeof(vertex_attribute_offset));
242241   }
r250238r250239
254253   int geforce_commandkind(UINT32 word);
255254   UINT32 geforce_object_offset(UINT32 handle);
256255   void geforce_read_dma_object(UINT32 handle, UINT32 &offset, UINT32 &size);
256   void geforce_assign_object(address_space &space, UINT32 chanel, UINT32 subchannel, UINT32 address);
257257   int geforce_exec_method(address_space &space, UINT32 channel, UINT32 subchannel, UINT32 method, UINT32 address, int &countlen);
258258   UINT32 texture_get_texel(int number, int x, int y);
259   UINT8 *read_pixel(int x, int y, UINT32 c[4]);
259   UINT8 *read_pixel(int x, int y, INT32 c[4]);
260260   void write_pixel(int x, int y, UINT32 color, UINT32 depth);
261261   void combiner_initialize_registers(UINT32 argb8[6]);
262262   void combiner_initialize_stage(int stage_number);
r250238r250239
496496   int vertex_attribute_offset[16];
497497   emu_timer *puller_timer;
498498   int puller_channel;
499   int puller_subchannel;
500499   int puller_waiting;
501500   address_space *puller_space;
502501   UINT32 dilated0[16][2048];
r250238r250239
660659      NV2A_RT_DEPTH_FORMAT_Z16 = 0x0001,
661660      NV2A_RT_DEPTH_FORMAT_Z24S8 = 0x0002
662661   };
663
664662   enum NV2A_COLOR_FORMAT {
665      NV2A_COLOR_FORMAT_X1R5G6B5 = 0x0002,
666      NV2A_COLOR_FORMAT_R5G6B5 = 0x0003,
667      NV2A_COLOR_FORMAT_UNKNOWN4 = 0x0004,
668      NV2A_COLOR_FORMAT_X8R8G8B8 = 0x0005,
669      NV2A_COLOR_FORMAT_X1A7R8G8B8 = 0x0007,
670      NV2A_COLOR_FORMAT_A8R8G8B8 = 0x0008,
671      NV2A_COLOR_FORMAT_B8 = 0x0009,
672      NV2A_COLOR_FORMAT_G8B8 = 0x000a
663      NV2A_COLOR_FORMAT_X1R5G5B5_Z1R5G5B5 = 1,
664      NV2A_COLOR_FORMAT_X1R5G5B5_X1R5G5B5 = 2,
665      NV2A_COLOR_FORMAT_R5G6B5 = 3,
666      NV2A_COLOR_FORMAT_X8R8G8B8_Z8R8G8B8 = 4,
667      NV2A_COLOR_FORMAT_X8R8G8B8_X8R8G8B8 = 5,
668      NV2A_COLOR_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 = 6,
669      NV2A_COLOR_FORMAT_X1A7R8G8B8_X1A7R8G8B8 = 7,
670      NV2A_COLOR_FORMAT_A8R8G8B8 = 8,
671      NV2A_COLOR_FORMAT_B8 = 9,
672      NV2A_COLOR_FORMAT_G8B8 = 10
673673   };
674674};
trunk/src/mame/machine/naomim2.cpp
r250238r250239
1111
1212NAOMI_ROM_OFFSET bit29: ROM size/mapping selection, 0 - 4MB ROM mode, 1 - 8MB ROM mode
1313
14bit28: Bank selection.
15   in the case of flash-based 171-7885A ROM boards two of them can be stacked at once
16   onto main board. each must be configured as Bank 0 or 1 via some (currently unknown) jumper.
17   this bit selects which one ROM board will be accessed.
18
1419note: if ROM is not mounted its area readed as 0xFF
1520
16218MB ROM mode:
r250238r250239
166171void naomi_m2_board::board_write(offs_t offset, UINT16 data)
167172{
168173   if(offset & 0x40000000) {
169      if((offset & 0x0f000000) == 0x02000000) {
174      if(offset & 0x00020000) {
170175         offset &= RAM_SIZE-1;
171176         ram[offset] = data;
172177         ram[offset+1] = data >> 8;
173178         return;
174179      }
175      switch(offset & 0x1fffffff) {
180      switch(offset & 0x1ffff) {
176181      case 0x1fff8: m_cryptdevice->set_addr_low(data); return;
177182      case 0x1fffa: m_cryptdevice->set_addr_high(data);  return;
178183      case 0x1fffc: m_cryptdevice->set_subkey(data); return;
trunk/src/mame/machine/xbox.cpp
r250238r250239
11901190static void hubintiasbridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
11911191{
11921192#ifdef LOG_PCI
1193   if (reg >= 16) device->logerror("  bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
1193   if (reg >= 16) busdevice->logerror("  bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
11941194#endif
11951195}
11961196
r250238r250239
12091209static void dummy_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
12101210{
12111211#ifdef LOG_PCI
1212   if (reg >= 16) device->logerror("  bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
1212   if (reg >= 16) busdevice->logerror("  bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
12131213#endif
12141214}
12151215
trunk/src/mame/video/chihiro.cpp
r250238r250239
12401240   }
12411241}
12421242
1243inline UINT8 *nv2a_renderer::read_pixel(int x, int y, UINT32 c[4])
1243inline UINT8 *nv2a_renderer::read_pixel(int x, int y, INT32 c[4])
12441244{
12451245   UINT32 offset;
12461246   UINT32 color;
r250238r250239
12611261      c[1] = pal6bit((color & 0x07e0) >> 5);
12621262      c[0] = pal5bit(color & 0x1f);
12631263      return (UINT8 *)addr16;
1264   case NV2A_COLOR_FORMAT_UNKNOWN4:
1265   case NV2A_COLOR_FORMAT_X8R8G8B8:
1264   case NV2A_COLOR_FORMAT_X8R8G8B8_Z8R8G8B8:
1265   case NV2A_COLOR_FORMAT_X8R8G8B8_X8R8G8B8:
12661266      addr = (UINT32 *)((UINT8 *)rendertarget + offset);
12671267      color = *addr;
12681268
r250238r250239
12951295   UINT32 *daddr32;
12961296   UINT16 *daddr16;
12971297   UINT32 deptsten;
1298   UINT32 c[4], fb[4], s[4], d[4], cc[4];
1298   INT32 c[4], fb[4], s[4], d[4], cc[4];
12991299   UINT32 dep, sten, stenc, stenv;
13001300   bool stencil_passed;
13011301   bool depth_passed;
r250238r250239
18541854   if (color_mask != 0) {
18551855      UINT32 ct,ft,w;
18561856
1857      ct = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
1858      ft = (fb[3] << 24) | (fb[2] << 16) | (fb[1] << 8) | fb[0];
1857      ct = ((UINT32)c[3] << 24) | ((UINT32)c[2] << 16) | ((UINT32)c[1] << 8) | (UINT32)c[0];
1858      ft = ((UINT32)fb[3] << 24) | ((UINT32)fb[2] << 16) | ((UINT32)fb[1] << 8) | (UINT32)fb[0];
18591859      w = (ft & ~color_mask) | (ct & color_mask);
18601860      switch (colorformat_rendertarget) {
18611861      case NV2A_COLOR_FORMAT_R5G6B5:
18621862         w = ((w >> 8) & 0xf800) + ((w >> 5) & 0x7e0) + ((w >> 3) & 0x1f);
18631863         *((UINT16 *)addr) = (UINT16)w;
18641864         break;
1865      case NV2A_COLOR_FORMAT_UNKNOWN4:
1866      case NV2A_COLOR_FORMAT_X8R8G8B8:
1865      case NV2A_COLOR_FORMAT_X8R8G8B8_Z8R8G8B8:
1866      case NV2A_COLOR_FORMAT_X8R8G8B8_X8R8G8B8:
18671867         *((UINT32 *)addr) = w;
18681868         break;
18691869      case NV2A_COLOR_FORMAT_A8R8G8B8:
r250238r250239
28622862         m = 1;
28632863      // possible buffers: color, depth, stencil
28642864      // clear framebuffer
2865      if (data & 0xf0) {
2865      if ((data & 0xf0) == 0xf0) {
28662866         if (bytespixel_rendertarget == 4) {
28672867            bitmap_rgb32 bm(rendertarget, (limits_rendertarget.right() + 1) * m, (limits_rendertarget.bottom() + 1) * m, pitch_rendertarget / 4);
28682868
r250238r250239
29132913      case NV2A_COLOR_FORMAT_R5G6B5:
29142914         bytespixel_rendertarget = 2;
29152915         break;
2916      case NV2A_COLOR_FORMAT_UNKNOWN4:
2917      case NV2A_COLOR_FORMAT_X8R8G8B8:
2916      case NV2A_COLOR_FORMAT_X8R8G8B8_Z8R8G8B8:
2917      case NV2A_COLOR_FORMAT_X8R8G8B8_X8R8G8B8:
29182918      case NV2A_COLOR_FORMAT_A8R8G8B8:
29192919         bytespixel_rendertarget = 4;
29202920         break;
r250238r250239
40184018   return 0;
40194019}
40204020
4021void nv2a_renderer::geforce_assign_object(address_space & space, UINT32 chanel, UINT32 subchannel, UINT32 address)
4022{
4023   int handle, objclass;
4024
4025   handle = space.read_dword(address);
4026   handle = geforce_object_offset(handle);
4027#ifdef LOG_NV2A
4028   machine().logerror("  assign to subchannel %d object at %d", subch, handle);
4029#endif
4030   channel[chanel][subchannel].object.objhandle = handle;
4031   handle = ramin[handle / 4];
4032   objclass = handle & 0xff;
4033#ifdef LOG_NV2A
4034   machine().logerror(" class %03X\n", objclass);
4035#endif
4036   channel[chanel][subchannel].object.objclass = objclass;
4037}
4038
40214039TIMER_CALLBACK_MEMBER(nv2a_renderer::puller_timer_work)
40224040{
4023   int chanel, subchannel;
4024   int method, count, handle, objclass;
4041   int chanel;
4042   int method, count;
40254043   UINT32 *dmaput, *dmaget;
40264044   UINT32 cmd, cmdtype;
40274045   int countlen;
r250238r250239
40304048   UINT32 subch;
40314049
40324050   chanel = puller_channel;
4033   subchannel = puller_subchannel;
4034   dmaput = &channel[chanel][subchannel].regs[0x40 / 4];
4035   dmaget = &channel[chanel][subchannel].regs[0x44 / 4];
4051   dmaput = &channel[chanel][0].regs[0x40 / 4];
4052   dmaget = &channel[chanel][0].regs[0x44 / 4];
40364053   while (*dmaget != *dmaput) {
40374054      cmd = space->read_dword(*dmaget);
40384055      *dmaget += 4;
r250238r250239
40414058      {
40424059      case 6: // jump
40434060#ifdef LOG_NV2A
4044         printf("jump dmaget %08X", *dmaget);
4061         machine().logerror("jump dmaget %08X", *dmaget);
40454062#endif
40464063         *dmaget = cmd & 0xfffffffc;
40474064#ifdef LOG_NV2A
4048         printf(" -> %08X\n\r", *dmaget);
4065         machine().logerror(" -> %08X\n\r", *dmaget);
40494066#endif
40504067         break;
40514068      case 0: // increasing method
r250238r250239
40534070         subch = (cmd >> 13) & 7;
40544071         count = (cmd >> 18) & 2047;
40554072         if ((method == 0) && (count == 1)) {
4056            handle = space->read_dword(*dmaget);
4057            handle = geforce_object_offset(handle);
4058#ifdef LOG_NV2A
4059            machine().logerror("  assign to subchannel %d object at %d", subch, handle);
4060#endif
4061            channel[chanel][subch].object.objhandle = handle;
4062            handle = ramin[handle / 4];
4063            objclass = handle & 0xff;
4064#ifdef LOG_NV2A
4065            machine().logerror(" class %03X\n", objclass);
4066#endif
4067            channel[chanel][subch].object.objclass = objclass;
4073            geforce_assign_object(*space, chanel, subch, *dmaget);
40684074            *dmaget += 4;
40694075         }
40704076         else {
r250238r250239
40934099         subch = (cmd >> 13) & 7;
40944100         count = (cmd >> 18) & 2047;
40954101         if ((method == 0) && (count == 1)) {
4096            handle = space->read_dword(*dmaget);
4097            handle = geforce_object_offset(handle);
4098#ifdef LOG_NV2A
4099            machine().logerror("  assign to subchannel %d object at %d", subch, handle);
4100#endif
4101            channel[chanel][subch].object.objhandle = handle;
4102            handle = ramin[handle / 4];
4103            objclass = handle & 0xff;
4104#ifdef LOG_NV2A
4105            machine().logerror(" class %03X\n", objclass);
4106#endif
4107            channel[chanel][subch].object.objclass = objclass;
4102            geforce_assign_object(*space, chanel, subch, *dmaget);
41084103            *dmaget += 4;
41094104         }
41104105         else {
r250238r250239
41254120         count = space->read_dword(*dmaget);
41264121         *dmaget += 4;
41274122         if ((method == 0) && (count == 1)) {
4128            handle = space->read_dword(*dmaget);
4129            handle = geforce_object_offset(handle);
4130#ifdef LOG_NV2A
4131            machine().logerror("  assign to subchannel %d object at %d", subch, handle);
4132#endif
4133            channel[chanel][subch].object.objhandle = handle;
4134            handle = ramin[handle / 4];
4135            objclass = handle & 0xff;
4136#ifdef LOG_NV2A
4137            machine().logerror(" class %03X\n", objclass);
4138#endif
4139            channel[chanel][subch].object.objclass = objclass;
4123            geforce_assign_object(*space, chanel, subch, *dmaget);
41404124            *dmaget += 4;
41414125         }
41424126         else {
r250238r250239
42944278      subchannel = (suboffset >> (13 - 2)) & 7;
42954279      suboffset = suboffset & 0x7ff;
42964280      //machine().logerror("NV_2A: write channel[%02X,%d,%04X]=%08X\n",chanel,subchannel,suboffset*4,data & mem_mask);
4281      COMBINE_DATA(&channel[chanel][subchannel].regs[suboffset]);
42974282      if (suboffset >= 0x80 / 4)
42984283         return;
4299      COMBINE_DATA(&channel[chanel][subchannel].regs[suboffset]);
43004284      if ((suboffset == 0x40 / 4) || (suboffset == 0x44 / 4)) { // DMA_PUT or DMA_GET
43014285         UINT32 *dmaput, *dmaget;
43024286
4303         dmaput = &channel[chanel][subchannel].regs[0x40 / 4];
4304         dmaget = &channel[chanel][subchannel].regs[0x44 / 4];
4287         dmaput = &channel[chanel][0].regs[0x40 / 4];
4288         dmaget = &channel[chanel][0].regs[0x44 / 4];
43054289         //printf("dmaget %08X dmaput %08X\n\r",*dmaget,*dmaput);
4306         if ((*dmaput == 0x048cf000) && (*dmaget == 0x07f4d000)) {
4290         if ((*dmaput == 0x048cf000) && (*dmaget == 0x07f4d000)) { // only for outr2
43074291            *dmaget = *dmaput;
43084292            puller_waiting = 0;
43094293            puller_timer->enable(false);
r250238r250239
43124296         if (*dmaget != *dmaput) {
43134297            if (puller_waiting == 0) {
43144298               puller_channel = chanel;
4315               puller_subchannel = subchannel;
43164299               puller_space = &space;
43174300               puller_timer->enable();
43184301               puller_timer->adjust(attotime::zero);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team