/[pcsx2_0.9.7]/trunk/pcsx2/Vif_Codes.cpp
ViewVC logotype

Diff of /trunk/pcsx2/Vif_Codes.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 62 by william, Tue Sep 7 11:08:22 2010 UTC revision 191 by william, Mon Sep 20 05:35:51 2010 UTC
# Line 38  static __fi void vifFlush(int idx) { Line 38  static __fi void vifFlush(int idx) {
38  }  }
39    
40  static __fi void vuExecMicro(int idx, u32 addr) {  static __fi void vuExecMicro(int idx, u32 addr) {
41          VURegs* VU = nVif[idx].VU;          VIFregisters& vifRegs = vifXRegs;
         VIFregisters& vifRegs = VU->GetVifRegs();  
42          int startcycles = 0;          int startcycles = 0;
43          //vifFlush(idx);          //vifFlush(idx);
44    
# Line 423  vifOp(vifCode_Offset) { Line 422  vifOp(vifCode_Offset) {
422          return 0;          return 0;
423  }  }
424    
425  template<int idx> static __fi int _vifCode_STColRow(const u32* data, u32* pmem1, u32* pmem2) {  template<int idx> static __fi int _vifCode_STColRow(const u32* data, u32* pmem2) {
426          vifStruct& vifX = GetVifX;          vifStruct& vifX = GetVifX;
427    
428          int ret = min(4 - vifX.tag.addr, vifX.vifpacketsize);          int ret = min(4 - vifX.tag.addr, vifX.vifpacketsize);
# Line 432  template<int idx> static __fi int _vifCo Line 431  template<int idx> static __fi int _vifCo
431    
432          switch (ret) {          switch (ret) {
433                  case 4:                  case 4:
                         pmem1[12] = data[3];  
434                          pmem2[3]  = data[3];                          pmem2[3]  = data[3];
435                  case 3:                  case 3:
                         pmem1[8]  = data[2];  
436                          pmem2[2]  = data[2];                          pmem2[2]  = data[2];
437                  case 2:                  case 2:
                         pmem1[4]  = data[1];  
438                          pmem2[1]  = data[1];                          pmem2[1]  = data[1];
439                  case 1:                  case 1:
                         pmem1[0]  = data[0];  
440                          pmem2[0]  = data[0];                          pmem2[0]  = data[0];
441                          break;                          break;
442                  jNO_DEFAULT                  jNO_DEFAULT
# Line 462  vifOp(vifCode_STCol) { Line 457  vifOp(vifCode_STCol) {
457                  return 1;                  return 1;
458          }          }
459          pass2 {          pass2 {
460                  u32* cols  = idx ? g_vifmask.Col1 : g_vifmask.Col0;                  return _vifCode_STColRow<idx>(data, &vifX.MaskCol._u32[vifX.tag.addr]);
                 u32* pmem1 = &vifXRegs.c0 + (vifX.tag.addr << 2);  
                 u32* pmem2 = cols                  +  vifX.tag.addr;  
                 return _vifCode_STColRow<idx>(data, pmem1, pmem2);  
461          }          }
462          pass3 { VifCodeLog("STCol"); }          pass3 { VifCodeLog("STCol"); }
463          return 0;          return 0;
# Line 480  vifOp(vifCode_STRow) { Line 472  vifOp(vifCode_STRow) {
472                  return 1;                  return 1;
473          }          }
474          pass2 {          pass2 {
475                  u32* rows  = idx ? g_vifmask.Row1 : g_vifmask.Row0;                  return _vifCode_STColRow<idx>(data, &vifX.MaskRow._u32[vifX.tag.addr]);
                 u32* pmem1 = &vifXRegs.r0 + (vifX.tag.addr << 2);  
                 u32* pmem2 = rows                  +  vifX.tag.addr;  
                 return _vifCode_STColRow<idx>(data, pmem1, pmem2);  
476          }          }
477          pass3 { VifCodeLog("STRow"); }          pass3 { VifCodeLog("STRow"); }
478          return 0;          return 0;
# Line 516  vifOp(vifCode_STMod) { Line 505  vifOp(vifCode_STMod) {
505    
506  vifOp(vifCode_Unpack) {  vifOp(vifCode_Unpack) {
507          pass1 {          pass1 {
508                  if (!idx) vifUnpackSetup<0>(data);                  vifUnpackSetup<idx>(data);
                 else      vifUnpackSetup<1>(data);  
509                  return 1;                  return 1;
510          }          }
511          pass2 { return nVifUnpack(idx, (u8*)data); }          pass2 { return nVifUnpack<idx>((u8*)data); }
512          pass3 { VifCodeLog("Unpack");  }          pass3 { VifCodeLog("Unpack");  }
513          return 0;          return 0;
514  }  }

Legend:
Removed from v.62  
changed lines
  Added in v.191

  ViewVC Help
Powered by ViewVC 1.1.22