<?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-5481972087260541028</id><updated>2012-01-26T14:56:32.674-08:00</updated><category term='extras'/><category term='Programação'/><category term='homebrews'/><category term='quadrinhos'/><category term='Noticias'/><category term='jogos'/><title type='text'>NDS</title><subtitle type='html'>HOMEBREWS - Brasil</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3729577524183925387</id><published>2008-04-12T18:45:00.000-07:00</published><updated>2008-11-13T02:21:20.194-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Alterando a Fonte</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s1600-h/c.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070156159831519042" style="margin: 0px 0px 10px 10px; float: right;" alt="" src="http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s200/c.jpg" border="0" /&gt;&lt;/a&gt;Eu sempre achei a fonte padrão da PAlib limitada por não conter acentuação. Hoje eu resolvi mudar essa situação. Passei a tarde toda e parte da noite preparando uma fonte baseada no padrão ISO-8859-1, que é a fonte latina padrão do Windows em português (BR). Procurei colocar todos os caracteres dessa fonte, mas no final eu deixei a última linha em branco, pois eram sinais tipo um C com acento, um A cou um u em cima, sinais que realmente eu nunca usei.&lt;br /&gt;&lt;br /&gt;Como usar a fonte nova:&lt;br /&gt;- Ter a fonte em gif, com a cor que quiser e o fundo em magenta. Eu fiz a letra branca pois fica mais fácil de usar os comandos de cores.&lt;br /&gt;- Converter o gif para tiled background usando o PAgfx.&lt;br /&gt;- Usar o comando PA_InitCustomText para definir a fonte customizada como a default do texto.&lt;br /&gt;- Escrever normalmente.&lt;br /&gt;&lt;br /&gt;O único comando para alterar a cor do texto que funciona é o PA_SetTextCol. Os outros comandos deixam as letras pretas.&lt;br /&gt;&lt;br /&gt;Arquivo gif com a fonte:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/SAFoA2FYdBI/AAAAAAAAAFw/zMH-3XQOEr4/s1600-h/fonte3.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/SAFoA2FYdBI/AAAAAAAAAFw/zMH-3XQOEr4/s320/fonte3.gif" alt="" id="BLOGGER_PHOTO_ID_5188542609434899474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fonte do programa:&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;pa9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;&lt;br /&gt;#include "gfx/all_gfx.h"&lt;br /&gt;#include "gfx/all_gfx.c"&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitText(0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitCustomText(1,0,fonte3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(1,2,2,"texto com acentuação");&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(1,0,3,"áéíóúàãõâêôüç ÁÉÍÓÚÀÃÕÂÊÔÜÇ");&lt;br /&gt; &lt;br /&gt;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Up) { PA_SetTextCol(1, 0, 0, 31); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Down) { PA_SetTextCol(1, 0, 31, 0); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Left) { PA_SetTextCol(1, 31, 0, 0); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Right) { PA_SetTextCol(1, 31, 31, 31); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;   &lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alguns avisos:&lt;br /&gt;- Eu realmente desisti do jogo de tanque. Eu não estava contente com o jogo e estava apenas me estressando. Eu gosto de programar jogos de raciocínio. Jogos de ação não são minha praia.&lt;br /&gt;- Eu estou começando a projetar um jogo que vai misturar adventure point&amp;click (tipo os da Lucas Arts) com aqueles adventures puro texto (tipo os da Infocom). Por isso que precisava de uma fonte acentuada.&lt;br /&gt;- Quem tentar instalar a PAlib 080203 (beta) no DevKitPro vai ter problemas na compilação, é necessário imcluir uma variável de ambiente chamada papath apontando para onde está a PAlib (usando / ao invés de \). Como fazer isso:&lt;br /&gt;1) Clique com o botão direito em "Meu Computador" e clique em propriedades.&lt;br /&gt;2) Vá na aba "Avançado" e clique no botão "Variáveis de Ambiente".&lt;br /&gt;3) Em "Variáveis do Sistema", clique no botão "Nova".&lt;br /&gt;4) Em "Nome da Variável", escreva papath&lt;br /&gt;5) Em "Valor da Variável", escreva c:/devkitpro/palib&lt;br /&gt;6) Vá clicando em "OK" até fechar todas as janelas.&lt;br /&gt;No passo 5, é importante colocar o caminho para onde está a palib. Se for diferente do que eu postei, tem que ser o caminho do seu HD até chegar na palib.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3729577524183925387?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3729577524183925387/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3729577524183925387' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3729577524183925387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3729577524183925387'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2008/04/alterando-fonte.html' title='Alterando a Fonte'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s72-c/c.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3083483457422862554</id><published>2008-02-13T19:16:00.000-08:00</published><updated>2008-02-13T19:29:51.014-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Novidades na PAlib</title><content type='html'>Não testei nada, só li o que estava no site e estou passando aqui:&lt;br /&gt;- Antigamente, os arquivos de som só podiam ser RAW (um Wave sem cabeçalho) e MOD (do Amiga). Agora, além desses formatos, tem bibliotecas para MP3, s3m, it e outros formatos similares ao MOD.&lt;br /&gt;- Funciona no Windows Vista&lt;br /&gt;- Biblioteca para comunicação direta entre dois DSs.&lt;br /&gt;- EFSlib - para tornar os programas que acessam a FAT do flashcard compatíveis com a DLDI. A PAFS só funcionava em flashcards de slot2.&lt;br /&gt;- A partir de agora, é necessário alterar o Makefile para compilar com a biblioteca ARM7 apropriada. Agora tem diversas bibliotecas conflitantes, como a do Wifi e a de comunicação direta entre dois DSs (só pode usar uma delas num programa). Mod e MP3, também.&lt;br /&gt;- Novos exemplos, abrangendo as novas bibliotecas.&lt;br /&gt;- E mais correções de bugs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3083483457422862554?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3083483457422862554/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3083483457422862554' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3083483457422862554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3083483457422862554'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2008/02/novidades-na-palib.html' title='Novidades na PAlib'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4377824314755242846</id><published>2008-02-13T18:59:00.001-08:00</published><updated>2008-11-13T02:21:20.374-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Problemas na instalação da PAlib</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/R7Ou0_otcKI/AAAAAAAAAFo/eap5VTt9LXE/s1600-h/c.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_6vcJAtQecew/R7Ou0_otcKI/AAAAAAAAAFo/eap5VTt9LXE/s320/c.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5166665422982705314" /&gt;&lt;/a&gt;&lt;br /&gt;Eu andei testando a instalação da PAlib com o novo DevKitPro e não funcionou. Na hora de compilar o programa só dava erro&lt;br /&gt;&lt;br /&gt;A solução eu descobri no fórum da PAlib. Não pode mais usar o instalador da PAlib. Tem que baixar a PAlib em ZIP e mandar extrair na pasta onde está o DevKitPro.&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff0000"&gt;Detalhe importante:&lt;/font&gt; Não pode extrair a pasta libnds, senão sobrescreve a biblioteca do DevKitPro e dá o erro.&lt;br /&gt;&lt;br /&gt;Eu estava olhando (agora) o site da PAlib e vi que saiu uma nova versão em 03/02/2008. Vou olhar o que tem de novidades e depois posto aqui. É até capaz de já ter corrigido o problema acima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4377824314755242846?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4377824314755242846/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4377824314755242846' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4377824314755242846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4377824314755242846'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2008/02/problemas-na-instalao-da-palib.html' title='Problemas na instalação da PAlib'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/R7Ou0_otcKI/AAAAAAAAAFo/eap5VTt9LXE/s72-c/c.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2763120891182749357</id><published>2007-05-29T18:12:00.000-07:00</published><updated>2008-11-13T02:21:20.396-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Vetores</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s1600-h/c.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070156159831519042" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s200/c.jpg" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Vetores são como variáveis, mas podem conter diversos valores. &lt;/p&gt;&lt;p&gt;Digamos, por exemplo, que eu queira trabalhar com moedas. Cada tipo de moeda tem um valor (em centavos): moeda1=1, moeda2=5, moeda3=10, moeda4=25, moeda5=50 e moeda6=100. Usando as variáveis dessa forma, se eu quisesse usar um for para mostrar o valor de todas as moedas, eu não conseguiria.&lt;/p&gt;&lt;p&gt;O vetor vem ao meu socorro. Por exemplo:&lt;br /&gt;s16 moeda[6]={1,5,10,25,50,100};&lt;br /&gt;for (i=0; i&amp;lt;6; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,i,"moeda[%d]=%d",i,moeda[i]);&lt;br /&gt;} &lt;/p&gt;&lt;p&gt;O código acima apresentará uma saída asim:&lt;br /&gt;moeda[0]=1&lt;br /&gt;moeda[1]=5&lt;br /&gt;moeda[2]=10&lt;br /&gt;moeda[3]=25&lt;br /&gt;moeda[4]=50&lt;br /&gt;moeda[5]=100&lt;/p&gt;&lt;p&gt;Nós fizemos um vetor de 6 posições (de 0 a 5) contendo os valores das moedas do Brasil.&lt;/p&gt;&lt;p&gt;Vamos aplicar isso ao nosso jogo. O cenário tem áreas de areia, de terra, de grama e de água. O tanque não deve andar sobre a água. Mas o tipo de solo também influencia na velocidade do tanque. Então faremos o tanque andar na metade da velocidade na areia (1 pixel a cada 2 frames), em velocidade normal na grama (1 pixel por frame) e em velocidade dobrada na terra (2 pixels por frame). Usando a lógica de bit shifting que já estudamos, teríamos uma tabela contendo velocidade=0 se o terreno for água, 128 se for areia, 256 se for grama e 512 se for terra.&lt;/p&gt;&lt;p&gt;Eu dividi o background em quadrados de 16x16 pixels e coloquei num vetor. Como a imagem tem 256x192 pixels, isso divindo por 16 cada valor me gerou um vetor de 192 posições (16x12=192). O vetor é representado de forma linear, mas a tela tem linhas e colunas.  Então é necessária uma fórmula para acessarmos todas as posições. Essa fórmula é: linha*largura+coluna. Neste caso é linha*16+coluna. A posição de linha e coluna é calculada relativamente ao centro do tanque para facilitar a programação.&lt;/p&gt;&lt;p&gt;Como existe a possibilidade de ter áreas onde o tanque não se move, ele jamais deve entrar com o centro nessas áreas. Quando ele entrar em uma área de velocidade 0, a posição do tanque deve ser restaurada para posição antiga, anterior à entrada nessa área. Se o tanque entrasse numa área de velocidade 0, ele jamais sairia dela, pois a sua velocidade seria 0.&lt;/p&gt;&lt;p&gt;Outra coisa que corrigi é que quando o tanque atingia uma borda da tela e o controle estivesse sendo pressionado na diagonal, o tanque continuava se movendo em apenas um dos eixos ao invés de parar. Agora ele pára.&lt;/p&gt;&lt;p&gt;Vamos ao código-fonte. Analisem o fonte e encontrem o que foi falado acima. Se houver alguma dúvida, façam a pergunta nos comentários.&lt;/p&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;#include &amp;quot;gfx/all_gfx.c&amp;quot;&lt;br /&gt;#include &amp;quot;gfx/all_gfx.h&amp;quot;&lt;br /&gt;// Variaveis Globais&lt;br /&gt;s16 angulo_body=0;&lt;br /&gt;s16 angulo_turret=0;&lt;br /&gt;s32 x=111&amp;lt;&amp;lt;8;&lt;br /&gt;s32 y=(79+192+48)&amp;lt;&amp;lt;8;&lt;br /&gt;s16 angulo_tiro=0;&lt;br /&gt;s32 x_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s32 y_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s16 vel_tiro=4;&lt;br /&gt;s8 atirando=0;&lt;br /&gt;s16 vel_terra[192]={0,128,128,256,256,256,256,256,256,256,256,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,512,512,512,512,512,512,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,512,512,512,512,512,512,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,512,512,512,512,512,512,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,512,512,512,512,512,512,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,256,256,256,256,256,256,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,256,256,256,256,256,256,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,256,256,256,256,256,256,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,256,256,256,256,256,256,256,256,256,256,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};&lt;br /&gt;&lt;br /&gt;void giraturret() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_turret=PA_GetAngle((x&amp;gt;&amp;gt;8)+16,(y&amp;gt;&amp;gt;8)+16-240,Stylus.X,Stylus.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(0,angulo_turret);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void movetanque() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 centro_x=((x&amp;gt;&amp;gt;8)+15)&amp;gt;&amp;gt;4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 centro_y=((y&amp;gt;&amp;gt;8)-240+15)&amp;gt;&amp;gt;4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 tipoterra=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 velocidade=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 xvelho=x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 yvelho=y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (centro_x&amp;lt;0||centro_x&amp;gt;15||centro_y&amp;lt;0||centro_y&amp;gt;11) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipoterra=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;velocidade=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipoterra=centro_y*16+centro_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;velocidade=vel_terra[tipoterra];&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left &amp;amp;&amp;amp; Pad.Held.A) || (Pad.Held.Right &amp;amp;&amp;amp; Pad.Held.Y) || (Pad.Held.Up &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Down &amp;amp;&amp;amp; Pad.Held.X) || (Pad.Held.X &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Y &amp;amp;&amp;amp; Pad.Held.A)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //o usu&amp;aacute;rio est&amp;aacute; sacaneando, n&amp;atilde;o executa nada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Up || Pad.Held.Down || Pad.Held.Left || Pad.Held.Right || Pad.Held.A || Pad.Held.B || Pad.Held.X || Pad.Held.Y)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //nenhuma dire&amp;ccedil;&amp;atilde;o foi pressionada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; !(Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; (Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=128*(Pad.Held.Up || Pad.Held.X)+384*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (angulo_body) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=192*(Pad.Held.Up || Pad.Held.X)+320*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=64*(Pad.Held.Up || Pad.Held.X)+448*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;centro_x=((x&amp;gt;&amp;gt;8)+15)&amp;gt;&amp;gt;4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;centro_y=((y&amp;gt;&amp;gt;8)-240+15)&amp;gt;&amp;gt;4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (centro_x&amp;lt;0||centro_x&amp;gt;15||centro_y&amp;lt;0||centro_y&amp;gt;11) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipoterra=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;velocidade=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipoterra=centro_y*16+centro_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;velocidade=vel_terra[tipoterra];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (velocidade==0 || x&amp;lt;0 || x&amp;gt;57088 || y&amp;lt;61440 || y&amp;gt;102144) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x=xvelho;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y=yvelho;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;lt;0) { x=0; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;gt;57088) { x=57088; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;lt;61440) { y=61440; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;gt;102144) { y=102144; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(1,angulo_body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(0,x&amp;gt;&amp;gt;8,y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(1,x&amp;gt;&amp;gt;8,y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void atira() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (atirando) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || x_tiro&amp;gt;260&amp;lt;&amp;lt;8 || y_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || y_tiro&amp;gt;440&amp;lt;&amp;lt;8) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.L || Pad.Newpress.R) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_tiro=angulo_turret;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro=((x&amp;gt;&amp;gt;8)+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro=((y&amp;gt;&amp;gt;8)+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(2,angulo_tiro);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal( 0, (void*)tank_turret_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite( 0, (void*)tank_turret_Sprite, OBJ_SIZE_32X32, 1, 0, x&amp;gt;&amp;gt;8, y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal( 1, (void*)tank_body_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite( 1, (void*)tank_body_Sprite, OBJ_SIZE_32X32, 1, 0, x&amp;gt;&amp;gt;8, y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal( 2, (void*)tiro_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite( 2, (void*)tiro_Sprite, OBJ_SIZE_8X8, 1, 0, -8, -8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable( 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable( 1, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable( 2, 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(0,3,set_bg_1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(1,3,set_bg_2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitText(1,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetTextCol(1,31,31,31); &lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;giraturret();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;movetanque();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atira();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2763120891182749357?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2763120891182749357/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2763120891182749357' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2763120891182749357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2763120891182749357'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/05/vetores.html' title='Vetores'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6vcJAtQecew/RlzQKh6EL0I/AAAAAAAAAFA/KW1ASR_qV7M/s72-c/c.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-1485497908305777966</id><published>2007-05-28T17:50:00.000-07:00</published><updated>2008-11-13T02:21:20.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>À espera de Guitar Hero DS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/Rlt5IR6ELzI/AAAAAAAAAE4/0VqC3VE2mfQ/s1600-h/amplituds.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/Rlt5IR6ELzI/AAAAAAAAAE4/0VqC3VE2mfQ/s400/amplituds.jpg" alt="" id="BLOGGER_PHOTO_ID_5069778988688486194" border="0" /&gt;&lt;/a&gt;Enquanto Guitar Hero não chega, eu estou jogando AmplituDS.&lt;br /&gt;&lt;br /&gt;AmplituDS é um homebrew de ação musical. Sander Stolks, o autor desse homebrew, disse que ele é uma versão do jogo Amplitude do PS2, que é dos mesmos autores do Guitar Hero.&lt;br /&gt;&lt;br /&gt;No jogo, a gente controla uma nave que deve disparar em pontos dispostos sobre faixas coloridas, no ritmo da música que está tocando. Quando a gente acerta toda uma seqüência, deve ir rapidamente para a outra faixa antes do fim do compasso, para dar tempo de começar a atirar nos pontos.&lt;br /&gt;&lt;br /&gt;Contoles do jogo:&lt;br /&gt;- Direcional - Controla a nave, sobre qual faixa ela vai andar&lt;br /&gt;- L - dispara no botão à esquerda&lt;br /&gt;- X - dispara no botão central&lt;br /&gt;- R - dispara no botão à direita&lt;br /&gt;- Y - coleta os bônus&lt;br /&gt;&lt;br /&gt;As músicas são .MOD, a música da primeira fase é o tema do Mario.&lt;br /&gt;&lt;a href="http://amplituds.drunkencoders.com/?s=projects&amp;amp;proj=AmplituDS"&gt;&lt;br /&gt;[página do autor]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O jogo é compatível com a DLDI, podendo rodar em muitos modelos de flashcards. Na página do autor tem as instruções do jogo e de como instalar. Também tem dois vídeos demonstrativos. Tem também o link de download do jogo bem como do código-fonte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-1485497908305777966?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/1485497908305777966/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=1485497908305777966' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1485497908305777966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1485497908305777966'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/05/espera-de-guitar-hero-ds.html' title='À espera de Guitar Hero DS'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6vcJAtQecew/Rlt5IR6ELzI/AAAAAAAAAE4/0VqC3VE2mfQ/s72-c/amplituds.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6119437095603646733</id><published>2007-05-20T11:11:00.000-07:00</published><updated>2008-11-13T02:21:20.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RlCP1AS3TQI/AAAAAAAAAVg/PpQeP7SN0jg/s1600-h/1_a.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/RlCP1AS3TQI/AAAAAAAAAVg/PpQeP7SN0jg/s400/1_a.jpg" alt="" id="BLOGGER_PHOTO_ID_5066707721566768386" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/RlCRIQS3TRI/AAAAAAAAAVo/HB6Jo5GxrJM/s1600-h/1_b.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/RlCRIQS3TRI/AAAAAAAAAVo/HB6Jo5GxrJM/s400/1_b.jpg" alt="" id="BLOGGER_PHOTO_ID_5066709151790877970" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/RlCRSwS3TSI/AAAAAAAAAVw/CLE2ag9Tc9I/s1600-h/1_c.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/RlCRSwS3TSI/AAAAAAAAAVw/CLE2ag9Tc9I/s400/1_c.jpg" alt="" id="BLOGGER_PHOTO_ID_5066709332179504418" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6119437095603646733?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6119437095603646733/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6119437095603646733' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6119437095603646733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6119437095603646733'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/05/blog-post.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/RlCP1AS3TQI/AAAAAAAAAVg/PpQeP7SN0jg/s72-c/1_a.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5758359637470514269</id><published>2007-05-06T10:13:00.000-07:00</published><updated>2008-11-13T02:21:21.302-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Ocupando as Duas Telas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6vcJAtQecew/Rj4ND_x8F3I/AAAAAAAAAEg/xCan-0KbD10/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_6vcJAtQecew/Rj4ND_x8F3I/AAAAAAAAAEg/xCan-0KbD10/s320/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5061497393522677618" border="0" /&gt;&lt;/a&gt;Tudo até agora foi programado usando apenas a tela de baixo, a tela 0. Mas este jogo deve ocupar as duas telas do DS. O nosso tanque tem que ficar só na tela de baixo, mas os tiros devem alcançar a tela de cima. Uma maneira de resolver isso seria bastante complexa, colocando os mesmos desenhos dos sprites de baixo nos sprites de cima e ficar controlando para ocultar um sprite em baixo quando ele passa a aparecer em cima.&lt;br /&gt;Outra opção seria usar a própria PAlib para fazer esse controle. É o que nós faremos. Todos os comandos de sprites possuem um irmão "Dual", que não precisa especificar qual a tela ele será colocado, o valor de y é que definirá isso. A altura padrão de tela passa a ser 432 pixels (192 pixels da tela de baixo, mais 192 pixels da tela de cima, mais 48 pixels que não mostram imagem porque são o espaço entre as duas telas). O espaço entre as duas tela pode ser alterado pela função&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;em&gt;PA_SetScreenSpace&lt;/em&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;mas nós continuaremos a usar os 48 pixels pois isso dá uma continuidade bem legal ao tiro.&lt;br /&gt;&lt;em&gt;&lt;/em&gt;Ah, sim. Faltou falar que os comandos para trabalhar com as duas telas como se fossem uma, são os mesmos comandos de gerenciamento de sprites, somente com a palavra "Dual" na frente (logo após o "PA_") e sem o parâmetro do número da tela.&lt;br /&gt;Também iremos colocar os fundos das telas. O fundo set_bg_1.gif vai na tela de baixo e o set_bg_2.gif vai na tela de cima.&lt;br /&gt;No programa, as alterações não são muito radicais:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;trocar os comandos de sprites para os dual&lt;/li&gt;&lt;li&gt;tratar o tanque na tela de baixo, ou seja, y+240&lt;/li&gt;&lt;li&gt;permitir que o tiro ande por todos os 432 pixels&lt;/li&gt;&lt;li&gt;não desenhar mais o fundo de 16 bits amarelo sujo&lt;/li&gt;&lt;li&gt;colocar os dois tiled backgrounds&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Fonte do programa:&lt;br /&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;#include &amp;quot;gfx/all_gfx.c&amp;quot;&lt;br /&gt;#include &amp;quot;gfx/all_gfx.h&amp;quot;&lt;br /&gt;&lt;br /&gt;// Variaveis Globais&lt;br /&gt;s16 angulo_body=0;&lt;br /&gt;s16 angulo_turret=0;&lt;br /&gt;s16 velocidade=1;&lt;br /&gt;s16 x=111;&lt;br /&gt;s16 y=79+192+48;&lt;br /&gt;s16 angulo_tiro=0;&lt;br /&gt;s32 x_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s32 y_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s16 vel_tiro=4;&lt;br /&gt;s8 atirando=0;&lt;br /&gt;&lt;br /&gt;void giraturret() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_turret=PA_GetAngle(x+16,y+16-240,Stylus.X,Stylus.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(0,angulo_turret);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void movetanque() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left &amp;amp;&amp;amp; Pad.Held.A) || (Pad.Held.Right &amp;amp;&amp;amp; Pad.Held.Y) || (Pad.Held.Up &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Down &amp;amp;&amp;amp; Pad.Held.X) || (Pad.Held.X &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Y &amp;amp;&amp;amp; Pad.Held.A)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //o usu&amp;aacute;rio est&amp;aacute; sacaneando, n&amp;atilde;o executa nada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Up || Pad.Held.Down || Pad.Held.Left || Pad.Held.Right || Pad.Held.A || Pad.Held.B || Pad.Held.X || Pad.Held.Y)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //nenhuma dire&amp;ccedil;&amp;atilde;o foi pressionada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; !(Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; (Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=128*(Pad.Held.Up || Pad.Held.X)+384*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (angulo_body) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=192*(Pad.Held.Up || Pad.Held.X)+320*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=64*(Pad.Held.Up || Pad.Held.X)+448*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;lt;0) { x=0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;gt;223) { x=223; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;lt;240) { y=240; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;gt;399) { y=399; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(1,angulo_body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(0,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(1,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void atira() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (atirando) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || x_tiro&amp;gt;260&amp;lt;&amp;lt;8 || y_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || y_tiro&amp;gt;440&amp;lt;&amp;lt;8) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.L || Pad.Newpress.R) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_tiro=angulo_turret;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro=(x+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro=(y+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetRotsetNoZoom(2,angulo_tiro);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteXY(2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal(0, (void*)tank_turret_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite(0, (void*)tank_turret_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal(1, (void*)tank_body_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite(1, (void*)tank_body_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualLoadSpritePal(2, (void*)tiro_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualCreateSprite(2, (void*)tiro_Sprite, OBJ_SIZE_8X8, 1, 0, -8, -8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable(0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable(1, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_DualSetSpriteRotEnable(2, 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(0,3,set_bg_1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(1,3,set_bg_2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;giraturret();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;movetanque();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atira();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;br /&gt;&lt;br /&gt;Imagens para fazer os fundos:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/Rj4NYvx8F5I/AAAAAAAAAEw/TdAQoxITHvw/s1600-h/set_bg_2.gif"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/Rj4NYvx8F5I/AAAAAAAAAEw/TdAQoxITHvw/s320/set_bg_2.gif" alt="" id="BLOGGER_PHOTO_ID_5061497750004963218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/Rj4NQPx8F4I/AAAAAAAAAEo/wqxTWULeRCA/s1600-h/set_bg_1.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_6vcJAtQecew/Rj4NQPx8F4I/AAAAAAAAAEo/wqxTWULeRCA/s320/set_bg_1.gif" alt="" id="BLOGGER_PHOTO_ID_5061497603976075138" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5758359637470514269?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5758359637470514269/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5758359637470514269' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5758359637470514269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5758359637470514269'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/05/ocupando-as-duas-telas.html' title='Ocupando as Duas Telas'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6vcJAtQecew/Rj4ND_x8F3I/AAAAAAAAAEg/xCan-0KbD10/s72-c/c.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6355018546882828651</id><published>2007-05-02T20:00:00.000-07:00</published><updated>2008-11-13T02:21:21.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Variáveis Globais (Continuando a Atirar)</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_6vcJAtQecew/RjlZhvx8F2I/AAAAAAAAAEY/l5C0jcUeN_g/s1600-h/c.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RjlZhvx8F2I/AAAAAAAAAEY/l5C0jcUeN_g/s320/c.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5060174092623943522" /&gt;&lt;/a&gt;&lt;br /&gt;Variáveis globais são aquelas que valem para todo o programa e não apenas para uma função. Como o C trabalha? Variáveis declaradas dentro de uma função são apenas daquela função. Variáveis declaradas fora de funções valem para todo o programa. Não é interessante usar só variáveis globais? Não. Variáveis globais consomem mais memória que variáveis locais, pois continuam ocupando o seu espaço na memória depois que a função termina de executar. Além disso, se eu mudar o valor de uma variável em uma função e esta variável estiver sendo usada em outra função, o valor na outra função também será alterado. Olhem o exemplo:&lt;br /&gt;&lt;br /&gt;s16 i=0;&lt;br /&gt;void func2() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;i++;&lt;br /&gt;}&lt;br /&gt;void func1 () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;for (i=0; i&amp;lt;40; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;func2();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(0,i&amp;gt;&amp;gt;1,'i=%d',i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;No exemplo acima, vai imprimir os números de 0 a 39 pulando de dois em dois, apesar do for em func1 mandar i++. Isso complica muito a interpretação e pode mascarar erros. Então vamos usar variáveis globais para aquilo que envolve todo o programa, como a posição do tanque, o ângulo do canhão, a posição do tiro, etc.&lt;br /&gt;&lt;br /&gt;Para organizar melhor a função main, vamos usar funções para as diversas ações do jogo. Desta forma a função main contém o esqueleto principal, e o detalhamento de cada ação fica em uma função diferente. Olhem o fonte do programa como ficou:&lt;br /&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;#include &amp;quot;gfx/all_gfx.c&amp;quot;&lt;br /&gt;#include &amp;quot;gfx/all_gfx.h&amp;quot;&lt;br /&gt;&lt;br /&gt;// Variaveis Globais&lt;br /&gt;s16 angulo_body=0;&lt;br /&gt;s16 angulo_turret=0;&lt;br /&gt;s16 velocidade=1;&lt;br /&gt;s16 x=111;&lt;br /&gt;s16 y=79;&lt;br /&gt;s16 angulo_tiro=0;&lt;br /&gt;s32 x_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s32 y_tiro=-8&amp;lt;&amp;lt;8;&lt;br /&gt;s16 vel_tiro=4;&lt;br /&gt;s8 atirando=0;&lt;br /&gt;&lt;br /&gt;void giraturret() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_turret=PA_GetAngle(x+16,y+16,Stylus.X,Stylus.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,0,angulo_turret);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void movetanque() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left &amp;amp;&amp;amp; Pad.Held.A) || (Pad.Held.Right &amp;amp;&amp;amp; Pad.Held.Y) || (Pad.Held.Up &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Down &amp;amp;&amp;amp; Pad.Held.X) || (Pad.Held.X &amp;amp;&amp;amp; Pad.Held.B) || (Pad.Held.Y &amp;amp;&amp;amp; Pad.Held.A)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //o usu&amp;aacute;rio est&amp;aacute; sacaneando, n&amp;atilde;o executa nada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Up || Pad.Held.Down || Pad.Held.Left || Pad.Held.Right || Pad.Held.A || Pad.Held.B || Pad.Held.X || Pad.Held.Y)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;  //nenhuma dire&amp;ccedil;&amp;atilde;o foi pressionada&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; !(Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;amp;&amp;amp; (Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=128*(Pad.Held.Up || Pad.Held.X)+384*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A)-velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (angulo_body) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=192*(Pad.Held.Up || Pad.Held.X)+320*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=64*(Pad.Held.Up || Pad.Held.X)+448*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B)-velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;lt;0) { x=0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;gt;223) { x=223; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;lt;0) { y=0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;gt;159) { y=159; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,1,angulo_body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,0,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,1,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void atira() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (atirando) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*vel_tiro;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || x_tiro&amp;gt;260&amp;lt;&amp;lt;8 || y_tiro&amp;lt;-8&amp;lt;&amp;lt;8 || y_tiro&amp;gt;200&amp;lt;&amp;lt;8) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.L || Pad.Newpress.R) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atirando=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_tiro=angulo_turret;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro=(x+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro=(y+12)&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_tiro+=PA_Cos(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y_tiro-=PA_Sin(angulo_tiro)*24;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,2,angulo_tiro);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,2,x_tiro&amp;gt;&amp;gt;8,y_tiro&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init16bitBg(0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Draw16bitRect(0,0,0,255,191,32768+10*1024+31*32+25);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 0, (void*)tank_turret_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 0, (void*)tank_turret_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 1, (void*)tank_body_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 1, (void*)tank_body_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 2, (void*)tiro_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 2, (void*)tiro_Sprite, OBJ_SIZE_8X8, 1, 0, -8, -8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 1, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 2, 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;giraturret();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;movetanque();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atira();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;Bom, quase todo o programa já foi explicado nos últimos artigos. Somente a rotina de tiro foi alterada, para o tiro sair do canhão ao invés do centro da tela, e permitir que o canhão se mova enquanto o tiro também se move. A melhor maneira de fazer isso é substituir o loop dentro da rotina de tiro (que iria paralizar o tanque enquanto o tiro se movesse) por uma única alteração de posição. O loop passa a ser o principal do programa, o loop infinto da função main.&lt;br /&gt;Na função atira, o programa verifica se foi disparado um tiro. Se existe algum tiro disparado, atualiza a posição dele. Se passar do limite da tela, encerra o disparo, permitindo que um novo disparo seja feito. Se o flag de tiro não está ativo (flag é uma variável que representa se algo aconteceu ou não), o programa verifica se foi pressionado o botão L ou o R. Se foi, inicia o tiro a 24 pixels de raio do centro do canhão aplicados seno e cosseno do ângulo do canhão. Isso vai assegurar que nenhum tiro saia de cima do tanque ou do meio do canhão. Outra coisa é que o programa fixa o ângulo do tiro igual ao do canhão no momento do disparo. Se o canhão trocar de ângulo depois de disparar, ele não influenciará o tiro.&lt;br /&gt;A função main pode ser reduzida mais ainda, criando uma função "inicia", onde são colocadas todos aqueles comandos anteriores ao loop infinito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6355018546882828651?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6355018546882828651/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6355018546882828651' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6355018546882828651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6355018546882828651'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/05/variveis-globais-continuando-atirar.html' title='Variáveis Globais (Continuando a Atirar)'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/RjlZhvx8F2I/AAAAAAAAAEY/l5C0jcUeN_g/s72-c/c.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4543412896958226708</id><published>2007-04-25T15:01:00.000-07:00</published><updated>2008-11-13T02:21:21.767-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Atirando</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/Ri_g-Px8F0I/AAAAAAAAAEI/xeVmSoe-heA/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/Ri_g-Px8F0I/AAAAAAAAAEI/xeVmSoe-heA/s320/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5057508266552858434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Antes de incluir os tiros no jogo do tanque, vamos testar como atirar naquele programa de teste dos ângulos. Então iremos atirar em uma tela preta, a partir do centro da tela, conforme a stylus é usada.&lt;br /&gt;&lt;br /&gt;Para processar o movimento, necessitamos usar seno e cosseno. Seno é a projeção do ponto da circunferência em determinado ângulo sobre o eixo Y. Cosseno é a projeção desse mesmo ponto sobre o eixo X. Seno e Cosseno são expressos em valores entre -1 e 1, o que é um problema no DS porque os processadores dele não processam ponto flutuante, tornando muito lento o uso de ponto flutuante. Mas é possível processar ponto fixo, ou ponto não-flutuante. É só fazer "bit shifting", que é o processo de determinar que uma quantidade x de bits vai ser considerada à direita da vírgula (aqui não podemos falar em ponto decimal pois estaremos trabalhando em binário). Os sinais para bit shifting são &amp;gt;&amp;gt; e &amp;lt;&amp;lt;. Por exemplo: 256&amp;gt;&amp;gt;8 retorna 1 em inteiro pois a gente moveu 8 bits para depois da vírgula. 256 em binário é 100000000, cortando os últimos 8 bits, fica 1. 256&amp;gt;&amp;gt;4 fica 16, pois eu estou cortando os últimos quatro bits, sobrando 10000, que é a representação binária de 16.&lt;br /&gt;&lt;br /&gt;A PAlib tem funções de Seno e Cosseno para aqueles ângulos de 0 a 511, e o resultado é apresentado com bit shipfting para mais de 8 bits, ou seja, vai retornar de -256 a 256. Aí X e Y também têm que ser usados com bit shifting &amp;lt;&amp;lt; para o cálculo e  bit shifting &amp;gt;&amp;gt; para a apresentação. Pode-se dizer que &amp;lt;&amp;lt;8 é o mesmo que multiplicar por 256 e &amp;gt;&amp;gt;8 é o mesmo que dividir por 256, mas com um custo computacional muito menor.&lt;br /&gt;&lt;br /&gt;Vamos ao programa, então:&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;#include "gfx/all_gfx.c"&lt;br /&gt;#include "gfx/all_gfx.h"&lt;br /&gt;&lt;br /&gt;void atira(angulo) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 x=127&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 y=95&amp;lt;&amp;lt;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;while ((x&amp;gt;-8&amp;lt;&amp;lt;8&amp;&amp;x&amp;lt;262&amp;lt;&amp;lt;8)&amp;&amp;(y&amp;gt;-8&amp;lt;&amp;lt;8&amp;&amp;y&amp;lt;200&amp;lt;&amp;lt;8)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=PA_Cos(angulo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y-=PA_Sin(angulo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,0,x&amp;gt;&amp;gt;8,y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(1,0,5,"x=%d, x&amp;gt;&amp;gt;8=%d      ",x,x&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(1,0,6,"y=%d, y&amp;gt;&amp;gt;8=%d      ",y,y&amp;gt;&amp;gt;8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 angulo=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitText(1,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetTextCol(1,31,31,31); &lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 0, (void*)tiro_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 0, (void*)tiro_Sprite, OBJ_SIZE_8X8, 1, 0, -8, -8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo=PA_GetAngle(127,95,Stylus.X,Stylus.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,0,angulo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(1,0,4,"Angulo a partir do centro: %d   ",angulo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atira(angulo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Como o programa funciona:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;primeiro é criada uma função que vai movimentar o tiro. Ela funciona da seguinte forma:&lt;ul&gt;&lt;li&gt;recebe o parâmetro angulo.&lt;/li&gt;&lt;li&gt;posiciona x e y no centro da tela.&lt;/li&gt;&lt;li&gt;enquanto x ou y não passar para fora da tela faz o seguinte:&lt;ul&gt;&lt;li&gt;soma o cosseno do angulo a x.&lt;/li&gt;&lt;li&gt;diminui o seno do angulo de y. O eixo Y da circunferência cresce para cima, mas o eixo Y da tela do DS cresce para baixo, por isso diminuir o seno ao invés de aumentar.&lt;/li&gt;&lt;li&gt;mostra o sprite do tiro na posição x,y (cortando 8 bits).&lt;/li&gt;&lt;li&gt;escreve os valor de x e y e os mesmos valores cortando os 8 bits.&lt;/li&gt;&lt;li&gt;aguarda o próximo frame&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;depois o procedimento é igual ao nosso penúltimo programa, mas acrescentando o sprite do tiro, que é rotacionado conforme a stylus é usada. Esta parte não precisa comentar por já ter sido comentado nos dois últimos programas. A exceção é a chamada da função, que é a linha:&lt;br /&gt;atira(angulo);&lt;br /&gt;ou seja, chama a função atira passando o valor da variável angulo como parâmetro. Lembrem que na definição da função existe a leitura do parâmetro angulo. Neste caso foi usado angulo para a variável e angulo para o parâmetro da função, mas isso não é obrigatório nem necessário porque aqui estamos passando o valor, não interessando o nome da variável.&lt;/li&gt;&lt;/ul&gt;Imagem do tiro:&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/Ri_hGPx8F1I/AAAAAAAAAEQ/GDfLGpZhMk8/s1600-h/tiro.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/Ri_hGPx8F1I/AAAAAAAAAEQ/GDfLGpZhMk8/s200/tiro.gif" alt="" id="BLOGGER_PHOTO_ID_5057508403991811922" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4543412896958226708?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4543412896958226708/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4543412896958226708' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4543412896958226708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4543412896958226708'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/atirando.html' title='Atirando'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/Ri_g-Px8F0I/AAAAAAAAAEI/xeVmSoe-heA/s72-c/c.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5237385138398086559</id><published>2007-04-24T17:46:00.000-07:00</published><updated>2008-11-13T02:21:22.042-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/Ri6lC_97IEI/AAAAAAAAARo/-1e0jOP6Veg/s1600-h/6_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/Ri6lC_97IEI/AAAAAAAAARo/-1e0jOP6Veg/s400/6_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5057160902533128258" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/Ri6lIf97IFI/AAAAAAAAARw/j0xcGZc_wHw/s1600-h/6_2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/Ri6lIf97IFI/AAAAAAAAARw/j0xcGZc_wHw/s400/6_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5057160997022408786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5237385138398086559?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5237385138398086559/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5237385138398086559' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5237385138398086559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5237385138398086559'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/blog-post_24.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HWhMY73sHwQ/Ri6lC_97IEI/AAAAAAAAARo/-1e0jOP6Veg/s72-c/6_1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-1505648600820196598</id><published>2007-04-22T19:18:00.000-07:00</published><updated>2007-04-22T19:19:48.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='extras'/><title type='text'>Trilha sonora de Hotel Dusk</title><content type='html'>Download &lt;a href="http://www.sendspace.com/file/4zxfhj"&gt;aqui.&lt;/a&gt;&lt;br /&gt;Cuidado com as propagandas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-1505648600820196598?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/1505648600820196598/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=1505648600820196598' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1505648600820196598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1505648600820196598'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/trilha-sonora-de-hotel-dusk.html' title='Trilha sonora de Hotel Dusk'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6308975941047429310</id><published>2007-04-16T19:03:00.000-07:00</published><updated>2008-11-13T02:21:22.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Movendo o Tanque</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/RiQrRCoi_xI/AAAAAAAAADw/vPRVNhBf_kM/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_6vcJAtQecew/RiQrRCoi_xI/AAAAAAAAADw/vPRVNhBf_kM/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5054212253581246226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;O programa usa os dois sprites abaixo e rotaciona conforme são pressionados os direcionais ou a stylus. Como o programa poderá ser usado por destros e canhotos, eu programei os botões A, B, X e Y para agirem também como se fossem um direcional.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/RiQrbSoi_yI/AAAAAAAAAD4/ozlcalfnGvc/s1600-h/tank_body.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RiQrbSoi_yI/AAAAAAAAAD4/ozlcalfnGvc/s320/tank_body.gif" alt="" id="BLOGGER_PHOTO_ID_5054212429674905378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/RiQrhSoi_zI/AAAAAAAAAEA/-yajVboKPTM/s1600-h/tank_turret.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RiQrhSoi_zI/AAAAAAAAAEA/-yajVboKPTM/s320/tank_turret.gif" alt="" id="BLOGGER_PHOTO_ID_5054212532754120498" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inicia as variáveis.&lt;/li&gt;&lt;li&gt;Inicia a PA-Lib, criando um fundo liso com uma cor "amarelo sujo esverdeado"&lt;/li&gt;&lt;li&gt;Inicializa os sprites e as rotações&lt;/li&gt;&lt;li&gt;Começa o loop infinito&lt;/li&gt;&lt;li&gt;Se for usada a stylus, verifica o ângulo entre a stylus e o centro do tanque. Rotaciona o sprite do canhão.&lt;/li&gt;&lt;li&gt;Se for feita sacanagem (tipo pressionar esquerda e A), não processa movimento.&lt;/li&gt;&lt;li&gt;Se não for pressionado nenhum botão de movimento, também não processa movimento.&lt;/li&gt;&lt;li&gt;Se forem pressionados somente botões de movimento horizontal, calcula o movimento horizontal e rotaciona o sprite do tanque.&lt;/li&gt;&lt;li&gt;Se forem pressionados somente botões de movimento vertical, processa o movimento vertical e rotaciona o sprite do tanque.&lt;/li&gt;&lt;li&gt;Senão (se forem pressionados botões verticais e horizontais), processa os movimentos horizontal e vertical e rotaciona o sprite do tanque.&lt;/li&gt;&lt;li&gt;Não deixa o tanque sair da tela.&lt;/li&gt;&lt;li&gt;Posiciona os sprites na nova posição calculada.&lt;/li&gt;&lt;li&gt;faz os encerramentos de praxe, aguardando o ciclo de frame e voltando ao início do loop infinito.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Código Fonte (desculpem mas não consegui fazer mais otimizado que isso):&lt;br /&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;#include "gfx/all_gfx.c"&lt;br /&gt;#include "gfx/all_gfx.h"&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 angulo_body=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 angulo_turret=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 velocidade=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 x=111;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s16 y=79;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init16bitBg(0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Draw16bitRect(0,0,0,255,191,32768+10*1024+31*32+25);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 0, (void*)tank_turret_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 0, (void*)tank_turret_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(0, 1, (void*)tank_body_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(0, 1, (void*)tank_body_Sprite, OBJ_SIZE_32X32, 1, 0, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetSpriteRotEnable(0, 1, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_turret=PA_GetAngle(x+16,y+16,Stylus.X,Stylus.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,0,angulo_turret);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left&amp;&amp;Pad.Held.A) || (Pad.Held.Right&amp;&amp;Pad.Held.Y) || (Pad.Held.Up&amp;&amp;Pad.Held.B) || (Pad.Held.Down&amp;&amp;Pad.Held.X) || (Pad.Held.X&amp;&amp;Pad.Held.B) || (Pad.Held.Y&amp;&amp;Pad.Held.A)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//o usuário está sacaneando, não executa nada&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Up || Pad.Held.Down || Pad.Held.Left || Pad.Held.Right || Pad.Held.A || Pad.Held.B || Pad.Held.X || Pad.Held.Y)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//nenhuma direção foi pressionada&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;&amp; !(Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A) -velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (!(Pad.Held.Left || Pad.Held.Y || Pad.Held.Right || Pad.Held.A) &amp;&amp; (Pad.Held.Up || Pad.Held.X || Pad.Held.Down || Pad.Held.B)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=128*(Pad.Held.Up || Pad.Held.X) +384*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B) -velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=256*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x+=velocidade*(Pad.Held.Right || Pad.Held.A) -velocidade*(Pad.Held.Left || Pad.Held.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (angulo_body) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=192*(Pad.Held.Up || Pad.Held.X) +320*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo_body=64*(Pad.Held.Up || Pad.Held.X) +448*(Pad.Held.Down || Pad.Held.B);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y+=velocidade*(Pad.Held.Down || Pad.Held.B) -velocidade*(Pad.Held.Up || Pad.Held.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&lt;0) { x=0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&gt;223) { x=223; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&lt;0) { y=0; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&gt;159) { y=159; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetRotsetNoZoom(0,1,angulo_body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,0,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(0,1,x,y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6308975941047429310?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6308975941047429310/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6308975941047429310' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6308975941047429310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6308975941047429310'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/movendo-o-tanque.html' title='Movendo o Tanque'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6vcJAtQecew/RiQrRCoi_xI/AAAAAAAAADw/vPRVNhBf_kM/s72-c/c.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3594059784478146167</id><published>2007-04-12T19:03:00.000-07:00</published><updated>2008-11-13T02:21:22.684-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/Rh7lKqfy9XI/AAAAAAAAARE/-r2HaMd8mm0/s1600-h/51.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/Rh7lKqfy9XI/AAAAAAAAARE/-r2HaMd8mm0/s400/51.jpg" alt="" id="BLOGGER_PHOTO_ID_5052727803325379954" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rh7lS6fy9YI/AAAAAAAAARM/gV6sissdI_E/s1600-h/5_2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rh7lS6fy9YI/AAAAAAAAARM/gV6sissdI_E/s400/5_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5052727945059300738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3594059784478146167?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3594059784478146167/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3594059784478146167' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3594059784478146167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3594059784478146167'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/blog-post_12.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HWhMY73sHwQ/Rh7lKqfy9XI/AAAAAAAAARE/-r2HaMd8mm0/s72-c/51.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-458735087937128529</id><published>2007-04-09T07:20:00.000-07:00</published><updated>2007-04-09T07:46:32.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Começando um Jogo</title><content type='html'>O Leonardo me enfogueirou para fazermos um jogo, tanto por e-mail quanto na comunidade de homebrews de DS. A idéia é fazer um jogo de tanque, tipo o Combat do Atari com mais gráfico e cenário maior, mas a idéia é que dê para jogar por wifi.&lt;br /&gt;&lt;br /&gt;Então surgiu a idéia de ir desenvolvendo esse jogo e ir explicando a programação dele aqui. Nada melhor para aprender do que a prática.&lt;br /&gt;&lt;br /&gt;Movimento básico do jogo: o direcional controla o tanque nas 8 direções. A stylus controla o canhão nos 360 graus.&lt;br /&gt;&lt;br /&gt;Primeiro passo: como fazer o jogo saber qual o ângulo em que a stylus está apontando?&lt;br /&gt;A PALib trata ângulos com valores entre 0 e 511 ao invés de 0 a 359. 0=0 graus, 128=90 graus, 256=180 graus e 384=270 graus. Tanto para rotacionar sprites quanto para detectar um ângulo, a informação é sempre em 9 bits (valores de 0 a 511).&lt;br /&gt;&lt;br /&gt;Vamos fazer um programa para testar se isso é possível, medindo o ângulo do toque da stylus em relação ao centro da tela.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// Includes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#include &amp;lt;PA9.h&amp;gt;       // Include for PA_Lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// Function: main()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;int main(int argc, char ** argv)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;s16 angulo=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;PA_InitText(1,0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;PA_SetTextCol(1,31,31,31);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Stylus.Held) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;angulo=PA_GetAngle(127,95,Stylus.X,Stylus.Y);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(1,0,4,"Angulo a partir do centro: %d&amp;nbsp;&amp;nbsp;&amp;nbsp;",angulo);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;} // End of main()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inicializa a variável angulo em 0&lt;/li&gt;&lt;li&gt;Inicializa a PALib e define o texto na tela 1 na cor branca&lt;br /&gt;&lt;/li&gt;&lt;li&gt;começa o loop infinito&lt;/li&gt;&lt;li&gt;verifica se a stylus está apertada&lt;/li&gt;&lt;li&gt;calcula o angulo entre o centro da tela (coordenada 127,95) e a posição da stylus&lt;/li&gt;&lt;li&gt;escreve esse angulo&lt;/li&gt;&lt;li&gt;termina o loop, voltando para o início dele (é infinito).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-458735087937128529?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/458735087937128529/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=458735087937128529' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/458735087937128529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/458735087937128529'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/comeando-um-jogo.html' title='Começando um Jogo'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2082320940303641281</id><published>2007-04-04T08:37:00.000-07:00</published><updated>2008-11-13T02:21:22.901-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Conselho de Miyamoto para os novos desenvolvedores: "dont forget to get a life"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HWhMY73sHwQ/RhPHWHeSORI/AAAAAAAAAQs/t-Po90WHuWQ/s1600-h/shigeru_miyamoto_mario_luigi.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_HWhMY73sHwQ/RhPHWHeSORI/AAAAAAAAAQs/t-Po90WHuWQ/s400/shigeru_miyamoto_mario_luigi.jpg" alt="" id="BLOGGER_PHOTO_ID_5049598789989579026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;script src="http://ds.qj.net/ads2.php?c=8"&gt;&lt;/script&gt;&lt;!-- The ARTICLES Column ============================================================--&gt;&lt;script&gt; var ArticlesID = new Array("88368"); new Ajax.Request ('/modules/articles_module/AJAX/GetVotes.php', {method: 'post',parameters: 'articles='+ArticlesID.join('__')+'&amp;blog=355',onSuccess: UpdateArticles,onFailure: UpdateNothing}); &lt;/script&gt;&lt;script&gt; var SocialLinks = new Array();  SocialLinks[0] = new Array('28', 'http%3A%2F%2Fwww.spurl.net%2Fspurl.php%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Spurl');  SocialLinks[1] = new Array('9', 'http%3A%2F%2Fdigg.com%2Fsubmit%3Fphase%3D2%26url%3D%40%40BOOKMARK_PERMALINK%40%40', 'Digg it');  SocialLinks[2] = new Array('24', 'http%3A%2F%2Freddit.com%2Fsubmit%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'reddit');  SocialLinks[3] = new Array('7', 'http%3A%2F%2Fdel.icio.us%2Fpost%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'del.icio.us');  SocialLinks[4] = new Array('26', 'http%3A%2F%2Fwww.shadows.com%2Ffeatures%2Ftcr.htm%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Shadows');  SocialLinks[5] = new Array('3', 'http%3A%2F%2Fblogmarks.net%2Fmy%2Fnew.php%3Fmini%3D1%26title%3D%40%40BOOKMARK_TITLE%40%40%26url%3D%40%40BOOKMARK_PERMALINK%40%40', 'Blogmarks');  SocialLinks[6] = new Array('2', 'http%3A%2F%2Fwww.blinklist.com%2Findex.php%3FAction%3DBlink%2Faddblink.php%26Url%3D%40%40BOOKMARK_PERMALINK%40%40%26Title%3D%40%40BOOKMARK_TITLE%40%40', 'BlinkList');  SocialLinks[7] = new Array('22', 'http%3A%2F%2Fwww.onlywire.com%2Fb%2F%3Fu%3D%40%40BOOKMARK_PERMALINK%40%40%26t%3D%40%40BOOKMARK_TITLE%40%40', 'Onlywire');  SocialLinks[8] = new Array('21', 'http%3A%2F%2Fwww.netvouz.com%2Faction%2FsubmitBookmark%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40%26popup%3Dno', 'Netvouz');  SocialLinks[9] = new Array('25', 'http%3A%2F%2Fscuttle.org%2Fbookmarks.php%2Fpass%3Faction%3Dadd%26address%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Scuttle');  SocialLinks[10] = new Array('23', 'http%3A%2F%2Fwww.rawsugar.com%2Fpages%2Ftagger.faces%3Fturl%3D%40%40BOOKMARK_PERMALINK%40%40%26tttl%3D%40%40BOOKMARK_TITLE%40%40', 'RawSugar');  SocialLinks[11] = new Array('27', 'http%3A%2F%2Fsimpy.com%2Fsimpy%2FLinkAdd.do%3Fnote%3D%40%40BOOKMARK_TITLE%40%40%26href%3D%40%40BOOKMARK_PERMALINK%40%40', 'Simpy');  SocialLinks[12] = new Array('1', 'http%3A%2F%2Fblinkbits.com%2Fbookmarklets%2Fsave.php%3Fv%3D1%26source_url%3D%40%40BOOKMARK_PERMALINK%40%40%26Title%3D%40%40BOOKMARK_TITLE%40%40', 'BlinkBits');  SocialLinks[13] = new Array('8', 'http%3A%2F%2Fde.lirio.us%2Frubric%2Fpost%3Furi%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'de.lirio.us');  SocialLinks[14] = new Array('6', 'http%3A%2F%2Fwww.connotea.org%2Fadd%3Fcontinue%3Dreturn%26uri%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Connotea');  SocialLinks[15] = new Array('5', 'http%3A%2F%2Fwww.citeulike.org%2Fposturl%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'CiteUlike');  SocialLinks[16] = new Array('19', 'http%3A%2F%2Fma.gnolia.com%2Fbookmarklet%2Fadd%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'ma.gnolia');  SocialLinks[17] = new Array('30', 'http%3A%2F%2Fwww.talkdigger.com%2Findex.php%3Fsurl%3D%40%40BOOKMARK_PERMALINK%40%40', 'TalkDigger');  SocialLinks[18] = new Array('20', 'http%3A%2F%2Fwww.maple.nu%2Fbookmarks%2Fbookmarklet%3Fbookmark%5Burl%5D%3D%40%40BOOKMARK_PERMALINK%40%40%26bookmark%5Bdescription%5D%3D%40%40BOOKMARK_TITLE%40%40', 'Maple.nu');  SocialLinks[19] = new Array('11', 'http%3A%2F%2Ffeedmelinks.com%2Fcategorize%3Ffrom%3Dtoolbar%26op%3Dsubmit%26name%3D%40%40BOOKMARK_TITLE%40%40%26url%3D%40%40BOOKMARK_PERMALINK%40%40', 'feedmelinks');  SocialLinks[20] = new Array('17', 'http%3A%2F%2Fwww.linkagogo.com%2Fgo%2FAddNoPopup%3Ftitle%3D%40%40BOOKMARK_TITLE%40%40%26url%3D%40%40BOOKMARK_PERMALINK%40%40', 'Linkagogo');  SocialLinks[21] = new Array('14', 'http%3A%2F%2Fwww.gravee.com%2Faccount%2Fbookmarkpop%3Fu%3D%40%40BOOKMARK_PERMALINK%40%40%26t%3D%40%40BOOKMARK_TITLE%40%40', 'Gravee');  SocialLinks[22] = new Array('12', 'http%3A%2F%2Fwww.furl.net%2FstoreIt.jsp%3Ft%3D%40%40BOOKMARK_TITLE%40%40%26u%3D%40%40BOOKMARK_PERMALINK%40%40', 'Furl');  SocialLinks[23] = new Array('10', 'http%3A%2F%2Fwww.feedmarker.com%2Fadmin.php%3Fdo%3Dbookmarklet_mark%26url%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'FeedMarker');  SocialLinks[24] = new Array('32', 'http%3A%2F%2Fmyweb2.search.yahoo.com%2Fmyresults%2Fbookmarklet%3Ft%3D%40%40BOOKMARK_TITLE%40%40%26u%3D%40%40BOOKMARK_PERMALINK%40%40', 'Yahoo MyWeb');  SocialLinks[25] = new Array('31', 'http%3A%2F%2Fwww.wink.com%2F_%2Ftag%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26doctitle%3D%40%40BOOKMARK_TITLE%40%40', 'Wink');  SocialLinks[26] = new Array('4', 'http%3A%2F%2Fbuddymarks.com%2Fadd_bookmark.php%3Fbookmark_title%3D%40%40BOOKMARK_TITLE%40%40%26bookmark_url%3D%40%40BOOKMARK_PERMALINK%40%40', 'Buddymarks');  SocialLinks[27] = new Array('29', 'http%3A%2F%2Fwww.tagtooga.com%2Ftapp%2Fdb.exe%3Fc%3DjsEntryForm%26b%3Dfx%26title%3D%40%40BOOKMARK_TITLE%40%40%26url%3D%40%40BOOKMARK_PERMALINK%40%40', 'tagtooga');  SocialLinks[28] = new Array('18', 'http%3A%2F%2Flinkroll.com%2Finsert.php%3Furl%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Linkroll');  SocialLinks[29] = new Array('13', 'http%3A%2F%2Fwww.givealink.org%2Fcgi-pub%2Fbookmarklet%2FbookmarkletLogin.cgi%3F%26uri%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'Give a Link');  SocialLinks[30] = new Array('15', 'http%3A%2F%2Fwww.igooi.com%2Faddnewitem.aspx%3Fself%3D1%26noui%3Dyes%26jump%3Dclose%26url%3D%40%40BOOKMARK_PERMALINK%40%40%26title%3D%40%40BOOKMARK_TITLE%40%40', 'igooi');  SocialLinks[31] = new Array('16', 'http%3A%2F%2Flister.lilisto.com%2F%3Ft%3D%40%40BOOKMARK_TITLE%40%40%26l%3D%40%40BOOKMARK_PERMALINK%40%40', 'Lilisto');  SocialLinks[32] = new Array('33', 'http%3A%2F%2Fwww.beta.netscape.com%2Fsubmit%2F', 'Netscape.com');   &lt;/script&gt;  &lt;div id="dialog" style="position: absolute; top: 0pt; left: 0pt; background-repeat: repeat; width: 1264px; height: 834px; display: none; z-index: 5; opacity: 0.4;"&gt;    &lt;img src="http://img.qj.net/img/transparent.png" height="100%" width="100%" /&gt; &lt;/div&gt; &lt;div id="efriendform" style="border: 1px solid rgb(102, 102, 102); display: none; position: absolute; height: 400px; width: 500px; background-color: rgb(242, 242, 242); z-index: 6; text-align: center;"&gt; &lt;/div&gt; &lt;script&gt; $('dialog').style.width = document.body.clientWidth; $('dialog').style.height = document.body.clientHeight; &lt;/script&gt; &lt;!-- START Image effects --&gt;&lt;script type="text/javascript" src="http://ds.qj.net/cm/js/lightbox/scriptaculous.js?load=effects"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://ds.qj.net/cm/js/lightbox/effects.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://ds.qj.net/cm/js/lightbox/lightbox.js"&gt;&lt;/script&gt;             &lt;!-- FINISH Image effects --&gt;  &lt;div class="head-wrap"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="title-wrap"&gt;&lt;span class="posted"&gt;&lt;br /&gt;Ou traduzido para o português: "Não se esqueçam de ter uma vida". A entrevista recentemente publicada pela GamePro americana e Shigeru Miyamoto teve foco no recente lançamento do Wii nos EUA, mas o que realmente chamou atenção no Digg foi o conselho de Miyamoto para aqueles que querem ser desenvolvedores de sucesso.&lt;br /&gt;&lt;br /&gt;E seu conselho é:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="posted"&gt;Tome uma chance: faça jogos, mostre-os;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="posted"&gt;Aprenda a entender o criticismo (você terá caminhões disso no trabalho);&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="posted"&gt;E enquanto estiver à ativa: não se esqueça de ter uma vida.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="posted"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Enquanto jovens são estudantes, eu acho que é importante para eles não apenas focar em algo como programação ou só em videogames. Ao invés disso, deveriam focar em coisas que só podem fazer quando estão no colégio. Sair, conhecer gente, e conversar. Nas universidades existem pessoas trabalhando em uma grande variedade de campos e gêneros, e eu acho que o mais você se expôe nesses amplos ramos, melhor você se sairá a longo prazo."&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;&lt;br /&gt;Lembrem-se da história por trás de Zelda, seu amor por explorar o interior do Japão.&lt;br /&gt;&lt;br /&gt;So its all about. Get laid m*therf*ckers!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2082320940303641281?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2082320940303641281/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2082320940303641281' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2082320940303641281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2082320940303641281'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/conselho-de-miyamoto-para-os-novos.html' title='Conselho de Miyamoto para os novos desenvolvedores: &quot;dont forget to get a life&quot;'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HWhMY73sHwQ/RhPHWHeSORI/AAAAAAAAAQs/t-Po90WHuWQ/s72-c/shigeru_miyamoto_mario_luigi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-9064866253250130940</id><published>2007-04-01T13:39:00.000-07:00</published><updated>2008-11-13T02:21:23.192-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/RhAYqfbTSzI/AAAAAAAAAQU/aTnVINRi77I/s1600-h/3_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/RhAYqfbTSzI/AAAAAAAAAQU/aTnVINRi77I/s400/3_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5048562300551908146" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/RhAYv_bTS0I/AAAAAAAAAQc/lz--_SEBOqY/s1600-h/3_2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/RhAYv_bTS0I/AAAAAAAAAQc/lz--_SEBOqY/s400/3_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5048562395041188674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RhAY3PbTS1I/AAAAAAAAAQk/dwhDFknSXIQ/s1600-h/3_3.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/RhAY3PbTS1I/AAAAAAAAAQk/dwhDFknSXIQ/s400/3_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5048562519595240274" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-9064866253250130940?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/9064866253250130940/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=9064866253250130940' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/9064866253250130940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/9064866253250130940'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/04/blog-post.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HWhMY73sHwQ/RhAYqfbTSzI/AAAAAAAAAQU/aTnVINRi77I/s72-c/3_1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-323893373874168267</id><published>2007-03-29T13:43:00.000-07:00</published><updated>2008-11-13T02:21:23.662-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Colocando a Mão nos Fundos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/RgwzSF-mOGI/AAAAAAAAADc/mIKW3oI5ZcA/s1600-h/c.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_6vcJAtQecew/RgwzSF-mOGI/AAAAAAAAADc/mIKW3oI5ZcA/s200/c.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5047465668310874210" /&gt;&lt;/a&gt;&lt;br /&gt;Vamos usar essas imagens que foram baixadas e convertidas. A intenção é fazer um programa onde os fundos corram da direita para a esquerda, o fundo mais da frente mais rápido e o mais de trás mais lento, para dar a sensação de profundidade. O sprite do avião deverá se mover conforme pressionamos o direcional.&lt;br /&gt;&lt;br /&gt;Copie o conteúdo de PATemplate para uma nova pasta. Entre em source e crie uma pasta chamada "gfx". Copie os arquivos gerados pelo PAGfx (incluindo o PAGfx.ini) para a pasta "gfx" criada. Não é necessário copiar a pasta bin e seu conteúdo. Dois clicks em "Template.pnproj". Abra a pasta source e edite o arquivo main.c. Coloque o seguinte conteúdo nele:&lt;br /&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &amp;lt;pa9.h&amp;gt;       // Include for PA_Lib&lt;br /&gt;&lt;br /&gt;#include "gfx/all_gfx.c"&lt;br /&gt;#include "gfx/all_gfx.h"&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;//variaveis&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 x=95;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 y=79;&lt;br /&gt;&amp;nbsp;&amp;nbsp;s32 scrl=0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//programa&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(1, 0, fundo3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(1, 1, fundo4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_EasyBgLoad(1, 2, fundo5);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitParallaxX(1, 512, 256, 128, 0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_LoadSpritePal(1, 0, (void*)aviao_Pal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_CreateSprite(1, 0, (void*)aviao_Sprite, OBJ_SIZE_64X32, 1, 0, x, y);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scrl ++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_ParallaxScrollX(1, scrl);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x += (Pad.Held.Right - Pad.Held.Left) * 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y += (Pad.Held.Down - Pad.Held.Up) * 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;lt;0) y=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y&amp;gt;159) y=159;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;lt;0) x=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x&amp;gt;191) x=191;  &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetSpriteXY(1,0,x,y);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;br /&gt;&lt;br /&gt;Como o programa funciona:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inicializa as variáveis x, y (que serão a posição do canto superior esquerdo do sprite) e a variável scrl (que será o valor auxiliar do scroll da tela).&lt;/li&gt;&lt;li&gt;Carrega, na tela 0, no background mais da frente (zero), o arquivo gerado a partir da imagem "fundo3".&lt;/li&gt;&lt;li&gt;Carrega, na tela 0, no background nivel 1, o arquivo gerado de "fundo4".&lt;/li&gt;&lt;li&gt;Carrega, na tela 0, no BG2, o "fundo5".&lt;/li&gt;&lt;li&gt;Define o Parallax dos fundos. Parallax é um recurso da PAlib para a movimentação de fundos. No caso, vamos setar apenas o ParallaxX (somente horizontal). Os parâmetros de PA_InitParallaxX são: tela, velocidade_BG0, velocidade_BG1, velocidade_BG2 e velocidade_BG3. As velocidades seguem a seguinte lógica: 256 é um pixel a cada frame de animação. Valores maiores aumentam a velocidades (mais pixels por frame), valores menores diminuem a velocidade (demora mais frames para mover um pixel). Por exemplo: velocidade=512 irá mover dois pixels por frame, 1024 irá mover 4 pixels; 128 irá mover um pixel a cada 2 frames, 64 moverá um pixel a cada 4 frames, 96 moverá um pixel a cada 3 frames. 0 (zero) significa que esse fundo não será afetado pelo parallax.&lt;/li&gt;&lt;li&gt;Carrega a paleta de cores do sprite na tela 1, na paleta 0 da memória de vídeo, usando a paleta gerada pela imagem do avião.&lt;/li&gt;&lt;li&gt;Cria o sprite na tela 1, identificado como 0, usando a imagem do avião, de tamanho 64x32 (OBJ_SIZE_64X32), em modo 256 cores (1), usando a paleta 0, posicionado em x,y.&lt;/li&gt;&lt;li&gt;Começa o loop infinito do jogo.&lt;/li&gt;&lt;li&gt;Aumenta scrl (soma 1 a scrl).&lt;/li&gt;&lt;li&gt;Move o parallax da tela 1 conforme o valor de scrl.&lt;/li&gt;&lt;li&gt;Se for pressionado para a direita, x é acrescido de 2. Se for pressionado para a esquerda, x é decrescido de 2. Se nenhum dos dois for pressionado, x se mantém igual (lembram o que eu escrevi no segundo artigo?)&lt;/li&gt;&lt;li&gt;Se for pressionado para baixo, y é acrescido de 2. Se for pressionado para cima, y é decrescido de 2. Se nenhum dos dois for pressionado, y permanece igual.&lt;/li&gt;&lt;li&gt;Verifica que o sprite não passe dos limites da tela (x não pode ser menor que 0 nem maior que 191, ou seja, 255-64; y não pode ser menor que 0 e nem maior que 159, ou seja, 191-32). Se o sprite passar do limite da tela, ele deve ser resetado para o limite da tela. Reparem também que nesta seqüência de IFs eu não usei as chaves; se o if executar um comando apenas, elas não são necessárias.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Posiciona, na tela 1, o sprite 0 na posição x,y&lt;/li&gt;&lt;li&gt;Aguarda o processamento do frame.&lt;/li&gt;&lt;li&gt;Encerra o loop, como ele é infinito, volta para o início do loop.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/Rgw0jF-mOHI/AAAAAAAAADk/9ARnQs03MCc/s1600-h/exemplo.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_6vcJAtQecew/Rgw0jF-mOHI/AAAAAAAAADk/9ARnQs03MCc/s320/exemplo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5047467059880278130" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-323893373874168267?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/323893373874168267/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=323893373874168267' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/323893373874168267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/323893373874168267'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/colocando-mo-nos-fundos.html' title='Colocando a Mão nos Fundos'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6vcJAtQecew/RgwzSF-mOGI/AAAAAAAAADc/mIKW3oI5ZcA/s72-c/c.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-7795341248318443642</id><published>2007-03-28T08:21:00.001-07:00</published><updated>2008-11-13T02:21:23.951-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Sonic e Mario juntos em "Olympic Games"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/RgqGbfbTSxI/AAAAAAAAAQE/ffi9l9BDrj4/s1600-h/m_s_artwork_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/RgqGbfbTSxI/AAAAAAAAAQE/ffi9l9BDrj4/s200/m_s_artwork_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5046994139272661778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Eu não estaria anunciando isso hoje, se fosse 1 de abril. Sega e Nintendo, rivais nos anos 90, unem seus ícones pela primeira vez em &lt;span class="text"&gt;&lt;span nd="27" name="intelliTxt" id="intelliTXT"&gt;&lt;span nd="28" style="font-style: italic;"&gt;Mario &amp; Sonic at the Olympic Games&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span class="text"&gt;&lt;span nd="27" name="intelliTxt" id="intelliTXT"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgqGovbTSyI/AAAAAAAAAQM/wV1hpd5XeuU/s1600-h/m_s_titlelogo_final_2_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgqGovbTSyI/AAAAAAAAAQM/wV1hpd5XeuU/s200/m_s_titlelogo_final_2_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5046994366905928482" border="0" /&gt;&lt;/a&gt;"De fato, por um longo tempo estava a ser discutido a possibilidade de um dia um personagem competir com o outro. Agora foi dada a perfeita oportunidade para os personagens se conhecerem nos jogos olímpicos, podemos realmente ver quem é mais rápido, Mario, ou Sonic?", diz Miyamoto.&lt;span class="text"&gt;&lt;span nd="27" name="intelliTxt" id="intelliTXT"&gt;&lt;br /&gt;&lt;br /&gt;Me engana que eu gosto. Será mais um desafio criativo para a equipe que trabalhará no jogo, para fazer Sonic e Mario parecerem equivalentes em um mesmo jogo.&lt;br /&gt;&lt;br /&gt;Previsto para o natal deste ano, para wii e ds.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-7795341248318443642?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/7795341248318443642/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=7795341248318443642' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7795341248318443642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7795341248318443642'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/sonic-e-mario-juntos-em-olympic-games.html' title='Sonic e Mario juntos em &quot;Olympic Games&quot;'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HWhMY73sHwQ/RgqGbfbTSxI/AAAAAAAAAQE/ffi9l9BDrj4/s72-c/m_s_artwork_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3658095515731046909</id><published>2007-03-23T16:23:00.000-07:00</published><updated>2008-11-13T02:21:24.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>Não se deprima, jogue Duke3d!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgRkq5bwkDI/AAAAAAAAAOk/yhIhUXWz4Q8/s1600-h/DukeNukemPoster.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgRkq5bwkDI/AAAAAAAAAOk/yhIhUXWz4Q8/s400/DukeNukemPoster.jpg" alt="" id="BLOGGER_PHOTO_ID_5045268170696331314" border="0" /&gt;&lt;/a&gt;Um  recente artigo que saiu na "&lt;a href="http://www.newscientisttech.com/article/dn11351?"&gt;New Scientist Tech&lt;/a&gt;" diz que se jogar Duke3d, faz-se ser muito mais fácil diagnosticar a depressão. É uma interessante teoria, que pode ser lida &lt;a href="http://www.newscientisttech.com/article/dn11351?"&gt;aqui&lt;/a&gt; (em inglês).&lt;br /&gt;&lt;br /&gt;Outra boa notícia é que saiu a primeira versão beta da porta de Duke3d para DS.&lt;br /&gt;&lt;br /&gt;Hail to the King Baby!&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgRmB5bwkEI/AAAAAAAAAOs/15Twb5Yn0bc/s1600-h/duke3ds3_qjpreviewth.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/RgRmB5bwkEI/AAAAAAAAAOs/15Twb5Yn0bc/s400/duke3ds3_qjpreviewth.png" alt="" id="BLOGGER_PHOTO_ID_5045269665344950338" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3658095515731046909?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3658095515731046909/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3658095515731046909' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3658095515731046909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3658095515731046909'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/no-se-deprima-jogue-duke3d.html' title='Não se deprima, jogue Duke3d!'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/RgRkq5bwkDI/AAAAAAAAAOk/yhIhUXWz4Q8/s72-c/DukeNukemPoster.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4890662895017434206</id><published>2007-03-23T13:22:00.000-07:00</published><updated>2008-11-13T02:21:24.819-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Começando a Explorar a PAlib</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ4Yxo4hTI/AAAAAAAAADU/7bpYQdvo7mo/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ4Yxo4hTI/AAAAAAAAADU/7bpYQdvo7mo/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5045219480854627634" border="0" /&gt;&lt;/a&gt;O que seria de um video-game se não fossem as imagens. Hoje iremos começar a trabalhar com elas.&lt;br /&gt;&lt;br /&gt;Um jogo 2D normalmente usa dois tipos de imagens: fundos e objetos. O DS tem 4 níveis de fundos (backgrounds) e 4 níveis de objetos (sprites)&lt;br /&gt;&lt;br /&gt;O tipo de imagem mais comum para o fundo é o tiled background, a analogia da vida real são os azulejos: eu forro uma parede com azulejos que podem ser iguais ou diferentes. Para ilustrar, olhem &lt;a href="http://www.gsarchives.net/index2.php?category=backgrounds&amp;system=snes&amp;amp;game=final_fantasy_4&amp;type=backgrounds&amp;amp;level0=htmlmaps&amp;html=BaronCastle-mainhall.php&amp;amp;iframe=yes" target="_blank"&gt;este link&lt;/a&gt;. Ele é composto apenas de pequenas imagens que postas uma do lado da outra, repetidas ou não, aparecem como um fundo completo e coeso. As imagens estão &lt;a href="http://www.gsarchives.net/snes/final_fantasy_4/backgrounds/non-animatedtiles/BaronCastle/" target="_blank"&gt;neste link&lt;/a&gt;. Para termos uma melhor analogia, devemos comparar essa cena com aqueles azulejados portugueses, onde cada parte de uma imagem é pintada num azulejo, e todos dispostos juntos formam a imagem completa, como no caso &lt;a href="http://www.boutiquedorestauro.com/produtos/revestimentos/azulejos/img/intr-azulejos.jpg" target="_blank"&gt;desta imagem&lt;/a&gt;. Qual a utilidade de fazer a imagem com tiles (ajulejos)? Economia de memória de vídeo. Se houver dois ou mais tiles iguais, só é necessário armazenar um na memória, os outros são cópias.&lt;br /&gt;&lt;br /&gt;Os sprites normalmente são desenhados também em forma de tiles, mas de uma forma um pouco diferente. Na memória de vídeo, eles são alocados em outra área e passam sobre o fundo. Então se eu tenho um sprite e um tiled background, o sprite sempre aparecerá sobre o tiled background. O Nintendo DS pode armazenar até 128 sprites de até 64x64 pixels com 256 cores na memória de vídeo. A ordem de sobreposição dos sprites depende primeiramente do nível do sprite e depois do número do sprite. O nível 0 é o mais da frente e o 3 é o mais ao fundo. Dois sprites no mesmo nível, o de menor número aparecerá na frente.&lt;br /&gt;&lt;br /&gt;A PAlib tem um utilitário muito bom para transformar imagens de PC em tiled backgrounds ou sprites. Ele fica na pasta PAlib\Tools\PAGfx dentro da pasta do devkitpro. É necessário ter o &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=pt-br" target="_blank"&gt;.NET Framework&lt;/a&gt; instalado em seu computador.&lt;br /&gt;&lt;br /&gt;Primeiro, baixe as quatro imagens a seguir para o seu computador:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/RgQ33ho4hRI/AAAAAAAAADE/TIa0-gZ1tWA/s1600-h/fundo5.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_6vcJAtQecew/RgQ33ho4hRI/AAAAAAAAADE/TIa0-gZ1tWA/s320/fundo5.gif" alt="" id="BLOGGER_PHOTO_ID_5045218909623977234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ3dxo4hPI/AAAAAAAAAC0/EheTPi4cfUk/s1600-h/fundo4.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ3dxo4hPI/AAAAAAAAAC0/EheTPi4cfUk/s320/fundo4.gif" alt="" id="BLOGGER_PHOTO_ID_5045218467242345714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6vcJAtQecew/RgQ3mRo4hQI/AAAAAAAAAC8/8QGBvWwCSkw/s1600-h/fundo3.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_6vcJAtQecew/RgQ3mRo4hQI/AAAAAAAAAC8/8QGBvWwCSkw/s320/fundo3.gif" alt="" id="BLOGGER_PHOTO_ID_5045218613271233794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ4Lxo4hSI/AAAAAAAAADM/O4y3UZmRrbw/s1600-h/aviao.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/RgQ4Lxo4hSI/AAAAAAAAADM/O4y3UZmRrbw/s200/aviao.gif" alt="" id="BLOGGER_PHOTO_ID_5045219257516328226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lembre-se não renomear as imagens, elas devem ser fundo5.gif, fundo4.gif, fundo3.gif e aviao.gif, respectivamente.&lt;br /&gt;&lt;br /&gt;Agora, vamos rodar o "PAGC Frontend.exe". Clique na aba "Sprites" e clique no botão "Add File(s)". Selecione o aviao.gif e confirme. O programa irá listar o avião.gif. O ColorMode deve ficar em "256 colors" e a Palette "aviao". Agora clique na aba "Backgrounds". Clique novamente em "Add File(s)". Selecione os três arquivos fundo3.gif, fundo4.gif e fundo5.gif e confirme. Eles serão listados também. O BgMode dos três deve ser TileBg e a Palette de cada um deve ser o nome do arquivo sem o gif. Caso eu tivesse dois arquivos com a mesma palete de cores, poderia alterar o nome da paleta de um deles para o mesmo nome da do outro, economizando memória, mas este não é o caso aqui. Em Global Options, verifique que a Transparent Color seja Magenta. Clique em "Save Ini" e pode sair do programa.&lt;br /&gt;&lt;br /&gt;Depois do ini pronto, rode o "PAGfx.exe". Ele irá criar diversos arquivos. Nós usaremos esses arquivos para fazer um fundo que se move em três níveis de velocidade. O fundo3 se moverá mais rápido e o 5 mais lento, dando efeito de profundidade. Tente procurar imagens de fundos que possam ser usados com essa finalidade, só lembrando que o tiled background deve ter tamanho de 256x256 ou 512x512 pixels. Pode-se recortar um pedaço de uma imagem e fazer. Eu cortei e espelhei, para dar continuidade quando fizesse o deslocamento, por isso as sombras das árvores ficaram todas voltadas para o centro da imagem. Depois cortei os três níveis e corrigi os espaços das montanhas no céu e preenchi tudo o que eu quisesse transparente com a cor magenta (&lt;span style="color: rgb(255, 0, 255);"&gt;magenta&lt;/span&gt; acho que é a cor menos usada, a não ser que eu estivesse fazendo um jogo da Barbie).  O PAGfx permite apenas que magenta, verde, preto ou branco seja a cor transparente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4890662895017434206?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4890662895017434206/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4890662895017434206' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4890662895017434206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4890662895017434206'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/comeando-explorar-palib.html' title='Começando a Explorar a PAlib'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/RgQ4Yxo4hTI/AAAAAAAAADU/7bpYQdvo7mo/s72-c/c.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6624993038538892962</id><published>2007-03-21T20:00:00.000-07:00</published><updated>2008-11-13T02:21:25.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/RgHxn5bwj9I/AAAAAAAAAN4/0GBSAyV228k/s1600-h/hq2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/RgHxn5bwj9I/AAAAAAAAAN4/0GBSAyV228k/s400/hq2.jpg" alt="" id="BLOGGER_PHOTO_ID_5044578725366108114" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6624993038538892962?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6624993038538892962/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6624993038538892962' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6624993038538892962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6624993038538892962'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/blog-post_2179.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HWhMY73sHwQ/RgHxn5bwj9I/AAAAAAAAAN4/0GBSAyV228k/s72-c/hq2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6150662471372251070</id><published>2007-03-17T21:30:00.000-07:00</published><updated>2008-11-13T02:21:25.118-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/RfzBqHTuWhI/AAAAAAAAANk/KEY1Za2nAx0/s1600-h/domingo,+18+de+mar%C3%A7o+de+2007.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/RfzBqHTuWhI/AAAAAAAAANk/KEY1Za2nAx0/s400/domingo,+18+de+mar%C3%A7o+de+2007.jpg" alt="" id="BLOGGER_PHOTO_ID_5043118612008557074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tenho estado super-sem tempo. Na próxima capricho nos balões, promessa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6150662471372251070?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6150662471372251070/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6150662471372251070' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6150662471372251070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6150662471372251070'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/tenho-estado-super-sem-tempo.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HWhMY73sHwQ/RfzBqHTuWhI/AAAAAAAAANk/KEY1Za2nAx0/s72-c/domingo,+18+de+mar%C3%A7o+de+2007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6724448269404498965</id><published>2007-03-16T18:06:00.000-07:00</published><updated>2008-11-13T02:21:25.193-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Começando a interagir com o DS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/RftF_DpTuTI/AAAAAAAAACk/PbBt3ZIaZHo/s1600-h/c.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_6vcJAtQecew/RftF_DpTuTI/AAAAAAAAACk/PbBt3ZIaZHo/s200/c.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5042701157384042802" /&gt;&lt;/a&gt;&lt;br /&gt;Chegou a hora de fazer os programas interagirem com o DS, obedecerem comandos. A primeira coisa é entender os comandos que a PAlib tem para fazer isso.&lt;br /&gt;&lt;br /&gt;O objeto Pad é o encarregado de ler os comandos dos controles do DS. O formato é Pad.Ação.Botão&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ação pode ser Held ou Newpress&lt;/li&gt;&lt;li&gt;Botão pode ser Up, Down, Left, Right, A, B, X, Y, L, R, Start ou Select&lt;/li&gt;&lt;/ul&gt;Para verificar se foi pressionado o botão A, usa-se if (Pad.Newpress.A) { ...&lt;br /&gt;Para verificar se a seta para a esquerda está sendo pressionada, usa-se if (Pad.Held.Left) { ...&lt;br /&gt;E assim por diante.&lt;br /&gt;&lt;br /&gt;Vamos analizar, então o programa do cálculo das cores:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fazer um programa que utilize os botões Left, Right, A, B, L e R para alterar os valores de Red, Green e Blue das cores, calculando o valor decimal resultante e mostrar os valores individuais, o resultante e desenhar um quadrado na tela com a cor calculada&lt;/li&gt;&lt;li&gt;Fórmula: RGB podem variar cada um entre 0 e 31. O valor resultante é composto de 16 bits. O bit mais significativo sempre é 1, os 5 seguintes são o azul, os 5 seguintes o verde e os últimos 5 são o vermelho. Então a fórmula é 32768+azul*1024+verde*32+vermelho.&lt;/li&gt;&lt;/ul&gt;Fonte do programa (main.c - acho que não preciso mais ensinar como usar a template da PAlib):&lt;br /&gt;&lt;br /&gt;// Includes&lt;br /&gt;#include &lt;PA9.h&gt;       // Include for PA_Lib&lt;br /&gt;&lt;br /&gt;// Function: main()&lt;br /&gt;int main(int argc, char ** argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;u8 vermelho=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;u8 verde=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;u8 azul=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;u16 soma=0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init();    // Initializes PA_Lib&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitVBL(); // Initializes a standard VBL&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_Init16bitBg(1,0);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_InitText(0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_SetTextCol(0,31,31,31); &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;// Infinite loop to keep the program running&lt;br /&gt;&amp;nbsp;&amp;nbsp;while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_Draw16bitRect(1,0,0,255,191,soma);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(0,0,0,"B / A =&gt; Vermelho");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(0,0,1,"Esq / Dir =&gt; Verde"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(0,0,2,"L / R =&gt; Azul"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,4,"Vermelho: %d  ",vermelho);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,5,"Verde   : %d  ",verde);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,6,"Azul    : %d  ",azul);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,7,"16 bits : %d     ",soma);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.B&amp;&amp;vermelho&gt;0) { vermelho--; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.A&amp;&amp;vermelho&lt;31) { vermelho++; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Left&amp;&amp;verde&gt;0) { verde--; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.Right&amp;&amp;verde&lt;31) { verde++; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.L&amp;&amp;azul&gt;0) { azul--; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Pad.Newpress.R&amp;&amp;azul&lt;31) { azul++; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;soma=32768+azul*1024+verde*32+vermelho;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_WaitForVBL();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;} // End of main()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6724448269404498965?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6724448269404498965/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6724448269404498965' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6724448269404498965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6724448269404498965'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/comeando-interagir-com-o-ds.html' title='Começando a interagir com o DS'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6vcJAtQecew/RftF_DpTuTI/AAAAAAAAACk/PbBt3ZIaZHo/s72-c/c.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2327188786317515541</id><published>2007-03-13T16:04:00.000-07:00</published><updated>2008-11-13T02:21:25.409-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>a última de Tassu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rfcvq9LdjVI/AAAAAAAAAM8/McLR4msd3ps/s1600-h/Forest_road.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rfcvq9LdjVI/AAAAAAAAAM8/McLR4msd3ps/s400/Forest_road.PNG" alt="" id="BLOGGER_PHOTO_ID_5041550722888207698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Phidias. Este é o nome do último projeto de Tassu. Phidias é um programa de desenho, que pelos resultados parece excelente. A notícia é boa para pessoas como eu que desenham no ds, mas que sofrem com o aplicativo de desenho do dsorganize e o davr draw.&lt;br /&gt;&lt;br /&gt;O programa parece simular desenhos de verdade, seguindo mais a um padrão de programa painter (vide corel/fractal painter).&lt;br /&gt;&lt;br /&gt;Vou já procurar um driver dldi para meu supercard rumble e testar este programa imediatamente.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sivullinen.fi/nds/projects.php?subaction=showfull&amp;id=1173373766&amp;amp;archive=&amp;start_from=&amp;amp;amp;ucat=2&amp;amp;"&gt;site oficial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sivullinen.fi/nds/files/Phidias.rar"&gt;download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2327188786317515541?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2327188786317515541/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2327188786317515541' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2327188786317515541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2327188786317515541'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/ltima-de-tassu.html' title='a última de Tassu'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/Rfcvq9LdjVI/AAAAAAAAAM8/McLR4msd3ps/s72-c/Forest_road.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5060327296287396087</id><published>2007-03-12T20:15:00.000-07:00</published><updated>2008-11-13T02:21:25.561-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quadrinhos'/><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/RfYZC9LdjTI/AAAAAAAAAMs/eRPetF3btec/s1600-h/1_r.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/RfYZC9LdjTI/AAAAAAAAAMs/eRPetF3btec/s400/1_r.jpg" alt="" id="BLOGGER_PHOTO_ID_5041244371460918578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5060327296287396087?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5060327296287396087/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5060327296287396087' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5060327296287396087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5060327296287396087'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/blog-post.html' title=''/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HWhMY73sHwQ/RfYZC9LdjTI/AAAAAAAAAMs/eRPetF3btec/s72-c/1_r.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5232901003049348411</id><published>2007-03-11T10:46:00.000-07:00</published><updated>2008-11-13T02:21:25.764-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Mais um controle de fluxo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/RfRH2TpTuRI/AAAAAAAAACU/sfgDtbBYDOA/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/RfRH2TpTuRI/AAAAAAAAACU/sfgDtbBYDOA/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5040732881246468370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bom, além do controle while existe um outro muito usado. É o for. Na verdade, o for pode ser feito num loop while normalmente, mas é mais prático o uso do for nos casos em que ele se aplica. For é usado para a criação de contadores. Lembram de brincar de esconder? Vou contar até 100...&lt;br /&gt;for (variavel=1; variavel&lt;=100; variavel++) { comandos }&lt;br /&gt;&lt;br /&gt;Tradução usando um while:&lt;br /&gt;variavel=1;&lt;br /&gt;while (variavel&lt;=100) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;comandos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;variavel++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;- "Opa, Guilherme. Esse tal de variavel++ a gente também não viu ainda!"&lt;br /&gt;- "espera um pouco que explico tudo."&lt;br /&gt;&lt;br /&gt;Como funcionou o while: &lt;ul&gt;&lt;li&gt;a variável foi setada com um valor inicial, no caso, 1.&lt;/li&gt;&lt;li&gt;enquanto a variável não chegar a um valor, repete o conjunto de comandos. Mas nesse conjunto, no final, tem um comando que incrementa a variável.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Agora podemos ver o que é variável++, é uma abreviação de variavel=variavel+1. Existe outra abreviação possível, que é variavel+=1. Eu poderia colocar qualquer das três expressões, tanto no while quanto no for. Se eu quero decrescer, posso usar variavel--, ou, variavel-=1. Se eu quero usar outras operações ou outros valores, não posso mais usar o primeiro tipo de abreviação, mas ainda posso usar o segundo. Por exemplo, se eu quiser que x seja multiplicado por 2. O normal seria usar x=x*2, mas posso abreviar para x*=2.&lt;br /&gt;&lt;br /&gt;Vamos fazer um exemplo para rodar no DS. Novamente copie a PAlibTemplate e renomeie. Abra o projeto e dê dois clicks em main.c. Digite o seguinte, após "PA_InitVBL();":&lt;br /&gt;s8 x=1;&lt;br /&gt;PA_InitText(0,0);&lt;br /&gt;PA_SetTextCol(0,31,31,31); &lt;br /&gt;PA_OutputSimpleText(0,0,0,"while");&lt;br /&gt;PA_OutputSimpleText(0,16,0,"for");&lt;br /&gt;x=1;&lt;br /&gt;while (x&lt;20) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_OutputText(0,0,x,"%d",x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;x++;&lt;br /&gt;}&lt;br /&gt;for (x=1; x&lt;20; x++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;PA_OutputText(0,16,x,"%d",x);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inicializa o texto na tela de baixo com a cor branca&lt;/li&gt;&lt;li&gt;Faz o loop while com x começando em 1, verificando que x seja menor que 20&lt;/li&gt;&lt;li&gt; imprime na coluna 0, linha x, o resultado de x&lt;/li&gt;&lt;li&gt;acresce x&lt;/li&gt;&lt;li&gt;encerra o loop while&lt;/li&gt;&lt;li&gt;faz um for com x somando de 1 até 19 (último valor menor que 20)&lt;/li&gt;&lt;li&gt;imprime na coluna 16, linha x, o valor de x&lt;/li&gt;&lt;li&gt;encerra o loop for&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6vcJAtQecew/RfRH8zpTuSI/AAAAAAAAACc/yO9ulcgS6QE/s1600-h/whilefor.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_6vcJAtQecew/RfRH8zpTuSI/AAAAAAAAACc/yO9ulcgS6QE/s320/whilefor.gif" alt="" id="BLOGGER_PHOTO_ID_5040732992915618082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Com esse programa pode-se ver que for e while podem fazer a mesma coisa, mas while serve para mais coisas e for é mais fácil para fazer contadores.&lt;br /&gt;&lt;br /&gt;Exercício:&lt;br /&gt;Faça um programa que mostre os números pares de 2 a 40 na tela de cima do DS. A resposta (só a parte a ser incluída no main.c) estará nos comentários.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5232901003049348411?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5232901003049348411/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5232901003049348411' title='9 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5232901003049348411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5232901003049348411'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/mais-um-controle-de-fluxo.html' title='Mais um controle de fluxo'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6vcJAtQecew/RfRH2TpTuRI/AAAAAAAAACU/sfgDtbBYDOA/s72-c/c.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-535209405299942321</id><published>2007-03-08T19:10:00.000-08:00</published><updated>2007-03-08T19:19:38.415-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Com que cor eu vou?</title><content type='html'>Conversando com alguns amigos, diversos me falaram que tinham dificuldade de imaginar as cores e me pediram uma tabela de cores do DS. O problema é que são 32768 cores diferentes. Colocar isso na tela do PC fica complicado porque o PC tem 8 bits para cada componente RGB, enquanto o DS tem 5 bits. Então eu resolvi fazer um programa para DS que mostrasse as cores na própria tela do DS.&lt;br /&gt;&lt;br /&gt;Eu postei lá no 4shared do Lord Crowley, nas pasta Homebrews, dentro da pasta Appz, dentro da pasta "Visualizador de cores". Tem o código fonte junto com os arquivos para rodar nos diversos flashcards. Dá para tentar também o download direto &lt;a href="http://www.4shared.com/file/11951495/cad5d798" target="_blank"&gt;neste link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O programa usa as duas telas. Na tela de baixo tem as instruções de uso e os valores de vermelho, verde e azul, bem como o valor do código 16bits. A tela de cima fica toda da cor selecionada na tela de baixo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-535209405299942321?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/535209405299942321/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=535209405299942321' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/535209405299942321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/535209405299942321'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/com-que-cor-eu-vou.html' title='Com que cor eu vou?'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4625146294923467661</id><published>2007-03-08T15:40:00.000-08:00</published><updated>2008-11-13T02:21:26.049-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Controlando o fluxo do programa</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/RfCfAEPgFRI/AAAAAAAAACM/kQ6WJpP-tKI/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/RfCfAEPgFRI/AAAAAAAAACM/kQ6WJpP-tKI/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5039702806515160338" border="0" /&gt;&lt;/a&gt;Até agora nós vimos coisas estáticas na tela do DS. Só que um jogo sempre tem ação. A ação vem da repetição de passos, então vamos estudar como passar diversas vezes pelo mesmo ponto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;while&lt;br /&gt;&lt;/span&gt;O while é o primeiro controle de fluxo que iremos executar. A sintaxe dele segue o seguinte padrão:&lt;br /&gt;&lt;br /&gt;while (expressão_lógica) { comandos }&lt;br /&gt;&lt;br /&gt;while significa "enquanto". Ele é um controle de fluxo do tipo loop (loop significa dar uma volta - por isso a manobra "looping" da aviação tem esse nome, porque o avão dá uma volta no ar). A lógica do while é repetir a execução dos comandos que estão entre chaves enquanto a expressão_lógica for verdadeira. Olhem o exemplo:&lt;br /&gt;x=0;&lt;br /&gt;while (x&lt;10) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x=x+1;&lt;br /&gt;}&lt;br /&gt;Tradução: x começa com 0. Cada vez que o loop é executado, x é acrescido de 1. Quando x chegar a 10, a expressão_lógica passa a ser falsa e o loop não é mais executado, passando o fluxo para o que vier depois dele.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;if&lt;/span&gt;&lt;br /&gt;If é um controle de fluxo do tipo decisão. If significa "se". A sua sintaxe é a seguinte:&lt;br /&gt;&lt;br /&gt;if (expressão_lógica) { comandos1 } else { comandos2 }&lt;br /&gt;&lt;br /&gt;"else { comandos2 }" é opcional, não precisa ser usado sempre que usar um comando if. Else signica "senão". A lógica é a seguinte: se a expressão_lógica for verdadeira, o conjunto de comandos1 é executado, senão o conjunto comandos2 é executado. Por exemplo:&lt;br /&gt;if (x&gt;20) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b=15;&lt;br /&gt;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a=10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c=30;&lt;br /&gt;}&lt;br /&gt;Tradução: se x for maior que 20, então a passa a valer 0 e b passa a valer 15, senão a passa a valer 10 e c passa a valer 30.&lt;br /&gt;&lt;br /&gt;Vamos a um programa exemplo para o DS:&lt;br /&gt;Antes de "PA_Init();" digite o seguinte:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u16 x=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u16 y=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s8 passox=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s8 passoy=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u16 xvelho=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u16 yvelho=0;&lt;br /&gt;&lt;br /&gt;Depois de "PA_InitVBL();", digite o seguinte:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_InitText(1,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_SetTextCol(1,31,31,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_InitRand();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x=PA_RandMinMax(1,30);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y=PA_RandMinMax(1,22);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Entre as chaves do "while(1)", antes de "PA_WaitForVBL();" , digite o seguinte:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xvelho=x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yvelho=y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x=x+passox;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y=y+passoy;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x==0) { passox=1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (x==31) { passox=-1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y==0) { passoy=1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (y==23) { passoy=-1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(1,x,y,"o");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PA_OutputSimpleText(1,xvelho,yvelho," ");&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;primeiro, inicializa as variáveis (u16 significa que vai ser um valor numérico de 16 bits sem sinal, podendo variar de 0 a 65535; s8 significa um valor numérico de 8 bits com sinal, podendo variar de -128 a 127). Depois prepara a tela de cima para receber texto na cor amarela, inicializa o gerador de números aleatórios e define o valor aleatório de x e y dentro da área de texto do DS, sem encostar nas bordas (a posição de um caracter de texto pode variar horizontalmente entre 0 e 31 e verticalmente entre 0 e 23).&lt;br /&gt;Dentro do loop while, que é um loop infinito, pois 1 sempre vai ser verdadeiro (lembram? 1 é verdadeiro, 0 é falso), roda os seguintes comandos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;armazena a posição antiga de x e y em xvelho e yvelho&lt;/li&gt;&lt;li&gt;soma o passo de x e y a x e y&lt;/li&gt;&lt;li&gt;verifica se x ou y chegaram a uma borda e inverte o passo de quem chegou&lt;/li&gt;&lt;li&gt;escreve "o" na posição nova de x e y&lt;/li&gt;&lt;li&gt;escreve um espaço (tem que digitar um espaço entre " ") na posição antiga de x e y, apagando o "o" que tinha ali.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4625146294923467661?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4625146294923467661/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4625146294923467661' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4625146294923467661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4625146294923467661'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/controlando-o-fluxo-do-programa.html' title='Controlando o fluxo do programa'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6vcJAtQecew/RfCfAEPgFRI/AAAAAAAAACM/kQ6WJpP-tKI/s72-c/c.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5584876219612607605</id><published>2007-03-08T10:35:00.000-08:00</published><updated>2007-03-08T10:40:59.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Pokemon na GDC</title><content type='html'>&lt;span id="a13nb" class="noticialink"&gt;Pokémon Diamond &amp; Pearl um dos títulos para mais esperados para Nintendo DS , se prepara para chegar aos Estados Unidos . Na GDC , uma versão demo(Limitada por tempo) em inglês, estava à disposição dos visitantes. Você assumia  o papel de um treinador de Pokémons, o objetivo é, basicamente, colocar as criaturas para brigar com as de outros personagens, em sistema de turnos.&lt;br /&gt;&lt;br /&gt;A demonstração começa na cidade de Jubilife City e, a partir daí, bastou percorrê-la para arrumar as disputas, sempre em clima amigável, entre trocas de diálogos com diversos personagens. As opções se dividem entre Fight ("lutar"), Run ("Fugir"), Bag (inventário de itens para restaurar energia, dentre outras funções) e Pokémons (para exibir as suas criaturas).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="a13nb" class="noticialink"&gt;Basta escolher o ataque e tentar derrotar o adversário, pesando prós e contras de cada investida, seja esta ofensiva ou defensiva. Nada de muito novo até aqui, mas, ao menos, os cenários estão caprichados, repletos de elementos de composição, assim como os efeitos visuais, durante as batalhas, junto com as animações&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5584876219612607605?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5584876219612607605/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5584876219612607605' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5584876219612607605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5584876219612607605'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/pokemon-na-gdc.html' title='Pokemon na GDC'/><author><name>Diogo</name><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-5481972087260541028.post-2050205971508642765</id><published>2007-03-08T07:13:00.000-08:00</published><updated>2007-03-08T07:29:33.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Lançamentos</title><content type='html'>&lt;span&gt;&lt;/span&gt;&lt;span&gt; A Nintendo disponibilizou uma listagem de lançamentos previstos para até o terceiro trimestre nos Estados Unidos.&lt;/span&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;ol&gt;&lt;li&gt;Pokémon Diamond and Pokémon Pearl (Nintendo) - 22 de abril&lt;/li&gt;&lt;li&gt;Pirates of the Caribbean 3 (Buena Vista) - Maio &lt;/li&gt;&lt;li&gt;Dragon Ball Z: Harukanaru Densetsu (Atari) - Maio &lt;/li&gt;&lt;li&gt;Pony Friends (Eidos) - Maio &lt;/li&gt;&lt;li&gt;Diner Dash (Eidos) - Maio &lt;/li&gt;&lt;li&gt;Touch the Dead (Eidos) - Maio &lt;/li&gt;&lt;li&gt;Nintendo DS browser (Nintendo) - 4 de junho&lt;/li&gt;&lt;li&gt;Planet Puzzle League (Nintendo) - 4 de junho&lt;/li&gt;&lt;li&gt;Touchmaster DS (Midway) - 11 de junho&lt;/li&gt;&lt;li&gt;Zendoku (Eidos) - Junho&lt;/li&gt;&lt;li&gt;Naruto Ninja Council 3 (Tomy) - Segundo trimestre&lt;/li&gt;&lt;li&gt;&lt;span&gt;Time Ace (Konami) - Segundo trimestre&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Death Jr. and the Science Fair of Doom (Konami) - Segundo trimestre &lt;/li&gt;&lt;li&gt;Rune Factory: A Fantasy Harvest Moon (Natsume) - Segundo trimestre &lt;/li&gt;&lt;li&gt;Shrek the Third (Activision) - Terceiro trimestre &lt;/li&gt;&lt;li&gt;Transformers: Autobots (Activision) - Terceiro trimestre &lt;/li&gt;&lt;li&gt;Transformers: Decepticons (Activision) - Terceiro trimestre &lt;/li&gt;&lt;/ol&gt;&lt;!--Não tirar--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2050205971508642765?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2050205971508642765/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2050205971508642765' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2050205971508642765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2050205971508642765'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/lanamentos.html' title='Lançamentos'/><author><name>Diogo</name><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-5481972087260541028.post-2298017588309171042</id><published>2007-03-08T06:46:00.000-08:00</published><updated>2008-11-13T02:21:26.235-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Keiichi Yano fala sobre Ouendan 2 na GDC</title><content type='html'>&lt;span&gt;Em Ouendan 2, a equipe original enfrentará um grupo de animadores que serão seus rivais diretos os rapazes de azul na imagen abaixo, Yano disse que o estilo visual dos personagens do game será um pouco mais ousado. Yano disse tambem que o grupo de personagens da versão americana foi inspirado pelo Village People e outros elementos, como Austin Powers, no sentido de animar as pessoas através da música.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Ele gostaria de trazer o Ouendan original aos EUA, mas não antes de lançar uma seqüência direta para&lt;/span&gt;&lt;span&gt; Elite Beat Agents&lt;/span&gt;&lt;span&gt; (isto não foi um anúncio oficial do game)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Mais detalhes de&lt;/span&gt; Ouendan 2&lt;span&gt;  serão liberados pela Nintendo esta semana&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3wFVL5xvjKk/RfAkCl4RICI/AAAAAAAAACI/EJOahpuEo3k/s1600-h/elite+beat2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_3wFVL5xvjKk/RfAkCl4RICI/AAAAAAAAACI/EJOahpuEo3k/s320/elite+beat2.jpg" alt="" id="BLOGGER_PHOTO_ID_5039567609974038562" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2298017588309171042?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2298017588309171042/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2298017588309171042' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2298017588309171042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2298017588309171042'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/keiichi-yano-fala-sobre-ouendan-2-na.html' title='Keiichi Yano fala sobre Ouendan 2 na GDC'/><author><name>Diogo</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3wFVL5xvjKk/RfAkCl4RICI/AAAAAAAAACI/EJOahpuEo3k/s72-c/elite+beat2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3172070978205673914</id><published>2007-03-07T16:08:00.000-08:00</published><updated>2008-11-13T02:21:26.760-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Hardware</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/Re9USo_ONZI/AAAAAAAAAB8/DX4d86CJKYQ/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/Re9USo_ONZI/AAAAAAAAAB8/DX4d86CJKYQ/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5039339187267843474" border="0" /&gt;&lt;/a&gt;Antes de continuarmos a estudar a linguagem C, vamos olhar um pouco o hardware para o qual iremos desenvolver os programas: o Nintendo DS.&lt;br /&gt;&lt;br /&gt;Ele é composto por:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;um ARM 9 de 66 MHz, responsável pelo processamento principal dos jogos;&lt;/li&gt;&lt;li&gt;um ARM 7 de 33 MHz, responsável pela renderização de gráficos 3D e outros processamentos secundários;&lt;/li&gt;&lt;li&gt;memória RAM de 32 Mbits (4 MBytes).&lt;/li&gt;&lt;/ul&gt;Possui duas telas de 256x192 pixels com 32.768 cores - RGB de 5 bits por canal, totalizando 15 bits (2 ^15 = 32.768). O RGB é composto da seguinte forma: os 5 bits menos significativos são o vermelho; os 5 bits seguintes são o verde; os outros 5 bits são o azul e o bit mais significativo sempre vale 1 (o bit mais significativo é o mais à esquerda e o menos significativo é o mais à direita). A tela 0 é a de baixo e a 1 é a de cima. A coordenada 0,0 de cada tela fica no canto superior esquerdo. Os pixels são numerados de 0 a 255 horizontalmente e de 0 a 191 verticalmente. As coordenadas sempre são informadas no formato horizontal,vertical. Perceba isso olhando na figura abaixo:&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/Re9WUo_ONaI/AAAAAAAAACE/EIa7gkyMDvk/s1600-h/telas-ds.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/Re9WUo_ONaI/AAAAAAAAACE/EIa7gkyMDvk/s400/telas-ds.jpg" alt="" id="BLOGGER_PHOTO_ID_5039341420650837410" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;Cada tela tem 4 níveis de background (fundo), onde são colocadas imagens ou traçados desenhos. O background 0 é o que fica por cima e o 3 é o mais de baixo. Acima desses 4 fundos existem 4 níveis de sprites. Sprites são pequenas imagens que podem ser movidas pela tela. O DS permite utilizar até 128 sprites distribuídos nesses 4 fundos. Para diferenciar background de sprite, imagine um jogo como o 1942. Os aviões e os tiros são sprites. A água e as ilhas (cenário) são o background.&lt;br /&gt;&lt;br /&gt;Para fazer um teste, vamos fazer um pequeno programa. Os passos iniciais são os mesmos. Copie a pasta PALibTemplate para outra pasta e renomeie. Abra o Template.pnproj. Na área à esquerda, dê dois cliques em "main.c". Digite o seguinte abaixo de "PA_InitVBL();":&lt;br /&gt;  PA_Init16bitBg (1,0);&lt;br /&gt;  PA_Put16bitPixel (1,0,0,64512);&lt;br /&gt;  PA_Put16bitPixel (1,127,95,33760);&lt;br /&gt;  PA_Put16bitPixel (1,255,191,32799);&lt;br /&gt;  PA_Put16bitPixel (1,20,120,65535);&lt;br /&gt;  PA_Put16bitPixel (1,120,111,33791);&lt;br /&gt;&lt;br /&gt;O que o programa faz:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inicializa um fundo com todas as cores da tela do DS na tela 1 no background 0.&lt;/li&gt;&lt;li&gt;Desenha um ponto na coordenada 0,0 (canto superior esquerdo) na cor azul. Segundo a regra, 1 bit sempre setado, 5 bits para o azul, 5 bits para o verde e 5 bits para o vermelho: 1111110000000000. Isto transformado para decimal é 64512. Pegue uma calculadora científica (pode ser a do windows mesmo, é só ir em exibir e selecionar científica). Selecione para usar valores em binário. Digite 1111110000000000. Selecione para usar valores em decimal. Vai converter para 64512.&lt;/li&gt;&lt;li&gt;Desenha um ponto na coordenada 127,95 (centro da tela) na cor verde.&lt;/li&gt;&lt;li&gt;Desenha um ponto na coordenada 255,191 (canto inferior direito) na cor vermelha.&lt;/li&gt;&lt;li&gt;Desenha um ponto na coordenada 20,120 na cor branca.&lt;/li&gt;&lt;li&gt;Desenha um ponto na coordenada 120,111 na cor amarela.&lt;/li&gt;&lt;/ul&gt;Não se esqueça de pressionar ALT+2 e depois ALT+1 para gerar o programa para o DS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3172070978205673914?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3172070978205673914/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3172070978205673914' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3172070978205673914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3172070978205673914'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/hardware.html' title='Hardware'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/Re9USo_ONZI/AAAAAAAAAB8/DX4d86CJKYQ/s72-c/c.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3148735683611938554</id><published>2007-03-07T03:10:00.000-08:00</published><updated>2008-11-13T02:21:26.872-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>NDS Mail v 0.55</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HWhMY73sHwQ/Re6d4eiyWfI/AAAAAAAAAMk/ocuguKzk1I0/s1600-h/NDSMail5.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_HWhMY73sHwQ/Re6d4eiyWfI/AAAAAAAAAMk/ocuguKzk1I0/s200/NDSMail5.jpg" alt="" id="BLOGGER_PHOTO_ID_5039138626671368690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Este update inclui visualizador de JPEGs, tabs de pastas, maior suporte para e-mails, e alguns bugs corrigidos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://martin-kremer.de/ndsmail/ndsmail_055.zip"&gt;download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.bronto-online.de/"&gt;Página oficial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3148735683611938554?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3148735683611938554/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3148735683611938554' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3148735683611938554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3148735683611938554'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/nds-mail-v-055.html' title='NDS Mail v 0.55'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HWhMY73sHwQ/Re6d4eiyWfI/AAAAAAAAAMk/ocuguKzk1I0/s72-c/NDSMail5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4009129295444505660</id><published>2007-03-07T02:58:00.000-08:00</published><updated>2008-11-13T02:21:26.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>Moonshell 1.7 final beta</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/Re6bk-iyWeI/AAAAAAAAAMc/SrBydCtn54I/s1600-h/moonshellfinbeta.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/Re6bk-iyWeI/AAAAAAAAAMc/SrBydCtn54I/s200/moonshellfinbeta.jpg" alt="" id="BLOGGER_PHOTO_ID_5039136092640664034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Infantile Paralysiser atualizou o MoonShell. Este update adiciona optimização de  ARM 7, questões gráficas, gráficos dldi interligados , e outras inovações&lt;br /&gt;&lt;br /&gt;listão 1.7:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;decoder dgg mais rápido. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;OGG era suportado como dgg audio&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bug de tocar a barra de avanço foi corrigido.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;O bug mp2 foi corrigido.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Começa a tocar dgp desde onde foi resumido. Bug de cores corrigido&lt;br /&gt;&lt;/li&gt;&lt;li&gt;O DNSROM start foi iniciado&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A opção OGG foi adicionada ao DPGEnc&lt;br /&gt;&lt;/li&gt;&lt;li&gt;O bug de não poder pausar o dpg on play foi corrigido.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;O botão START pode ser customizado para soft-reset&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://home.att.ne.jp/blue/moonlight/moonshell17_with_dpgtools13.zip"&gt;download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4009129295444505660?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4009129295444505660/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4009129295444505660' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4009129295444505660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4009129295444505660'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/moonshell-17-final-beta.html' title='Moonshell 1.7 final beta'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/Re6bk-iyWeI/AAAAAAAAAMc/SrBydCtn54I/s72-c/moonshellfinbeta.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-7967011623494164288</id><published>2007-03-06T08:01:00.000-08:00</published><updated>2007-03-06T09:43:02.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Square Enix anuncia editor de jogos para Nintendo DS</title><content type='html'>&lt;span id="a13nb" class="noticialink"&gt;Na palestra para a Serious Game Summit, uma das seções da Game Developers Conference que acontece em San Francisco, Ichiro Otobe anunciou o primeiro jogo serious game da companhia.&lt;br /&gt;&lt;br /&gt;Os serious games são um gênero em expansão no momento e trata de jogo que tem como principal propósito o aprendizado e a conscientização mas obviamente, isso não quer dizer que, necessariamente, esteja dissociado da diversão.&lt;br /&gt;&lt;br /&gt;É o caso de Project GB  (GB é sigla para game brain) apresentado por Otobe. Trata-se de um editor de games, que pretende ensinar a fazer jogos simples e extrair diversão ao criar suas próprias obras.&lt;br /&gt;&lt;br /&gt;Otobe demonstrou um game parecido com Space Invaders, para depois entrar no editor de sprites, que permite mudar sua nave e os inimigos mexendo cada pixel dos objetos. Também mostrou como os parâmetros, como e velocidade dos tiros, influenciam na dificuldade. A companhia também projeta fazer os usuários interagirem e trocarem informações, compartilhando dados.&lt;/span&gt;&lt;br /&gt;&lt;span id="a13nb" class="noticialink"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;Project GB não tem previsão para ficar pronto e a companhia ainda nem sabe se a ferramenta chegará às mãos dos consumidores um dia.&lt;/span&gt;&lt;br /&gt;&lt;span id="a13nb" class="noticialink"&gt;                                                                                                                                                                                        &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-7967011623494164288?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/7967011623494164288/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=7967011623494164288' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7967011623494164288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7967011623494164288'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/square-enix-anuncia-editor-de-jogos.html' title='Square Enix anuncia editor de jogos para Nintendo DS'/><author><name>Diogo</name><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-5481972087260541028.post-4730640092918917399</id><published>2007-03-05T09:38:00.000-08:00</published><updated>2008-11-13T02:21:27.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Transformers: The Game</title><content type='html'>Divulgada a primeira foto de Transformers : The Game para Nintendo DS&lt;br /&gt;                                &lt;br /&gt;                                       &lt;img style="cursor: pointer; width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_3wFVL5xvjKk/RexWjjjTTnI/AAAAAAAAACA/p-zR60GXY3M/s320/transformersTheGame.jpg" alt="" id="BLOGGER_PHOTO_ID_5038497251959459442" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4730640092918917399?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4730640092918917399/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4730640092918917399' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4730640092918917399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4730640092918917399'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/transformers-game.html' title='Transformers: The Game'/><author><name>Diogo</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3wFVL5xvjKk/RexWjjjTTnI/AAAAAAAAACA/p-zR60GXY3M/s72-c/transformersTheGame.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5372707157620710233</id><published>2007-03-02T16:18:00.000-08:00</published><updated>2008-11-13T02:21:27.412-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>O primeiro programa - Hello World</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/Rei--Pagw5I/AAAAAAAAABk/2VdBzSdJEGM/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/Rei--Pagw5I/AAAAAAAAABk/2VdBzSdJEGM/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5037486159712797586" border="0" /&gt;&lt;/a&gt;Antes de começarmos a estudar as estruturas básicas de um programa, vamos fazer um programa simples, que só vai escrever "hello world" no centro da tela do DS.&lt;br /&gt;&lt;br /&gt;Passos para começar um programa novo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;copie todo o conteúdo da pasta "PAlibTemplate", que está na pasta onde foi instalado o devkitPro, para outra pasta (não trabalhe direto na pasta "PAlibTemplate" para não perder o template de programa novo). Vamos usar, no exemplo, "C:\ProgDS\helloworld".&lt;/li&gt;&lt;li&gt;abra o arquivo "Template.pnproj" com o "programmers notepad" (é só dar dois clicks no arquivo que abre sozinho).&lt;/li&gt;&lt;li&gt;na área "Projects", procure o arquivo "main.c"&lt;/li&gt;&lt;li&gt;dê dois clicks em "main.c"&lt;/li&gt;&lt;li&gt;na janela que abriu, programe.&lt;/li&gt;&lt;/ol&gt;Então vamos ao programa:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;posicione o cursor na linha abaixo de PA_InitVBL(); e acima de while (1). Não posicione na linha que começa com // pois tudo o que vier depois de // será considerado comentário.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;digite o seguinte:&lt;br /&gt;PA_InitText(1,2);&lt;br /&gt;PA_OutputSimpleText(1,9,11,"Hello World !");&lt;/li&gt;&lt;li&gt;salve o projeto&lt;/li&gt;&lt;li&gt;pressione ALT+2. Este passo irá zerar algum arquivo já compilado. Deve ser feito para evitar erros.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;pressione ALT+1. Este passo é a compilação propriamente dita. Aqui são gerados os arquivos .nds, .ds.gba e .sc.nds.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;passe o programa compilado para o flashcard e para o DS, ou rode em um emulador.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6vcJAtQecew/RejEvfagw6I/AAAAAAAAABs/qyXpXGfKNuQ/s1600-h/helloworld.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_6vcJAtQecew/RejEvfagw6I/AAAAAAAAABs/qyXpXGfKNuQ/s320/helloworld.jpg" alt="" id="BLOGGER_PHOTO_ID_5037492503379493794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;O que o programa faz?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PA_InitText(1,2); =&gt; inicializa o modo texto na tela 1 (a de cima é a 1, a de baixo é a 0), no nível de background 2.&lt;/li&gt;&lt;li&gt;PA_OutputSimpleText(1,9,11,"Hello World !"); =&gt; vai para a linha 11, coluna 9, da tela 1 e escreve "Hello World !". Estas coordenadas foram calculadas para mostrar o texto aproximadamente no centro da tela. A tela do DS tem 256x192 pixels. Cada caractere da PAlib ocupa um quadrado de 8x8 pixels. Então eu tenho 32 colunas (numeradas de 0 a 31) e 24 linhas (numeradas de 0 a 23). Como "Hello World !" ocupa 1 linha e 13 colunas, temos de sobra 23 linhas e 19 colunas. Dividindo cada valor por dois (para ter aproximadamente o mesmo número de espaços antes e depois do texto), posicionamos o texto na coluna 9 e na linha 11.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5372707157620710233?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5372707157620710233/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5372707157620710233' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5372707157620710233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5372707157620710233'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/03/o-primeiro-programa-hello-world.html' title='O primeiro programa - Hello World'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6vcJAtQecew/Rei--Pagw5I/AAAAAAAAABk/2VdBzSdJEGM/s72-c/c.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-1649846436702558769</id><published>2007-02-28T16:42:00.000-08:00</published><updated>2008-11-13T02:21:27.696-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Ferramentas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6vcJAtQecew/ReYk6QXyxkI/AAAAAAAAABM/75FeLSNBnvA/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_6vcJAtQecew/ReYk6QXyxkI/AAAAAAAAABM/75FeLSNBnvA/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5036753816506254914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Antes de continuarmos com o treinamento em desenvolvimento de jogos, vamos baixar as ferramentas que irão nos auxiliar.&lt;br /&gt;Como visto, a linguagem que usaremos é o C.&lt;br /&gt;Um ambiente de desenvolvimento bastante completo e gratuito é o DevKitPro. A biblioteca que usaremos para facilitar a vida é a PAlib.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalando o DevKitPro&lt;/span&gt;&lt;br /&gt;Antes de mais nada, vamos baixar o instalador. Ele se encontra no site &lt;a href="http://www.devkitpro.org/"&gt;http://www.devkitpro.org&lt;/a&gt;. Abra a página do DevKitPro, clique, no menu à esquerda em "Downloads" e no link "Windows Installer". Irá abrir a página do Sourceforge, onde estão hospedados os arquivos. A versão mais recente hoje (28/02/2007) é o devkitPro Update 1.4.2.  Baixe  (apenas 211Kb) e  execute.&lt;br /&gt;Ele irá baixar o resto de arquivos necessários (aproximadamente 20MB) e instalar. Siga o processo de instalação até o final.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalando a PAlib&lt;/span&gt;&lt;br /&gt;Baixe a última versão da PAlib do site &lt;a href="http://www.palib.com/"&gt;http://www.palib.com&lt;/a&gt;. Clique no menu à esquerda em "Downloads". A última versão é   a 070222. Baixe o Installer (PAlib 070222 Installer), clicando no ícone do "Download now". Execute o programa baixado. Ele irá incluir outras pastas ao DevKitPro (lembre-se de apontar para o local correto onde ele se encontra, na hora de instalar).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Testando tudo&lt;/span&gt;&lt;br /&gt;Se você deixou as opções default habilitadas, o devkitpro foi instalado em "C:\devkitpro".&lt;br /&gt;Abra a pasta "C:\devkitPro\PAlibExamples\Demos\PlatformGame\PlatformGame5".&lt;br /&gt;Execute o programa "build". Ele deverá gerar 3 arquivos: "PlatformGame5.ds.gba", "PlatformGame5.nds" e "PlatformGame5.sc.nds". Cada um é para cada modelo de flashcard. O .nds é o programa propriamente dito, o .ds.gba é para os flashcards que só executam arquivos com a extensão e o loader para GBA e o .sc.nds é para os diversos SuperCards. Se tudo correr bem, você deve conseguir rodar este "joguinho" no seu DS:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/ReYnNwXyxlI/AAAAAAAAABU/JT7Qj0k6C1U/s1600-h/palibdemo.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/ReYnNwXyxlI/AAAAAAAAABU/JT7Qj0k6C1U/s320/palibdemo.jpg" alt="" id="BLOGGER_PHOTO_ID_5036756350536959570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Este demo também funciona em emuladores como o no$gba (para rodar nele, use o arquivo .ds.gba gerado).&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-1649846436702558769?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/1649846436702558769/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=1649846436702558769' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1649846436702558769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1649846436702558769'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/ferramentas.html' title='Ferramentas'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6vcJAtQecew/ReYk6QXyxkI/AAAAAAAAABM/75FeLSNBnvA/s72-c/c.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-4018671175307401695</id><published>2007-02-28T07:58:00.000-08:00</published><updated>2007-02-28T10:59:10.728-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Custom Robo Arena</title><content type='html'>Foi lançado o site oficial de Custom Robo Arena e ja informa a data de lançamento do jogo no acidente que sera no dia 19/03 agora é aguardar!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.customroboarena.com/"&gt;site oficial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-4018671175307401695?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/4018671175307401695/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=4018671175307401695' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4018671175307401695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/4018671175307401695'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/custom-robo-arena_28.html' title='Custom Robo Arena'/><author><name>Diogo</name><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-5481972087260541028.post-5143256728272558936</id><published>2007-02-27T10:53:00.000-08:00</published><updated>2008-11-13T02:21:27.833-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>My Sims DS</title><content type='html'>&lt;span&gt;A Electronic Arts publicou o site oficial americando de MySims, game inédito da série para o Wii e DS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mysims.com/index.php"&gt;site oficial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3wFVL5xvjKk/ReR_xPSGKYI/AAAAAAAAABs/2bIW5EZsOyc/s1600-h/MySims1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_3wFVL5xvjKk/ReR_xPSGKYI/AAAAAAAAABs/2bIW5EZsOyc/s320/MySims1.jpg" alt="" id="BLOGGER_PHOTO_ID_5036290767199807874" border="0" /&gt;&lt;/a&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5143256728272558936?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5143256728272558936/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5143256728272558936' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5143256728272558936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5143256728272558936'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/my-sims-ds_27.html' title='My Sims DS'/><author><name>Diogo</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3wFVL5xvjKk/ReR_xPSGKYI/AAAAAAAAABs/2bIW5EZsOyc/s72-c/MySims1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2061934746348982958</id><published>2007-02-26T18:18:00.000-08:00</published><updated>2008-11-13T02:21:28.113-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Custom Robo Arena</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3wFVL5xvjKk/ReOWI_SGKWI/AAAAAAAAABU/Dz-SmI7hCoQ/s1600-h/customrobods14.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_3wFVL5xvjKk/ReOWI_SGKWI/AAAAAAAAABU/Dz-SmI7hCoQ/s320/customrobods14.jpg" alt="" id="BLOGGER_PHOTO_ID_5036033889500801378" border="0" /&gt;&lt;/a&gt;Confirmada a versão americana de Gekitou Custom Robo chamada no ocidente de Custom Robo Arena a titulo &lt;span id="a13nb" class="noticialink"&gt;voltou à tona em 2004, em uma versão para o GameCube, mas nasceu no Nintendo 64.Agora, a série leva as batalhas entre robôs personalizados para o DS, com seu enrredo básico inalterado: um futuro não muito distante em que os competidores lutam com autômatos guerreiros em arenas holográficas.&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3wFVL5xvjKk/ReOWTvSGKXI/AAAAAAAAABc/sa4zBHxsJPY/s1600-h/customrobods17.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_3wFVL5xvjKk/ReOWTvSGKXI/AAAAAAAAABc/sa4zBHxsJPY/s320/customrobods17.jpg" alt="" id="BLOGGER_PHOTO_ID_5036034074184395122" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2061934746348982958?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2061934746348982958/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2061934746348982958' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2061934746348982958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2061934746348982958'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/custom-robo-arena.html' title='Custom Robo Arena'/><author><name>Diogo</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3wFVL5xvjKk/ReOWI_SGKWI/AAAAAAAAABU/Dz-SmI7hCoQ/s72-c/customrobods14.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-906172461273253150</id><published>2007-02-26T07:54:00.000-08:00</published><updated>2008-11-13T02:21:28.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Dragon Quest IX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3wFVL5xvjKk/ReMKjPSGKVI/AAAAAAAAABA/FoBWCBc1D84/s1600-h/dragonquestix01.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_3wFVL5xvjKk/ReMKjPSGKVI/AAAAAAAAABA/FoBWCBc1D84/s320/dragonquestix01.jpg" alt="" id="BLOGGER_PHOTO_ID_5035880408844478802" border="0" /&gt;&lt;/a&gt;A revista japonesa Famitsu divulgou que o jogo mais esperado pelo publico japones é &lt;span id="a18bb"&gt;Dragon&lt;/span&gt;&lt;span id="a18bb"&gt; Quest&lt;/span&gt;&lt;span id="a18bb"&gt; IX a tradicional serie de rpg da &lt;/span&gt;Square Enix&lt;span id="a18bb"&gt; retorna ao&lt;/span&gt;&lt;span id="a18bb"&gt; portatil com visual 3D e&lt;/span&gt;&lt;span id="a18bb"&gt; modalidade&lt;/span&gt;&lt;span id="a18bb"&gt; multiplayer de 1-4 jogadores!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-906172461273253150?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/906172461273253150/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=906172461273253150' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/906172461273253150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/906172461273253150'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/dragon-quest-ix.html' title='Dragon Quest IX'/><author><name>Diogo</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3wFVL5xvjKk/ReMKjPSGKVI/AAAAAAAAABA/FoBWCBc1D84/s72-c/dragonquestix01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-5694730234509876474</id><published>2007-02-26T05:12:00.000-08:00</published><updated>2007-02-26T05:24:44.436-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>My Sims DS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img.qj.net//uploads/articles_module2/84153/MySimsDS2_qjpreviewth.jpg?941246"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://img.qj.net//uploads/articles_module2/84153/MySimsDS2_qjpreviewth.jpg?941246" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois dos rumores e screenshots acerca do MySims(The Sims Wii)&lt;br /&gt;De acordo com a &lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;Buttonbasher(atravez da Nintendo Power , a mesma q relevou sobre o MySims), o Titulo tambem vira para o nosso tão querido Nintendo DS.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;&lt;br /&gt;Na versão pra DS, você está em um Resort de ferias(ao contrario&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img.qj.net//uploads/articles_module2/84153/MySimsDS1_qjpreviewth.jpg?319356"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://img.qj.net//uploads/articles_module2/84153/MySimsDS1_qjpreviewth.jpg?319356" alt="" border="0" /&gt;&lt;/a&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt; da pequena cidade, na versão WII) que&lt;/span&gt;&lt;/span&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt; precisa da sua ajuda pra atrair turistas, você pode se socializar com outros personagens,&lt;br /&gt;alem de "controlar" o Resort, para agradar seus turistas, etc.&lt;br /&gt;Alem disso, MySims tambem trará uma grande leva de Minigames, que utilizarão muito a stylus e o microfone.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;&lt;br /&gt;No Jogo, na tela Inferior(touch) aparecerá o jogo em sí, e na tela superior, aparecerá um calendario, para auxiliar no jogo.&lt;br /&gt;Foi revelado tambem, q o jogo usará wi-fi local para jogos multiplayer(não foi dado mais info sobre o jogo multiplayer)&lt;br /&gt;Alem q o seu grafico, será algo entre Cell-shade e Animal Crossing&lt;br /&gt;&lt;br /&gt;PS: screenshots tiradas da revista Nintendo Power&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-5694730234509876474?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/5694730234509876474/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=5694730234509876474' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5694730234509876474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/5694730234509876474'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/my-sims-ds.html' title='My Sims DS'/><author><name>Crowley</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://images.amazon.com/images/P/B000003BX3.01._SCMZZZZZZZ_.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3742819724998901888</id><published>2007-02-25T17:29:00.000-08:00</published><updated>2008-11-13T02:21:28.344-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Expressões e Operadores</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6vcJAtQecew/ReI4UJi-f3I/AAAAAAAAABA/jxvWtwFp4WM/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_6vcJAtQecew/ReI4UJi-f3I/AAAAAAAAABA/jxvWtwFp4WM/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5035649252164796274" border="0" /&gt;&lt;/a&gt;No artigo anterior nós vimos como linearizar uma fórmula, mas vimos sem comentar um dos comandos básicos de programação, a atribuição; que segue o padrão: variável=expressão.&lt;br /&gt;Uma expressão pode ser composta de variáveis, propriedades, métodos, funções e operadores.&lt;br /&gt;Os operadores aritméticos são:&lt;br /&gt;+ adição&lt;br /&gt;- subtração&lt;br /&gt;* multiplicação&lt;br /&gt;/ divisão&lt;br /&gt;% resto da divisão&lt;br /&gt;Os operadores lógicos são:&lt;br /&gt;== igual&lt;br /&gt;!= diferente&lt;br /&gt;&gt; maior&lt;br /&gt;&gt;= maior ou igual&lt;br /&gt;&lt;ul&gt;&lt;li&gt;x=5+(a%2)&lt;br /&gt;x recebe o valor de 5+(resto da divisão de 5 por 2), ou seja, x receberá 5 ou 6 dependendo se a for par ou ímpar.&lt;/li&gt;&lt;li&gt;a=Math.sqrt(Math.pow(b,2)+Math.pow(c,2))&lt;br /&gt;a recebe o valor da raiz quadrada de (b ao quadrado mais c ao quadrado). Alguém reparou o teorema de Pitágoras aqui?&lt;/li&gt;&lt;li&gt;y=10*(x==2||x&gt;20)&lt;br /&gt;quando a gente trabalha com expressões lógicas, o verdadeiro vale 1 e o falso vale 0. Então, neste caso, y vai receber 10 se x for 2 ou se x for maior que 20; senão y recebe 0.&lt;/li&gt;&lt;li&gt;b=a-2&lt;br /&gt;uma simples, b recebe o valor de a menos 2.&lt;/li&gt;&lt;li&gt;y=10*x==2||x&gt;20&lt;br /&gt;truque sujo, só tirei os parênteses. Agora y recebe 1 se x for 0.2 ou se x for maior que 20. O que mudou? Agora estou verificando se 10 multiplicado por x é 2 (ou seja, se x é igual a 0.2) ou se x for maior que 20.&lt;/li&gt;&lt;li&gt;a=b&gt;0&amp;&amp;amp;b&lt;=9 a recebe 1 se b valer entre 1 e 9. Se b for menor ou igual a 0 ou se for maior que 9, então a recebe 0. Então eu poderia escrever a mesma coisa da seguinte forma: a=!(b&lt;=0||b&gt;9)&lt;/li&gt;&lt;/ul&gt;Percebam a diferença entre &amp;&amp;amp;amp;amp; e ||. &amp;&amp;amp; vai ser verdadeiro se todos as comparações forem verdadeiras; || vai ser verdadeiro se qualquer uma das comparações for verdadeira. O ! inverte o que é verdadeiro e o que é falso; é literalmente um "não"; tudo que não é verdadeiro, é falso; tudo que não é falso, é verdadeiro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3742819724998901888?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3742819724998901888/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3742819724998901888' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3742819724998901888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3742819724998901888'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/expresses-e-operadores.html' title='Expressões e Operadores'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6vcJAtQecew/ReI4UJi-f3I/AAAAAAAAABA/jxvWtwFp4WM/s72-c/c.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2240812012987977469</id><published>2007-02-25T12:20:00.000-08:00</published><updated>2008-11-13T02:21:28.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Brothers in Arms: War Stories</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HWhMY73sHwQ/ReHwm-XBzrI/AAAAAAAAAKQ/Qeyyfiln6IY/s1600-h/BoADS_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_HWhMY73sHwQ/ReHwm-XBzrI/AAAAAAAAAKQ/Qeyyfiln6IY/s200/BoADS_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035570410742206130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReHwcuXBzqI/AAAAAAAAAKI/ceusLUfMfFM/s1600-h/BoADS2_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReHwcuXBzqI/AAAAAAAAAKI/ceusLUfMfFM/s200/BoADS2_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035570234648546978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;A última Nintendo Power americana incluiu screenshots do Brothers in Arms para DS, supostamente desenvolvido pela Ubisoft desde 2006. Haveriam 16 missões em 3 campanhas. A ação começará na América do Norte e se espalhará pela Normandia.&lt;br /&gt;&lt;br /&gt;Segundo o preview na revista, o jogo será em 3d e puxará os gráficos para o melhor possível no DS. A tela de toque servirá para arremessar granadas, movimentar a visão e trocar de armas. Seria possível também pilotar tanques e jipes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2240812012987977469?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2240812012987977469/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2240812012987977469' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2240812012987977469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2240812012987977469'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/brothers-in-arms-war-stories.html' title='Brothers in Arms: War Stories'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HWhMY73sHwQ/ReHwm-XBzrI/AAAAAAAAAKQ/Qeyyfiln6IY/s72-c/BoADS_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-6103872221504924347</id><published>2007-02-24T14:48:00.000-08:00</published><updated>2008-11-13T02:21:29.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>novas telas de TMNT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/ReDBDuXBzpI/AAAAAAAAAJw/FEL3YRvZgRo/s1600-h/TMNT_TheGame_NDS_04_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/ReDBDuXBzpI/AAAAAAAAAJw/FEL3YRvZgRo/s200/TMNT_TheGame_NDS_04_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035236653128601234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/ReDA_eXBzoI/AAAAAAAAAJo/VgshxXiLkh4/s1600-h/TMNT_TheGame_NDS_03_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/ReDA_eXBzoI/AAAAAAAAAJo/VgshxXiLkh4/s200/TMNT_TheGame_NDS_03_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035236580114157186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/ReDA7uXBznI/AAAAAAAAAJg/mZ4nZe87b-4/s1600-h/TMNT_TheGame_NDS_02_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/ReDA7uXBznI/AAAAAAAAAJg/mZ4nZe87b-4/s200/TMNT_TheGame_NDS_02_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035236515689647730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReDA2-XBzmI/AAAAAAAAAJY/NBDG_U9L2mY/s1600-h/TMNT_TheGame_NDS_01_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReDA2-XBzmI/AAAAAAAAAJY/NBDG_U9L2mY/s200/TMNT_TheGame_NDS_01_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035236434085269090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Previsto para 13 de março&lt;span class="text"&gt;&lt;span nd="1" name="intelliTxt" id="intelliTXT"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-6103872221504924347?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/6103872221504924347/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=6103872221504924347' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6103872221504924347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/6103872221504924347'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/novas-telas-de-tmnt.html' title='novas telas de TMNT'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/ReDBDuXBzpI/AAAAAAAAAJw/FEL3YRvZgRo/s72-c/TMNT_TheGame_NDS_04_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-1384493193893878574</id><published>2007-02-24T14:43:00.000-08:00</published><updated>2008-11-13T02:21:29.547-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Spider Man 3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReC_w-XBzlI/AAAAAAAAAJM/3NhHE6RNjOY/s1600-h/spiderman_qjgenth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_HWhMY73sHwQ/ReC_w-XBzlI/AAAAAAAAAJM/3NhHE6RNjOY/s400/spiderman_qjgenth.jpg" alt="" id="BLOGGER_PHOTO_ID_5035235231494426194" border="0" /&gt;&lt;/a&gt;&lt;span class="text"&gt;&lt;span nd="3" name="intelliTxt" id="intelliTXT"&gt;A Actvision anunciou alguns detalhes do novo jogo: jogadores poderão jogar com o uniforme tradicional do Homem-Aranha, ou como Venon, fazendo sua força aumentar drasticamente. Isso, porém, fazerá do personagem mais sombrio, e cada vez mais difícil de controlar, tendo uma chance de possui-lo por completo.&lt;br /&gt;&lt;br /&gt;Foi anunciado também que os jogadores andarão livremente pelas ruas de NY, mas não foi dito se esta opção estaria disponível na versão para DS.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-1384493193893878574?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/1384493193893878574/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=1384493193893878574' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1384493193893878574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/1384493193893878574'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/spider-man-3.html' title='Spider Man 3'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HWhMY73sHwQ/ReC_w-XBzlI/AAAAAAAAAJM/3NhHE6RNjOY/s72-c/spiderman_qjgenth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3908984904185991673</id><published>2007-02-24T13:57:00.000-08:00</published><updated>2008-11-13T02:21:29.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Primeiro passo rumo a um programa</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/ReC9BZi-f2I/AAAAAAAAAAw/-vVAtyOxbnQ/s1600-h/c.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/ReC9BZi-f2I/AAAAAAAAAAw/-vVAtyOxbnQ/s200/c.jpg" alt="" id="BLOGGER_PHOTO_ID_5035232215135321954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Eu começo aqui uma série de artigos sobre programação, culminando na programação de jogos para DS. Vou começar com os passos mais básicos, uma vez que as pessoas que mais me pediram que fizesse estes artigos não sabem nada de programação.&lt;br /&gt;&lt;br /&gt;Hoje vou ensinar um dos passos mais básicos: a linearização de fórmulas.&lt;br /&gt;&lt;br /&gt;Todos que já chegaram no ensino médio, já conhecem a fórmula de Báscara. É uma fórmula que possui diversos sinais especiais e diversos "andares". Um computador não reconhece um fórmula escrita da seguinte forma:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6vcJAtQecew/ReC2bZi-f1I/AAAAAAAAAAo/bRpaLFuEkpc/s1600-h/bascara.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_6vcJAtQecew/ReC2bZi-f1I/AAAAAAAAAAo/bRpaLFuEkpc/s320/bascara.gif" alt="" id="BLOGGER_PHOTO_ID_5035224965230526290" border="0" /&gt;&lt;/a&gt;Para começar que o sinal de mais ou menos significa que nó teremos dois resultados, o X' e o X''. Mas vamos aos caracteres que o computador pode reconhecer:&lt;br /&gt;+ é adição&lt;br /&gt;- é subtração&lt;br /&gt;* é multiplicação (o . é o ponto decimal)&lt;br /&gt;/ é divisão&lt;br /&gt;A potenciação depende de cada linguagem. O C usa um método do objeto Math, chamado pow (abreviação de power), na seguinte forma: Math.pow(Base,Expoente). Como o intuito destes artigos é a programação em C, vamos representar como o C representa.&lt;br /&gt;A raiz quadrada é outro método do mesmo objeto Math, chamado sqrt (abreviação de square root), na seguinte forma: Math.sqrt(valor).&lt;br /&gt;Então vamos traduzir a formula de bascara para C:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;x1=(-b+Math.sqrt(pow(b,2)-4*a*c))/(2*a)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;x2=(-b-Math.sqrt(pow(b,2)-4*a*c))/(2*a)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como não existe x' e x'' em programação, foi usado x1 e x2.&lt;br /&gt;&lt;br /&gt;Quando se estuda matemática se aprende a usar parênteses dentro de colchetes dentro de chaves. Em programação são usados apenas os parênteses, podendo usar quanto níveis forem necessários, sempre lembrando de fechar todos os que forem abertos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3908984904185991673?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3908984904185991673/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3908984904185991673' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3908984904185991673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3908984904185991673'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/primeiro-passo-rumo-um-programa.html' title='Primeiro passo rumo a um programa'/><author><name>Guilherme - Homebrew Maker</name><uri>http://www.blogger.com/profile/18047523570385883790</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://bp1.blogger.com/_6vcJAtQecew/RdxQzZi-fzI/AAAAAAAAAAY/eHWxAJS7YTg/s200/brutusmaskmini.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6vcJAtQecew/ReC9BZi-f2I/AAAAAAAAAAw/-vVAtyOxbnQ/s72-c/c.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-415377490784190252</id><published>2007-02-23T22:29:00.000-08:00</published><updated>2008-11-13T02:21:29.941-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Juiced 2: Hot Import Nights chegando no DS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd_bY-XBzkI/AAAAAAAAAJA/U1Om4vdooM0/s1600-h/juiced2_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd_bY-XBzkI/AAAAAAAAAJA/U1Om4vdooM0/s400/juiced2_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5034984130526432834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="text"&gt;&lt;span nd="14" name="intelliTxt" id="intelliTXT"&gt;&lt;span nd="13" style="font-style: italic;"&gt;O jogo será em breve lançado para o DS. &lt;/span&gt;O jogo está sendo preparado também para PSP, PS2, PS3, Xbox360&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;e PC. &lt;a title="Need For Speed 2 articles" href="http://ds.qj.net/category/Need-for-Speed/cid/429"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/a&gt;A notícia é boa para aqueles que querem sair da rotina do Need for Speed.&lt;br /&gt;&lt;br /&gt;Im dos principais destaques será o modo "Hot Import Night events". Estes eventos permitem ao jogador mostrar seus carros e experiência por todo o mundo (bem, pelo menos por pessoas que possuam o jogo até onde sabemos).&lt;br /&gt;&lt;br /&gt;Haverão diferentes modos de corrida, carros, e mods para carros que ainda não foram divulgados. Fique ligado no NDSBR para mais novidades.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-415377490784190252?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/415377490784190252/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=415377490784190252' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/415377490784190252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/415377490784190252'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/juiced-2-hot-import-nights-chegando-no.html' title='Juiced 2: Hot Import Nights chegando no DS'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd_bY-XBzkI/AAAAAAAAAJA/U1Om4vdooM0/s72-c/juiced2_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-553332357496633901</id><published>2007-02-23T22:23:00.000-08:00</published><updated>2008-11-13T02:21:30.140-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Izuna: Legend of the Unemployed Ninja à venda no mercado americano</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HWhMY73sHwQ/Rd_afuXBzjI/AAAAAAAAAI0/YBJMDJwaCD0/s1600-h/izuna_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_HWhMY73sHwQ/Rd_afuXBzjI/AAAAAAAAAI0/YBJMDJwaCD0/s400/izuna_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5034983146978922034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As aventuras de uma ninja desempregada chegam as prateleiras americanas. O jogo conta com batalhas aleatórias e combates baseados em turnos. O jogo é repleto de diálogos hilários, o que é em si uma boa desculpa para adiquirir o jogo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-553332357496633901?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/553332357496633901/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=553332357496633901' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/553332357496633901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/553332357496633901'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/izuna-legend-of-unemployed-ninja-venda.html' title='Izuna: Legend of the Unemployed Ninja à venda no mercado americano'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HWhMY73sHwQ/Rd_afuXBzjI/AAAAAAAAAI0/YBJMDJwaCD0/s72-c/izuna_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-3876952293773170600</id><published>2007-02-23T06:34:00.000-08:00</published><updated>2008-11-13T02:21:30.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homebrews'/><title type='text'>Ds Organize 2.5 is out!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd79kOXBziI/AAAAAAAAAIo/c2UHaseSYvY/s1600-h/7browser.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd79kOXBziI/AAAAAAAAAIo/c2UHaseSYvY/s400/7browser.jpg" alt="" id="BLOGGER_PHOTO_ID_5034740232218594850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;DragonMinded, criador do Ds Organize, está muito ocupado com os estudos e o trabalho, mas conseguiu lançar mais uma nova versão de seu aplicativo que imita as funções de um palm:&lt;br /&gt;-editor de texto&lt;br /&gt;-scribble pad&lt;br /&gt;-gravador de som&lt;br /&gt;-visualizador de imagens&lt;br /&gt;-e muito mais&lt;br /&gt;&lt;br /&gt;Uma das melhores novidades que acompanha a nova versão é o plug in de mega drive, que abre roms diretamente do ds organize.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dragonminded.com/ndsdev/DSOrganize_2_5.zip"&gt;download&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dragonminded.com/?loc=ndsdev/DSOrganize%20Addons"&gt;diretório de add-ons&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-3876952293773170600?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/3876952293773170600/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=3876952293773170600' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3876952293773170600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/3876952293773170600'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/ds-organize-25-is-out.html' title='Ds Organize 2.5 is out!'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HWhMY73sHwQ/Rd79kOXBziI/AAAAAAAAAIo/c2UHaseSYvY/s72-c/7browser.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-7709040189186092803</id><published>2007-02-21T15:59:00.000-08:00</published><updated>2007-02-21T16:12:06.492-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Confirmado o lançamento de Archaic Sealed Heat</title><content type='html'>A Nintendo atualizou sua lista de lançamentos para 2007 com destaques para Osu! Tatakae! Ouendan 2 (citado no post abaixo) e Archaic Sealed Heat (ou "ASH"), título de RPG e estratégia da produtora Mistwalker, fundada por Hironobu Sakaguchi, o criador de "Final Fantasy".Porem a Nintendo nao divulgou uma data especifica  para o lançamento dos jogos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-7709040189186092803?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/7709040189186092803/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=7709040189186092803' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7709040189186092803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/7709040189186092803'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/confirmado-o-lanamento-de-archaic.html' title='Confirmado o lançamento de Archaic Sealed Heat'/><author><name>Diogo</name><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-5481972087260541028.post-603531472795039912</id><published>2007-02-21T05:52:00.000-08:00</published><updated>2008-11-13T02:21:30.356-08:00</updated><title type='text'>anunciada sequência de Elite Beat Agents: Go! Fight!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HWhMY73sHwQ/RdxPJOXBzgI/AAAAAAAAAIQ/vWpHw-B53qI/s1600-h/Osu2_qjpreviewth.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_HWhMY73sHwQ/RdxPJOXBzgI/AAAAAAAAAIQ/vWpHw-B53qI/s400/Osu2_qjpreviewth.jpg" alt="" id="BLOGGER_PHOTO_ID_5033985503385472514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;O jogo será lançado no japão com o título de Moero! Nekketsu Rhythm Tamashii Osu! Tatakae! Ouendan 2 (o nome do primeiro jogo era Osu! Tatakae! Ouendan). Além de anunciarem um modo multiplayer para até 4 jogadores, nenhum outro detalhe foi anunciado. Fique atento para mais novidades.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-603531472795039912?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/603531472795039912/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=603531472795039912' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/603531472795039912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/603531472795039912'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/anunciada-sequncia-de-elite-beat-agents.html' title='anunciada sequência de Elite Beat Agents: Go! Fight!'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HWhMY73sHwQ/RdxPJOXBzgI/AAAAAAAAAIQ/vWpHw-B53qI/s72-c/Osu2_qjpreviewth.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5481972087260541028.post-2042150515943114776</id><published>2007-02-20T11:28:00.000-08:00</published><updated>2008-11-13T02:21:30.477-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><title type='text'>Porta de Duke3d</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HWhMY73sHwQ/RdtMZeXBzeI/AAAAAAAAAH4/Rk360_STLUs/s1600-h/duke3ds3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_HWhMY73sHwQ/RdtMZeXBzeI/AAAAAAAAAH4/Rk360_STLUs/s400/duke3ds3.png" alt="" id="BLOGGER_PHOTO_ID_5033701009046752738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GPF está trabalhando duro em algo que parecia impossível = fazer uma porta de Duke3d para nintendo ds. Segundo ele, a versão atual está sem som e muito lenta. Falta limpar o código-fonte, que atualmente está muito pesado.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HWhMY73sHwQ/RdtMB-XBzdI/AAAAAAAAAHw/ydNcwUSPbpg/s1600-h/duke3ds2.png"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5481972087260541028-2042150515943114776?l=ndsbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ndsbr.blogspot.com/feeds/2042150515943114776/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5481972087260541028&amp;postID=2042150515943114776' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2042150515943114776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5481972087260541028/posts/default/2042150515943114776'/><link rel='alternate' type='text/html' href='http://ndsbr.blogspot.com/2007/02/porta-de-duke3d.html' title='Porta de Duke3d'/><author><name>Leonardo Zimbres</name><uri>http://www.blogger.com/profile/18208605199318976334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_HWhMY73sHwQ/TKyCuJbxx0I/AAAAAAAAA0s/bGn2nCLG2p4/S220/z.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HWhMY73sHwQ/RdtMZeXBzeI/AAAAAAAAAH4/Rk360_STLUs/s72-c/duke3ds3.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
