I'm working on Quake again, requesting some advice

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

TBH, I dislike pspaudiolib for the simple fact, that it's not error resiliant to a case where not all threads/channels it wants to create can be created. And that happens quite easily (at least for me), so the functionality is rather shaky.
For personal usage, I just hacked a bit in the code and made it soft-fail on those cases, where it just won't use the uncreated threads/channels, but the code gets pretty sluggish.

Also, after taking a look at the sound code, it doesn't seem like it could be a problem of that and as jimparis said, pspaudiolib hasn't changed really in quite some time and the prototype change cannot be the cause (if it were, it just wouldn't compile).

For an easy solution, you should create a local copy of pspaudiolib in the src/psp folder, include the files directly and change the init function as follows:

Code: Select all

int pspAudioInit()
{
	printf("pspAudioInit().\n");
	printf("NUM_AUDIO_CHANNELS: %i\n", PSP_NUM_AUDIO_CHANNELS);
	int i,ret;
	int failed=0;
	char str[32];

	audio_terminate=0;
	audio_ready=0;

	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
	printf&#40;"Initializing Channel %i.\n",i&#41;;
    AudioStatus&#91;i&#93;.handle = -1;
    AudioStatus&#91;i&#93;.threadhandle = -1;
    AudioStatus&#91;i&#93;.volumeright = PSP_VOLUME_MAX;
    AudioStatus&#91;i&#93;.volumeleft  = PSP_VOLUME_MAX;
    AudioStatus&#91;i&#93;.callback = 0;
    AudioStatus&#91;i&#93;.pdata = 0;
	&#125;
	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		printf&#40;"Reserving audio channel %i.\n",i&#41;;
		if &#40;&#40;AudioStatus&#91;i&#93;.handle = sceAudioChReserve&#40;-1,PSP_NUM_AUDIO_SAMPLES,0&#41;&#41;<0&#41; &#123;
			printf&#40;"Error reserving audio channel %i.\n",i&#41;;
			failed=1;
		&#125; else
			printf&#40;"Got channel No %i.\n", AudioStatus&#91;i&#93;.handle&#41;;
	&#125;
	if &#40;failed&#41; &#123;
		for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
			printf&#40;"Releasing audio channel %i.\n",i&#41;;
			if &#40;AudioStatus&#91;i&#93;.handle != -1&#41; 
				sceAudioChRelease&#40;AudioStatus&#91;i&#93;.handle&#41;;
			AudioStatus&#91;i&#93;.handle = -1;
		&#125;
		return -1;
	&#125;
	audio_ready = 1;
	strcpy&#40;str,"audiot0"&#41;;
	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		printf&#40;"Creating thread for channel %i.\n",i&#41;;
		str&#91;6&#93;='0'+i;
		AudioStatus&#91;i&#93;.threadhandle = sceKernelCreateThread&#40;str,&#40;void*&#41;&AudioChannelThread,0x12,0x10000,PSP_THREAD_ATTR_USER,NULL&#41;;
		if &#40;AudioStatus&#91;i&#93;.threadhandle < 0&#41; &#123;
			AudioStatus&#91;i&#93;.threadhandle = -1;
			printf&#40;"Error creating thread for channel %i.\n",i &#41;;
			//failed=1;
			break;
		&#125;
		printf&#40;"Starting thread for channel %i.\n",i&#41;;
		ret=sceKernelStartThread&#40;AudioStatus&#91;i&#93;.threadhandle,sizeof&#40;i&#41;,&i&#41;;
		if &#40;ret!=0&#41; &#123;
			printf&#40;"Error starting thread for channel %i.\n",i &#41;;
			//failed=1;
			break;
		&#125;
	&#125;
	if &#40;failed&#41; &#123;
		audio_terminate=1;
		for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
			printf&#40;"Deleting thread for channel %i.\n",i&#41;;
			if &#40;AudioStatus&#91;i&#93;.threadhandle != -1&#41; &#123;
				//sceKernelWaitThreadEnd&#40;AudioStatus&#91;i&#93;.threadhandle,NULL&#41;;
				sceKernelDeleteThread&#40;AudioStatus&#91;i&#93;.threadhandle&#41;;
			&#125;
			AudioStatus&#91;i&#93;.threadhandle = -1;
		&#125;
		audio_ready=0;
		return -1;
	&#125;
	return 0;
&#125;
You might want to remove the printfs, as they were used for debugging the cause of pspaudiolib to fail for me.
Not entirely sure if that fixes the problems, but it's my best guess.

PS: Maybe I can even be assed to create a cleaner version of pspaudiolib and provide a patch for the SDK.
<Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki

Alexander Berl
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

Hmm, either I'm applying your fix wrong, or there is no difference to the sound with that fix :( I wonder if PeterM still has the old sdk with the sound working, and can send us his pspaudiolib.c, .h etc for examination.
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

MDave wrote:Hmm, either I'm applying your fix wrong, or there is no difference to the sound with that fix :( I wonder if PeterM still has the old sdk with the sound working, and can send us his pspaudiolib.c, .h etc for examination.
Here you go. The whole SDK is revision 2213, but the files each have their own "last commit" revision (see header comment per file).

pspaudiolib.c :

Code: Select all

/*
 * PSP Software Development Kit - http&#58;//www.pspdev.org
 * -----------------------------------------------------------------------
 * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
 *
 * pspaudiolib.c - Audio library build on top of sceAudio, but to provide
 *                 multiple thread usage and callbacks.
 *
 * Copyright &#40;c&#41; 2005 Adresd
 * Copyright &#40;c&#41; 2005 Marcus R. Brown <mrbrown@ocgnet.org>
 *
 * $Id&#58; pspaudiolib.c 1145 2005-10-12 15&#58;32&#58;44Z mrbrown $
 */
#include <stdlib.h>
#include <string.h>
#include <pspthreadman.h>
#include <pspaudio.h>

#include "pspaudiolib.h"

static int audio_ready=0;
static short audio_sndbuf&#91;PSP_NUM_AUDIO_CHANNELS&#93;&#91;2&#93;&#91;PSP_NUM_AUDIO_SAMPLES&#93;&#91;2&#93;;

static psp_audio_channelinfo AudioStatus&#91;PSP_NUM_AUDIO_CHANNELS&#93;;

static volatile int audio_terminate=0;

void pspAudioSetVolume&#40;int channel, int left, int right&#41;
&#123;
  AudioStatus&#91;channel&#93;.volumeright = right;
  AudioStatus&#91;channel&#93;.volumeleft  = left;
&#125;

void pspAudioChannelThreadCallback&#40;int channel, void *buf, unsigned int reqn&#41;
&#123;
	pspAudioCallback_t callback;
	callback=AudioStatus&#91;channel&#93;.callback;
&#125;


void pspAudioSetChannelCallback&#40;int channel, pspAudioCallback_t callback, void *pdata&#41;
&#123;
	volatile psp_audio_channelinfo *pci = &AudioStatus&#91;channel&#93;;
	pci->callback=0;
	pci->pdata=pdata;
	pci->callback=callback;
&#125;

int pspAudioOutBlocking&#40;unsigned int channel, unsigned int vol1, unsigned int vol2, void *buf&#41;
&#123;
	if &#40;!audio_ready&#41; return -1;
	if &#40;channel>=PSP_NUM_AUDIO_CHANNELS&#41; return -1;
	if &#40;vol1>PSP_VOLUME_MAX&#41; vol1=PSP_VOLUME_MAX;
	if &#40;vol2>PSP_VOLUME_MAX&#41; vol2=PSP_VOLUME_MAX;
	return sceAudioOutputPannedBlocking&#40;AudioStatus&#91;channel&#93;.handle,vol1,vol2,buf&#41;;
&#125;

static int AudioChannelThread&#40;int args, void *argp&#41;
&#123;
	volatile int bufidx=0;
	int channel=*&#40;int *&#41;argp;
	
	while &#40;audio_terminate==0&#41; &#123;
		void *bufptr=&audio_sndbuf&#91;channel&#93;&#91;bufidx&#93;;
		pspAudioCallback_t callback;
		callback=AudioStatus&#91;channel&#93;.callback;
		if &#40;callback&#41; &#123;
			callback&#40;bufptr, PSP_NUM_AUDIO_SAMPLES, AudioStatus&#91;channel&#93;.pdata&#41;;
		&#125; else &#123;
			unsigned int *ptr=bufptr;
			int i;
			for &#40;i=0; i<PSP_NUM_AUDIO_SAMPLES; ++i&#41; *&#40;ptr++&#41;=0;
		&#125;
		pspAudioOutBlocking&#40;channel,AudioStatus&#91;channel&#93;.volumeleft,AudioStatus&#91;channel&#93;.volumeright,bufptr&#41;;
		bufidx=&#40;bufidx?0&#58;1&#41;;
	&#125;
	sceKernelExitThread&#40;0&#41;;
	return 0;
&#125;



/******************************************************************************/



int pspAudioInit&#40;&#41;
&#123;
	int i,ret;
	int failed=0;
	char str&#91;32&#93;;

	audio_terminate=0;
	audio_ready=0;

	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
    AudioStatus&#91;i&#93;.handle = -1;
    AudioStatus&#91;i&#93;.threadhandle = -1;
    AudioStatus&#91;i&#93;.volumeright = PSP_VOLUME_MAX;
    AudioStatus&#91;i&#93;.volumeleft  = PSP_VOLUME_MAX;
    AudioStatus&#91;i&#93;.callback = 0;
    AudioStatus&#91;i&#93;.pdata = 0;
	&#125;
	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		if &#40;&#40;AudioStatus&#91;i&#93;.handle = sceAudioChReserve&#40;-1,PSP_NUM_AUDIO_SAMPLES,0&#41;&#41;<0&#41; 
      failed=1;
	&#125;
	if &#40;failed&#41; &#123;
		for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
			if &#40;AudioStatus&#91;i&#93;.handle != -1&#41; 
        sceAudioChRelease&#40;AudioStatus&#91;i&#93;.handle&#41;;
			AudioStatus&#91;i&#93;.handle = -1;
		&#125;
		return -1;
	&#125;
	audio_ready = 1;
	strcpy&#40;str,"audiot0"&#41;;
	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		str&#91;6&#93;='0'+i;
		AudioStatus&#91;i&#93;.threadhandle = sceKernelCreateThread&#40;str,&#40;void*&#41;&AudioChannelThread,0x12,0x10000,0,NULL&#41;;
		if &#40;AudioStatus&#91;i&#93;.threadhandle < 0&#41; &#123;
			AudioStatus&#91;i&#93;.threadhandle = -1;
			failed=1;
			break;
		&#125;
		ret=sceKernelStartThread&#40;AudioStatus&#91;i&#93;.threadhandle,sizeof&#40;i&#41;,&i&#41;;
		if &#40;ret!=0&#41; &#123;
			failed=1;
			break;
		&#125;
	&#125;
	if &#40;failed&#41; &#123;
		audio_terminate=1;
		for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
			if &#40;AudioStatus&#91;i&#93;.threadhandle != -1&#41; &#123;
				//sceKernelWaitThreadEnd&#40;AudioStatus&#91;i&#93;.threadhandle,NULL&#41;;
				sceKernelDeleteThread&#40;AudioStatus&#91;i&#93;.threadhandle&#41;;
			&#125;
			AudioStatus&#91;i&#93;.threadhandle = -1;
		&#125;
		audio_ready=0;
		return -1;
	&#125;
	return 0;
&#125;


void pspAudioEndPre&#40;&#41;
&#123;
	audio_ready=0;
	audio_terminate=1;
&#125;


void pspAudioEnd&#40;&#41;
&#123;
	int i;
	audio_ready=0;
	audio_terminate=1;

	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		if &#40;AudioStatus&#91;i&#93;.threadhandle != -1&#41; &#123;
			//sceKernelWaitThreadEnd&#40;AudioStatus&#91;i&#93;.threadhandle,NULL&#41;;
			sceKernelDeleteThread&#40;AudioStatus&#91;i&#93;.threadhandle&#41;;
		&#125;
		AudioStatus&#91;i&#93;.threadhandle = -1;
	&#125;

	for &#40;i=0; i<PSP_NUM_AUDIO_CHANNELS; i++&#41; &#123;
		if &#40;AudioStatus&#91;i&#93;.handle != -1&#41; &#123;
			sceAudioChRelease&#40;AudioStatus&#91;i&#93;.handle&#41;;
			AudioStatus&#91;i&#93;.handle = -1;
		&#125;
	&#125;
&#125;


pspaudiolib.h :

Code: Select all

/*
 * PSP Software Development Kit - http&#58;//www.pspdev.org
 * -----------------------------------------------------------------------
 * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
 *
 * pspaudiolib.h - Audio library build on top of sceAudio, but to provide
 *                 multiple thread usage and callbacks.
 *
 * Copyright &#40;c&#41; 2005 Adresd
 * Copyright &#40;c&#41; 2005 Marcus R. Brown <mrbrown@ocgnet.org>
 *
 * $Id&#58; pspaudiolib.h 1874 2006-04-18 13&#58;20&#58;58Z tyranid $
 */
#ifndef __AUDIOLIB_H__
#define __AUDIOLIB_H__

#ifdef __cplusplus
extern "C" &#123;
#endif

#define PSP_NUM_AUDIO_CHANNELS 4
/** This is the number of frames you can update per callback, a frame being
 * 1 sample for mono, 2 samples for stereo etc. */
#define PSP_NUM_AUDIO_SAMPLES 1024
#define PSP_VOLUME_MAX 0x8000

typedef void &#40;* pspAudioCallback_t&#41;&#40;void *buf, unsigned int reqn, void *pdata&#41;;

typedef struct &#123;
  int threadhandle;
  int handle;
  int volumeleft;
  int volumeright;
  pspAudioCallback_t callback;
  void *pdata;
&#125; psp_audio_channelinfo;

typedef int &#40;* pspAudioThreadfunc_t&#41;&#40;int args, void *argp&#41;;

int  pspAudioInit&#40;&#41;;
void pspAudioEndPre&#40;&#41;;
void pspAudioEnd&#40;&#41;;

void pspAudioSetVolume&#40;int channel, int left, int right&#41;;
void pspAudioChannelThreadCallback&#40;int channel, void *buf, unsigned int reqn&#41;;
void pspAudioSetChannelCallback&#40;int channel, pspAudioCallback_t callback, void *pdata&#41;;
int  pspAudioOutBlocking&#40;unsigned int channel, unsigned int vol1, unsigned int vol2, void *buf&#41;;

#ifdef __cplusplus
&#125;
#endif

#endif
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

Hmm, interesting indeed, so your sdk contains the latest revision of the sound libs too? O_o Then this means the problem is elsewhere ... starting to lose hope finding the problem.

Is there a way to choose and build an older revision of the pspsdk by any chance?
User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

I downloaded and compiled the source today to see what that audio problems are like and from what it sounds like, it's as if either the sound samples weren't converted correctly (though that's improbable as it worked already) or - and that's my next best guess - the sound buffer isn't cleared when no sound is to be played (or the played sounds have finished). From what I can see, quake just inserts new sounds into the sound queue and mixes them together into the output buffer. However, when no sound is played, the output buffer isn't touched, so the data from the previous frames remain and create the noise since the PSP audio library constantly polls data from that output buffer. Also from what I can hear at the immediate startup of the game, the first 2-3 sounds are ok, so that supports my theory.

Unfortunately, I'm not sure yet how to best fix that behaviour as it's hard to know (at least for me, as I'm not too involved with the quake audio system) when you need to fill the output buffer with 0.
<Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki

Alexander Berl
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

That's a bit weird. I thought Quake filled the buffer the whole time.

I suppose someone could check by clearing the source data (which Quake creates) to zero after copying to the PSP audio buffer.

A handy place to do this would be at the end of copySamples(). It would require some un-const-ing here and there too, but nothing too difficult.
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

I tried your idea Peter, as it sounded reasonable. However, with no results - sound is still broken same as before :/ Seems my guess was off again, though I still believe the first few seconds of the game the sounds are correct (at least the noise that comes when multiple sounds are about to be played is gone).
I think it's pretty safe to say now that the PSP part of the sound code is not the problem, since filling the input buffer with 0 before the copysound function will give you silence as supposed.

I'm thinking either the mixer is broken or it's something with the sound resampling, though those are more blind guesses now. :/
<Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki

Alexander Berl
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

Maybe a buffer should be aligned but isn't?
Or perhaps I'm not forcing a cache writeback when it is necessary?
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

I thought I'd take another crack at solving the sound problem, after implementing a few features missing in the psp port (like transparent water, fixed player skins, interpolated animations for monsters and the view weapon model which is cvar'd if you prefer the old style choppy animations).

After some testing, it seems that one part of the sound code dosn't work at all, the part contained in the if statement below.

Code: Select all


		static void fillOutputBuffer&#40;void* buffer, unsigned int samplesToWrite, void* userData&#41;
		&#123;
			// Where are we writing to?
			Sample* const destination = static_cast<Sample*> &#40;buffer&#41;;

			// Where are we reading from?
			const Sample* const firstSampleToRead = &inputBuffer&#91;samplesRead&#93;;

			// How many samples to read?
			const unsigned int samplesToRead = samplesToWrite / inputSamplesPerOutputSample;

			// Going to wrap past the end of the input buffer?
			const unsigned int samplesBeforeEndOfInput = inputBufferSize - samplesRead;
			if &#40;samplesToRead > samplesBeforeEndOfInput&#41;
			&#123;
				// Yes, so write the first chunk from the end of the input buffer.
				copySamples&#40;
					firstSampleToRead,
					firstSampleToRead + samplesBeforeEndOfInput,
					&destination&#91;0&#93;&#41;;

				// Write the second chunk from the start of the input buffer.
				const unsigned int samplesToReadFromBeginning = samplesToRead - samplesBeforeEndOfInput;
				copySamples&#40;
					&inputBuffer&#91;0&#93;,
					&inputBuffer&#91;samplesToReadFromBeginning&#93;,
					&destination&#91;samplesBeforeEndOfInput * inputSamplesPerOutputSample&#93;&#41;;
			&#125;
			else
			&#123;
				// No wrapping, just copy.
				copySamples&#40;
					firstSampleToRead,
					firstSampleToRead + samplesBeforeEndOfInput,//samplesToRead,
					&destination&#91;0&#93;&#41;;
			&#125;

			// Update the read offset.
			samplesRead = &#40;samplesRead + samplesToRead&#41; % inputBufferSize;
		&#125;
The if statement dosn't work, it just goes straight to the else statement.

If I comment out the else statement, there is no sound.
If I comment out the if condition and the closing bracket for that statement, so it runs the code inside the if statement without question, it crashes quake during load up.

How is it that this piece of code worked before on an older sdk revision, if my guesses are correct?

One last question, how can I build an older specific revision of the psptoolchain?
User avatar
Raphael
Posts: 646
Joined: Tue Jan 17, 2006 4:54 pm
Location: Germany
Contact:

Post by Raphael »

svn co URL@REV
or
svn co -r REV URL

should work. Then just make and make install that.
<Don't push the river, it flows.>
http://wordpress.fx-world.org - my devblog
http://wiki.fx-world.org - VFPU documentation wiki

Alexander Berl
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

Thanks a lot Raphael!
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

IIRC the "if" block should only be executed if Quake's mixing buffer isn't a multiple of the size of the PSP buffer. It probably is (powers of two).

BTW I'm pretty sure you should use samplesToRead instead of samplesBeforeEndOfInput in the else block. Otherwise you could copy too much data.
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
ataxy
Posts: 26
Joined: Fri Apr 13, 2007 6:50 am

Post by ataxy »

hey Pete glad to see you are still around and thx to all the other who are pitching in on this great project
i wanted to know will there be any source update soon? or none are expected, i was wondering as i would be interrested in trying out new code if any are available and test it.
as always strictly for pesonnal use no public distribution
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

I would suggest anyone who wants to add patches or contribute to the source to get in touch with Chris. Hopefully you can be added as users on the sourceforge project.

I'm unable to actively do anything with the code, but I'm happy to try and help explain how my coding horrors work... as long as they're not PSP-specific.

The big big thing which needs fixed is the allocation of textures. When I started porting from GLQuake to GU, I ripped out the way Quake used GL texture names, assuming that I could map them to texture pointers instead.

Turns out Quake does some nasty things with the indices, making it very hard to tell which ones are shared, and hence which ones can be freed.

The better idea is just to go with the GLQuake way, and just "reuse" texture indices when the game wants to supply new texture data for a texture index which already has data.
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

PeterM wrote:IIRC the "if" block should only be executed if Quake's mixing buffer isn't a multiple of the size of the PSP buffer. It probably is (powers of two).

BTW I'm pretty sure you should use samplesToRead instead of samplesBeforeEndOfInput in the else block. Otherwise you could copy too much data.
Ahh I see, gotcha! And that samplesToRead/samplesBeforeEndOfInput thing was just some left over testing I accidentally pasted into my post :P

I'll release the source once I release my little total conversion, stand alone game based on quake. I had to modifiy the engine a bit to suit my needs, but nothing too much different.

For those interested on what I'm working on, here's a little shameless plug :P

ImageImage
ImageImage

No prizes for those who guess what the game is based on!
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

Looks great!

BTW I have no idea what game it's based on. I have a very sheltered life... :-)
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

Hint, its based on a console fps, that contains dinosaurs :P

Oh yeah, bad news. Using your revision of the pspsdk didn't fix the sound, unfortunately. This is a real mystery to me :P maybe theres a file you haven't included by accident in the sourceforge page? Or maybe any additional libraries in your setup?
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

MDave wrote:Hint, its based on a console fps, that contains dinosaurs :P
That wouldn't be Nanosaur, originally for the Mac? It did come with the source, and was aimed at systems like the original iMac - 32MB of RAM, a 233MHz CPU, and a pretty old GPU (the ATI 3D Rage), so it should fit the PSP pretty well.
crazyc
Posts: 408
Joined: Fri Jun 17, 2005 10:13 am

Post by crazyc »

J.F. wrote:That wouldn't be Nanosaur, originally for the Mac? It did come with the source, and was aimed at systems like the original iMac - 32MB of RAM, a 233MHz CPU, and a pretty old GPU (the ATI 3D Rage), so it should fit the PSP pretty well.
Looks like Turok to me.
User avatar
dot_blank
Posts: 498
Joined: Wed Sep 28, 2005 8:47 am
Location: Brasil

Post by dot_blank »

i second that turok as that shotgun looks FAR TOO similar
not to mention the crappy stone textures that turok had used
10011011 00101010 11010111 10001001 10111010
ataxy
Posts: 26
Joined: Fri Apr 13, 2007 6:50 am

Post by ataxy »

yep definitly turok
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

dot_blank wrote:i second that turok as that shotgun looks FAR TOO similar
not to mention the crappy stone textures that turok had used
Hey, thats MY crappy stone texture :P everything you see is made from scratch. Except the hud, I like the Turok hud. Only going to base the looks and gameplay on Turok, since I'm a fan of this classic game, its not going to be a perfect clone. The controls and gameplay mechanics fit the psp, as in there isn't too many actual gameplay control functions that cramp up on the psp control setup. Codename for this project is dun dun DUN ... Qurok.

I won't de-rail this thread from its orignal purpose though from talking about it further though :)
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

I've fixed the sound!

Well, used a different development environment at least :P

It seems that the sound works perfect with xorloser's Pspdev Kit for win32, compared to my previous cygwin setup.

It also uses a pretty old toolchain too. My water is no longer transparent, hehe. I'll update the pspdev folder in the win32 devkit to the one in my cygwin/usr/local folder and see if it still retains the sound properly. If it still sounds fine, then this is one strange circumstance :P

EDIT: Yep, sound works with latest pspsdk and with xorloser's pspdev kit for win32.
Be3f
Posts: 59
Joined: Thu Mar 15, 2007 9:28 pm

Post by Be3f »

MDave - your Turok remake seems to be awesome, screens are really impressive... Have you already finished any dinosaur models? Can't wait for the beta (at least)!
GL! ;)
P.S. I hope, CSwindle hasn't gave up working on this project...
00000110 00000110 00000110
PeterM
Posts: 125
Joined: Sat Dec 31, 2005 7:25 pm
Location: Edinburgh, UK
Contact:

Post by PeterM »

I'm pretty sure the version of the SDK used by xorloser had a bug which I wanted to avoid by updating my SDK.

What a hassle...
http://aaiiee.wordpress.com/

I can no longer do any homebrew PSP development nor discuss PSP specific topics.
User avatar
Wally
Posts: 663
Joined: Mon Sep 26, 2005 11:25 am

Post by Wally »

Poor J.F,

Too Appled out to notice it was Turok :P

I thought nanosaur too at first but the screenshots proved it wasnt, since when do are you a human in nanosaur :/

Although Nanosaur would be a nice port for the PSP ;-)


Wally
J.F.
Posts: 2906
Joined: Sun Feb 22, 2004 11:41 am

Post by J.F. »

Wally4000 wrote:Poor J.F,

Too Appled out to notice it was Turok :P

I thought nanosaur too at first but the screenshots proved it wasnt, since when do are you a human in nanosaur :/

Although Nanosaur would be a nice port for the PSP ;-)


