예제 #1
0
/*************
 * DESCRIPTION:   load texture
 * INPUT:         texture     texture
 * OUTPUT:        FALSE if failed else TRUE
 *************/
BOOL IPREVIEW_TEXTURE::Load(TEXTURE *texture)
{
	/* Load Imagine texture  */
#ifdef __AMIGA__
	IM_TTABLE* (*texture_init)(LONG arg0);

	seglist = LoadSeg(texture->name);
	if(!seglist)
		return FALSE;

	*(ULONG*)(&texture_init) = 4*seglist+4;
#ifdef __PPC__
	ttable = ITextureInit(texture_init);
#else
	ttable = texture_init(0x60FFFF);
#endif
#else
	INQUIRETEXTURE InquireTexture;
	PREFS prefs;
	char szBuffer[256];

	prefs.id = ID_TXTP;
	if (prefs.GetPrefs())
		ExpandPath((char *)prefs.data, texture->name, szBuffer);
	else
		strcpy(szBuffer, texture->name);

	prefs.data = NULL; // VERY important !

	hInst = LoadLibrary(szBuffer);
	if (!hInst)
		return FALSE;

	InquireTexture = (INQUIRETEXTURE)GetProcAddress(hInst, "InquireTexture");
	if (!InquireTexture)
		return FALSE;

	ttable = InquireTexture(0x70, 0x1);
#endif

	if(!ttable)
		return FALSE;

	// copy parameters
	memcpy(params, ((IMAGINE_TEXTURE*)texture)->params, 16*sizeof(float));

	form.pos = pos;
	form.orient_x = orient_x;
	form.orient_y = orient_y;
	form.orient_z = orient_z;
	form.size = size;

	return TRUE;
}
예제 #2
0
int main (int argc, char ** argv)
{
    struct Library *base1, *base2;
    BPTR seglist;
    
    FPuts(Output(), (STRPTR)"Testing peropener.library\n");
    
    base1=OpenLibrary((STRPTR)"peropener.library",0);
    base2=OpenLibrary((STRPTR)"peropener.library",0);

    FPrintf(Output(), (STRPTR)"base1=%lx, base2=%lx\n", base1, base2);
    
    if (base1 != NULL)
        CloseLibrary(base1);
    if (base2 != NULL)
        CloseLibrary(base2);

    FPuts(Output(), (STRPTR)"\nTesting perid.library\n");

    base1=OpenLibrary((STRPTR)"perid.library",0);
    base2=OpenLibrary((STRPTR)"perid.library",0);
    
    FPrintf(Output(), (STRPTR)"base1=%lx, base2=%lx\n", base1, base2);

    seglist = LoadSeg((CONST_STRPTR)"peropenertest_child");
    if (seglist != (BPTR)NULL)
    {
        RunCommand(seglist, 10*1024, "\n", -1);
        UnLoadSeg(seglist);
    }
    else
    {
        FPrintf(Output(), (STRPTR)"Failed to load peropenertest_child\n");
    }
    
    if (base1 != NULL)
        CloseLibrary(base1);
    if (base2 != NULL)
        CloseLibrary(base2);

    Flush (Output ());
    
    return 0;
}
예제 #3
0
extern UBYTE dhclient_path[];
extern struct ifnet *ifnet;
extern struct Library *logDOSBase;

#define DOSBase logDOSBase

