revision 1151:e1848ca9b5b1
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 1151:e1848ca9b5b1 |
parent | 1150:1038800cecd8 |
child | 1152:6464d890cc9e |
author | nkeynes |
date | Wed Dec 08 18:33:23 2010 +1000 (13 years ago) |
Updated pt_BR translation from Arthonis
po/pt_BR.po | view | annotate | diff | log | ||
src/Makefile.am | view | annotate | diff | log | ||
src/Makefile.in | view | annotate | diff | log | ||
src/pvr2/glrender.c | view | annotate | diff | log | ||
src/pvr2/scene.h | view | annotate | diff | log | ||
src/pvr2/tileiter.h | view | annotate | diff | log | ||
src/pvr2/untile.c | view | annotate | diff | log | ||
src/tools/genglsl.c | view | annotate | diff | log | ||
test/pvr.c | view | annotate | diff | log |
1.1 --- a/po/pt_BR.po Thu Nov 11 17:51:37 2010 +10001.2 +++ b/po/pt_BR.po Wed Dec 08 18:33:23 2010 +10001.3 @@ -8,37 +8,42 @@1.4 "Project-Id-Version: lxdream 0.8.3\n"1.5 "Report-Msgid-Bugs-To: \n"1.6 "POT-Creation-Date: 2009-06-27 20:19+1000\n"1.7 -"PO-Revision-Date: 2009-04-03 11:05-0300\n"1.8 +"PO-Revision-Date: 2010-11-30 10:17-0300\n"1.9 "Last-Translator: Gabriel Tillmann <gtillmann@gmail.com>\n"1.10 "Language-Team: PT <trans-pt@lxdream.org>\n"1.11 "MIME-Version: 1.0\n"1.12 "Content-Type: text/plain; charset=utf-8\n"1.13 "Content-Transfer-Encoding: 8bit\n"1.15 -#: src/cocoaui/cocoa_ctrl.m:325 src/gtkui/gtk_ctrl.c:4941.16 -#, fuzzy, c-format1.17 +#: src/cocoaui/cocoa_ctrl.m:3251.18 +#: src/gtkui/gtk_ctrl.c:4941.19 +#, c-format1.20 msgid "Port %c."1.21 -msgstr "Slot %d."1.22 +msgstr "Porta %c."1.24 -#: src/cocoaui/cocoa_ctrl.m:327 src/gtkui/gtk_ctrl.c:5231.25 +#: src/cocoaui/cocoa_ctrl.m:3271.26 +#: src/gtkui/gtk_ctrl.c:5231.27 #, c-format1.28 msgid "VMU %d."1.29 -msgstr ""1.30 +msgstr "VMU %d."1.32 #: src/cocoaui/cocoaui.m:4471.33 #, c-format1.34 msgid "Running (%2.4f%%)"1.35 msgstr "Rodando (%2.4f%%)"1.37 -#: src/cocoaui/cocoa_win.m:193 src/gtkui/gtk_win.c:3561.38 +#: src/cocoaui/cocoa_win.m:1931.39 +#: src/gtkui/gtk_win.c:3561.40 msgid "(Press <ctrl><alt> to release grab)"1.41 msgstr "(Pressione <Ctrl><alt> para desprender)"1.43 -#: src/cocoaui/cocoa_win.m:205 src/gtkui/gtk_win.c:3661.44 +#: src/cocoaui/cocoa_win.m:2051.45 +#: src/gtkui/gtk_win.c:3661.46 msgid "Running"1.47 msgstr "Rodando"1.49 -#: src/cocoaui/cocoa_win.m:208 src/gtkui/gtk_win.c:3661.50 +#: src/cocoaui/cocoa_win.m:2081.51 +#: src/gtkui/gtk_win.c:3661.52 msgid "Stopped"1.53 msgstr "Parado"1.55 @@ -60,7 +65,7 @@1.57 #: src/config.c:481.58 msgid "VMU path"1.59 -msgstr ""1.60 +msgstr "Caminho do VMU"1.62 #: src/config.c:491.63 msgid "Bootstrap IP.BIN"1.64 @@ -71,26 +76,23 @@1.65 msgstr "Dispositivo Serial"1.67 #: src/dreamcast.c:2031.68 -msgid ""1.69 -"No program is loaded, and no BIOS is configured (required to boot a CD "1.70 -"image). To continue, either load a binary program, or set the path to your "1.71 -"BIOS file in the Path Preferences"1.72 -msgstr ""1.73 +msgid "No program is loaded, and no BIOS is configured (required to boot a CD image). To continue, either load a binary program, or set the path to your BIOS file in the Path Preferences"1.74 +msgstr "Nenhum programa foi carregado, e a BIOS não está configurada (requisito para arrancar uma imagem de CD). Para continuar, ou carregue um programa binário, ou configure o Caminho do seu arquivo de BIOS nas Preferências"1.76 #: src/dreamcast.c:3381.77 #, c-format1.78 msgid "File is not a %s save state"1.79 -msgstr ""1.80 +msgstr "O arquivo %s não é um estado salvo"1.82 #: src/dreamcast.c:3431.83 #, c-format1.84 msgid "Unsupported %s save state version"1.85 -msgstr ""1.86 +msgstr "Versão de estado salvo %s não suportada"1.88 #: src/dreamcast.c:3481.89 #, c-format1.90 msgid "%s save state is corrupted (bad module count)"1.91 -msgstr ""1.92 +msgstr "O estado salvo %s está corrompido (Má contagem de módulo)"1.94 #: src/drivers/audio_alsa.c:351.95 msgid "Audio output device"1.96 @@ -118,7 +120,7 @@1.98 #: src/drivers/audio_sdl.c:1251.99 msgid "SDL sound driver"1.100 -msgstr ""1.101 +msgstr "Driver de Som SDL"1.103 #. Sense key 2 == Not Ready (ie temporary failure). Just ignore and1.104 #. * consider the drive empty for now, but warn about any other errors1.105 @@ -126,7 +128,7 @@1.106 #: src/drivers/cd_mmc.c:1821.107 #, c-format1.108 msgid "Unable to read disc table of contents (error %04x)"1.109 -msgstr ""1.110 +msgstr "Impossível ler a tabela de conteúdo do disco (erro %04x) "1.112 #: src/drivers/video_gtk.c:1321.113 msgid "GTK-based OpenGL driver"1.114 @@ -140,7 +142,8 @@1.115 msgid "OS X Cocoa GUI-based OpenGL driver"1.116 msgstr "Driver GUI OS X Cocoa baseado em OpenGL "1.118 -#: src/gdlist.c:187 src/gdlist.c:2101.119 +#: src/gdlist.c:1871.120 +#: src/gdlist.c:2101.121 msgid "Empty"1.122 msgstr "Vazio"1.124 @@ -152,11 +155,13 @@1.125 msgid "Load state..."1.126 msgstr "Carregar stado..."1.128 -#: src/gtkui/gtkcb.c:184 src/gtkui/gtkcb.c:2171.129 +#: src/gtkui/gtkcb.c:1841.130 +#: src/gtkui/gtkcb.c:2171.131 msgid "lxDream Save State (*.dst)"1.132 msgstr "lxDream Save State (*.dst)"1.134 -#: src/gtkui/gtkcb.c:297 src/gtkui/gtk_dump.c:691.135 +#: src/gtkui/gtkcb.c:2971.136 +#: src/gtkui/gtk_dump.c:691.137 msgid "Memory dump"1.138 msgstr "Dump de memória"1.140 @@ -172,10 +177,12 @@1.141 msgid "No address selected, so can't run to it"1.142 msgstr "Sem endereço selecionado, então impossível correr a ele"1.144 -#: src/gtkui/gtk_ctrl.c:80 src/gtkui/gtk_ctrl.c:109 src/gtkui/gtk_hotkeys.c:501.145 +#: src/gtkui/gtk_ctrl.c:801.146 +#: src/gtkui/gtk_ctrl.c:1091.147 +#: src/gtkui/gtk_hotkeys.c:501.148 #: src/gtkui/gtk_hotkeys.c:791.149 msgid "<press key>"1.150 -msgstr "<Precione tecla>"1.151 +msgstr "<Pressione tecla>"1.153 #: src/gtkui/gtk_ctrl.c:2091.154 msgid "Controller Configuration"1.155 @@ -187,24 +194,24 @@1.157 #: src/gtkui/gtk_ctrl.c:2521.158 msgid "Load VMU"1.159 -msgstr ""1.160 +msgstr "Carregar VMU"1.162 #: src/gtkui/gtk_ctrl.c:2661.163 msgid "Create VMU"1.164 -msgstr ""1.165 +msgstr "Criar VMU"1.167 -#: src/gtkui/gtk_ctrl.c:337 src/gtkui/gtk_ctrl.c:3551.168 +#: src/gtkui/gtk_ctrl.c:3371.169 +#: src/gtkui/gtk_ctrl.c:3551.170 msgid "<empty>"1.171 msgstr "<Vazio>"1.173 #: src/gtkui/gtk_ctrl.c:3641.174 -#, fuzzy1.175 msgid "Load VMU..."1.176 -msgstr "Carregar stado..."1.177 +msgstr "Carregar VMU..."1.179 #: src/gtkui/gtk_ctrl.c:3651.180 msgid "Create VMU..."1.181 -msgstr ""1.182 +msgstr "Criar VMU..."1.184 #: src/gtkui/gtk_ctrl.c:5591.185 msgid "Controller Settings"1.186 @@ -267,9 +274,8 @@1.187 msgstr "Configurações de GD-Rom"1.189 #: src/gtkui/gtk_hotkeys.c:1861.190 -#, fuzzy1.191 msgid "Hotkey Settings"1.192 -msgstr "Configurações de diretórios"1.193 +msgstr "Configurações de Hotkeys"1.195 #: src/gtkui/gtk_mmio.c:1091.196 msgid "Address"1.197 @@ -299,7 +305,8 @@1.198 msgid "Close"1.199 msgstr "Fechar"1.201 -#: src/gtkui/gtk_path.c:34 src/gtkui/gtk_path.c:571.202 +#: src/gtkui/gtk_path.c:341.203 +#: src/gtkui/gtk_path.c:571.204 msgid "Select file"1.205 msgstr "Selecionar arquivo"1.207 @@ -325,7 +332,7 @@1.209 #: src/gtkui/gtkui.c:731.210 msgid "Load and run a program binary"1.211 -msgstr "Carregar e Correr Um programa Binário"1.212 +msgstr "Carregar e Rodar Um programa Binário"1.214 #: src/gtkui/gtkui.c:741.215 msgid "_Reset"1.216 @@ -348,49 +355,44 @@1.217 msgstr "Continuar"1.219 #: src/gtkui/gtkui.c:771.220 -#, fuzzy1.221 msgid "L_oad State..."1.222 -msgstr "_Carregar Estado..."1.223 +msgstr "C_arregar Estado..."1.225 #: src/gtkui/gtkui.c:771.226 msgid "Load an lxdream save state"1.227 msgstr "Carregar estado do lxdream"1.229 #: src/gtkui/gtkui.c:781.230 -#, fuzzy1.231 msgid "S_ave State..."1.232 -msgstr "_Salvar Estado..."1.233 +msgstr "S_alvar Estado..."1.235 #: src/gtkui/gtkui.c:781.236 msgid "Create an lxdream save state"1.237 msgstr "Criar estado do lxdream"1.239 #: src/gtkui/gtkui.c:791.240 -#, fuzzy1.241 msgid "_Load Quick State"1.242 -msgstr "_Carregar Estado..."1.243 +msgstr "_Carregar Estado Rápido..."1.245 #: src/gtkui/gtkui.c:791.246 -#, fuzzy1.247 msgid "Load the current quick save state"1.248 -msgstr "Carregar estado do lxdream"1.249 +msgstr "Carregar estado Rápido atual."1.251 #: src/gtkui/gtkui.c:801.252 -#, fuzzy1.253 msgid "_Save Quick State..."1.254 -msgstr "_Salvar Estado..."1.255 +msgstr "_Salvar Estado Rápido..."1.257 #: src/gtkui/gtkui.c:801.258 msgid "Save to the current quick save state"1.259 -msgstr ""1.260 +msgstr "Salvar para o atual estado salvo rápido"1.262 #: src/gtkui/gtkui.c:811.263 msgid "Select _Quick State"1.264 -msgstr ""1.265 +msgstr "Selecionar _Estado Rápido"1.267 #: src/gtkui/gtkui.c:811.268 msgid "Set quick save state"1.269 -msgstr ""1.270 +msgstr "Escolher estado salvo rápido"1.272 #: src/gtkui/gtkui.c:821.273 msgid "E_xit"1.274 @@ -457,14 +459,12 @@1.275 msgstr "Configurar saída de vídeo"1.277 #: src/gtkui/gtkui.c:911.278 -#, fuzzy1.279 msgid "_Hotkeys..."1.280 -msgstr "_Controles..."1.281 +msgstr "_Hotkeys..."1.283 #: src/gtkui/gtkui.c:911.284 -#, fuzzy1.285 msgid "Configure hotkeys"1.286 -msgstr "Configurar Controles"1.287 +msgstr "Configurar hotkeys"1.289 #: src/gtkui/gtkui.c:921.290 msgid "_About..."1.291 @@ -537,12 +537,12 @@1.292 #: src/gtkui/gtkui.c:2571.293 #, c-format1.294 msgid "State _%d"1.295 -msgstr ""1.296 +msgstr "Estado_%d"1.298 #: src/gtkui/gtkui.c:2591.299 #, c-format1.300 msgid "Use quick save state %d"1.301 -msgstr ""1.302 +msgstr "Usar estado salvo rápido %d"1.304 #: src/gtkui/gtkui.c:3731.305 msgid "Debugger"1.306 @@ -558,68 +558,67 @@1.308 #: src/hotkeys.c:401.309 msgid "Resume emulation"1.310 -msgstr ""1.311 +msgstr "Continuar emulação"1.313 #: src/hotkeys.c:411.314 msgid "Stop emulation"1.315 -msgstr ""1.316 +msgstr "Parar emulação"1.318 #: src/hotkeys.c:421.319 -#, fuzzy1.320 msgid "Reset emulator"1.321 -msgstr "Reiniciar dreamcast"1.322 +msgstr "Reiniciar o emulador"1.324 #: src/hotkeys.c:431.325 msgid "Exit emulator"1.326 -msgstr ""1.327 +msgstr "Sair do emulador"1.329 #: src/hotkeys.c:441.330 msgid "Save current quick save"1.331 -msgstr ""1.332 +msgstr "Salvar atual estado rápido"1.334 #: src/hotkeys.c:451.335 msgid "Load current quick save"1.336 -msgstr ""1.337 +msgstr "Carregar atual estado rápido"1.339 #: src/hotkeys.c:461.340 msgid "Select quick save state 0"1.341 -msgstr ""1.342 +msgstr "Selecionar estado salvo rápido 0"1.344 #: src/hotkeys.c:471.345 msgid "Select quick save state 1"1.346 -msgstr ""1.347 +msgstr "Selecionar estado salvo rápido 1"1.349 #: src/hotkeys.c:481.350 msgid "Select quick save state 2"1.351 -msgstr ""1.352 +msgstr "Selecionar estado salvo rápido 2"1.354 #: src/hotkeys.c:491.355 msgid "Select quick save state 3"1.356 -msgstr ""1.357 +msgstr "Selecionar estado salvo rápido 3"1.359 #: src/hotkeys.c:501.360 msgid "Select quick save state 4"1.361 -msgstr ""1.362 +msgstr "Selecionar estado salvo rápido 4"1.364 #: src/hotkeys.c:511.365 msgid "Select quick save state 5"1.366 -msgstr ""1.367 +msgstr "Selecionar estado salvo rápido 5"1.369 #: src/hotkeys.c:521.370 msgid "Select quick save state 6"1.371 -msgstr ""1.372 +msgstr "Selecionar estado salvo rápido 6"1.374 #: src/hotkeys.c:531.375 msgid "Select quick save state 7"1.376 -msgstr ""1.377 +msgstr "Selecionar estado salvo rápido 7"1.379 #: src/hotkeys.c:541.380 msgid "Select quick save state 8"1.381 -msgstr ""1.382 +msgstr "Selecionar estado salvo rápido 8"1.384 #: src/hotkeys.c:551.385 msgid "Select quick save state 9"1.386 -msgstr ""1.387 +msgstr "Selecionar estado salvo rápido 9"1.389 #: src/main.c:871.390 msgid "Run the AICA SPU only, with the supplied program"1.391 @@ -638,17 +637,16 @@1.392 msgstr "Iniciar no modo debbugador"1.394 #: src/main.c:911.395 -#, fuzzy1.396 msgid "Start in fullscreen mode"1.397 -msgstr "Iniciar no modo debbugador"1.398 +msgstr "Iniciar no modo Tela cheia"1.400 #: src/main.c:921.401 msgid "Start GDB remote server on PORT for SH4"1.402 -msgstr ""1.403 +msgstr "Iniciar Servidor remoto do GDB em PORT para SH4"1.405 #: src/main.c:931.406 msgid "Start GDB remote server on PORT for ARM"1.407 -msgstr ""1.408 +msgstr "Iniciar Servidor remoto do GDB em PORT para ARM"1.410 #: src/main.c:941.411 msgid "Display this usage information"1.412 @@ -698,19 +696,23 @@1.413 msgid "Disable the SH4 translator"1.414 msgstr "Desabilitar o tradutor de SH4"1.416 -#: src/maple/controller.c:106 src/maple/lightgun.c:861.417 +#: src/maple/controller.c:1061.418 +#: src/maple/lightgun.c:861.419 msgid "Dpad left"1.420 msgstr "Dpad Esquerda"1.422 -#: src/maple/controller.c:107 src/maple/lightgun.c:871.423 +#: src/maple/controller.c:1071.424 +#: src/maple/lightgun.c:871.425 msgid "Dpad right"1.426 msgstr "Dpad Direita"1.428 -#: src/maple/controller.c:108 src/maple/lightgun.c:881.429 +#: src/maple/controller.c:1081.430 +#: src/maple/lightgun.c:881.431 msgid "Dpad up"1.432 msgstr "Dpad Cima"1.434 -#: src/maple/controller.c:109 src/maple/lightgun.c:891.435 +#: src/maple/controller.c:1091.436 +#: src/maple/lightgun.c:891.437 msgid "Dpad down"1.438 msgstr "Dpad Baixo"1.440 @@ -738,11 +740,13 @@1.441 msgid "Button Y"1.442 msgstr "Botão Y"1.444 -#: src/maple/controller.c:116 src/maple/lightgun.c:901.445 +#: src/maple/controller.c:1161.446 +#: src/maple/lightgun.c:901.447 msgid "Button A"1.448 msgstr "Botão A"1.450 -#: src/maple/controller.c:117 src/maple/lightgun.c:911.451 +#: src/maple/controller.c:1171.452 +#: src/maple/lightgun.c:911.453 msgid "Button B"1.454 msgstr "Botão B"1.456 @@ -754,14 +758,14 @@1.457 msgid "Trigger right"1.458 msgstr "Gatilho Direita"1.460 -#: src/maple/controller.c:120 src/maple/lightgun.c:921.461 +#: src/maple/controller.c:1201.462 +#: src/maple/lightgun.c:921.463 msgid "Start button"1.464 msgstr "Botão Start"1.466 #: src/maple/vmu.c:921.467 -#, fuzzy1.468 msgid "Volume"1.469 -msgstr "Valor"1.470 +msgstr "Volume"1.472 #. Can't happen.1.473 #: src/x86dasm/dis-buf.c:571.474 @@ -780,9 +784,8 @@1.476 #~ msgid "Bios rom"1.477 #~ msgstr "Bios rom"1.478 -1.479 #~ msgid "Flash rom"1.480 #~ msgstr "Flash rom"1.481 -1.482 #~ msgid "Save state path"1.483 #~ msgstr "diretório do estado salvo"1.484 +
2.1 --- a/src/Makefile.am Thu Nov 11 17:51:37 2010 +10002.2 +++ b/src/Makefile.am Wed Dec 08 18:33:23 2010 +10002.3 @@ -55,7 +55,7 @@2.4 sh4/cache.c sh4/mmu.h sh4/shadow.c \2.5 aica/armcore.c aica/armcore.h aica/armdasm.c aica/armdasm.h aica/armmem.c \2.6 aica/aica.c aica/aica.h aica/audio.c aica/audio.h \2.7 - pvr2/pvr2.c pvr2/pvr2.h pvr2/pvr2mem.c pvr2/pvr2mmio.h \2.8 + pvr2/pvr2.c pvr2/pvr2.h pvr2/pvr2mem.c pvr2/pvr2mmio.h pvr2/untile.c \2.9 pvr2/tacore.c pvr2/rendsort.c pvr2/tileiter.h pvr2/shaders.glsl \2.10 pvr2/texcache.c pvr2/yuv.c pvr2/rendsave.c pvr2/scene.c pvr2/scene.h \2.11 pvr2/gl_sl.c pvr2/shaders.h pvr2/shaders.def pvr2/glutil.c pvr2/glutil.h pvr2/glrender.c \
3.1 --- a/src/Makefile.in Thu Nov 11 17:51:37 2010 +10003.2 +++ b/src/Makefile.in Wed Dec 08 18:33:23 2010 +10003.3 @@ -155,18 +155,18 @@3.4 sh4/cache.c sh4/mmu.h sh4/shadow.c aica/armcore.c \3.5 aica/armcore.h aica/armdasm.c aica/armdasm.h aica/armmem.c \3.6 aica/aica.c aica/aica.h aica/audio.c aica/audio.h pvr2/pvr2.c \3.7 - pvr2/pvr2.h pvr2/pvr2mem.c pvr2/pvr2mmio.h pvr2/tacore.c \3.8 - pvr2/rendsort.c pvr2/tileiter.h pvr2/shaders.glsl \3.9 - pvr2/texcache.c pvr2/yuv.c pvr2/rendsave.c pvr2/scene.c \3.10 - pvr2/scene.h pvr2/gl_sl.c pvr2/shaders.h pvr2/shaders.def \3.11 - pvr2/glutil.c pvr2/glutil.h pvr2/glrender.c maple/maple.c \3.12 - maple/maple.h maple/controller.c maple/kbd.c maple/mouse.c \3.13 - maple/lightgun.c maple/vmu.c loader.c loader.h elf.h \3.14 - bootstrap.c bootstrap.h util.c gdlist.c gdlist.h vmu/vmuvol.c \3.15 - vmu/vmuvol.h vmu/vmulist.c vmu/vmulist.h display.c display.h \3.16 - dckeysyms.h drivers/audio_null.c drivers/video_null.c \3.17 - drivers/video_gl.c drivers/video_gl.h drivers/gl_fbo.c \3.18 - drivers/serial_unix.c drivers/cdrom/cdrom.h \3.19 + pvr2/pvr2.h pvr2/pvr2mem.c pvr2/pvr2mmio.h pvr2/untile.c \3.20 + pvr2/tacore.c pvr2/rendsort.c pvr2/tileiter.h \3.21 + pvr2/shaders.glsl pvr2/texcache.c pvr2/yuv.c pvr2/rendsave.c \3.22 + pvr2/scene.c pvr2/scene.h pvr2/gl_sl.c pvr2/shaders.h \3.23 + pvr2/shaders.def pvr2/glutil.c pvr2/glutil.h pvr2/glrender.c \3.24 + maple/maple.c maple/maple.h maple/controller.c maple/kbd.c \3.25 + maple/mouse.c maple/lightgun.c maple/vmu.c loader.c loader.h \3.26 + elf.h bootstrap.c bootstrap.h util.c gdlist.c gdlist.h \3.27 + vmu/vmuvol.c vmu/vmuvol.h vmu/vmulist.c vmu/vmulist.h \3.28 + display.c display.h dckeysyms.h drivers/audio_null.c \3.29 + drivers/video_null.c drivers/video_gl.c drivers/video_gl.h \3.30 + drivers/gl_fbo.c drivers/serial_unix.c drivers/cdrom/cdrom.h \3.31 drivers/cdrom/cdrom.c drivers/cdrom/drive.h \3.32 drivers/cdrom/sector.h drivers/cdrom/sector.c \3.33 drivers/cdrom/defs.h drivers/cdrom/cd_nrg.c \3.34 @@ -262,31 +262,31 @@3.35 lxdream-armdasm.$(OBJEXT) lxdream-armmem.$(OBJEXT) \3.36 lxdream-aica.$(OBJEXT) lxdream-audio.$(OBJEXT) \3.37 lxdream-pvr2.$(OBJEXT) lxdream-pvr2mem.$(OBJEXT) \3.38 - lxdream-tacore.$(OBJEXT) lxdream-rendsort.$(OBJEXT) \3.39 - lxdream-texcache.$(OBJEXT) lxdream-yuv.$(OBJEXT) \3.40 - lxdream-rendsave.$(OBJEXT) lxdream-scene.$(OBJEXT) \3.41 - lxdream-gl_sl.$(OBJEXT) lxdream-glutil.$(OBJEXT) \3.42 - lxdream-glrender.$(OBJEXT) lxdream-maple.$(OBJEXT) \3.43 - lxdream-controller.$(OBJEXT) lxdream-kbd.$(OBJEXT) \3.44 - lxdream-mouse.$(OBJEXT) lxdream-lightgun.$(OBJEXT) \3.45 - lxdream-vmu.$(OBJEXT) lxdream-loader.$(OBJEXT) \3.46 - lxdream-bootstrap.$(OBJEXT) lxdream-util.$(OBJEXT) \3.47 - lxdream-gdlist.$(OBJEXT) lxdream-vmuvol.$(OBJEXT) \3.48 - lxdream-vmulist.$(OBJEXT) lxdream-display.$(OBJEXT) \3.49 - lxdream-audio_null.$(OBJEXT) lxdream-video_null.$(OBJEXT) \3.50 - lxdream-video_gl.$(OBJEXT) lxdream-gl_fbo.$(OBJEXT) \3.51 - lxdream-serial_unix.$(OBJEXT) lxdream-cdrom.$(OBJEXT) \3.52 - lxdream-sector.$(OBJEXT) lxdream-cd_nrg.$(OBJEXT) \3.53 - lxdream-cd_cdi.$(OBJEXT) lxdream-cd_gdi.$(OBJEXT) \3.54 - lxdream-edc_ecc.$(OBJEXT) lxdream-drive.$(OBJEXT) \3.55 - lxdream-cd_mmc.$(OBJEXT) lxdream-isofs.$(OBJEXT) \3.56 - lxdream-hotkeys.$(OBJEXT) $(am__objects_1) $(am__objects_2) \3.57 - $(am__objects_3) $(am__objects_4) $(am__objects_5) \3.58 - $(am__objects_6) $(am__objects_7) $(am__objects_8) \3.59 - $(am__objects_9) $(am__objects_10) $(am__objects_11) \3.60 - $(am__objects_12) $(am__objects_13) $(am__objects_14) \3.61 - $(am__objects_15) $(am__objects_16) $(am__objects_17) \3.62 - $(am__objects_18)3.63 + lxdream-untile.$(OBJEXT) lxdream-tacore.$(OBJEXT) \3.64 + lxdream-rendsort.$(OBJEXT) lxdream-texcache.$(OBJEXT) \3.65 + lxdream-yuv.$(OBJEXT) lxdream-rendsave.$(OBJEXT) \3.66 + lxdream-scene.$(OBJEXT) lxdream-gl_sl.$(OBJEXT) \3.67 + lxdream-glutil.$(OBJEXT) lxdream-glrender.$(OBJEXT) \3.68 + lxdream-maple.$(OBJEXT) lxdream-controller.$(OBJEXT) \3.69 + lxdream-kbd.$(OBJEXT) lxdream-mouse.$(OBJEXT) \3.70 + lxdream-lightgun.$(OBJEXT) lxdream-vmu.$(OBJEXT) \3.71 + lxdream-loader.$(OBJEXT) lxdream-bootstrap.$(OBJEXT) \3.72 + lxdream-util.$(OBJEXT) lxdream-gdlist.$(OBJEXT) \3.73 + lxdream-vmuvol.$(OBJEXT) lxdream-vmulist.$(OBJEXT) \3.74 + lxdream-display.$(OBJEXT) lxdream-audio_null.$(OBJEXT) \3.75 + lxdream-video_null.$(OBJEXT) lxdream-video_gl.$(OBJEXT) \3.76 + lxdream-gl_fbo.$(OBJEXT) lxdream-serial_unix.$(OBJEXT) \3.77 + lxdream-cdrom.$(OBJEXT) lxdream-sector.$(OBJEXT) \3.78 + lxdream-cd_nrg.$(OBJEXT) lxdream-cd_cdi.$(OBJEXT) \3.79 + lxdream-cd_gdi.$(OBJEXT) lxdream-edc_ecc.$(OBJEXT) \3.80 + lxdream-drive.$(OBJEXT) lxdream-cd_mmc.$(OBJEXT) \3.81 + lxdream-isofs.$(OBJEXT) lxdream-hotkeys.$(OBJEXT) \3.82 + $(am__objects_1) $(am__objects_2) $(am__objects_3) \3.83 + $(am__objects_4) $(am__objects_5) $(am__objects_6) \3.84 + $(am__objects_7) $(am__objects_8) $(am__objects_9) \3.85 + $(am__objects_10) $(am__objects_11) $(am__objects_12) \3.86 + $(am__objects_13) $(am__objects_14) $(am__objects_15) \3.87 + $(am__objects_16) $(am__objects_17) $(am__objects_18)3.88 lxdream_OBJECTS = $(am_lxdream_OBJECTS)3.89 lxdream_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \3.90 $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \3.91 @@ -575,34 +575,35 @@3.92 sh4/shadow.c aica/armcore.c aica/armcore.h aica/armdasm.c \3.93 aica/armdasm.h aica/armmem.c aica/aica.c aica/aica.h \3.94 aica/audio.c aica/audio.h pvr2/pvr2.c pvr2/pvr2.h \3.95 - pvr2/pvr2mem.c pvr2/pvr2mmio.h pvr2/tacore.c pvr2/rendsort.c \3.96 - pvr2/tileiter.h pvr2/shaders.glsl pvr2/texcache.c pvr2/yuv.c \3.97 - pvr2/rendsave.c pvr2/scene.c pvr2/scene.h pvr2/gl_sl.c \3.98 - pvr2/shaders.h pvr2/shaders.def pvr2/glutil.c pvr2/glutil.h \3.99 - pvr2/glrender.c maple/maple.c maple/maple.h maple/controller.c \3.100 - maple/kbd.c maple/mouse.c maple/lightgun.c maple/vmu.c \3.101 - loader.c loader.h elf.h bootstrap.c bootstrap.h util.c \3.102 - gdlist.c gdlist.h vmu/vmuvol.c vmu/vmuvol.h vmu/vmulist.c \3.103 - vmu/vmulist.h display.c display.h dckeysyms.h \3.104 - drivers/audio_null.c drivers/video_null.c drivers/video_gl.c \3.105 - drivers/video_gl.h drivers/gl_fbo.c drivers/serial_unix.c \3.106 - drivers/cdrom/cdrom.h drivers/cdrom/cdrom.c \3.107 - drivers/cdrom/drive.h drivers/cdrom/sector.h \3.108 - drivers/cdrom/sector.c drivers/cdrom/defs.h \3.109 - drivers/cdrom/cd_nrg.c drivers/cdrom/cd_cdi.c \3.110 - drivers/cdrom/cd_gdi.c drivers/cdrom/edc_ecc.c \3.111 - drivers/cdrom/ecc.h drivers/cdrom/drive.c \3.112 - drivers/cdrom/edc_crctable.h drivers/cdrom/edc_encoder.h \3.113 - drivers/cdrom/edc_l2sq.h drivers/cdrom/edc_scramble.h \3.114 - drivers/cdrom/cd_mmc.c drivers/cdrom/isofs.h \3.115 - drivers/cdrom/isofs.c sh4/sh4.def sh4/sh4core.in sh4/sh4x86.in \3.116 - sh4/sh4dasm.in sh4/sh4stat.in hotkeys.c hotkeys.h \3.117 - $(am__append_1) $(am__append_2) $(am__append_4) \3.118 - $(am__append_5) $(am__append_6) $(am__append_7) \3.119 - $(am__append_8) $(am__append_9) $(am__append_10) \3.120 - $(am__append_17) $(am__append_19) $(am__append_21) \3.121 - $(am__append_23) $(am__append_25) $(am__append_27) \3.122 - $(am__append_28) $(am__append_29) $(am__append_30)3.123 + pvr2/pvr2mem.c pvr2/pvr2mmio.h pvr2/untile.c pvr2/tacore.c \3.124 + pvr2/rendsort.c pvr2/tileiter.h pvr2/shaders.glsl \3.125 + pvr2/texcache.c pvr2/yuv.c pvr2/rendsave.c pvr2/scene.c \3.126 + pvr2/scene.h pvr2/gl_sl.c pvr2/shaders.h pvr2/shaders.def \3.127 + pvr2/glutil.c pvr2/glutil.h pvr2/glrender.c maple/maple.c \3.128 + maple/maple.h maple/controller.c maple/kbd.c maple/mouse.c \3.129 + maple/lightgun.c maple/vmu.c loader.c loader.h elf.h \3.130 + bootstrap.c bootstrap.h util.c gdlist.c gdlist.h vmu/vmuvol.c \3.131 + vmu/vmuvol.h vmu/vmulist.c vmu/vmulist.h display.c display.h \3.132 + dckeysyms.h drivers/audio_null.c drivers/video_null.c \3.133 + drivers/video_gl.c drivers/video_gl.h drivers/gl_fbo.c \3.134 + drivers/serial_unix.c drivers/cdrom/cdrom.h \3.135 + drivers/cdrom/cdrom.c drivers/cdrom/drive.h \3.136 + drivers/cdrom/sector.h drivers/cdrom/sector.c \3.137 + drivers/cdrom/defs.h drivers/cdrom/cd_nrg.c \3.138 + drivers/cdrom/cd_cdi.c drivers/cdrom/cd_gdi.c \3.139 + drivers/cdrom/edc_ecc.c drivers/cdrom/ecc.h \3.140 + drivers/cdrom/drive.c drivers/cdrom/edc_crctable.h \3.141 + drivers/cdrom/edc_encoder.h drivers/cdrom/edc_l2sq.h \3.142 + drivers/cdrom/edc_scramble.h drivers/cdrom/cd_mmc.c \3.143 + drivers/cdrom/isofs.h drivers/cdrom/isofs.c sh4/sh4.def \3.144 + sh4/sh4core.in sh4/sh4x86.in sh4/sh4dasm.in sh4/sh4stat.in \3.145 + hotkeys.c hotkeys.h $(am__append_1) $(am__append_2) \3.146 + $(am__append_4) $(am__append_5) $(am__append_6) \3.147 + $(am__append_7) $(am__append_8) $(am__append_9) \3.148 + $(am__append_10) $(am__append_17) $(am__append_19) \3.149 + $(am__append_21) $(am__append_23) $(am__append_25) \3.150 + $(am__append_27) $(am__append_28) $(am__append_29) \3.151 + $(am__append_30)3.152 lxdream_CPPFLAGS = @LXDREAMCPPFLAGS@3.153 @BUILD_SH4X86_TRUE@test_testsh4x86_LDADD = @LXDREAM_LIBS@ @GLIB_LIBS@ @GTK_LIBS@ @LIBPNG_LIBS@3.154 @BUILD_SH4X86_TRUE@test_testsh4x86_CPPFLAGS = @LXDREAMCPPFLAGS@3.155 @@ -875,6 +876,7 @@3.156 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-tacore.Po@am__quote@3.157 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-texcache.Po@am__quote@3.158 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-timer.Po@am__quote@3.159 +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-untile.Po@am__quote@3.160 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-util.Po@am__quote@3.161 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-version.Po@am__quote@3.162 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lxdream-video_gdk.Po@am__quote@3.163 @@ -1565,6 +1567,20 @@3.164 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@3.165 @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-pvr2mem.obj `if test -f 'pvr2/pvr2mem.c'; then $(CYGPATH_W) 'pvr2/pvr2mem.c'; else $(CYGPATH_W) '$(srcdir)/pvr2/pvr2mem.c'; fi`3.167 +lxdream-untile.o: pvr2/untile.c3.168 +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-untile.o -MD -MP -MF "$(DEPDIR)/lxdream-untile.Tpo" -c -o lxdream-untile.o `test -f 'pvr2/untile.c' || echo '$(srcdir)/'`pvr2/untile.c; \3.169 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-untile.Tpo" "$(DEPDIR)/lxdream-untile.Po"; else rm -f "$(DEPDIR)/lxdream-untile.Tpo"; exit 1; fi3.170 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pvr2/untile.c' object='lxdream-untile.o' libtool=no @AMDEPBACKSLASH@3.171 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@3.172 +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-untile.o `test -f 'pvr2/untile.c' || echo '$(srcdir)/'`pvr2/untile.c3.173 +3.174 +lxdream-untile.obj: pvr2/untile.c3.175 +@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-untile.obj -MD -MP -MF "$(DEPDIR)/lxdream-untile.Tpo" -c -o lxdream-untile.obj `if test -f 'pvr2/untile.c'; then $(CYGPATH_W) 'pvr2/untile.c'; else $(CYGPATH_W) '$(srcdir)/pvr2/untile.c'; fi`; \3.176 +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-untile.Tpo" "$(DEPDIR)/lxdream-untile.Po"; else rm -f "$(DEPDIR)/lxdream-untile.Tpo"; exit 1; fi3.177 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pvr2/untile.c' object='lxdream-untile.obj' libtool=no @AMDEPBACKSLASH@3.178 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@3.179 +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lxdream-untile.obj `if test -f 'pvr2/untile.c'; then $(CYGPATH_W) 'pvr2/untile.c'; else $(CYGPATH_W) '$(srcdir)/pvr2/untile.c'; fi`3.180 +3.181 lxdream-tacore.o: pvr2/tacore.c3.182 @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lxdream_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lxdream-tacore.o -MD -MP -MF "$(DEPDIR)/lxdream-tacore.Tpo" -c -o lxdream-tacore.o `test -f 'pvr2/tacore.c' || echo '$(srcdir)/'`pvr2/tacore.c; \3.183 @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lxdream-tacore.Tpo" "$(DEPDIR)/lxdream-tacore.Po"; else rm -f "$(DEPDIR)/lxdream-tacore.Tpo"; exit 1; fi
4.1 --- a/src/pvr2/glrender.c Thu Nov 11 17:51:37 2010 +10004.2 +++ b/src/pvr2/glrender.c Wed Dec 08 18:33:23 2010 +10004.3 @@ -222,7 +222,7 @@4.4 } while( poly != NULL );4.5 }4.7 -static void gl_render_poly( struct polygon_struct *poly, gboolean set_depth)4.8 +void gl_render_poly( struct polygon_struct *poly, gboolean set_depth)4.9 {4.10 if( poly->vertex_count == 0 )4.11 return; /* Culled */4.12 @@ -390,6 +390,35 @@4.13 glDisable( GL_STENCIL_TEST );4.14 }4.16 +static void gl_render_stencil( )4.17 +{4.18 + struct tile_segment *segment = pvr2_scene.segment_list;4.19 + if( display_driver->capabilities.stencil_bits >= 2 ) {4.20 + glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE );4.21 + do {4.22 + int tilex = SEGMENT_X(segment->control);4.23 + int tiley = SEGMENT_Y(segment->control);4.24 +4.25 + uint32_t tile_bounds[4] = { tilex << 5, (tilex+1)<<5, tiley<<5, (tiley+1)<<5 };4.26 + if( !clip_tile_bounds(tile_bounds, pvr2_scene.bounds) ) {4.27 + continue; // fully clipped, skip tile4.28 + }4.29 +4.30 + /* Clip to the visible part of the tile */4.31 + glScissor( tile_bounds[0], pvr2_scene.buffer_height-tile_bounds[3],4.32 + tile_bounds[1]-tile_bounds[0], tile_bounds[3] - tile_bounds[2] );4.33 + if( IS_TILE_PTR(segment->opaquemod_ptr) &&4.34 + !IS_EMPTY_TILE_LIST(segment->opaquemod_ptr) ) {4.35 + gl_render_tilelist_depthonly(segment->opaque_ptr);4.36 + gl_render_modifier_tilelist(segment->opaquemod_ptr, tile_bounds);4.37 + }4.38 + } while( !IS_LAST_SEGMENT(segment++) );4.39 + glClear( GL_DEPTH_BUFFER_BIT );4.40 + glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );4.41 + }4.42 +}4.43 +4.44 +4.45 /**4.46 * Render the currently defined scene in pvr2_scene4.47 */4.48 @@ -444,6 +473,12 @@4.49 glEnable( GL_FOG );4.50 glEnable( GL_TEXTURE_2D );4.52 + gl_render_stencil();4.53 +4.54 + glDisable( GL_SCISSOR_TEST );4.55 + untile_list(pvr2_scene.segment_list, 0, 0);4.56 + glEnable( GL_SCISSOR_TEST );4.57 +4.58 /* Process the segment list */4.59 struct tile_segment *segment = pvr2_scene.segment_list;4.60 do {4.61 @@ -458,19 +493,6 @@4.62 /* Clip to the visible part of the tile */4.63 glScissor( tile_bounds[0], pvr2_scene.buffer_height-tile_bounds[3],4.64 tile_bounds[1]-tile_bounds[0], tile_bounds[3] - tile_bounds[2] );4.65 - if( display_driver->capabilities.stencil_bits >= 2 &&4.66 - IS_TILE_PTR(segment->opaquemod_ptr) &&4.67 - !IS_EMPTY_TILE_LIST(segment->opaquemod_ptr) ) {4.68 - /* Don't do this unless there's actually some shadow polygons */4.69 -4.70 - /* Use colormask instead of drawbuffer for simplicity */4.71 - glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE );4.72 - gl_render_tilelist_depthonly(segment->opaque_ptr);4.73 - gl_render_modifier_tilelist(segment->opaquemod_ptr, tile_bounds);4.74 - glClear( GL_DEPTH_BUFFER_BIT );4.75 - glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );4.76 - }4.77 - gl_render_tilelist(segment->opaque_ptr,TRUE);4.78 if( IS_TILE_PTR(segment->punchout_ptr) ) {4.79 glEnable(GL_ALPHA_TEST );4.80 glDepthFunc(GL_GEQUAL);
5.1 --- a/src/pvr2/scene.h Thu Nov 11 17:51:37 2010 +10005.2 +++ b/src/pvr2/scene.h Wed Dec 08 18:33:23 2010 +10005.3 @@ -82,6 +82,7 @@5.4 #define MAX_POLYGONS (87382*2)5.5 #define MAX_POLY_BUFFER_SIZE (MAX_POLYGONS*sizeof(struct polygon_struct))5.6 #define BUF_POLY_MAP_SIZE (4 MB)5.7 +#define POLY_NO(poly) (poly - pvr2_scene.poly_array)5.9 /*************************************************************************/
6.1 --- a/src/pvr2/tileiter.h Thu Nov 11 17:51:37 2010 +10006.2 +++ b/src/pvr2/tileiter.h Wed Dec 08 18:33:23 2010 +10006.3 @@ -84,34 +84,36 @@6.4 for(;;){6.5 uint32_t entry = *it->ptr;6.6 uint32_t tag = entry >> 29;6.7 - if( tag == 0x07 ) {6.8 - if( tag & 0x10000000 ) {6.9 - it->ptr = NULL;6.10 + if( tag < 6 ) {6.11 + if( tag & 0x04 ) {6.12 + int vertex_count = tag-1; /* 4 == tri, 5 == quad */6.13 + int vertex_length = (entry >> 21) & 0x07;6.14 + if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {6.15 + it->poly_size = 5 + (vertex_length<<1) * vertex_count;6.16 + } else {6.17 + it->poly_size = 3 + vertex_length * vertex_count;6.18 + }6.19 + it->strip_count = ((entry >> 25) & 0x0F);6.20 + it->poly_addr = entry & 0x001FFFFF;6.21 return;6.22 } else {6.23 - it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));6.24 - it->poly_addr = -1;6.25 - entry = *it->ptr;6.26 + /* Other polygon */6.27 + it->strip_count = 0;6.28 + it->poly_addr = entry & 0x001FFFFF;6.29 + return;6.30 }6.31 - } else if( tag == 6 ) {6.32 - /* Illegal? Skip */6.33 - it->ptr++;6.34 - } else if( tag & 0x04 ) {6.35 - int vertex_count = tag-1; /* 4 == tri, 5 == quad */6.36 - int vertex_length = (entry >> 21) & 0x07;6.37 - if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {6.38 - it->poly_size = 5 + (vertex_length<<1) * vertex_count;6.39 - } else {6.40 - it->poly_size = 3 + vertex_length * vertex_count;6.41 + } else {6.42 + if( tag == 0x07 ) {6.43 + if( entry & 0x10000000 ) {6.44 + it->ptr = NULL;6.45 + return;6.46 + } else {6.47 + it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));6.48 + }6.49 + } else if( tag == 6 ) {6.50 + /* Illegal? Skip */6.51 + it->ptr++;6.52 }6.53 - it->strip_count = ((entry >> 25) & 0x0F);6.54 - it->poly_addr = entry & 0x001FFFFF;6.55 - return;6.56 - } else {6.57 - /* Other polygon */6.58 - it->strip_count = 0;6.59 - it->poly_addr = entry & 0x001FFFFF;6.60 - return;6.61 }6.62 }6.63 }
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00007.2 +++ b/src/pvr2/untile.c Wed Dec 08 18:33:23 2010 +10007.3 @@ -0,0 +1,143 @@7.4 +/**7.5 + * $Id$7.6 + *7.7 + * Process the tile + polygon data to extract a list of polygons that can7.8 + * be rendered directly without tiling.7.9 + *7.10 + * Copyright (c) 2010 Nathan Keynes.7.11 + *7.12 + * This program is free software; you can redistribute it and/or modify7.13 + * it under the terms of the GNU General Public License as published by7.14 + * the Free Software Foundation; either version 2 of the License, or7.15 + * (at your option) any later version.7.16 + *7.17 + * This program is distributed in the hope that it will be useful,7.18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of7.19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the7.20 + * GNU General Public License for more details.7.21 + */7.22 +7.23 +#include <stdlib.h>7.24 +#include "pvr2/pvr2.h"7.25 +#include "pvr2/scene.h"7.26 +#include "pvr2/tileiter.h"7.27 +7.28 +static int sort_polydata( const void *a, const void *b )7.29 +{7.30 + uint32_t idxa = *(const uint32_t*)a;7.31 + uint32_t idxb = *(const uint32_t*)b;7.32 + return pvr2_scene.poly_array[idxa].context - pvr2_scene.poly_array[idxb].context;7.33 +}7.34 +7.35 +gboolean untile_list( struct tile_segment *segment, int pass, int list )7.36 +{7.37 + int tile_width = pvr2_scene.buffer_width >> 5;7.38 + int tile_height = pvr2_scene.buffer_height >> 5;7.39 + tileiter tile_map[tile_width][tile_height];7.40 +7.41 + memset(tile_map, 0, tile_width*tile_height*sizeof(uint32_t *));7.42 +7.43 + /* 1. Construct the tile map for the last/pass */7.44 + int last_x = -1, last_y = -1, tile_pass;7.45 + do {7.46 + int tile_x = SEGMENT_X(segment->control);7.47 + int tile_y = SEGMENT_Y(segment->control);7.48 + if( last_x == tile_x && last_y == tile_y ) {7.49 + tile_pass++;7.50 + } else {7.51 + tile_pass = 0;7.52 + last_x = tile_x;7.53 + last_y = tile_y;7.54 + }7.55 +7.56 + if( tile_pass == pass ) {7.57 + uint32_t ptr = ((uint32_t *)segment)[list+1];7.58 + if( IS_TILE_PTR(ptr) )7.59 + TILEITER_BEGIN(tile_map[tile_x][tile_y], ptr);7.60 + }7.61 + } while( !IS_LAST_SEGMENT(segment++) );7.62 +7.63 + /* 2. Extract the polygon list, sorted by appearance. We assume the list7.64 + * can be sorted by address, which makes this a lot simpler/faster.7.65 + */7.66 + uint32_t poly_present[pvr2_scene.poly_count];7.67 + memset( poly_present, 0, sizeof(poly_present) );7.68 + unsigned x,y, i, j, poly_count = 0;7.69 + for( x = 0; x < tile_width; x++ ) {7.70 + for( y = 0; y < tile_height; y++ ) {7.71 + tileiter list = tile_map[x][y];7.72 + while( !TILEITER_DONE(list) ) {7.73 + struct polygon_struct *poly = pvr2_scene.buf_to_poly_map[TILEITER_POLYADDR(list)];7.74 + if( poly ) {7.75 + poly_present[POLY_NO(poly)] = 1;7.76 + }7.77 + TILEITER_NEXT(list);7.78 + }7.79 + }7.80 + }7.81 + /* Collapse array into a set of polygon indexes and then sort it */7.82 + for( x=0; x<pvr2_scene.poly_count; x++ ) {7.83 + if( poly_present[x] ) {7.84 + poly_present[poly_count++] = x;7.85 + }7.86 + }7.87 + qsort(poly_present, poly_count, sizeof(uint32_t), sort_polydata);7.88 +7.89 + /* 3. Process each polygon in the list. Extract the bounds, and check7.90 + * each tile in which it should appear - if missing, the poly is clipped7.91 + * (and we need to construct appropriate bounds).7.92 + */7.93 + for( i=0; i<poly_count; i++ ) {7.94 + struct tile_bounds poly_bounds = {tile_width, tile_height, -1, -1};7.95 + struct tile_bounds clip_bounds = {0, 0, tile_width, tile_height};7.96 + struct polygon_struct *poly = &pvr2_scene.poly_array[poly_present[i]];7.97 + uint32_t poly_addr = poly->context - ((uint32_t *)pvr2_main_ram);7.98 + do {7.99 + /* Extract tile bounds for the poly - we assume (since we have the7.100 + * polygon at all) that it appears correctly in at least one tile.7.101 + */7.102 + struct vertex_struct *vert = &pvr2_scene.vertex_array[poly->vertex_index];7.103 + for( j=0; j<poly->vertex_count; j++ ) {7.104 + int tx, ty;7.105 + if( vert[j].x < 0 ) tx = 0;7.106 + else if( vert[j].x >= pvr2_scene.buffer_width ) tx = tile_width-1;7.107 + else tx = ((int)vert[j].x)>>5;7.108 + if( tx < poly_bounds.x1 ) poly_bounds.x1 = tx;7.109 + if( tx > poly_bounds.x2 ) poly_bounds.x2 = tx;7.110 + if( vert[j].y < 0 ) ty = 0;7.111 + else if( vert[j].y >= pvr2_scene.buffer_height ) ty = tile_height-1;7.112 + else ty = ((int)vert[j].y)>>5;7.113 + if( ty < poly_bounds.y1 ) poly_bounds.y1 = ty;7.114 + if( ty > poly_bounds.y2 ) poly_bounds.y2 = ty;7.115 + }7.116 + poly = poly->sub_next;7.117 + } while( poly != NULL );7.118 + if( poly_bounds.x1 == tile_width ) {7.119 + continue; /* Polygon has been culled */7.120 + }7.121 +7.122 + gl_render_poly(&pvr2_scene.poly_array[poly_present[i]], TRUE);7.123 +#if 07.124 + /* Search the tile map for the polygon */7.125 + for( x = poly_bounds.x1; x <= poly_bounds.x2; x++ ) {7.126 + for( y = poly_bounds.y1; y <= poly_bounds.y2; y++ ) {7.127 + tileiter *list = &tile_map[x][y];7.128 +7.129 +7.130 + /* Skip over earlier entries in the list, if any (can happen if7.131 + * we culled something, or had an empty polygon7.132 + */7.133 + while( !TILEITER_DONE(*list) && TILEITER_POLYADDR(*list) < poly_addr )7.134 + TILEITER_NEXT(*list);7.135 + if( TILEITER_POLYADDR(*list) == poly_addr ) {7.136 + /* Match */7.137 + } else {7.138 + /* Clipped */7.139 + }7.140 + }7.141 + }7.142 +#endif7.143 + }7.144 +}7.145 +7.146 +
8.1 --- a/src/tools/genglsl.c Thu Nov 11 17:51:37 2010 +10008.2 +++ b/src/tools/genglsl.c Wed Dec 08 18:33:23 2010 +10008.3 @@ -37,10 +37,16 @@8.4 FRAGMENT_SHADER = 18.5 } shader_type_t;8.7 +typedef struct uniform {8.8 + const char *name;8.9 + const char *var_name;8.10 +} *uniform_t;8.11 +8.12 typedef struct shader {8.13 shader_type_t type;8.14 const char *name;8.15 char *body;8.16 + GList *uniforms;8.17 } *shader_t;8.19 typedef struct program {8.20 @@ -86,6 +92,7 @@8.21 shader->name = strdup(g_strstrip(buf+8));8.22 shader->body = malloc(DEF_ALLOC_SIZE);8.23 shader->body[0] = '\0';8.24 + shader->uniforms = 0;8.25 current_size = DEF_ALLOC_SIZE;8.26 current_posn = 0;8.27 result->shaders = g_list_append(result->shaders, shader);8.28 @@ -96,12 +103,14 @@8.29 shader->name = strdup(g_strstrip(buf+10));8.30 shader->body = malloc(DEF_ALLOC_SIZE);8.31 shader->body[0] = '\0';8.32 + shader->uniforms = 0;8.33 current_size = DEF_ALLOC_SIZE;8.34 current_posn = 0;8.35 result->shaders = g_list_append(result->shaders, shader);8.36 } else if( strncmp( buf, "#program ", 9 ) == 0 ) {8.37 shader = NULL;8.38 program_t program = malloc(sizeof(struct program));8.39 + assert( program != NULL );8.40 char *rest = buf+9;8.41 char *equals = strchr(rest, '=');8.42 if( equals == NULL ) {8.43 @@ -115,6 +124,23 @@8.44 for(i=0;program->shader_names[i] != NULL; i++ );8.45 if( i > result->max_shaders )8.46 result->max_shaders = i;8.47 + } else if( strncmp( buf, "#uniform ", 9 ) == 0 ) {8.48 + uniform_t uniform = malloc(sizeof(struct uniform));8.49 + assert( uniform != NULL );8.50 + if( shader == NULL ) {8.51 + fprintf( stderr, "Error: #uniform specified outside of shader: %s\n", buf );8.52 + exit(2);8.53 + }8.54 + char *rest = buf+9;8.55 + char *equals = strchr(rest, '=');8.56 + if( equals == NULL ) {8.57 + fprintf( stderr, "Error: invalid program line %s\n", buf );8.58 + exit(2);8.59 + }8.60 + *equals = '\0';8.61 + uniform->name = g_strdup(g_strstrip(rest));8.62 + uniform->var_name = g_strdup(g_strstrip(equals+1));8.63 + shader->uniforms = g_list_append(shader->uniforms, uniform);8.64 } else if( shader != NULL ) {8.65 size_t len = strlen(buf);8.66 if( current_posn + len > current_size ) {8.67 @@ -149,6 +175,17 @@8.68 }8.69 }8.71 +static uniform_t find_uniform_name( GList *list, const char *name )8.72 +{8.73 + GList *ptr;8.74 + for( ptr = list; ptr != NULL; ptr = ptr->next ) {8.75 + uniform_t data = (uniform_t)list->data;8.76 + if( strcmp( data->name, name ) == 0 )8.77 + return data;8.78 + }8.79 + return NULL;8.80 +}8.81 +8.82 static void writeHeader( FILE *out, glsldata_t data )8.83 {8.84 fprintf( out, "/*\n * This file automatically generated by genglsl from %s\n */\n", data->filename );8.85 @@ -168,12 +205,22 @@8.86 fprintf( f, "typedef enum {\n" );8.87 const char *last_name = NULL;8.88 int count = 0;8.89 + GList *unique_uniforms;8.90 + int uniform_count = 0;8.91 GList *shader_ptr;8.92 for( shader_ptr = data->shaders; shader_ptr != NULL; shader_ptr = shader_ptr->next ) {8.93 count++;8.94 shader_t shader = (shader_t)shader_ptr->data;8.95 fprintf( f, " %s,\n", shader->name );8.96 last_name = shader->name;8.97 + GList *uniform_ptr;8.98 + for( uniform_ptr = shader->uniforms; uniform_ptr != NULL; uniform_ptr = uniform_ptr->next ) {8.99 + uniform_t uniform = (uniform_t)uniform_ptr->data;8.100 + if( find_uniform_name(unique_uniforms, uniform->name) == NULL ) {8.101 + unique_uniforms = g_list_append( unique_uniforms, uniform );8.102 + uniform_count++;8.103 + }8.104 + }8.105 }8.106 fprintf( f, "} shader_id;\n\n" );8.108 @@ -184,6 +231,7 @@8.109 fprintf( f, "#define GLSL_NO_SHADER -1\n\n" );8.110 fprintf( f, "#define GLSL_VERTEX_SHADER 1\n" );8.111 fprintf( f, "#define GLSL_FRAGMENT_SHADER 2\n" );8.112 + fprintf( f, "#define GLSL_NUM_UNIFORMS %d\n", uniform_count );8.114 fprintf( f, "typedef enum {\n" );8.115 last_name = NULL;
9.1 --- a/test/pvr.c Thu Nov 11 17:51:37 2010 +10009.2 +++ b/test/pvr.c Wed Dec 08 18:33:23 2010 +10009.3 @@ -42,6 +42,7 @@9.4 #define RENDER_ADDR2 (PVR_BASE+0x064)9.5 #define RENDER_HCLIP (PVR_BASE+0x068)9.6 #define RENDER_VCLIP (PVR_BASE+0x06C)9.7 +#define RENDER_SHADOW (PVR_BASE+0x074)9.8 #define RENDER_NEARCLIP (PVR_BASE+0x078)9.9 #define RENDER_FARCLIP (PVR_BASE+0x088)9.10 #define RENDER_BGPLANE (PVR_BASE+0x08C)9.11 @@ -252,6 +253,7 @@9.12 long_write( RENDER_POLYBASE, config->polybuf );9.13 long_write( RENDER_TILEBASE, config->tilemap );9.14 long_write( RENDER_ADDR1, config->render_addr );9.15 + long_write( RENDER_SHADOW, 0x140 );9.16 long_write( RENDER_SIZE, modulo >> 3 );9.17 long_write( RENDER_ADDR2, config->render_addr + modulo ); /* Not used? */9.18 long_write( RENDER_HCLIP, (config->width - 1) << 16 );
.