66w ago - Following up on the
previous PlayStation 3 3.70 SDK and PhyreEngine leaks, today an anonymous user under the handle
ravi_h_m17 has uploaded the Sony PS3 4.00 SDK files to the Chinese file-sharing site 4Shared-China.com and the NewsGroup
alt.binaries.console.ps3.
Download:
PS3 4.00 SDK (Software Development Kit) /
PS3 4.00 SDK (Software Development Kit) (Torrent Mirror)
Below is a list of the files and sizes included in the PS3 4.00 SDK leak for those curious:
- 04_MultiThreadedSPU.pdf - 187 KB
- cell_cgtool-050_010.zip - 1,829 KB
- DayII_03_FibersAndVM.pdf - 523 KB
- DevStation2008_Day1_Slides.zip - 44,912 KB
- DevStation2008_Day2_Slides.zip - 42,381 KB
- graphics_tech_information-20060926.zip - 1,140 KB
- HowtogetthebestfromSNCPPUtoolchainforPLAYSTATION3developmentSN008-E.pdf - 331 KB
- libsecure-2.0.0.1.zip - 1,475 KB
- prodg_documentation-400.1-english.zip - 20,118 KB
- ProDGForPlayStation3v400.1.0.exe - 60,577 KB
- ps3_cp_update-360_001.zip - 13,922 KB
- ps3_gpad-sdk370.1_11.0_installer.zip - 53,257 KB
- ps3_sample_showcase-100.wmv - 213,493 KB
- PS3_SDK-400_001.zip - 111,124 KB
- PS3_SDK_CGC-250_2.0.r10842.zip - 9,122 KB
- ps3_sdk_np_packager-280_002.zip - 274 KB
- PS3_SDK_PlaygroundDemo-350_001.zip - 191,460 KB
- ps3_sdk_samples-400_001.zip - 376,806 KB
- ps3_sdkdoc-400_01-chm-english.zip - 42,273 KB
- ps3_sdkdoc-400_01-latest-english.zip - 314,144 KB
- PS3_Toolchain_411-Win_280_003.zip - 48,524 KB
- PS3_Toolchain_411-Win_400_001.zip - 48,744 KB
- PS3DECHUpdateData.374.001.zip - 175,420 KB
- PS3DECHUpdateData.400.001.zip - 169,917 KB
- PS3DECRUpdateData.400.001 (1).zip - 143,790
- PS3DECRUpdateData.400.001.zip - 143,790 KB
- sdk_manager_for_ps3-1_4_5.exe - 23,933 KB
- SN-DBSv2.2.1.13.exe - 15,000 KB
- snc_documentation-400.1-english.zip - 4,116 KB
- SNCPPUToolchainforPlayStation3v400.1.zip - 11,935 KB
- steamworks_sdk_117.zip - 36,884 KB
- tuner_documentation-400.1-english.zip - 16,260 KB
- TunerForPlayStation3v400.1.0.exe - 45,305 KB
- VSI2010_PS3_2.0.1.5.zip - 1,489 KB
PlayStation(R)3 Programmer Tool Runtime Library 370.001
* Copyright (C) 2007 Sony Computer Entertainment Inc.
* All Rights Reserved.
*/
#ifndef _TT800_H
#define _TT800_H
/* The algorithm is taken from the following: */
/* C version of TT800 random number generator developed */
/* by M. Matsumoto, email: matumoto[MENTION=8731]math[/MENTION].keio.ac.jp */
/* See: ACM Transactions on Modelling and Computer Simulation, */
/* Vol. 4, No. 3, 1994, pages 254-266. */
// This version supports getting and saving of the state vector
// which is encapsulated in a global structure. Also added functions to
// seed the generator from an integer or array. And to produce output numbers
// scaled into various ranges.
#include
// Returns the address and size (in bytes) of the TT800 state vector.
// This lets you to save and restore the state of the random number generator
// when code is swapped on or off of the SPU. This allows you to unload an SPU applet,
// load it back up later and have it continue from where it left off in the
// random number sequence, rather than having it start from the beginning.
// This is a better, faster and more statistically correct than reseeding the random
// number generator each time the SPU applet is reloaded.
//
// To save the state, call this function to get the address and size of the state
// vector then memcopy or DMA that data to some safe location. To restore it, do
// do the same thing but copy the data into the address provided.
//
// DO NOT use this to seed the generator as you could put in values would cause the
// generator output to be non-random or degenerate to zero. Always use the init_
// functions to seed the generator, they protect against bad seed values.
//
// The internal format of this data may change so avoid putting it in long-term
// storage or making assumptions about it's size/format till the library is finalized.
//
_FUNC_DEF(int, get_state_TT800,(void **state))
{
*state = (void *)&__TT800;
return(sizeof(__TT800));
}
/* initializes TT800 a seed (Needs to be checked) */
// !!!GAC THIS INITIALIZER MAY NOT BE STATISTICALLY SOUND, it didn't come with the generator
_FUNC_DEF(void, init_TT800,(unsigned int s))
{
int i;
unsigned int *p = (unsigned int *)__TT800.State;
for(i=0; i < _N_TT800; i++)
{
*(p++) ^= s;
}
__TT800.Next_Number = 0;
}
/* initializes TT800 an array (Needs to be checked) */
// !!!GAC THIS INITIALIZER MAY NOT BE STATISTICALLY SOUND, it didn't come with the generator
_FUNC_DEF(void, init_by_array_TT800,(unsigned int init_key[], int key_length))
{
int i,j;
unsigned int *p = (unsigned int *)__TT800.State;
for(i=0,j=0; i < _N_TT800; i++, j++)
{
if(j > key_length) j=0;
*(p++) ^= init_key[j];
}
__TT800.Next_Number = 0;
}
// Core random number generator, generates numbers in batches and returns them one at a time.
_FUNC_DEF(unsigned int, rand_int32_TT800,(void))
{
unsigned int y;
static const unsigned int mag01[2]={0x0, 0x8ebfd028 } ; // This is a magic number, do not change
// Do we need to generate a new batch of numbers?
if (__TT800.Next_Number==_N_TT800)
{
// generate _N_TT800 words at one time
int kk;
for (kk=0;kk> 1) ^ mag01[__TT800.State[kk] % 2];
}
for (; kk> 1) ^ mag01[__TT800.State[kk] % 2];
}
__TT800.Next_Number=0;
}
// Get the next available number from the array
y = __TT800.State[__TT800.Next_Number];
// Temper the number using some more magic numbers from Matsumoto's algorithm
y ^= (y 16);
__TT800.Next_Number++;
return( y );
}
/* generates a random number on [0,0x7fffffff]-interval */
_FUNC_DEF(unsigned int, rand_int31_TT800, (void))
{
return (long)(rand_int32_TT800()>>1);
}
/* generates a random number on [0,1]-real-interval */
_FUNC_DEF(float, rand_real1_TT800, (void))
{
return rand_int32_TT800()*(1.0f/4294967295.0f);
/* divided by 2^32-1 */
}
/* generates a random number on [0,1)-real-interval */
_FUNC_DEF(float, rand_real2_TT800, (void))
{
return rand_int32_TT800()*(1.0f/4294967296.0f);
/* divided by 2^32 */
}
/* generates a random number on (0,1)-real-interval */
_FUNC_DEF(float, rand_real3_TT800, (void))
{
unsigned int dr = rand_int32_TT800();
return (((float)dr) + 0.5f)*(1.0f/4294967296.0f);
/* divided by 2^32 */
}
#endif /* _TT800_H */
PlayStation(R)3 Programmer Tool Runtime Library 370.001
* Copyright (C) 2007 Sony Computer Entertainment Inc.
* All Rights Reserved.
*/
#ifndef _TT800_GLOBALS_H_
#define _TT800_GLOBALS_H_
#include
// These are global values and typedefs needed in the tt800 random number generator
// implementation and in the definitions of it's global state vector
#define _N_TT800 25
#define _N_TT800_QWORDS ((25/4)+1)
#define _M_TT800 7
typedef struct
{
// Current batch of TT800 generated numbers
unsigned int State[_N_TT800];
// Next number in the state vector to be returned to the caller
int Next_Number;
} __TT800_State_t;
_C_LIB_DECL
extern __TT800_State_t __TT800;
_END_C_LIB_DECL
find that book
from the book:
[CODE]/* A C-program for TT800 : July 8th 1996 Version */
/* by M. Matsumoto, email: [email]matumoto@math.keio.ac.jp[/email] */
/* genrand() generate one pseudorandom number with double precision */
/* which is uniformly distributed on [0,1]-interval */
/* for each call. One may choose any initial 25 seeds */
/* except all zeros. */
/* See: ACM Transactions on Modelling and Computer Simulation, */
/* Vol. 4, No. 3, 1994, pages 254-266. */
#include
#define N 25
#define M 7
double
genrand()
{
unsigned long y;
static int k = 0;
static unsigned long x[N]={ /* initial 25 seeds, change as you wish */
0x95f24dab, 0x0b685215, 0xe76ccae7, 0xaf3ec239, 0x715fad23,
0x24a590ad, 0x69e4b5ef, 0xbf456141, 0x96bc1b7b, 0xa7bdf825,
0xc1de75b7, 0x8858a9c9, 0x2da87693, 0xb657f9dd, 0xffdc8a9f,
0x8121da71, 0x8b823ecb, 0x885d05f5, 0x4e20cd47, 0x5a9ad5d9,
0x512c0c03, 0xea857ccd, 0x4cc1d30f, 0x8891a8a1, 0xa6b7aadb
};
static unsigned long mag01[2]={
0x0, 0x8ebfd028 /* this is magic vector `a', don't change */
};
if (k==N) { /* generate N words at one time */
int kk;
for (kk=0;kk> 1) ^ mag01[x[kk] % 2];
}
for (; kk> 1) ^ mag01[x[kk] % 2];
}
k=0;
}
y = x[k];
y ^= (y
Isn't this sdk leak just like another update?
Or are devs seeing more potential for an exploit in this leak?