Wally
I was thinking of games with source - I TOTALLY forgot he could be doing it without source. If you check the time I posted, it was almost 1am. :)
MDave
Posts: 82
Joined: Mon May 09, 2005 10:43 pm

Post by MDave »

PeterM wrote:I'm pretty sure the version of the SDK used by xorloser had a bug which I wanted to avoid by updating my SDK.

What a hassle...
Yeah a total hassle :P seems like a cygwin problem or something.
Touch wood, I haven't come across any bugs with xorloser's dev kit, especially if you replace the pspdev folder with the latest one from a normal psptoolchain install.

If I haven't mentioned it already, thank you very much for the work you and Chris Swindle have done porting quake to the psp!

As for my Turok remake, its coming along well :P plan is to do one whole quake style episode worth of single player / co-op content and a nicely featured multiplayer (with bots). So far, doing everything myself means everything is going to take a while until I reach my target. If theres any quake 1 mappers still about, and can lend a hand, I'll be more then greatful :) I guess I should put up a site for my little project :P
ataxy
Posts: 26
Joined: Fri Apr 13, 2007 6:50 am

Post by ataxy »

just want to see if there was any news on the dev front of this port
Be3f
Posts: 59
Joined: Thu Mar 15, 2007 9:28 pm

Post by Be3f »

ataxy wrote:just want to see if there was any news on the dev front of this port
Me too... (CSwindle doesn't reply on the PM for a while...)
00000110 00000110 00000110
Post Reply