<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35709787</id><updated>2011-04-21T12:27:55.076-06:00</updated><title type='text'>PSP</title><subtitle type='html'>This Blog is only for Developers .....
And If Someone wants to be a PSP Developer ... He/She Can Read my helps...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35709787.post-116218496853593903</id><published>2006-10-29T23:08:00.000-06:00</published><updated>2006-10-29T23:09:28.543-06:00</updated><title type='text'>uFlash Updated for 2.71 SE-B</title><content type='html'>&lt;span style="font-family: DoNotUse;"&gt; -----u Flash-----&lt;br /&gt;Updated for DA 2.71 SE-B and B' and added new futures.&lt;br /&gt;------- First Time it Unassignes your Flash You SomeTimes need to restore to defult------ Dont be scared !!!&lt;br /&gt;--------uFlash v.1.55--------&lt;br /&gt;--------by The Unique Warrior------&lt;br /&gt;- Its for 2.71 SE-B&lt;br /&gt;- Added Reset option for every thing.&lt;br /&gt;- Added a information on each choose for flashing.&lt;br /&gt;- it should be placed in Game folder (if in 1.50 Kernel) or in (GAME150).&lt;br /&gt;&lt;br /&gt;--------uFlash v.1.50--------&lt;br /&gt;--------by The Unique Warrior------&lt;br /&gt;-tried every thing again on the menu.&lt;br /&gt;- added option Flashing registry.&lt;br /&gt;- adeed option Reset to default option.... from flashfiles/registry/&lt;br /&gt;------------------------------------&lt;br /&gt;&lt;br /&gt;--------uFlash v1.0 ----------&lt;br /&gt;---------by The Unique Warrior-----&lt;br /&gt;Futures:&lt;br /&gt;-------------------------------------------------------------------------------------------------&lt;br /&gt;It Can Dump Flash0:/ and Flash1:/ to ms0:/dump/&lt;br /&gt;It can Flash Gamboots, Backgrounds and Fonts... I have tried it many times for your safty.&lt;br /&gt;you can change the background if you want. just name it welcome and put it in uFlash folder&lt;br /&gt;It can Dump your registry file into ms0:/registry .&lt;br /&gt;Start will Toggle USB when pressed in the menu.&lt;br /&gt;Home Will Exit .... From the menu.&lt;br /&gt;--------------------------------------------------------------------------------------------------&lt;br /&gt;Remember:&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Your Flash Dump is only FOR YOUR USE ONLY .&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Thanks to:&lt;br /&gt;Macrike ( the background maker )&lt;br /&gt;ME&lt;br /&gt;ps2dev.org&lt;br /&gt;psp-programming.com&lt;br /&gt;pspupdates.qj.net&lt;br /&gt;&lt;br /&gt;Download it &lt;a href="http://www.sendspace.com/file/15n7l3" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116218496853593903?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://forums.qj.net/f-psp-development-forum-11/t-uflash-updated-for-271-se-b-75992.html' title='uFlash Updated for 2.71 SE-B'/><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116218496853593903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116218496853593903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116218496853593903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116218496853593903'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/uflash-updated-for-271-se-b.html' title='uFlash Updated for 2.71 SE-B'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116164724181133541</id><published>2006-10-23T17:46:00.000-06:00</published><updated>2006-10-23T17:47:21.816-06:00</updated><title type='text'>uFlash [Realesed] v.1.00 GUI</title><content type='html'>Finally I have updated it  &lt;img src="http://forums.qj.net/images/smilies/Punk.gif" alt="" title="Punk" class="inlineimg" border="0" /&gt;  ...... Coz I didn't know a lot about GUI &lt;img src="http://forums.qj.net/images/smilies/Argh.gif" alt="" title="Argh" class="inlineimg" border="0" /&gt;&lt;br /&gt;--------uFlash v1.0 ----------&lt;br /&gt;---------by The Unique Warrior-----&lt;br /&gt;Futures:&lt;br /&gt;-------------------------------------------------------------------------------------------------&lt;br /&gt;It Can Dump Flash0:/ and Flash1:/ to ms0:/dump/&lt;br /&gt;It can Flash Gamboots, Backgrounds and Fonts... I have tried it many times for your safty.&lt;br /&gt;you can change the background if you want. just name it welcome and put it in uFlash folder&lt;br /&gt;It can Dump your registry file into ms0:/registry .&lt;br /&gt;Start will Toggle USB  when pressed in the menu.&lt;br /&gt;Home Will Exit .... From the menu.&lt;br /&gt;--------------------------------------------------------------------------------------------------&lt;br /&gt;Remember:&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Your Flash Dump is only FOR YOUR USE ONLY .&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Thanks to:&lt;br /&gt;Macrike ( the background maker )&lt;br /&gt;ME &lt;img src="http://forums.qj.net/images/smilies/smile.gif" alt="" title="Smile" class="inlineimg" border="0" /&gt;&lt;br /&gt;ps2dev.org&lt;br /&gt;psp-programming.com&lt;br /&gt;pspupdates.qj.net&lt;br /&gt;&lt;br /&gt;here it is : &lt;a href="http://www.sendspace.com/file/96x82f" target="_blank"&gt;uFlash-GUI&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116164724181133541?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116164724181133541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116164724181133541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116164724181133541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116164724181133541'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/uflash-realesed-v100-gui.html' title='uFlash [Realesed] v.1.00 GUI'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116086890213694872</id><published>2006-10-14T17:28:00.000-06:00</published><updated>2006-10-15T00:09:19.756-06:00</updated><title type='text'>The UShell is out now</title><content type='html'>The Ushell is out now :&lt;br /&gt;It play's mp3 located in ms0:/ushell/mp3.mp3&lt;br /&gt;It has a Background changer that remain were ever u go Exept The PSP Counter&lt;br /&gt;TODO:&lt;br /&gt;Fix The Background for counter... and mp3 changing ... USB Actvation and a lot more&lt;br /&gt;U can see the readme file 2....&lt;br /&gt;It can be started on DA 2.71 SE-A&lt;br /&gt;Download it from&lt;a href="http://rapidshare.de/files/36773693/USHELL_v0.10.rar.html"&gt; HERE&lt;/a&gt;.&lt;br /&gt;  Update v0.11 :&lt;br /&gt;fixed the bug for black backgound on mp3 start.&lt;br /&gt;////// and it takes less memory on cash..&lt;br /&gt;download it from :&lt;a href="http://rapidshare.de/files/36795661/UShell_v1.11.rar.html" target="_blank"&gt;http://rapidshare.de/files/36795661/...v1.11.rar.html&lt;/a&gt;&lt;br /&gt;here is a pic from background changing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116086890213694872?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116086890213694872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116086890213694872' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116086890213694872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116086890213694872'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/ushell-is-out-now.html' title='The UShell is out now'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116067148446234109</id><published>2006-10-12T10:43:00.000-06:00</published><updated>2006-10-13T10:38:09.436-06:00</updated><title type='text'>The Eboot Fixer GUI version</title><content type='html'>This is the GUI version of the Eboot Fixer for 2.71 SE-A&lt;br /&gt;U can download it from &lt;a href="http://dl.qj.net/2.71-SE-Homebrew-Fixer-%28cross-platform%29-PSP-Homebrew-Applications/pg/12/fid/10637/catid/151"&gt;here&lt;/a&gt;  : this linke has being UPDATED download again&lt;br /&gt;&lt;br /&gt;If there were any bugs report them to me."Leave Comment"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116067148446234109?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116067148446234109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116067148446234109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116067148446234109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116067148446234109'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/eboot-fixer-gui-version.html' title='The Eboot Fixer GUI version'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116053794308923194</id><published>2006-10-10T21:36:00.000-06:00</published><updated>2006-10-10T21:39:03.096-06:00</updated><title type='text'>Project</title><content type='html'>HELLO EVERY !1:&lt;br /&gt;there is a Project for a psp Shell ..... Something like IrShell under way ... check the blog in the next 72 hours ;).&lt;br /&gt;It has an MP3 Player and a Background Changer .. And Of cource a Timer(AKA Counter on it)..&lt;br /&gt;&lt;br /&gt;............................................................. . . . . . . . .. . .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116053794308923194?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116053794308923194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116053794308923194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116053794308923194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116053794308923194'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/project.html' title='Project'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116034633673494772</id><published>2006-10-08T16:24:00.000-06:00</published><updated>2006-10-10T14:08:27.993-06:00</updated><title type='text'>The PSP counter</title><content type='html'>There is My first program and its a Simple timer.&lt;br /&gt;It Has A Lot Of Changes ... from the 1 in the Tutorial.....&lt;br /&gt;download it &lt;a href="http://rapidshare.de/files/36017989/Counter.rar"&gt;here&lt;/a&gt; This file has been not Deleted yet ~!!!!!&lt;br /&gt;it has source code included ,, so it can help your self 2 ;)&lt;br /&gt;Have Fun.&lt;br /&gt;/* Update */ :&lt;br /&gt;This file has ben updated and it has Restarting and Exiting Madule :&lt;br /&gt;U Can Download it &lt;a href="http://rapidshare.de/files/36255753/Counter.rar.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116034633673494772?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116034633673494772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116034633673494772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034633673494772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034633673494772'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/psp-counter.html' title='The PSP counter'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116034445178626490</id><published>2006-10-08T15:43:00.000-06:00</published><updated>2006-10-08T15:54:11.800-06:00</updated><title type='text'>Tutorial: Lessen3-A Programming Primer</title><content type='html'>The final product of this tutorial will be a program that counts upwards until the user presses a button or until the counter hits a predefined limit. This is the perfect application for this tutorial; it combines several core elements of C programming to create a simple, yet useful result without requiring many program-specific functions. Covered in this tutorial are: variables, if/then statements, loops, text formatting, and button input.First off, we will need to add two more header includes. The first one is to give us a little more control over the screen (we need this for one of the functions we will be using later). The second file we will be including allows us to get button input. So to do add these two files (pspdisplay.h and pspctrl.h), we need to add these two lines right below our first two "#include" statements:&lt;br /&gt;&lt;br /&gt;#include pspdisplay.h&gt;&lt;br /&gt;#include pspctrl.h&gt;&lt;br /&gt;Note: There Has to be Another &gt; at the first of them....... &lt;pspdisplay.h&gt; , &lt;pspctrl.h&gt;.&lt;br /&gt;And that's all the extra setup we need. Now we'll move on to putting in the functional code. From here on, all code listed should go in your main function, replacing the "printf" statement from &lt;a title="Creating Your First Program" href="http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html"&gt;Lesson 02&lt;/a&gt;. The first thing we will do is declare the variables that we will use in our program. A variable declaration takes the following form:&lt;br /&gt;&lt;br /&gt;//EXAMPLE (Psuedo Code)&lt;br /&gt;//DO NOT ADD TO YOUR PROGRAM&lt;br /&gt;type name=value;&lt;br /&gt;&lt;br /&gt;The type is the data type of variable. Each data type can contain data (and only that data). For example, type "int" (meaning integer) can hold any non-decimal number from -32767 to 32767. A "float" is like an "int," but it can hold decimals. The "char" type can hold a letter. For our program, we will only use the built in type "int" and a PSP specific type called "SceCtrlData" which holds the button state of the PSP controls.So, to declare the two variables that we are going to use, we insert the following two lines of code into our program (these should go where your "printf("Hello World.");" line was in &lt;a title="Creating Your First Program" href="http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html"&gt;Lesson 02&lt;/a&gt;; right after the line "SetupCallbacks();."&lt;br /&gt;&lt;br /&gt;int counter = 0;&lt;br /&gt;int i = 0;&lt;br /&gt;SceCtrlData pad;&lt;br /&gt;&lt;br /&gt;So now we have three variables that we can use. Two of type "int," named "counter" and "i," containing a value of zero for now. And one of type "SceCtrlData," named "pad," which is filled with junk at the moment (since we haven't yet initialized it). This is something to keep in mind when writing your own programs. If you declare a variable without initializing it (like our pad variable), it will not just be empty. It will contain the information that was previously in that chunk of memory. Declaring the variable just allocates a certain amount of memory space for the variable to be stored in. The initialization is what clears it out and allows us to use it. The reason that we haven't initialized "pad" at the same time that we declared it is because it wouldn't really make sense. Since it holds button input, you can't just initialize it by typing in a value. We'll initialize it later, before we use it for anything.Now we're going to give the user some instructions. The way we do this is by using "printf" to output a statement to them. So put this after the variable declarations:&lt;br /&gt;&lt;br /&gt;printf("Press [X] To Start the Timer");&lt;br /&gt;&lt;br /&gt; Look familiar? Good. It's the same function we used to output "Hello World" in &lt;a title="Creating Your First Program" href="http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html"&gt;Lesson 02&lt;/a&gt;. So if you ran the program at this point, it would be just like the "hello world" application, except it would print out "Press [X] To Start the Timer" instead of "Hello World."Now we need the program to wait until the user presses the [X] button before it does anything else. Now, this could be a very difficult, nearly impossible thing to do. Fortunately, we have something perfect for dealing with it. It's called a loop. Basically what it does is run through a block of code multiple times. There are different types of loops available to you (for loops, while loops, do while loops, etc), but this tutorial will only introduce two of those loops, the "while" loop and the "for" loop. How this loop works is that you give it a statement, and it will execute a block of code while that statement is true. For example, if you had a block of code that incremented a variable (starting with a value of zero) by one each time the loop was run, and the statement that you passed in the loop was "i&lt;10" it would execute your code ten times, because on the eleventh time that it checked the value of the variable, it would be 10, which is not less than 10, so the statement would be false (man, this is a run on sentence if I've ever seen one). One other important concept that you will need to grasp is that "true" and "false" are synonymous with "1" and "0" respectively.Our loop will not be of the classic form. It could easily be, but I've looked through a handful of PSP projects' code, and they always do it this way, so I figured it would be good to introduce you to the way that you will most commonly see. Anyway, what we will be doing is having an "infinite loop" per say. It's not really infinite though, because (as I so conveniently didn't mention earlier), there is another way to exit a loop other than the control statement returning false. That is the "break" statement. Any time this is encountered, it will exit out of the loop you are currently in and your program will continue executing at the end of that loop. So, here's the start of our loop:&lt;br /&gt;&lt;br /&gt;while(1) {&lt;br /&gt;&lt;br /&gt;As you can see, this control statement will always evaluate to "true," because "1" is the same as "true." So the following code (the lines between the opening bracket and the ending bracket) will execute repeatedly until it encounters a "break" statement.The next line is where we set the value of "pad." It uses a function that is defined in the "pspctrl.h" file that we included earlier. This is a function call, as you saw in &lt;a title="Creating Your First Program" href="http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html"&gt;Lesson 02&lt;/a&gt;, but there's a little bit of a twist. First of all, we are passing two values to it. No big deal here, you just seperate the two values with a comma. The second thing that's a little different is that we are going to pass a variable. Not a big deal here either, just insert the variable name instead of a number or string or whatever. The third thing that's quirky is that we need to pass it with the "&amp;" operator in front of it. This is actually the "address of" operator, and when you get deeper into programming, you will probably get familiar with it. Basically what it does is instead of passing the value of the variable, it passes the memory address. For now, just know that in order for a function to be able to change the value of a variable you pass to it, you need to use the "&amp;amp;" operator. So here's how we'll set "pad" to contain the current status of the PSP controls:&lt;br /&gt;&lt;br /&gt;          sceCtrlReadBufferPositive(&amp;pad, 1);&lt;br /&gt;&lt;br /&gt;If you're wondering what the "1" is for, don't worry about it. It sets the number of buffers to read, but I've only ever seen "1" used there. Honestly, I don't know why you'd want anything else there (if there's a reason, someone please enlighten me, and I can add it here).The next line is an "if" statement. It's how you can program logic into your applications. What it does is execute a block of code "if" a statement evaluates to true. So, what we want to do is "break" out of the loop if the [X] button has been pressed. Which, effectively will "unpause" our program and go on to the next section. If the statement evaluates to false, it will just skip the code, and if there's an "else" statement, execute that block of code, or just go on. We will not have an "else" statement, so it will go through the loop again, continually checking the status of the buttons, and seeing if the [X] button has been pressed. While we're at it, we'll close our loop by ending an ending bracket.&lt;br /&gt;&lt;br /&gt;          if(pad.Buttons &amp; PSP_CTRL_CROSS) {&lt;br /&gt;                    break;         &lt;br /&gt;                                 }&lt;br /&gt;}&lt;br /&gt;The statement in the "if()" translates to English as "if the [X] button is pressed." So if that button is pressed, it will break, if not, it will just continue going through the loop. Now on to the counter.After they press the [X] button, we want to start a counter that will go until the user presses the [O] button. So what do we do? You guessed it, another loop! So we'll start this loop, and add in the exit code (with the substitution of "PSP_CTRL_CIRCLE" for "PSP_CTRL_CROSS").&lt;br /&gt;&lt;br /&gt;while(1) {&lt;br /&gt;         sceCtrlReadBufferPositive(&amp;pad, 1);         &lt;br /&gt;if(pad.Buttons &amp; PSP_CTRL_CIRCLE) {&lt;br /&gt;                   break;         &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now, we need to use a new function. What it does is clear the screen. Since we still have the "Press [X] To Start the Timer" on the screen, we need to erase that. Plus, the next time the loop rolls around and this code is executed, there will be the text that we're going to print out on the screen. We need to clear this off. So here's how we do it:&lt;br /&gt;&lt;br /&gt;          pspDebugScreenClear();&lt;br /&gt;&lt;br /&gt;This will clear off the screen, so now we're ready to print out our counter (and tell the user how they can stop the counter and exit the program).The first line should look familiar. It's just a simple "printf" statement. The one thing that may look a little weird to you is the "\n" at the end of the string. "\n" is a special character that stands for a new line. So the new line character is the equivelant of pressing "ENTER" on your keyboard. The second "printf" statement is just a bit different. We need it to print out our "counter" variable. To do this, we will use the "%" operator. Basically this signifies that you want to display a variable, and the character that follows it tells the program what type of variable. For an integer, we will use "i" (integer; get it?). The second parameter that we will pass is which variable we want it to print. In our case, we want to pring the "counter" variable. So put these two lines in your program:&lt;br /&gt;          printf("Press [O] To Stop the Timer\n");&lt;br /&gt;         printf("Counter: %i", counter);&lt;br /&gt;&lt;br /&gt;Now we need to increase our counter by one so that the next time through the loop, the number displayed is one higher. It wouldn't really be a counter if we didn't do this, now would it? We could do this in one of two ways. The first, less commmon way to do this would be by setting "counter = counter+1;" this works perfectly well, but there is an easier way. To increment a variable by one, just use the "++" operator:&lt;br /&gt;&lt;br /&gt;          counter++;&lt;br /&gt;&lt;br /&gt;It does the same thing as "counter = counter +1;" but it's a bit more elegant, don't you think?Now we need to insert a short pause to make the "HOME" button work. Here we will be utilizing a "for" loop. This loop is just a tad bit different than the "while" loop. It takes three parameters. The first is the initialization; it will set the variable for the start of the loop. The second is the control statement, which does the same thing as the control statement in the "while" loop. And the third is what you want to happen to your variable at the end of each loop.&lt;br /&gt;&lt;br /&gt;          for(i=0; i&lt;5; i++) {&lt;br /&gt;                   sceDisplayWaitVblankStart();&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;This will execute our line of code 5 times (when i = 0, 1, 2, 3, and 4).And finally, we need to end the code block that the loop runs through with a simple ending bracket:&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; Now for the final little bit. This is the code that will run after the "break" statement executes. We want to display a simple message, and the final count of our counter. So we'll clear the screen and use two more "printf" statements like we did in the loop, but with different text. Add:&lt;br /&gt;&lt;br /&gt;pspDebugScreenClear();&lt;br /&gt;printf("Counter Finished.");&lt;br /&gt;printf("Final Count: %i", counter);&lt;br /&gt;&lt;br /&gt;And we're done with our code! Now for a couple of cosmetic changes from &lt;a title="Creating Your First Program" href="http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html"&gt;Lesson 02&lt;/a&gt;.The Makefile needs to be changed to reflect our new program. Go into it and change the title to one that you think suits the new program. I named mine "Counter Program." And also change your target to "count." Now go ahead and build your program, and give it a test run. You should now have the basic skills you need to create your own programs (text based ones at least). You can check out some other C programming tutorials for information on how you can use more complex logic structures (if/if else/else), loops, functions, pointers, etc. There are a few differences with programming for the PSP, but the basic stuff is all straight-up C. Good luck, and have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116034445178626490?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116034445178626490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116034445178626490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034445178626490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034445178626490'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen3-programming-primer.html' title='Tutorial: Lessen3-A Programming Primer'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116034321348443566</id><published>2006-10-08T15:17:00.000-06:00</published><updated>2006-10-11T14:14:29.250-06:00</updated><title type='text'>Tutorial: Lessen2-Creating Your First Program</title><content type='html'>&lt;font&gt;So, after reading Lesson 01, you have a working development environment in which to create your programs. Now what? Well, this is the part you've all been waiting for, your very first program for the PSP. This tutorial will explain the basics of the C programming language and build the foundation upon which you will build your kingd-- err... programs.We're going to create a folder hierarchy to organize our projects. Open up a CYGWIN bash shell, and type "mkdir projects" and then hit enter. This command ("mkdir") stands for "make directory" and it will create a directory, or folder, in your current operating directory. So now we have a new folder for all of our projects, navigate into it by typing "cd projects" and hitting enter. Now we are going to create another directory for this specific project. Type "mkdir helloworld" and hit enter. Now switch into the new directory with "cd helloworld."&lt;br /&gt;&lt;br /&gt;The next step is to open up a text editor. It doesn't really matter what you open, it can be Notepad, Wordpad, whatever you want. I prefer using an editor that is dedicated to editting C/C++ source code because of the syntax highlighting options that are built in (I use&lt;a href="http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe"&gt; Dev-C&lt;/a&gt;++), but honestly, it doesn't matter (so long as you know how to use it).Now, create a new file and call it "main.c" in our "helloworld" directory. This is going to contain the source code for our program. For those of you who don't know what source code is (and I know there will be a few), the source code is what we write to create a program. It is written in a way that humans can understand. In most languages, the source needs to be converted to a format the computer (or in our case, the PSP) can understand. These are called compiled languages, and C and C++ fall into this category (the conversion is done by the compiler that we set up in Lesson 01). There are a few other programming languages that use what is called an interpreter to interpret the source code and send out machine code on the fly. These are called scripting languages (an example of a scripting language is PHP).Alright, so we have a new file that is going to hold our source code. Now we need to start writing it. The first part of the program should contain comments to tell anyone reading our code what the aim of the program is, when it was written, and who the author is. Comments are lines of source code that are omitted from the compiled binary (or skipped by the interpretter in scripting languages). Comments are a very important part of your code, because when you (or someone else) come back to edit your source code later, you will not remember all of the intricacies of the program. So, you can leave yourself notes in the form of comments. Comments are signalled with the "//" and "/*" characters. Any time you see a "//" it means that the rest of the line will be a comment. A "/*" means that the compiler (or interpretter) will ignore your code until it reaches a "*/" signal. Comments signalled by the "/*" operator can span many lines, but comments signalled with "//" only comment out the rest of that line.So, to start off our program, we are going to leave a comment at the top about what it does, when it was created, and who it was written by.&lt;br /&gt;// Hello World - My First App for the PSP/*&lt;br /&gt;This program was created by (Your Name Here) on (Date Here) It is a simple "Hello World" Application.*/&lt;br /&gt;&lt;br /&gt;The next portion of the program is where we tell the compiler which header files and which include files we are going to use in our program. Basically what the "#include" directive does is copy the code from the file you pass to it into the top of your program. This allows you to keep your program simple, while still using the advanced code that is already written for you. The include directive can include either header files that came with the compiler (or that you add to the compiler), or header files specific to the specific project that you are working on. The way that you discern which of these you are including is by whether you use "&lt;&gt;" to enclose the file or if you use quotes to do it. The less than and greater than signs include a file from the compiler's "include" directory, and the quotes include a file from the same directory as the file including them. We will be including two files in our program. The first is "pspkernel.h." This file will be included in every single program that you write for the PSP. It contains all of the code specific to your PSP. Your program will not work on the PSP if you do not include this file. The second file we are going to include is "pspdebug.h." This file contains several useful functions for debugging your programs, but specifically it includes the function that we are going to use to write text to the screen. So, add this code to your program:&lt;br /&gt;&lt;br /&gt;#include  pspkernel.h&gt;&lt;br /&gt;#include  pspdebug.h&gt;&lt;br /&gt;&lt;br /&gt;Note: There should be another &lt;&gt; , &lt;pspkernel.h&gt;.&lt;br /&gt;Next we tell the PSP a little bit about the program. This isn't really that important, your program will compile without it, but it is always a good idea to keep it in (if only for forwards compatibility). The first attribute is the name of the program, but it's not really the name of the program that will appear (we'll change that later). The other values are other attributes (just leave it alone), major version, and minor version. We'll just leave all of these except for the name as the defaults. So, add the following line to your program:&lt;br /&gt;PSP_MODULE_INFO("Hello World", 0, 1, 1);&lt;br /&gt;&lt;br /&gt;Now we are going to set up the function that we will use to write to the screen. This step is optional, but it makes writing text based programs much easier. The basis behind this line is to change the function that is built into the PSP, called "pspDebugScreenPrintf" into something that's much easier to type. This function is used to write to the screen (which you will see later). What we are basically going to do here is rename&lt;br /&gt;"pspDebugScreenPrintf" to "printf." So every time we use "printf" from now on, the compiler will just treat it as if we have typed "pspDebugScreenPrintf." Here's how we'll do it; we'll define "printf" as "pspDebugScreenPrintf" like this:&lt;br /&gt;&lt;br /&gt;#define printf pspDebugScreenPrintf&lt;br /&gt;&lt;br /&gt;Ok, I have some bad news and some good news. The bad news, the next block of code is pretty complicated. The good news, you don't need to understand it. Here's a brief explanation of what it does (we'll leave the actual syntax and line-by-line explanation until later). Basically what this block of code contains is functions that will be called in our program. The functions will set up your program to run on the PSP and allow you to not worry about your PSP freezing or exiting the game when you don't want it to. Put this block into your program:&lt;br /&gt;/* Exit callback */&lt;br /&gt;int exit_callback(int arg1, int arg2, void *common) {&lt;br /&gt;sceKernelExitGame(); return 0;}&lt;br /&gt;/* Callback thread */&lt;br /&gt;int CallbackThread(SceSize args, void *argp) {&lt;br /&gt;int cbid;&lt;br /&gt;cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid);&lt;br /&gt;sceKernelSleepThreadCB();&lt;br /&gt;return 0;}&lt;br /&gt;/* Sets up the callback thread and returns its thread id */&lt;br /&gt;int SetupCallbacks(void) {&lt;br /&gt;int thid = 0;&lt;br /&gt;&lt;br /&gt;thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0); if(thid &gt;= 0) {&lt;br /&gt;sceKernelStartThread(thid, 0, 0);&lt;br /&gt;}&lt;br /&gt;return thid;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, we are going to define the "main" function. Each program in C and C++ needs a main function. This is where the code is executed from. C (and some of C++) functions in the proceedural paradigm. This means that the code goes in a linear path. For example, if you have the following code:&lt;br /&gt;&lt;br /&gt;//Do not put this in your program.&lt;br /&gt;//It is an example.&lt;br /&gt;int myFunction() {&lt;br /&gt;//Print Out 'A'&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;int main() {&lt;br /&gt;//Print Out 'B'&lt;br /&gt;myFunction();&lt;br /&gt;//Print Out 'C'&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Where the comments (see above if you don't remember what comments are) do what they say. The program would print out 'B' then it would print out 'A' then 'C' because the compiler starts in the main function. It prints out 'B' then it sees the call to "myFunction" which is defined above it, and goes there, sees that it needs to print out 'A' and then returns to where it left off and prints out 'C.' All of your programs (until you get to advanced C++) will follow this linear structure. So, the "main" function is vital to your program. To define a function, you use the following structure: "[return type] [function name]() {". The return type is what the function will send back to the program. For "main" this should always be of type "int" (which stands for integer). The function name is your name for the function, "main" will obviously be named "main." So, define your function by putting the following line in your code:&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;&lt;br /&gt;Now we need to add two lines to set up the screen and to use those functions that we put in earlier (which you didn't need to know how they worked). Even though you don't need to know how those functions worked, it is important to grasp the concept of how to call functions. It is actually very simply. You just put the function name with parenthesis at the end (and if it takes any parameters, you put those in the parenthesis, but we'll cover that later). Every line in your program will need a semicolon at the end. The reason for this is because the compiler does not see any white space. Between lines, you could have 100 empty lines, and the compiler wouldn't care. This is useful because it allows you to format your code how you want, in a way that you can understand. You can group lines together, or do whatever you want with your white space. But, in turn, to end a line, you need a semicolon. So add these two lines to your program to set it up:&lt;br /&gt;&lt;br /&gt;pspDebugScreenInit();&lt;br /&gt;SetupCallbacks();&lt;br /&gt;&lt;br /&gt;Now it's time to write some code that we will actually be able to see the results of. Remember when we defined "pspDebugScreenPrintf" as "printf?" Well, now it's time to use that function. The way that we will print text to the screen is by calling the "printf" function with a parameter (I told you we'd cover it later.) A parameter is a variable that you can pass to a function for it to use. These will come in handy later when you're writing your own functions. So, for "printf" to output to the screen, we need to pass a string to it. We will output "Hello World" by passing that string to the function. "Printf" is a powerful function because you can also use it to output other variables to the screen. We would pass these as other parameters, but that will all come in due time. For now, we will just print out "Hello World" to the screen, like so:&lt;br /&gt;&lt;br /&gt;printf("Hello World");&lt;br /&gt;&lt;br /&gt;And there it is, you have told "printf" to output to the screen. Now we just need to finish some things up and then our source code will be ready to build. We need to pause our program so that we can see the output. If we don't, it will just either freeze, or return you to the PSP Menu. You will never even get to see your beautiful phrase outputted to the screen because it will be erased so fast. So, add this line to pause the program until the "Home" button is pushed and the user is sent back to the PSP Operating System.&lt;br /&gt;&lt;br /&gt;sceKernelSleepThread();&lt;br /&gt;&lt;br /&gt;Now we need to give our function a return value, since when we defined it ("int main()"), we told the compiler that it would return an integer. So just return a '0' (that's a zero, not a capital 'o') by doing this:&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;&lt;br /&gt;And finally, end the function by putting in a closing bracket:&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;And that's it for the program! Now we just have to tell the compiler how we want this project compiled by creating a Makefile. So create a new file called "Makefile" with no extention (ie, no .txt). Once you've done this, open it up in your text editor.Put the following in your Makefile:&lt;br /&gt;TARGET = hello&lt;br /&gt;OBJS = main.o&lt;br /&gt;&lt;br /&gt;CFLAGS = -O2 -G0 -Wall&lt;br /&gt;CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti&lt;br /&gt;ASFLAGS = $(CFLAGS)&lt;br /&gt;&lt;br /&gt;EXTRA_TARGETS = EBOOT.PBP&lt;br /&gt;PSP_EBOOT_TITLE = Hello World&lt;br /&gt;&lt;br /&gt;PSPSDK=$(shell psp-config --pspsdk-path)&lt;br /&gt;include $(PSPSDK)/lib/build.mak&lt;br /&gt;&lt;br /&gt;You can use this Makefile as a basis for all of your simple projects.&lt;br /&gt;Sometimes you will need to add libraries or whatnot to this file, but for now it is fairly simple. It basically just tells your compiler to take "main.c" and build it using the PSPSDK into a .pbp file that your PSP can read. What you will need to change if you use this Makefile in other projects is where it says "PSP_EBOOT_TITLE = Hello World." You can change where it says "Hello World" to the title of your program, this is the name that will appear on the PSP Game Menu when you select the file.Now open up a CYGWIN Bash Shell and "cd" into your "projects/helloworld" directory. Type "make" and your shell should output some stuff to you. It will tell you if your source code had any errors that made it uncompilable. Generally, if it gives you a few warnings, it's not a big deal. Errors are what you want to watch out for, warnings are just possible points that could cause bugs. Note: if you have Firmware Version 1.50, you can automatically generate your two folders by typing "make kxploit" instead of "make."If you didn't have any errors, congratulations! You have successfully created and compiled your first application for the PSP. I'll bet you're dying to test it out. So, put "C:/cygwin/home/yourUserName/projects/helloworld/EBOOT.PBP" on your PSP just like you would any other hombrew applications, and try it out for yourself!Check out Lesson 03 to learn more about programming for the PSP, such as if/then statements, variables, loops, and button input.&lt;/pspkernel.h&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116034321348443566?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116034321348443566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116034321348443566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034321348443566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034321348443566'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/tutorial-lessen2-creating-your-first.html' title='Tutorial: Lessen2-Creating Your First Program'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116034174815619743</id><published>2006-10-08T15:04:00.000-06:00</published><updated>2006-10-11T14:06:42.446-06:00</updated><title type='text'>Tutorial: Lesson 1- Setting up the Development Environment</title><content type='html'>This is the first installment in a series of tutorials focussed on getting a novice programmer well on his way to developing his own homebrew applications for the Sony Playstation Portable (PSP). If you are reading this, congratulations, you have hurdled one of the biggest obstacles for a programmer. Likely the most difficult thing about programming is getting started. Well, by starting to read this tutorial, you are well on your way.&lt;br /&gt;&lt;br /&gt;The first step to creating your own program is getting your environment set up. This environment is how you will convert the source code you write into a compiled file formatted for execution on you PSP. We will be setting up two important tools on our system.&lt;br /&gt;&lt;br /&gt;The first of these tools is called CYGWIN. It is basically a Linux emulator for windows. It will create a simulated Linux environment on your computer so that you can run native Linux applications. This may sound intimidating, but don't worry, it's very simple to use.&lt;br /&gt;&lt;br /&gt;The second thing you'll need is the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;. This is the key to programming for the PSP. It will set up everything you need, from header files, to libraries, to the compiler itself, to the sample programs. Once you have this installed, you will be nearly ready to create your first program.&lt;br /&gt;&lt;br /&gt;Now for the part we've all been waiting for: the installation.&lt;br /&gt;&lt;br /&gt;The first step is to install CYGWIN. You can download the install file from the CYGWIN website&lt;a href="http://www.cygwin.com/setup.exe"&gt; here&lt;/a&gt;. After it has finished downloading, open up the executable. You will see a splash screen; click next. Now you will be asked what you want to do. Select the default option of "Install from Internet," and hit the next button. Now you will be prompted where you want to install CYGWIN. Change the install directory to "C:/cygwin" if it is not set as such already (where C: is your local hard drive). Leave the other options set to their defaults and hit next. Now you will be asked where you want to save the installation files. What you select here doesn't really matter, but I suggest putting them someplace where you will be able to find them and delete them after the installation is complete. Once you have selected a suitable location, click next. The next screen will ask about your network settings, if you don't use a proxy (or don't know what a proxy is), just click next on this screen. If it doesn't work, go back and try letting it use Internet Explorer's settings. Now you should be presented with a list of servers to download the installation files from. Any one of these will do, so select one, and then click on next. Now it will download the package list, this could take a few minutes, depending on your connection speed. Once it is done, scroll down to "devel" and click on where it says "default" so that it becomes "install." Then scroll down to "web," click the "+" next to it, scroll down and set "wget" to "install."&lt;br /&gt;&lt;br /&gt;When you are finished, click next. CYGWIN will now download and install the selected packages. This will quite possibly take a while, so go watch a TV show or do some web surfing while you wait. After the install has finished, you are ready to install the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now, we are going to install the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt; into our CYGWIN environment. To set up our environment, we will need to run CYGWIN first. So, either from the start menu, or from "C:/cygwin," run a CYGWIN bash shell (cygwin.bat). This will open up a command line. Once you see "yourusername@yourcomputername ~" you may close the window; your environment has successfully set up. To download the latest &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;, go &lt;a href="http://ps2dev.org/psp/Tools/Toolchain/"&gt;here&lt;/a&gt;. It should be at the top one. At the time of writing, the latest &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt; file is dated 20051202. Download this file. When it is finished, use Winrar to extract the file contents to "C:/cygwin/home/user," where "user" is your username.&lt;br /&gt;&lt;br /&gt;Now it's time to actually install, so open up your CYGWIN bash shell again. Now it's time to introduce you to the Linux command line. You should see a "$" at the beginning of the line. This means that you are running the shell in user mode, as opposed to root (or admin) mode. This is of little importance in CYGWIN, but if you ever use an actual Linux command line, this is an important thing to notice.&lt;br /&gt;&lt;br /&gt;We now need to change directories to where we extracted the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;. Type "ls" in the bash shell; this stands for list. It will give us an output of all of the files in our current directory (this is similar to "dir" in a Windows command line). Now you should see a folder named "psp&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;," this is where we want to go. So type "cd psp&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;" and hit enter. CD stands for change directory, and it will (obviously) switch the current operating directory). Now do a quick "ls" again, and you will see the files in this folder. The one that we are going to use to set everything up is "&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;.sh."&lt;br /&gt;&lt;br /&gt;Due to a recent problem with the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;, we need to update everything, so to get the updates and have them modify the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt; script, you will need to type "svn update" and hit enter.&lt;br /&gt;&lt;br /&gt;After that is finished, execute the updated script by typing "./&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;.sh" and hitting enter. In Linux, "." means the current directory, and ".." means the parent directory, so this command means to execute "&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;.sh," which is in the current directory. The &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;.sh script will do the rest, for you. This can take up to several hours, depending on the specifications of your machine. For a frame of reference, my 3.0GHz Pentium 4 took about three hours to run the entire script, so be patient. Some people have reported it taking over 24 hours, but this is a little overkill. Go take a break and come back in a few hours. Or better yet, let it go while you sleep and when you wake up in the morning you should be ready for the next step.&lt;br /&gt;&lt;br /&gt;Now for the last step. We have to tell CYGWIN where it can find the PSPSDK (which the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt; just installed) and the &lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;toolchain&lt;/span&gt;. To do this, we need to change "C:/cygwin/cygwin.bat" to include the paths. So, close CYGWIN, and navigate Explorer to "C:/cygwin" and right click on cygwin.bat. Select "Edit" and a Notepad window should appear with the following (you'll need to replace all instances of "C:" with "D:" or "E:" or "_:" if you installed CYGWIN on a drive other than your "C:" drive):&lt;br /&gt;@echo off&lt;br /&gt;&lt;br /&gt;C:&lt;br /&gt;chdir C:\cygwin\bin&lt;br /&gt;&lt;br /&gt;bash --login -i&lt;br /&gt;&lt;br /&gt;Change this to:&lt;br /&gt;@echo off&lt;br /&gt;&lt;br /&gt;C:&lt;br /&gt;chdir C:\cygwin\bin&lt;br /&gt;&lt;br /&gt;set path=%path%;C:/cygwin/usr/local/pspdev/bin&lt;br /&gt;set PSPSDK=C:/cygwin/usr/local/pspdev&lt;br /&gt;&lt;br /&gt;bash --login -i&lt;br /&gt;Now you're ready to go! If you have source code that you want to compile, go into that directory with "cd" and type "make" and it should give you an eboot.pbp that you can put on your PSP. If not, check out Lesson 02 to learn how to create your own simple application for the PSP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116034174815619743?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116034174815619743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116034174815619743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034174815619743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034174815619743'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/tutorial-lesson-1-setting-up.html' title='Tutorial: Lesson 1- Setting up the Development Environment'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35709787.post-116034110885102665</id><published>2006-10-08T14:56:00.000-06:00</published><updated>2006-10-08T14:58:28.856-06:00</updated><title type='text'>Psp Developers!!!!!</title><content type='html'>This Blog is created by The.Unique.Warrior..... TO:&lt;br /&gt;Discuss problems of the PSP Hombrew Developing and compiling each othe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35709787-116034110885102665?l=pspdeveloping.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pspdeveloping.blogspot.com/feeds/116034110885102665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35709787&amp;postID=116034110885102665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034110885102665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35709787/posts/default/116034110885102665'/><link rel='alternate' type='text/html' href='http://pspdeveloping.blogspot.com/2006/10/psp-developers.html' title='Psp Developers!!!!!'/><author><name>The Unique Warrior</name><uri>http://www.blogger.com/profile/12525100686353110022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
