› Foros › Retro y descatalogado › Consolas clásicas
Sogun escribió:Ya te comenté que las colisiones no están hechas y que aproveché lo que pude de los triángulos del escenario para salir del paso, por lo que hay muchos sitios por los que no se puede pasar .
Sogun escribió:En el tercer vídeo se puede ver una cosa curiosa con la textura del suelo empedrado y es que hace una especie de mipmapping cuando por el tamaño de la textura es imposible.
Sogun escribió:Si creamos nuestros propios niveles de mipmaps a partir de la textura grande el resultado es bastante más nítido.
Sogun escribió:La textura del suelo empedrado en el segundo vídeo y en el tercero es la misma y con los mismos parámetros (lo comprobé varias veces y creo que no se me pasó nada) y en el segundo vídeo se comporta como era de esperar y en el tercero hace esa cosa rara.
Sogun escribió:El Editor sí que tiene soporte nativo para usar nuestros propios mipmaps aunque el proceso es algo oscuro.
radorn escribió:Bueno saberlo. ¿Cuántos niveles de mipmap se pueden hacer?
lo seSogun escribió:Se supone que la textura original es el nivel 0
radorn escribió:En la textura de las ventanas, de cerca, con el mipmap 0, todo bien, pero a medida que iban saliendo los siguientes, cada uno estaba mas corrupto.
en realidad son 8 niveles de mip-map en una textura "mip-map-eada" xD, dado que el nivel 0, la textura a tamaño completo, tambien se cuenta, como en todo sistema de numeración binario.Sogun escribió:El máximo son 7 niveles
radorn escribió:En ese ejemplo de 16x256 que has puesto, me llama mucho la atención que puedas seguir reduciendo la textura una vez una de las dimensiones ya ha tocado fondo, llegando a 1 pixel. ¿Seguro que se puede hacer eso? Porque técnicamente eso supone alterar las proporciones de la textura...
Primero una parte del escenario. Se supone que el juego mantiene cargadas 3 zonas parecidas en todo momento (en la que se encuentra el jugador y las dos adyacentes) y que cuando el jugador se desplaza a la siguiente zona descarga él área más alejada y carga la que sería la próxima. Estas zonas están diseñadas de forma que al jugador no le da tiempo a recorrerlas lo suficientemente rápido como para llegar a la siguiente antes de que cargue. Uno esperaría zonas muy ligeras para que carguen rápido, y sin embargo la zona que he capturado tiene la burrada de 3380 triángulos y 84 texturas de 64x64 a 16 colores.
En realidad las texturas no vienen separadas como en la imagen de arriba (las he separado yo) si no en imágenes de 256x256 con algunos huecos en blanco. Lo que me ha sorprendido es que en una misma de estas imágenes se combinen texturas "verdes" con "marrones", es decir, que parece que cada sector de la textura más grande tiene su propia paleta.
Había separado las texturas creyendo que habría trozos que se repetirían y así podría optimizar la carga de texturas pero no es así. Al menos yo no veo dos texturas iguales. Es una salvajada.
Otra salvajada es la carga poligonal del escenario, perfectamente troceado para utilizar estas texturas. Jet Force Gemini hace algo parecido aunque mucho menos ambicioso y con peor resultado.
1167 triángulos, 59 texturas
2943 triángulos, 58 texturas
Otro detalle a destacar de los escenarios de Soul Reaver es que tienen una versión alternativa que se encuentra en el mismo modelo. Simplemente cambian las coordenadas de algunos vértices y también su coloreado para darle un aspecto bastante diferente.
Por último comentar sobre el modelado del protagonista. Destaca por la cantidad de texturas pero poligonalmente está en la media de Nintendo 64 quedando por debajo de modelados de los juegos punteros con 640 triángulos. Lo más comparable que se me viene a la cabeza serían los enemigos de Perfect Dark.
Conker64 escribió:Sí, textura y paleta se pueden guardar/cargar por separado, dependen del engine o del contenedor de formato que usen para cargarlas.
Para subirlas a TMEM textura y paleta van por separado en 2 comandos distintos, también puedes ir cambiando de textura sin actualizar paleta si viene una ronda donde todas usan la misma, pero eso ya depende de como el motor gestione.
I would like to point out that most TWINE stages have a idiotic number of textures that makes it variably infeasible to impossible to include them in Rare's games. The room limit exceeds PD's engine even, but at least merging rooms (and dropping off useless things) can compensate for that. I might add that palette swapping is used often in TWINE but unsupported in GE/PD, requiring unique images for these. Inline textures can not be used for any telemetry with collisions.
Both games (due to hacking) now have a texture limit of 4094 unique images. Expect any TWINE single-player stage to eat almost half of that, and any MP (besides Labyrinth) to eat 25% - 33%. It seems the more accurate the decompiler gets the worse the texture consumption is. Honestly, the stages really need to be cleaned up too. They didn't tile textures; they drew new quads instead.
TWINE loads data on a per-stage basis, more like the Banjo titles, using direct ROM access. GE and PD use an indexed list of all textures and their features. Changing that would require such a radical alteration to the engines I can't even guess what's involved.
Sogun escribió:En el vídeo mencionan la forma en que se crean y generan los escenarios y la verdad es que me viene muy bien este ejemplo ahora que estoy experimentando con los mapas del Soul Reaver que mencioné un poco más atrás. Ambos juegos utilizan un sistema de streaming que va cargando y descargando zonas del mapa según el jugador se acerca a ellas y se puede recorrer todo el escenario, que es gigantesco, sin cargas ni transiciones.
Sogun escribió:Siempre creí que el Turok tenía el desarrollo típico de fases como por ejemplo Doom, pero parece que está diseñado más como Metroid Prime y el juego se divide en sectores a los que se puede volver en cualquier momento e incluso es necesario hacerlo para avanzar en el juego. ¿Alguien que lo haya jugado me lo podría confirmar? ¿Se puede viajar a pie de un sector a otro o es necesario el uso de portales?
De todos los niveles se puede regresar al hub, excepto del ultimo, al que entras saltando en una especie de pozo y ya no hay vuelta atrás.
cegador escribió:¿igual es simplemente que la animación de muerte variaba dependiendo de dónde le habías dado?
void func_8027A7C4(void)
{
s32 i;
if (gCurrentArea != NULL)
{
func_8037C360(gCurrentArea->unk04, 2);
gCurrentArea = NULL;
gWarpTransition.isActive = 0;
}
for (i = 0; i < 8; i++)
{
if (gAreaData[i].unk04 != NULL)
{
func_8037C360(gAreaData[i].unk04, 4);
gAreaData[i].unk04 = NULL;
}
}
}
Sogun escribió:A ver si esta noche publico un nuevo mensaje o edito este con algunas imágenes de algunos mapas del Soul Reaver portados a GoldenEye.
Ésta es la zona inicial del juego. Son 2925 polígonos y 103 texturas.
Aquí una zona de cañones que ya mostré anteriormente.
Este trozo inicial tiene 1305 polígonos y 30 texturas.
Después el cañón se abre y se ve la entrada de un templo. Ese trozo son 3372 polígonos y 83 texturas. En la imagen se puede apreciar la mezcla de las paletas de colores porque en el primer trozo sólo hay tonos marrones y en el segundo hay tonos marrones y verdes y por eso el suelo se ve diferente aunque en realidad es la misma textura con la misma paleta (lo mismo con las paredes de las montañas)
Una imagen más cercana del templo. Hay que tener en cuenta que mientras el personaje se encuentra en esta zona también están cargadas en memoria las adyacentes. Desde este exterior del templo hay otras 3 salidas además del cañón que hemos dejado atrás (aunque desde luego no tan complejas ni poligonalmente ni a nivel de texturas). Contando que las texturas del trozo del cañón se repiten en el templo en este momento perfectamente hay +100 texturas cargadas en memoria y posiblemente más de 5000 polígonos.
Pero la zona más bestia que he encontrado (me falta mucho por mirar aún) es la zona de las cascadas que se ve en la intro del juego. 7444 polígonos y 65 texturas, muchas de ellas con scroll.
Por algún motivo no he sido capaz de cargarla entera en el engine del GoldenEye. En el pasado probé a mostrar 10000 polígonos en pantalla con una misma textura y lo conseguí. He tenido que partir el escenario en dos trozos y jugar con la distancia de dibujo para cargar primero un trozo y después cargar el segundo y tenerlos cargados los dos a la vez. Igual es algo que ocurre en la versión más nueva del Editor que es la que estoy usando ahora y en las anteriores sí que podría hacerlo funcionar.
Conker64 escribió:...
Flash-Original escribió:@rigoyagami https://vandal.elespanol.com/foro/mensa ... n64/48#711 es tambien suyo por si preguntas
Luego tienes que actualizarlo llendo hacia el github de conker
Flash-Original escribió:@rigoyagami A las malas te paso mi cigwin
In file included from ./tm.h:38:0,
from ../../gcc-5.1.0/gcc/cp/except.c:27:
../../gcc-5.1.0/gcc/defaults.h:126:24: aviso: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", \
^
In file included from ../../gcc-5.1.0/gcc/cp/except.c:1023:0:
cfns.gperf: En la función ‘const char* libc_name_p(const char*, unsigned int)’:
cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned int)’ se redeclaró incluida en línea con el atributo ‘gnu_inline’
cfns.gperf:26:14: nota: ‘const char* libc_name_p(const char*, unsigned int)’ previously declared here
cfns.gperf: En el ámbito global:
cfns.gperf:26:14: aviso: inline function ‘const char* libc_name_p(const char*, unsigned int)’ used but never defined
make[2]: *** [Makefile:1058: cp/except.o] Error 1
make[2]: se sale del directorio '/usr/local/libdragon/temp/gcc_compile/gcc'
make[1]: *** [Makefile:4116: all-gcc] Error 2
make[1]: se sale del directorio '/usr/local/libdragon/temp/gcc_compile'
make: *** [Makefile:872: all] Error 2
cd . && /bin/sh /usr/local/libdragon/temp/libmad-n64/missing --run aclocal-1.8
aclocal: macro `_LT_COMPILER_PIC' required but not defined
aclocal: macro `_LT_DECL_SED' required but not defined
aclocal: macro `_LT_DECL_SED' required but not defined
aclocal: macro `_LT_FUNC_STRIPNAME_CNF' required but not defined
make: *** [Makefile:285: aclocal.m4] Error 1
Conker64 escribió:@rigoyagami
Hola , qué errores te arroja el entorno?
La verdad es que no he probado a compilar todo de nuevo en los últimos GCC ni tampoco en Win 10, luego no se si bajaste los archivos por tu cuenta o solo los del tutorial que hice, siguiendo todos los pasos.
Si te falla en la compilación larga de varias horas imagino que lo que falla es la compilación de mips64-elf o similar y no la de libdragon que son varios segundos.
Como comenta Flash se puede pasar el entorno ya compilado de cygwin con libdragon, de hecho otras librerías como la libn64 se distribuyen solo así, con los binarios del entorno, pero en su estado actual es solo para expertos.
@jordigahan
Ah ok, el Evangelion 64 no sé si podría jugarlo para hacerle un análisis completo, pero igual se podría sacar algo.
El dinosaurio a ver si un día me entretengo y saco almenos el de N64, el T-Rex del Tomb Raider igual sería más fácil sacarlo de PSX.
Flash-Original escribió:@rigoyagami Pues te voy a desilusionar pero parece que se casco xD...
autoconf
automake
mercurial
gcc-core
gcc-g++
texinfo
wget
git
libtool
binutils
libmad-devel
libpng
texinfo
tar
zlib-devel
$ make
/usr/local/bin/mips64-elf-ld -o menu.elf menu.o everdrive.o fat.o disk.o mem.o sys.o ini.o strlib.o utils.o sram.o stb_image.o chksum64.o mp3.o -O1 -L/usr/local/lib -L/usr/local/mips64-elf/lib -ldragon -lmikmod -lmad -lyaml -lc -lm -ldragonsys -lnosys -Tn64ld.x
/usr/local/bin/mkdfs test.dfs ./filesystem/
Adding './filesystem/bamboo.wav' to filesystem image.
Adding './filesystem/done.wav' to filesystem image.
Adding './filesystem/ed64_mono.wav' to filesystem image.
Adding './filesystem/n64controller.sprite' to filesystem image.
Adding './filesystem/sprites/background.sprite' to filesystem image.
Adding './filesystem/sprites/splash.sprite' to filesystem image.
Adding './filesystem/warning.wav' to filesystem image.
/usr/local/bin/mips64-elf-objcopy menu.elf menu.bin -O binary
rm -f OS64.v64
/usr/local/bin/n64tool -l 4M -t "EverDrive OS" -h ./header.ed64 -o OS64.v64 menu.bin -s 1M test.dfs
/usr/local/bin/chksum64 OS64.v64
CHKSUM64 V1.2 Copyright (C) 1997 Andreas Sterbenz (stan@sbox.tu-graz.ac.at)
This program is released under the terms of the GNU public license. NO WARRANTY
The image 'OS64.v64' is in original (not swapped) format.
Old Checksum: F4 07 6E 75 4C DA D3 A6
Calculated Checksum: 8A 6C 68 DA 8C 04 F4 38
New checksum successfully written.
CFLAGS="-march=vr4300 -mtune=vr4300 -mno-extern-sdata" \
LDFLAGS="-L$(N64_INST)/lib" LIBS="-lc -lnosys" \
./configure --host=mips64-elf --disable-shared \
--prefix=$(N64_INST) --enable-speed --enable-fpm=mips
CFLAGS="-march=vr4300 -mtune=vr4300 -mno-extern-sdata" \
LDFLAGS="-L$(N64_INST)/lib" LIBS="-lc -lnosys" \
./configure --host=mips64-elf --build=i686-pc-cygwin \
--prefix=$(N64_INST) --enable-speed --enable-fpm=mips
Conker64 escribió: @rigoyagami
Genial veo que ya te vas apañando con las librerías
La alt64 no he intentado compilarla aún, estuve pensando en hacer un menú con caratulas para reemplazar el del Everdrive, eso sí.