{"id":43,"date":"2007-02-10T17:33:53","date_gmt":"2007-02-10T19:33:53","guid":{"rendered":"http:\/\/www.neyestrabelli.com\/blog\/2007\/02\/10\/criando-menu-com-oslib\/"},"modified":"2007-02-10T17:33:53","modified_gmt":"2007-02-10T19:33:53","slug":"criando-menu-com-oslib","status":"publish","type":"post","link":"https:\/\/www.neyestrabelli.com\/blog\/2007\/02\/10\/criando-menu-com-oslib\/","title":{"rendered":"Criando Menu com OSLib"},"content":{"rendered":"<p>Hoje mostrarei com criar um menu simples utilizando a biblioteca OSLib.<\/p>\n<p>O resultado final que teremos \u00e9 este:<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"389\" height=\"220\" alt=\"Menu OSLib\" id=\"image42\" src=\"http:\/\/www.neyestrabelli.com\/blog\/wp-content\/uploads\/2007\/02\/screenshot1.jpg\" \/><\/p>\n<p>Entendo este fonte voc\u00ea estar\u00e1 apto a trabalhar com imagens, texto em console, movimenta\u00e7\u00e3o de imagem, controles.<br \/>\nEis o codigo fonte:<\/p>\n<p><strong>main.c<\/strong><\/p>\n<pre lang=\"c\">\n\/*\nExemplo de menu utilizando OSLib\nAutor : Ney Estrabelli\nData\u00a0 : 10\/02\/07\n*\/\n\n#include <oslib\/oslib.h>\n\nPSP_MODULE_INFO(\"Tutorial Menu by Old!\", 0, 1, 1);\nPSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);\n\nvoid menu();\n\nint main()\n{\noslInit(0);\u00a0 \/\/inicia a biblioteca\noslInitGfx(OSL_PF_8888, 1); \/\/ seta o tipo de grafico\noslSetTransparentColor(RGB(255,0,255)); \/\/ seta a cor transparente\noslInitConsole();\u00a0 \/\/ inicia o texto em console\nmenu();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ chama a fun\u00e7\u00e3o menu\noslEndGfx();\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ finaliza os gr\u00e1ficos\noslQuit();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/\u00a0 finaliza a biblioteca\nreturn 0;\n}\n\nvoid menu(){\nOSL_IMAGE\u00a0 *textos, *bg; \/\/definimos os ponteiros para imagens\n\/\/carregamos as imagens\ntextos\u00a0\u00a0 = oslLoadImageFile(\".\/imagens\/textos.png\", OSL_IN_RAM, OSL_PF_5551);\nbg\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = oslLoadImageFile(\".\/imagens\/bg.png\", OSL_IN_RAM, OSL_PF_5551);\ntextos->x = 260;\u00a0\u00a0\u00a0\u00a0 \/\/definimos a posi\u00e7\u00e3o x da imagem de textos\ntextos->y = 100;\u00a0\u00a0\u00a0\u00a0 \/\/definimos a posi\u00e7\u00e3o y da imagem de textos\nbg->x = 252;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/definimos a posi\u00e7\u00e3o x da imagem bg\nbg->y = 72;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/definimos a posi\u00e7\u00e3o y da imagem bg\nint posMenu = 0;\u00a0\u00a0\u00a0\u00a0 \/\/variavel de posi\u00e7\u00e3o do menu\nwhile (!osl_quit)\n{\noslStartDrawing(); \/\/iniciamos o desenho em tela\noslDrawGradientRect(0,0,480,272,RGB(0,0,0),RGB(255,255,255),RGB(255,255,255),RGB(0,0,0)); \/\/desenha o fundo com gradiente preto e branco\noslDrawImage(bg);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/desenhamos o bg\noslDrawImage(textos);\u00a0\u00a0 \/\/desenhamos os textos\noslReadKeys();\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \/\/inciamos os botoes\noslPrintf_xy(0, 0, \"y = %i\", bg->y);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/escrevemos a posi\u00e7\u00e3o y da imagem bg\noslPrintf_xy(0, 20, \"posMenu = %i\", posMenu); \/\/escrevemos a posi\u00e7\u00e3o do menu\nif (osl_keys->pressed.down) { \/\/se for pressionado para baixo\nswitch(posMenu) { \/\/verficamos a posi\u00e7\u00e3o do menu\ncase 0:\nbg->y = 115;\u00a0 \/\/desenhamos bg embaixo de instrucoes\nposMenu = 1;\u00a0 \/\/setamos\u00a0 a posi\u00e7\u00e3o do posMenu para 1\nbreak;\ncase 1:\nbg->y = 155;\u00a0 \/\/desenhamos bg embaixo de opcoes\nposMenu = 2;\u00a0 \/\/setamos\u00a0 a posi\u00e7\u00e3o do posMenu para 2\nbreak;\ncase 2:\nbg->y = 198;\u00a0 \/\/desenhamos bg embaixo de creditos\nposMenu = 3; \/\/setamos\u00a0 a posi\u00e7\u00e3o do posMenu para 3\nbreak;\ncase 3:\nbg->y = 198;\u00a0 \/\/ mantemos o bg desenhado em creditos \/ aqui poderia voltar para 72\nposMenu = 3; \/\/mantemos o valor \/ aqui poderia voltar para 0\nbreak;\n}\n}\nif (osl_keys->pressed.up) { \/\/se for pressionado para cima\nswitch(posMenu) { \/\/mesma checagem anterior, por\u00e9m ao apertar para cima\ncase 0:\nbg->y = 72;\nposMenu = 0;\nbreak;\ncase 1:\nbg->y = 72;\nposMenu = 0;\nbreak;\ncase 2:\nbg->y = 115;\nposMenu = 1;\nbreak;\ncase 3:\nbg->y = 155;\nposMenu = 2;\nbreak;\n}\n}\nif (osl_keys->pressed.select) {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/se for pressionado select, tira uma screenshot\noslWriteImageFile(OSL_SECONDARY_BUFFER, \"screenshot.png\", 0); \/\/grava a screenshot\n}\nif (osl_keys->pressed.start) oslQuit();\u00a0\u00a0\u00a0 \/\/se for pressionado start sai do programa, voltando pro XMB\noslEndDrawing(); \/\/finaliza a fun\u00e7\u00e3o de desenhar na tela\noslSyncFrame(); \/\/sincroniza os frames\n}\n\n}<\/pre>\n<p>o makefile:<\/p>\n<pre lang=\"text\">\nTARGET = main\nOBJS = main.o\n\nINCDIR =\nCFLAGS = -G4 -Wall -O2\nCXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti\nASFLAGS = $(CFLAGS)\n\nLIBDIR =\nLDFLAGS =\nSTDLIBS= -losl -lpng -lz \\\n-lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm\nLIBS=$(STDLIBS)$(YOURLIBS)\n\n\nEXTRA_TARGETS = EBOOT.PBP\nPSP_EBOOT_TITLE = \"Exemplo Menu\"\n\n\nPSPSDK=$(shell psp-config --pspsdk-path)\ninclude $(PSPSDK)\/lib\/build.mak<\/pre>\n<p>Como de costume, n\u00e3o irei explicar passo a passo pois o c\u00f3digo fonte j\u00e1 est\u00e1 muito bem comentado, caso voc\u00ea tenha alguma d\u00favida, n\u00e3o deixe de perguntar, mais info sobre a biblioteca consulte : <a title=\"Documenta\u00e7\u00e3o em portugues\" href=\"http:\/\/www.neyestrabelli.com\/OSLib\/pt-br\/\">Documenta\u00e7\u00e3o OSLib-pt-BR<\/a><\/p>\n<p>Para baixar os arquivos de exemplo(source) + vers\u00e3o para rodar no psp com firmware custom OE****<\/p>\n<p><a target=\"_blank\" title=\"Source Menu OSLib\" href=\"http:\/\/www.neyestrabelli.com\/arquivos\/menu.rar\" rel=\"noopener noreferrer\">Menu OSLib by Old!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hoje mostrarei com criar um menu simples utilizando a biblioteca OSLib. O resultado final que teremos \u00e9 este: Entendo este fonte voc\u00ea estar\u00e1 apto a trabalhar com imagens, texto em console, movimenta\u00e7\u00e3o de imagem, controles. Eis o codigo fonte: main.c \/* Exemplo de menu utilizando OSLib Autor : Ney Estrabelli Data\u00a0 : 10\/02\/07 *\/ #include [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/posts\/43","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/comments?post=43"}],"version-history":[{"count":0,"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/posts\/43\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/media?parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/categories?post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.neyestrabelli.com\/blog\/wp-json\/wp\/v2\/tags?post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}