void run_dhclient(struct ifnet *ifp)
{
	char ifname[IFNAMSIZ+5];
	BPTR seglist;

	if (!ifp->if_data.ifi_aros_dhcp_pid) {
		DDHCP(KPrintF("Starting DHCP client for %s%u\n", ifp->if_name, ifp->if_unit);)
		sprintf(ifname, "-q %s%u", ifp->if_name, ifp->if_unit);
		seglist = LoadSeg(dhclient_path);
		DDHCP(KPrintF("seglist = 0x%08lx\n", seglist);)
		if (seglist) {
			ifp->if_data.ifi_aros_dhcp_pid = (pid_t)CreateNewProcTags(NP_Seglist, seglist,
									 NP_Arguments, ifname,
									 NP_Cli, TRUE,
									 NP_Name, "AROSTCP DHCP client",
									 NP_CommandName, "dhclient",
									 NP_ConsoleTask, NULL,
									 TAG_DONE);
			DDHCP(KPrintF("dhclient pid = 0x%08lx\n", ifp->if_data.ifi_aros_dhcp_pid);)
			if (!ifp->if_data.ifi_aros_dhcp_pid) {
				UnLoadSeg(seglist);
				seglist = NULL;
			}
		}
예제 #4
0
파일: SOUND.C 프로젝트: ColanderCombo/SCI16
global bool InitSoundDriver() {
	int		patchNum;
	Handle	patchHandle;


	/*	Load sound driver
	 */

	#ifdef	IBM
		if((soundDrv = LoadHandle(soundDriver)) == (Handle)NULL) {
			RAlert(E_CANT_FIND, soundDriver);
			return (FALSE);
		}
		LockHandle(soundDrv);
	#endif

	#ifdef	AMIGA
		if(!(bseg = (struct Segment *) LoadSeg(soundDriver))) {
			RAlert(E_CANT_FIND, soundDriver);
			return (FALSE);
		}
		drvHandle = (unsigned char far *) (((ulong) bseg << 2) + 4);
		soundDrv = (Handle) &drvHandle;

		if((DoSound(SPatchReq,(void far *) *(soundDrv),
			(int far *) &numberOfVoices, (int far *) &numberOfDACs,
			(int far *) &devID) & 0x7f) == 5) {
			if(dummysoundbank) {
				int bankFile;
				long bankIndex = 0, bankSize;

				if((bankFile = open("patch.005")) == NULL) {
					RAlert(E_NO_PATCH);
					return (FALSE);
				}

				read(bankFile,&bankSize,2);
				bankSize = dsoundsize;

				while(bankSize > 1024) {
					read(bankFile,(dummysoundbank + bankIndex),1024);
					bankSize -= 1024;
					bankIndex += 1024;
				}
				if(bankSize) {
					read(bankFile,(dummysoundbank + bankIndex),bankSize);
				}

				close(bankFile);
			}
			else {
				UnLoadSeg(bseg);
				if(!(bseg = (struct Segment *) LoadSeg("amiga3v.drv"))) {
					RAlert(E_CANT_FIND,soundDriver);
					return (FALSE);
				}
				drvHandle = (unsigned char far *) (((ulong) bseg << 2) + 4);
				soundDrv = (Handle) &drvHandle;
			}
		}
		else {
			if(dummysoundbank) {
				FreeMem(dummysoundbank,dsoundsize);
				dummysoundbank = NULL;
			}
		}
		seglist[segcount++] = bseg;
	#endif


	/* Load patch (if one is needed)
	 * If bit 7 of the patch number is set, then the patch
	 * will need to be locked permanently in hunk
	 */
	patchNum = DoSound(SPatchReq,(void far *) *(soundDrv),
		(int far *) &numberOfVoices, (int far *) &numberOfDACs, 
		(int far *) &devID);

	#ifdef	AMIGA
		if((patchNum & 0x7f) == 5) {	 /* This Kludge is temporary, until		*/
			patchNum = -1;					 /* the Amiga interpreter is capable of*/
		}										 /* handling 64k+ resources				*/
	#endif

	if(patchNum != -1) {
		if ((patchNum&0x7f) == 10)
			patchHandle = DoLoad(RES_PATCH,(patchNum & 0x7f)); 
		else			
			patchHandle = ResLoad(RES_PATCH,(patchNum & 0x7f));
		if(patchNum & 0x80) {
			ResLock(RES_PATCH,(patchNum & 0x7f),TRUE);
			LockHandle(patchHandle);
		}
	}

	/*	Initialize sound driver
	 */

	#ifdef	IBM
		if(DoSound(SInit,(char far *) *(patchHandle),0) == -1) {
			DisposeHandle(soundDrv);
			RAlert(E_NO_MUSIC);
			return(FALSE);
		}
	#endif

	#ifdef	AMIGA
		if(dummysoundbank) {
			DoSound(SInit,dummysoundbank);
		}
		else {
			DoSound(SInit,(char far *) *(patchHandle),0);
		}
	#endif

	InitList(&soundList);
	InstallServer(SoundServer,1);

	DoSound(SProcess,TRUE);

	return(TRUE);
}
예제 #5
0
/*************
 * DESCRIPTION:   Load Imagine texture and init it
 * INPUT:         filename    texture filename
 *                path        texture path
 * OUTPUT:        ERR_NONE if ok, else error number
 *************/
int IMAGINE_TEXTURE::Load(RSICONTEXT *rc, char *filename, char *path)
{
#ifdef __AMIGA__
	IM_TTABLE* (*texture_init)(LONG arg0);
#endif // __AMIGA__
	char buffer[256];

	texture = rc->text_root->FindIMTexture(filename);
	if(!texture)
	{
		/* don't found the texture => load it again */
		texture = new IM_TEXT;
		if(!texture)
			return ERR_MEM;

		/* Load Imagine texture  */
		if(!ExpandPath(path,filename,buffer))
		{
			delete texture;
			return ERR_OPENTEXTUREFILE;
		}
#ifdef __AMIGA__
		texture->seglist = LoadSeg(buffer);
		if(!texture->seglist)
		{
			delete texture;
			return ERR_OPENTEXTUREFILE;
		}

		*(ULONG*)(&texture_init) = 4*texture->seglist+4;
#ifdef __PPC__
		texture->ttable = ppc_texture_init(texture_init, 0x60FFFF);
#else
		texture->ttable = texture_init(0x60FFFF);
#endif // __PPC__
#else
		texture->ttable = NULL;

		INQUIRETEXTURE InquireTexture;

		texture->hInst = LoadLibrary(buffer);
		if (!texture->hInst)
		{
			delete texture;
			return ERR_INITTEXTURE;
		}

		InquireTexture = (INQUIRETEXTURE)GetProcAddress(texture->hInst, "InquireTexture");
		if (!InquireTexture)
		{
			delete texture;
			return ERR_INITTEXTURE;
		}

		texture->ttable = InquireTexture(0x70, 0x1);
#endif
		if(!texture->ttable)
		{
#ifndef __WATCOMC__
			delete texture;
#endif
			return ERR_INITTEXTURE;
		}

		texture->name = new char[strlen(filename)+1];
		if(!texture->name)
		{
			delete texture;
			return ERR_MEM;
		}
		strcpy(texture->name,filename);

		texture->Insert(rc);
	}

	/* Copy default parameters */
	memcpy(param, texture->ttable->params, 16*sizeof(float));
	/* Copy default geometry */
	memcpy(&pos, texture->ttable->tform, 5*sizeof(VECTOR));

	return ERR_NONE;
}