예제 #1
0
INLINE void _psxRcntWcount( u32 index, u32 value )
{
    if( value > 0xffff )
    {
#ifdef DEBUG_BIOS
        dbgf("[RCNT %i] wcount > 0xffff: %x\n", index, value );
#endif
        value &= 0xffff;
    }

    rcnts[index].cycleStart  = psxRegs.cycle;
    rcnts[index].cycleStart -= value * rcnts[index].rate;

    // TODO: <=.
    if( value < rcnts[index].target )
    {
        rcnts[index].cycle = rcnts[index].target * rcnts[index].rate;
        rcnts[index].counterState = CountToTarget;
    }
    else
    {
        rcnts[index].cycle = 0xffff * rcnts[index].rate;
        rcnts[index].counterState = CountToOverflow;
    }
}
예제 #2
0
파일: d3d.cpp 프로젝트: SummersReign/SoftTH
HRESULT IDirect3DDevice9New::CreateIndexBuffer(UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer9** ppIndexBuffer,HANDLE* pSharedHandle) 
{
  dbgf("dev: CreateIndexBuffer %s %s", getUsage(Usage), getPool(Pool));

  if(config.debug.compatibleIB)
  {
    // Compatible index buffer mode - do not use emulated IB, set dynamic memory instead
    if(Pool == D3DPOOL_MANAGED)
    {
      ONCE dbg("DEBUG: using compatible index buffers (manage-emulation disabled)");
      Pool = D3DPOOL_DEFAULT;
      Usage |= D3DUSAGE_DYNAMIC;
    }
    return dev->CreateIndexBuffer(Length, Usage, Format, Pool, ppIndexBuffer, pSharedHandle);
  }

#if USE_D3DEX || MANAGE_DEBUG_IB
  /*if(Pool == D3DPOOL_MANAGED && Usage == D3DUSAGE_WRITEONLY)
    Pool = D3DPOOL_DEFAULT; // No need for manage-emulation for writeonly buffers, just set pool to default*/

  if(Pool == D3DPOOL_MANAGED)
  {
    *ppIndexBuffer = new IDirect3DIndexBuffer9Managed((IDirect3DDevice9Ex*)dev, this, Length, Usage, Format, Pool, pSharedHandle);
    // TODO: check for failure
    return D3D_OK;
  }
#endif
  return dev->CreateIndexBuffer(Length, Usage, Format, Pool, ppIndexBuffer, pSharedHandle);
}
예제 #3
0
파일: d3d.cpp 프로젝트: SummersReign/SoftTH
HRESULT IDirect3DDevice9New::GetDirect3D(IDirect3D9** ppD3D9)
{
  dbgf("dev: GetDirect3D");
  *ppD3D9 = d3d;
  d3d->AddRef();
  return D3D_OK;
}
예제 #4
0
파일: d3d.cpp 프로젝트: SummersReign/SoftTH
IDirect3DBaseTexture9* IDirect3DDevice9New::OriginalFromNewTexture(IDirect3DBaseTexture9* tex)
{
  if(!tex)
    return tex;

  dbgf("IDirect3DDevice9New::OriginalFromNewTexture: 0x%08X (0x%08X)", tex, *tex);

  void* nilIF;
  // Manage-emulated texture?
  if(tex->QueryInterface(IID_IDirect3DTexture9Managed, &nilIF) == S_OK) {
    tex->Release();
    return ((IDirect3DTexture9Managed*) tex)->GetRealTexture();
  }
  // Manage-emulated volume texture?
  if(tex->QueryInterface(IID_IDirect3DVolumeTexture9Managed, &nilIF) == S_OK) {
    tex->Release();
    return ((IDirect3DVolumeTexture9Managed*) tex)->GetRealTexture();
  }
  // Overridden texture?
  if(tex->QueryInterface(IID_IDirect3DTexture9New, &nilIF) == S_OK) {
    tex->Release();
    return ((IDirect3DTexture9New*) tex)->GetRealTexture();
  }
  return tex;
}
예제 #5
0
파일: dbTest.c 프로젝트: ukaea/epics
long dbpf(const char *pname,const char *pvalue)
{
    DBADDR addr;
    long status;
    short dbrType;
    size_t n = 1;

    if (!pname || !*pname || !pvalue) {
        printf("Usage: dbpf \"pv name\", \"value\"\n");
        return 1;
    }

    if (nameToAddr(pname, &addr))
        return -1;

    if (addr.no_elements > 1 &&
        (addr.dbr_field_type == DBR_CHAR || addr.dbr_field_type == DBR_UCHAR)) {
        dbrType = addr.dbr_field_type;
        n = strlen(pvalue) + 1;
    }
    else {
        dbrType = DBR_STRING;
    }

    status = dbPutField(&addr, dbrType, pvalue, (long) n);
    dbgf(pname);
    return status;
}
예제 #6
0
static PyObject *
ZenEditor_replace_content(ZenEditor *self, PyObject *args)
{
	PyObject *result;
	gint sel_start = -1, sel_end = -1, ph_pos;
	gchar *text, *ph, *tmp, *tmp2;
	ScintillaObject *sci;

	print_called();
	py_return_none_if_null(sci = ZenEditor_get_scintilla(self));

	if (PyArg_ParseTuple(args, "s|ii", &text, &sel_start, &sel_end))
	{
		tmp = ZenEditor_replace_caret_placeholder(self->caret_placeholder, text, &ph_pos);
		tmp2 = ZenEditor_replace_range(tmp);
		g_free(tmp);

		if (sel_start == -1 && sel_end == -1)
		{
			/* replace whole editor content */
			sci_set_text(sci, tmp2);
		}
		else if (sel_start != -1 && sel_end == -1)
		{
			/* insert text at sel_start */
			sci_insert_text(sci, sel_start, tmp2);
		}
		else if (sel_start != -1 && sel_end != -1)
		{
			/* replace from sel_start to sel_end */
			sci_set_selection_start(sci, sel_start);
			sci_set_selection_end(sci, sel_end);
			sci_replace_sel(sci, tmp2);
		}
		else
		{
			dbgf("Invalid arguments were supplied.");
			g_free(tmp2);
			Py_RETURN_NONE;
		}

		g_free(tmp2);

		/* Move cursor to first placeholder position, if found */
		if (ph_pos > -1)
			sci_set_current_position(sci, sel_start + ph_pos, TRUE);

	}
	else
	{
		if (PyErr_Occurred())
		{
			PyErr_Print();
			PyErr_Clear();
		}
	}

	Py_RETURN_NONE;
}
예제 #7
0
static void dumplist (void)
{
    shmpiece *x = shm_start;
#ifdef DEBUG_MEMORY
    dbgf ("Start Dump:\n");
#endif
    while (x) {
#ifdef DEBUG_MEMORY
	dbgf ("  this=%p, Native %p, id %d, prev=%p, next=%p, size=0x%08x\n",
		x, x->native_address, x->id, x->prev, x->next, x->size);
#endif
	x = x->next;
    }
#ifdef DEBUG_MEMORY
    dbgf ("End Dump:\n");
#endif
}
예제 #8
0
uae_u32 REGPARAM2 dummy_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("dummy_bget 0x%X\n",addr);
#endif
    special_mem |= S_READ;
    return 0xFF;
}
예제 #9
0
void *_debugRealloc(void *memoryParameter, uint32_t length, int32_t tag)
{
	
	unsigned char *memory;
	struct chunkHeader *chunkHeader=NULL;
	struct chunkTrailer *chunkTrailer;
	unsigned char *result;
	uint32_t copyLength;

	if (memoryParameter) { /* if memoryParameter==NULL, realloc() should work like malloc() !! */
		memory = memoryParameter;
		chunkHeader = (struct chunkHeader *)(memory - sizeof(struct chunkHeader));

		if (chunkHeader->magicNumber != MAGIC_NUMBER)
		{
			dbgf( DBGL_SYS, DBGT_ERR, 
			     "invalid magic number in header: %08x, malloc tag = %d", 
			     chunkHeader->magicNumber, chunkHeader->tag );
			cleanup_all( -500078 );
		}

		chunkTrailer = (struct chunkTrailer *)(memory + chunkHeader->length);

		if (chunkTrailer->magicNumber != MAGIC_NUMBER)
		{
			dbgf( DBGL_SYS, DBGT_ERR, 
			     "invalid magic number in trailer: %08x, malloc tag = %d", 
			     chunkTrailer->magicNumber, chunkHeader->tag );
			cleanup_all( -500079 );
		}
	}


	result = _debugMalloc(length, tag);
	if (memoryParameter) {
		copyLength = length;

		if (copyLength > chunkHeader->length)
			copyLength = chunkHeader->length;

		memcpy(result, memoryParameter, copyLength);
		debugFree(memoryParameter, -300280);
	}

	return result;
}
예제 #10
0
void __lbDbgAssertExit(struct dbgModule *dbg, const char *assertion,
                       const char *filename, unsigned int line,
                       const char *function) {
    dbgf(dbg, DBGERR, "%s (%s:%u): Assertion '%s' failed",
         function, filename, line, assertion);

    lbdFatalShutdown();
}
예제 #11
0
u32 psxRcntRtarget( u32 index )
{
#ifdef DEBUG_BIOS
    dbgf("[RCNT %i] rtarget: %x\n", index, rcnts[index].target );
#endif

    return rcnts[index].target;
}
예제 #12
0
IDirect3DVertexBuffer9* IDirect3DVertexBuffer9Managed::GetRealBuffer()
{
  dbgf("IDirect3DVertexBuffer9Managed 0x%08X: GetRealBuffer", this);

  if(locks)
    dbg("WARNING: IDirect3DVertexBuffer9Managed 0x%08X: GetRealBuffer() with %d active locks", locks);

  if(lockSections.size() || fullDirty)
  {
#ifdef ALWAYS_FULL_UPDATE
    fullDirty = true;
#endif

    //dbg("IDirect3DVertexBuffer9Managed 0x%08X: UPDATE");
    if(!fullDirty)
    {
      // Partial buffer lock
      for(int i=0;i<lockSections.size();i++)
      {
        DWORD lockOffset = lockSections[i].lockOffset;
        DWORD lockSize = lockSections[i].lockSize;

#ifdef RECREATE_ON_REUSE
        const DWORD flags = NULL;
#else
        // Improves performance - but isn't safe and not allowed by D3D spec
        const DWORD flags = D3DLOCK_NOOVERWRITE;
#endif

        // Copy sysmem to vidmem
        void *vb;
        if(buf->Lock(lockOffset, lockSize, &vb, flags) != D3D_OK) {
          dbg("IDirect3DVertexBuffer9Managed: Unlock: Lock failed!");
          return buf;
        }
        memcpy(vb, bufSys+lockOffset, lockSize?lockSize:bufSize);
        buf->Unlock();
      }
    }
    else
    {
      // Full buffer lock
      // Copy sysmem to vidmem
      void *vb;
      if(buf->Lock(0, 0, &vb, FLOCKFLAGS/*|D3DLOCK_NOOVERWRITE*/) != D3D_OK) {
        dbg("IDirect3DVertexBuffer9Managed: Unlock: Lock failed!");
        return buf;
      }
      memcpy(vb, bufSys, bufSize);
      buf->Unlock();      
    }

    lockSections.clear();
    fullDirty = false;    
  }

  return buf;
}
예제 #13
0
uae_u32 REGPARAM2 mbres_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("mbres_bget 0x%X\n",addr);
#endif
    special_mem |= S_READ;

    return (addr & 0xFFFF) == 3 ? mbres_val : 0;
}
예제 #14
0
uae_u32 REGPARAM2 mbres_wget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("mbres_wget 0x%X\n",addr);
#endif
    special_mem |= S_READ;

    return 0;
}
예제 #15
0
파일: howto_plugin.c 프로젝트: axn/bmxd
static int32_t howto_plugin_init( void ) {
	
	dbgf( DBGL_CHANGES, DBGT_INFO, "init plugin %s", HOWTO_PLUGIN );
	
	register_options_array( howto_plugin_options, sizeof( howto_plugin_options ) );
	
	return SUCCESS;
	
}
예제 #16
0
void REGPARAM2 bogomem_bput (uaecptr addr, uae_u32 b)
{
#ifdef DEBUG_MEMORY
    dbgf("bogomem_bput 0x%X = 0x%X\n",addr,b);
#endif
    addr -= bogomem_start & bogomem_mask;
    addr &= bogomem_mask;
    bogomemory[addr] = b;
}
예제 #17
0
uae_u32 REGPARAM2 rtarea_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("rtarea_bget 0x%X\n",addr);
#endif
    special_mem |= S_READ;
    addr &= 0xFFFF;
    return rtarea[addr];
}
예제 #18
0
uae_u32 REGPARAM2 rtarea_lget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("rtarea_lget 0x%X\n",addr);
#endif
    special_mem |= S_READ;
    addr &= 0xFFFF;
    return (uae_u32)(rtarea_wget (addr) << 16) + rtarea_wget (addr+2);
}
예제 #19
0
uae_u32 REGPARAM2 bogomem_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("bogomem_bget 0x%X\n",addr);
#endif
    addr -= bogomem_start & bogomem_mask;
    addr &= bogomem_mask;
    return bogomemory[addr];
}
예제 #20
0
void REGPARAM2 a3000mem_bput (uaecptr addr, uae_u32 b)
{
#ifdef DEBUG_MEMORY
    dbgf("a3000mem_bput 0x%X = 0x%X\n",addr,b);
#endif
    addr -= a3000mem_start & a3000mem_mask;
    addr &= a3000mem_mask;
    a3000memory[addr] = b;
}
예제 #21
0
파일: son.cpp 프로젝트: gagara/homekeeper
void processWifiMsg() {
    char buff[JSON_MAX_SIZE + 1];
    unsigned long start = millis();
    uint8_t l = esp8266.receive(buff, JSON_MAX_SIZE);
    if (l > 0) {
        dbgf(debug, F(":HTTP:receive:%d bytes:[%d msec]\n"), l, millis() - start);
        parseCommand(buff);
    }
}
예제 #22
0
uae_u32 REGPARAM2 extendedkickmem_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("extendedkickmem_bget 0x%X\n",addr);
#endif
    addr -= extendedkickmem_start & extendedkickmem_mask;
    addr &= extendedkickmem_mask;
    return extendedkickmemory[addr];
}
예제 #23
0
uae_u32 REGPARAM2 a3000mem_bget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("a3000mem_bget 0x%X\n",addr);
#endif
    addr -= a3000mem_start & a3000mem_mask;
    addr &= a3000mem_mask;
    return a3000memory[addr];
}
예제 #24
0
void REGPARAM2 mbres_bput (uaecptr addr, uae_u32 b)
{
#ifdef DEBUG_MEMORY
    dbgf("mbres_bput 0x%X = 0x%X\n",addr,b);
#endif
    special_mem |= S_WRITE;

    if ((addr & 0xFFFF) == 3)
	mbres_val = b;
}
예제 #25
0
HRESULT IDirect3DIndexBuffer9Managed::Unlock() 
{
  dbgf("IDirect3DIndexBuffer9Managed 0x%08X: Unlock", this);
  if(!bufSys || !buf)
    return D3DERR_INVALIDCALL;

  /*
  DWORD lockOffset = lockSections[lockSections.size()-1].lockOffset;
  DWORD lockSize = lockSections[lockSections.size()-1].lockSize;

  // Copy sysmem to vidmem
  void *vb;
  if(buf->Lock(lockOffset, lockSize, &vb, D3DLOCK_NOOVERWRITE|D3DLOCK_DONOTWAIT) != D3D_OK) {
    dbg("IDirect3DVertexBuffer9Managed: Unlock: FAILED!");
    return D3D_OK;
  }
  memcpy(vb, bufSys+lockOffset, lockSize?lockSize:bufSize);
  buf->Unlock();
  lockSections.pop_back();
  */


#ifndef LATE_IB_UPDATE
  /*DWORD flags = D3DLOCK_DISCARD; // Crashes A10-C
  if(config.main.debugD3D)
  {
   flags = NULL; // Debug D3D doesn't like discard here
  }
  */

  DWORD flags = NULL;

  if(lockSections.size() == 0)
  {
    dbg("WARNING: Indexbuffer unlock without lock??");
    return D3DERR_INVALIDCALL;
  }

  DWORD lockOffset = lockSections[lockSections.size()-1].lockOffset;
  DWORD lockSize = lockSections[lockSections.size()-1].lockSize;

  // Copy locked buffer to video memory
  void *ib;
  if(buf->Lock(lockOffset, lockSize, &ib, flags) != D3D_OK) {
    dbg("IDirect3DIndexBuffer9Managed: Unlock: Lock failed!");
    return D3DERR_INVALIDCALL;
  }
  memcpy(ib, bufSys+lockOffset, lockSize?lockSize:bufSize);
  buf->Unlock();

  lockSections.pop_back();
#endif

  return D3D_OK;
}
예제 #26
0
파일: stacktrace.c 프로젝트: ivan111/onsen
void init_func_names(void)
{
    int inode_i = ext2_get_inode_i(EXT2_ROOT_INODE, FNAMES_FILE_NAME);

    if (inode_i == 0) {
        dbgf("File not found. %s\n", FNAMES_FILE_NAME);
        return;
    }

    int size_B;
    char *p = (char *) ext2_open(inode_i, &size_B);

    if (p == 0) {
        dbgf("Could not open file. %s\n", FNAMES_FILE_NAME);
        return;
    }

    l_num_fnames = size_B / sizeof(struct FUNC_NAME);
    l_func_names = (struct FUNC_NAME *) p;
}
예제 #27
0
uae_u32 REGPARAM2 extendedkickmem_wget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("extendedkickmem_wget 0x%X\n",addr);
#endif
    uae_u16 *m;
    addr -= extendedkickmem_start & extendedkickmem_mask;
    addr &= extendedkickmem_mask;
    m = (uae_u16 *)(extendedkickmemory + addr);
    return swab_w(do_get_mem_word (m));
}
예제 #28
0
void REGPARAM2 a3000mem_wput (uaecptr addr, uae_u32 w)
{
#ifdef DEBUG_MEMORY
    dbgf("a3000mem_wput 0x%X = 0x%X\n",addr,w);
#endif
    uae_u16 *m;
    addr -= a3000mem_start & a3000mem_mask;
    addr &= a3000mem_mask;
    m = (uae_u16 *)(a3000memory + addr);
    do_put_mem_word (m, SWAP_W(w));
}
예제 #29
0
void REGPARAM2 a3000mem_lput (uaecptr addr, uae_u32 l)
{
#ifdef DEBUG_MEMORY
    dbgf("a3000mem_lput 0x%X = 0x%X\n",addr,l);
#endif
    uae_u32 *m;
    addr -= a3000mem_start & a3000mem_mask;
    addr &= a3000mem_mask;
    m = (uae_u32 *)(a3000memory + addr);
    do_put_mem_long (m, SWAP_L(l));
}
예제 #30
0
uae_u32 REGPARAM2 a3000mem_wget (uaecptr addr)
{
#ifdef DEBUG_MEMORY
    dbgf("a3000mem_wget 0x%X\n",addr);
#endif
    uae_u16 *m;
    addr -= a3000mem_start & a3000mem_mask;
    addr &= a3000mem_mask;
    m = (uae_u16 *)(a3000memory + addr);
    return SWAP_W(do_get_mem_word (m));
}