kgsws Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 24. 1 -------------- Instalace z částí: http://xorloser.com/PSPDevWin32.zip rozbalte, instalovat na disk C (jinde muj update nepojede dobře) vysledna složka by měla byt C:/pspdev niní stahněte muj plus pack http://zdoom.ic.cz/pspdev-kg.rar a rozbalte ho přesně do složky PSPDEV, pokud udělate něco špatně nepujde to :lol: spusťte run.bat, tim se pusti přikazovej řadek z přidavnym nastavenim pro PSP složky ... (a zobrazi se little help) Doporučuju po přečtení jedné "lekce" tutoriálu něco vyskoušet (upravit) a pak teprve pokračovat z další Začneme prvním tutoriálem ... pro vstup do složky napsat "CD HelloWorld" a potom pro převedení do EBOOT.PBP napsat "MAKE" Vysvětlení: na začátku sou knihovny pro určitý funkce // za tyto znamynka se pišou kometnaře /* nebo za tohle a plati to dokud se to neoběvi znova (obraceně) */ #include <pspkernel.h> //to se nevyužije #include <pspdebug.h> //pro psaní textů #include <pspdisplay.h> //žeby display? #include <pspctrl.h> //klavesy, 4 lekce #include <stdio.h> //nějaky ty funkce pro text #include <stdlib.h>//to samy následuje identifikace programu, místo "HeWo" může být jakejkoliv text PSP_MODULE_INFO("HeWo", 0, 1, 1); define, zkrácení, místo pspDebugScreenPrintf budeme psát printf #define printf pspDebugScreenPrintf Exit Callback, určí co se má stát když po zmáčknutí HOME se odpoví YES int exit_callback(int arg1, int arg2, void *common) { sceKernelExitGame(); // Tohle se stane po "YES" teď to znamená konec. return 0; } int CallbackThread(SceSize args, void *argp) { int cbid; cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); return 0; } int SetupCallbacks(void) { int thid = 0; thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) { sceKernelStartThread(thid, 0, 0); } return thid; } funkce MAIN která už obsahuje náš program int main() { SetupCallbacks(); //nastaveni ExitCallbacku pspDebugScreenInit(); //zapnuti textu printf("Hello World?\nNo ja myslim ze jo\n"); //tohle napíše, "\n" je skok na další řádek, když něco začíná znakem \ bere se to jako speciální znak, proto pokud chcem vypsat tenhle znak, musí se zapsat 2x zasebe. sceKernelSleepThread(); //čeká ... jedině na konec hry ... return 0; // navratova hodnota, niní se nebude řešit } lehký ne? no testnite to na PSP Druhej tutoriál ... Vylepšený HelloWorld ... (ve složce HelloWorld-Barvy) Vysvětlím jen nový funkce. Celá tato část vytvoří barevnou, nadpisovou linku, uvidíte v PSP printf(" "); color(0x00FFFF); //změní barvu textu, HEX číslo naopak - po dvou (Modrá)(Zelená)(Červená) backcolor(0xFF0000); //změní barvu pozadí printf(" Barevny HelloWorld "); color(0xFFFFFF); backcolor(0x000000); printf("\n"); Ještě jedna nová věc (dvě?) sceKernelDelayThread(1000*1000); //čekání v mikrosekundách (celkem 1 sekunda) gotoXY(20,5) //přesun kurzoru na tuhle souřadnici, nasledujici psani bude od tam Toť vše, jednoduchý? No já myslim že jo. 3ti tutoriál (ve složce promeny) Práce z proměnýma, podmínkama a cyklama, dost důležitá věc. Do proměné můžeme uložit hodnotu (číslo, text) podle typu, niní bude proměná typu INT (což je číslo) int cislo; //vytvoříme novou proměnou, ze začátku má hodnotu 0 Cyklus + podmínka while(cislo!=14) { //začátek cyklu, to co je mezi { a } se bude opakovat dokud platí to v závorce (cislo se nerovná 14) cislo++; //niní se k číslu přičte 1 (důležitý, kdyby se nepřičítalo, číslo by nikdy nebylo 14 a cyklus by jel pořád a nešel by vypnout) if(cislo==5) color(0x0000FF); else color(0xFFFFFF); //podmínka, pokud se cislo rovna 5 tak se splní první příkaz, pokud ne splní se druhej printf("Ted je cislo: %d\n",cislo); //vypíše text, %d bude nahrazeno obsahem proměné číslo } //to co nasleduje dál se už nebode opakovat Výsledek? to je snad jednoduchý ... testujte Pozor, nepleťte si cislo=1 a cislo==1 ! cislo=1 nastaví proměnou na číslo 1 cislo==1 otestuje jestly se rovná 1 4 tutorial, tlačítka ... na to je speciální proměná nemá smysl ji rozebirat SceCtrlData pad; Upravíme co se stane po odpovězení na "YES" protože ukončení hry v cyklu může dělat problémy int exit_callback(int arg1, int arg2, void *common) { konec=1; //proč 1? sledujte cyklus while(konec==0) (dokud se konec rovna 0) po odpovězeni "YES" se konec=1 a cyklus se ukončí return 0; } cyklus, podmínky známe (pouze se mění obsah podmínky) while(konec==0) { //opakuje se dokud číslo v proměné konec nebude jiný než 0 sceCtrlReadBufferPositive(&pad, 1); //zjištění stavu kláves gotoXY(0,3); if(pad.Buttons & PSP_CTRL_CROSS) printf("Krizek : ON \n"); else printf("Krizek : OFF\n"); if(pad.Buttons & PSP_CTRL_CIRCLE) printf("Kolecko : ON \n"); else printf("Kolecko : OFF\n"); if(pad.Buttons & PSP_CTRL_SQUARE) printf("Ctverec : ON \n"); else printf("Ctverec : OFF\n"); if(pad.Buttons & PSP_CTRL_TRIANGLE) printf("Trojuhelnik : ON \n"); else printf("Trojuhelnik : OFF\n"); if(pad.Buttons & PSP_CTRL_UP) printf("Nahoru : ON \n"); else printf("Nahoru : OFF\n"); if(pad.Buttons & PSP_CTRL_DOWN) printf("Dolu : ON \n"); else printf("Dolu : OFF\n"); if(pad.Buttons & PSP_CTRL_LEFT) printf("Doleva : ON \n"); else printf("Doleva : OFF\n"); if(pad.Buttons & PSP_CTRL_RIGHT) printf("Doprava : ON \n"); else printf("Doprava : OFF\n"); if(pad.Buttons & PSP_CTRL_LTRIGGER) printf("L : ON \n"); else printf("L : OFF\n"); if(pad.Buttons & PSP_CTRL_RTRIGGER) printf("R : ON \n"); else printf("R : OFF\n"); if(pad.Buttons & PSP_CTRL_START) printf("START : ON \n"); else printf("START : OFF\n"); if(pad.Buttons & PSP_CTRL_SELECT) printf("SELECT : ON \n"); else printf("SELECT : OFF\n"); sceKernelDelayThread(100*1000); } 25. 1 -------------- Balíček http://zdoom.ic.cz/pspdev-kg-5-6.rar rozbalte přímo do složky C:\pspdev\zdrojaky 2D grafika ... (ve složce 2Dgraf) nový funkce pro vložení pixelu z určitou barvou na souřadnici x,y void putpixel(int x,int y,int barva) { if(x<0||x>479||y<0||y>271) //omezi psani pixelu mimo display { return; //je mimo, návrat bez vložení pixelu } u32 *address=VRAM+((((512)*1)*y)+x); //pracuje se z video pamětí *address=barva; } čára z jednoho bodu (x0,y0) do druhýho (x1,y1) z barvou void line(int x0,int y0,int x1,int y1,int barva) //nemá cenu rozebírat { int dy = y1 - y0; int dx = x1 - x0; float t = (float) 0.5; putpixel(x0,y0,barva); if( dy == 0 && dx == 0 ) return; if (abs(dx) > abs(dy)) // slope < 1 { float m = (float) dy / (float) dx; t += y0; dx = (dx < 0) ? -1 : 1; m *= dx; while (x0 != x1) { x0 += dx; t += m; putpixel(x0,(int)t,barva); } } else { float m = (float) dx / (float) dy; t += x0; dy = (dy < 0) ? -1 : 1; m *= dy; while (y0 != y1) { y0 += dy; t += m; putpixel((int)t,y0,barva); } } } kruh ze středem v bodě x,y z poloměrem a z barvou void circle(int xcenter,int ycenter,int radius,int barva) //nema cenu rozebirat { int x=0; int y=radius; int p=3 - 2 * radius; while(x <= y) { putpixel(xcenter+x,ycenter+y,barva); putpixel(xcenter-x,ycenter+y,barva); putpixel(xcenter+x,ycenter-y,barva); putpixel(xcenter-x,ycenter-y,barva); putpixel(xcenter+y,ycenter+x,barva); putpixel(xcenter-y,ycenter+x,barva); putpixel(xcenter+y,ycenter-x,barva); putpixel(xcenter-y,ycenter-x,barva); if(p < 0) p += 4 * x++ + 6; else p += 4 * (x++ - y--) + 10; } } výslednej obrázek pomocí funkcí line(0,0,479,271,0x00FFFF); //z levýho horního rohu do pravýho spodního line(0,271,479,0,0x00FFFF); //z levýho spodního rohu do pravýho horního circle(239,135,50,0xFFFF00); //kruh ve středu displaye o průměru 50 pixelů putpixel(239,135,0x00FF00); //pixel ve středu kruhu (je tam ale je hůř vidět) Zobrazení grafu funkce ... (ve složce grafgen) Vytvoří čtvercovou síť v pozadí. jak? kdo nechápe, návrat do "lekce" 3! //vertikální čáry while(x!=48) { x++; line(x*10-1,0,x*10-1,271,0x002200); } //horizontální čáry while(y!=27) { y++; line(0,y*10-4,480,y*10-4,0x002200); } cyklus pro počítání ke každýmu X jedno Y while(x!=480) { x++; xx=x-239; //uprava, aby to začlo od -238 na prvním sloupci displaye y=(xx*xx*xx)/5000; //jednoduchá funkce X na třetí (a dělení pro lepší zobrazení) putpixel(x,271-(y+135),0x00FF00); } 28.1 -------------- Přehrávání zvuku wav, hodí se pro kratky zvukovy efekty (do menu, her) http://zdoom.ic.cz/pspdev-kg-7.rar rozbalte přímo do složky C:\pspdev\ 7 "lekce" ve složce "wav" pokud by vám tato lekce nešla zkompilovat (bezezměn) tak to neni vaše chyba ale moje, napište na fórum kdyžtak. přibila nová knihovna knihovna #include "../wav-knihovny/wavloader.h" //umožní používat wav funkce nový typ proměné char soubor[256]; // text o velikosti MAX 255 znaků (ano 255 NE 256!) kód z vysvětlením sprintf(soubor,"wav.wav"); // napíše text ale do textové proměné soubor (info: dá se použít %d z lekce 3) WAV_Init(); //inicializace zvuku printf("nacitani zvuku ...\n"); WAV* zvuk1 = WAV_Load(soubor); //načte data zvuku ze souboru do proměné typu WAV (* znamená ukazatel, nemá cenu zatím rozebírat) sceKernelDelayThread(1000*1000); printf("Prehravani ...\n"); WAV_Play(zvuk1); //pustí zvukový data z proměné zvuk1 sceKernelDelayThread(3000*1000); printf("Ukoncovani ...\n"); WAV_Unload(zvuk1); //uvolní data zvuku z RAM, po tomhle nezle znova přehrát (neměl by, netestoval sem) WAV_End(); //vypne zvuk možná ste si všimli že tam vůbec neni exit callback ... ano, zde není potřeba, program se ukončí sám ... když zmáčknete HOME, nezobrazí se nabídka ... v této lekci se aji změnilo makefile pro zkompilování wavloaderu Dál: 1) Práce ze soubory (vytvoření, čtení, kopírování) - 3D grafika (to jen možná ... celkem složitý, bojím se že z toho moc lidí nic neudělá) Někomu asi došlo že sem se nezmínil o MAKEFILE, ten soubor pro tutoriály zatím zůstáva stejnej, jeho obsah nemusíte chápat, stačí ho mít na disku, ale můžete v něm změnit méno programu PSP_EBOOT_TITLE = Sem nazev Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 hej to je super :P konecne zacnem c :P Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
flY1 Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 super o víkendu až budu mít čas tak se na to podivám ale vypdá to celkem složitě :cry: Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
Georgeos Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 Dobrej návod, těšim se na další, tohle sem snad už pochopil :) (Možná bych tam jen napsal že ty funkce jako backcolor, color a gotoxy jsou taky zkrácený, ale to je jen detail...) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 parada, ted se nejak roztrhl pytel s tutorialama pro programovani na psp... je super, ze uz vim alespon jak zacit o vikendu si urcite neco vyzkousim asi spis beznou homebrew, nez lua... v te souvislosti me napada... kgsws, mohl bys pls jeste vypsat typy promennych a zpusob dekladace... predpokladam, ze to budou bezne typy, jako integer, float, char, atd, ale spis by me zajimalo jak se to zapisuje... v C jsem jeste nikdy neprogramoval, predem dekuju :) to kgsws: good work, dikec... to Myschoo: kdyz uz jsem u toho dekovani :) ...diky za tutorial pro lua script :D Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 :) som rad :) teraz som urobil maly script, precita to nickname PSP a vypise ho na obrazovku :) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
Dutch Odesláno Leden 24, 2007 Nahlásit Share Odesláno Leden 24, 2007 super hned zitra se do toho pustim, hele mohl by jsi sem hodit nejaky zdrojak na easy flasher, treba ten na top_menu.rco? diky :) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 25, 2007 Autor Nahlásit Share Odesláno Leden 25, 2007 super hned zitra se do toho pustim, hele mohl by jsi sem hodit nejaky zdrojak na easy flasher, treba ten na top_menu.rco? diky :) to ne, v kopírování sem dám ale jak zapisovat do flash ne (bezpečnostní důvody, kolik by asi vzniklo brickerů) ale zkušenější na to "příjdou" Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 25, 2007 Autor Nahlásit Share Odesláno Leden 25, 2007 [glow=orange:c82afdc03e]Další 2 části přibily v ůvodu[/glow:c82afdc03e] Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
eraser17 Odesláno Leden 25, 2007 Nahlásit Share Odesláno Leden 25, 2007 mam taku otazku ... pre PSP sa robi len v C alebo aj v C++... pretoze C++ trochu ovladam a ucim sa aj 3D grafiku, ale len pre PC..... a keby sa teras zacnem aj C tak by som z toho mal asi us velky bordel... Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 25, 2007 Autor Nahlásit Share Odesláno Leden 25, 2007 mezi C a C++ neni moc rozdílů, v C++ je akorád něco navíc (zatim sem nezpozoroval co) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 25, 2007 Nahlásit Share Odesláno Leden 25, 2007 C++ je objektove Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 25, 2007 Autor Nahlásit Share Odesláno Leden 25, 2007 to ne oběktovy znamena něco jinyho ne? (a jazyky třeba delphi, Visual Basic) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
MorroR Odesláno Leden 26, 2007 Nahlásit Share Odesláno Leden 26, 2007 kgsws: seš fakt bestiální borec..máš ICQ? rád bych se tě na něco zeptal ohledně c++ Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 28, 2007 Autor Nahlásit Share Odesláno Leden 28, 2007 [glow=orange:21e84a3499]Další 1 část přibila v ůvodu[/glow:21e84a3499] Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 28, 2007 Nahlásit Share Odesláno Leden 28, 2007 to kgsws: pls mam na tebe dotaz, dneska jsem si to tak nejak zkousel a hned pri prvnim pokusu vytvorit eboot.pbp dojde k nejaky chybe... samotnyho zdrojaku jsem se ani nedotkl, takze me napada, ze to muze byt jedine tim makefileem... Kazdopadne ty jsi kuchar:) tohohle kompilatoru, tak doufam, ze bys mi s tim pomohl... btw: kam se potom ulozi ten eboot? do slozky s programem ci kam?? predem dikec :) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 29, 2007 Nahlásit Share Odesláno Leden 29, 2007 uz viem kde je chyba... tam nemas napisat main.c ale iba: cd helloworld hodi ta to vyssie do zlozky a napis: make musi to ist, aspon mne to ide edit: Moje prve pokusy...texty Zle poradie vo farbach HEX, zle riadkovanie... Po optimalizacii :D Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 29, 2007 Nahlásit Share Odesláno Leden 29, 2007 uz viem kde je chyba... tam nemas napisat main.c ale iba:cd helloworld hodi ta to vyssie do zlozky a napis: make musi to ist, aspon mne to ide edit: Moje prve pokusy...texty Zle poradie vo farbach HEX, zle riadkovanie... Po optimalizacii :D to je jedno, to main.e jsem jen tak zkosel prohlidnout zdrojak... stejne by se to melo zkompilovat, ale jestli to jede tobe, tak to mam zase 1 dalsi problem :( myslis, ze by to mohlo byt tim, ze na svazku C nemam widle? Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 29, 2007 Nahlásit Share Odesláno Leden 29, 2007 netusim,musis sa spytat kgsws, ale pise ti tam nieco s makefile Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
kgsws Odesláno Leden 29, 2007 Autor Nahlásit Share Odesláno Leden 29, 2007 []to kgsws: pls mam na tebe dotaz, dneska jsem si to tak nejak zkousel a hned pri prvnim pokusu vytvorit eboot.pbp dojde k nejaky chybe... samotnyho zdrojaku jsem se ani nedotkl, takze me napada, ze to muze byt jedine tim makefileem...Kazdopadne ty jsi kuchar:) tohohle kompilatoru, tak doufam, ze bys mi s tim pomohl... btw: kam se potom ulozi ten eboot? do slozky s programem ci kam?? predem dikec :) to je jasný, chyba je v tom "MAKE Version 5.2" <- to neni make.exe z mýho packu, asi máš nainstalovaný ještě jiný Cčko v PC a ono se spustí make.exe z té verze, ne z té pro PSP ... skus otevřít RUN.BAT, tam najdi řádek set path=%path%;C:\pspdev\bin a ten řádek nahraď (smazat starý a zkopírovat tam nový) set path=C:\pspdev\bin;%path% možná by to mohlo pomoct, ale nevím Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 29, 2007 Nahlásit Share Odesláno Leden 29, 2007 []to kgsws: pls mam na tebe dotaz, dneska jsem si to tak nejak zkousel a hned pri prvnim pokusu vytvorit eboot.pbp dojde k nejaky chybe... samotnyho zdrojaku jsem se ani nedotkl, takze me napada, ze to muze byt jedine tim makefileem...Kazdopadne ty jsi kuchar:) tohohle kompilatoru, tak doufam, ze bys mi s tim pomohl... btw: kam se potom ulozi ten eboot? do slozky s programem ci kam?? predem dikec :) to je jasný, chyba je v tom "MAKE Version 5.2" <- to neni make.exe z mýho packu, asi máš nainstalovaný ještě jiný Cčko v PC a ono se spustí make.exe z té verze, ne z té pro PSP ... skus otevřít RUN.BAT, tam najdi řádek set path=%path%;C:\pspdev\bin a ten řádek nahraď (smazat starý a zkopírovat tam nový) set path=C:\pspdev\bin;%path% možná by to mohlo pomoct, ale nevím presne tak... delphi jedno proradny mi to kazilo :lol: dik moc uz mi to chodi :) Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 30, 2007 Nahlásit Share Odesláno Leden 30, 2007 uz jsem taky ukuchtil prvni 'uzitecnou :lol: ' homebrew... ne, ze by to k necemu bylo, ale musim se pochlubit, jak se mi to povedlo pekne zacyklit :D Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 31, 2007 Nahlásit Share Odesláno Leden 31, 2007 aj ti tie znaky padaju? :P Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
west-- Odesláno Leden 31, 2007 Nahlásit Share Odesláno Leden 31, 2007 aj ti tie znaky padaju? :P no jak se to veme... je to jen vypisovani 3 ruznych retezcu, ktery se postupne prepisujou a celou obrazovku prepisou asi 4x a pak se objevi ta hlaska... ...ve skutecnosti to nevypada jako metrix code :oops: , ale moc jsem se s tim neparal... je to jenom pokusna aplikace, ktera muze poslouzit jenom pro dve veci a my vime jaky na nic a na hov..... :D Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
myschoo Odesláno Leden 31, 2007 Nahlásit Share Odesláno Leden 31, 2007 ja uz som urobil aj button tester 8) :D Este ho trosku zlepsim... urobim CooLoVeJsiM !:D Odkaz ke komentáři Sdílet na ostatní stránky More sharing options...
Recommended Posts