› Foros › Retro y descatalogado › Consolas clásicas
radorn escribió:@dirtymagic @Sexy MotherFucker
Como vuela esta conversacion de repente xD.
El Mario 64 en general no parece que use TLMMI, pero si que lo aplica en algunas partes. Por ejemplo, en el pasillo del primer nivel de Bowser, el cuadro de la princesa que se vuelve en Bowser a medida que te acercas es un efecto logrado mediante la aplicacion de TLMMI. Generan un set de mipmaps especial a partir de 2 texturas diferentes, en vez de derivar todos los mipmaps del set a partir de una unica textura, que es lo habitual.
Lo de usar 2 texturas no es como funciona el TLMMI en N64 habitualmente. El caso del cuadro de mario64 es un caso especial, e, incluso ahí, una vez generado el set, el rendimiento es el mismo, porque el modo en el funciona la tecnica es que la primera vez que se carga la textura, se generan ya todos los mipmaps y se cargan en la TMEM, y ya el RDP lo usa desde ahi. Lo de 2-cycle, hasta hoy no sabian muy bien que era, pero tiene sentido que algo llamado asi haga falta para hacer TLMMI, dado que la idea basica es interpolar entre 2 mipmaps de una textura, lo cual necesariamente ha de tomar al menos 2 pasos o ciclos. Lo que si que te confirmo es que no se usan "2 texturas" durante el renderizado para hacer TLMMI
Y si, totalmente de acuerdo. Generalmente el mipmapping de N64 se aplica con demasiada generosidad y sería preferible tener los pixeles a pelo, y, por lo que he visto, el de DC puede ser incluso peor, con una transicion muy brusca entre mipmaps, aparte de la borrosidad propia de la tecnica mal aplicada.Sexy MotherFucker escribió:Esto a mí también me ocurría mucho, y con los años releyendo todos esos números me he dado cuenta de que era porque en muchos casos mostraban imágenes en altísima resolución de los juegos en estaciones de trabajo moviéndose en realidad 1 fps a cambio de ese lustre, con calidad RGBHV, o directamente pantallazos que no representaban a una Nintendo 64.
Por ejemplo del The Flying Dragon recuerdo que te colgaban imágenes así:
Había mucho prerender hecho en estacion grafica, pero con los años me di cuenta de ese truco rastrero, y no es que hoy en dia no hagan lo mismo xD. Recuerdo especialmente un juego de Rally, el Top Gear, creo, con unas imagenes brutales super "realistas" (o sea, muy detalladas) y me subia todo el hype a la punta del nabo, y luego nunca salia nada con ese aspecto.
Pero yo me refiero mas bien a cosas tipo los screenshots de Rare, que ahí si que sucedia lo que yo te digo. Era el juego, era la consola, pero sin la vaselina en el objetivo. Alguna vez tuvieron la audacia de renderizar a super resoluciones, pero habitualmente solo era una cuestion de diferencia de efectos.
dirtymagic escribió:Con lo de 2 texturas me refiero al efecto por ejemplo del suelo de la campiña de los Zelda,o los reflejos lumínicos en las paredes del templo del agua del Zelda 64.
Sogun escribió:Añadiendo a lo que acertadamente habéis comentado del TLMMI y su uso en algunos juegos, es posible emplear mipmaps sin el filtrado trilinear y por eso se crean esas transiciones tan burras que se ven en algunos juegos ajenos a Nintendo 64 (vamos, yo no me sé ningún ejemplo).
Sogun escribió:@radorn
Me refería a que no recuerdo ejemplos de banding en Nintendo 64. Sé que en otras plataformas hay bastantes casos.
Otra cosa sobre el TLMMI es que no se puede aplicar si la textura supera cierto tamaño, ya que los mipmaps ocupan espacio en la caché.
radorn escribió:He grabado el video del que hablaba en mi ultimo mensaje.
https://www.youtube.com/watch?v=H56vD13ynto
radorn escribió:Los ciclos que se mencionan ahi parecen ser los de la cpu, que a una velocidad nominal de 93.75MHz, esos 3.7bytes por ciclo se convierten en 330.8 Megabytes por segundo. Pero tambien dice algo que no me queda claro sobre "la mitad" y/o "el doble" con respecto a los ciclos, asi que multiplica o divide eso por 2 y una de las 3 cifras es la correcta xDDDD O sea 165.4 - 330.8 - 661.6
To implement tri-linear MIP mapping, the RDP must be in two-cycle mode.
EMaDeLoC escribió:La única revista que seguía por entonces era la Nintendo Acción y he desempolvado un número, el de marzo del 99 creo, por curiosidad para ver qué material usaban y son todo capturas cutres por video compuesto que dan dolor de cabeza.
EMaDeLoC escribió:No sé si así el cálculo es correcto, la verdad, porque ver fracciones de byte por ciclo me chirría con mis conocimientos de informática. Además el RCP va a 2/3 de la velocidad del reloj y es con esa frecuencia con la que debería medirse la transferencia de datos.
EMaDeLoC escribió:Mi opinión es que los errores de sonido no son producidos por no poder cargar los samples del cartucho. Creo seguir oyendo los samples de fondo entre el ruido. Me parece que el problema es que al no recibir el RCP respuesta del cartucho se generan microparones en el procesado del RCP y al estar todos sus elementos conectados internamente por el mismo bus, todos lo sufren, pero como el sonido por su frecuencia (44khz) es el más sensible a estos microparones es donde se produce la distorsión más evidente. La imagen no se ve afectada porque al ser 30Hz como mucho, los microparones no se perciben entre frame y frame. Dicho de otro modo, si los microparones son de 1 milisegundo, no lo notaras en la imagen porque es tan solo 0'03fps, mientras que en el sonido te has comido 44 muestras de sonido.
BMBx64 escribió:El audio lo gestionan los juegos como puede ser con un hilo independiente que sigue leyendo de la fuente (aún cuando el programa principal ha recibido una excepción), si falla la fuente y no se comprueba el buffer al final debe llenarse de basura, si el tracker sigue activo es probable que las notas de la canción sigan funcionando y aplicándose sobre esa información.
Flash-Original escribió:Lo del mipmapping (si no lo he mal leido) hace una superposicion de una textura encima de otra
Sample rates of USF sets
19001 Namco Museum 64
19196 Lode Runner 3D
21617 Mace: The Dark Age; Nintama Rantarou 64 Game Gallery
21998 Banjo-Kazooie
22018 Conker's Bad Fur Day; Jet Force Gemini; Mickey's Speedway USA; Perfect Dark
22047 ***MANY***
22049 Donkey Kong 64; Mortal Kombat 4
22077 Zool - Mahou Tsukai Densetsu
22496 Rocket: Robot on Wheels
26807 Mario Kart 64
28805 WCW vs. nWo Revenge
31367 Body Harvest
31995 Centre Court Tennis
32006 ***MANY***
36007 The New Tetris
40001 Tetrisphere
42703 International Superstar Soccer 64
44016 Buck Bumble
44095 KONAMI: Castlevania 1-2; Goemon 1-2-3; Hybrid Heaven.
ALSO: Aidyn Chronicles; Chopper Attack; Eikou no St. Andrews; Magical Tetris Challenge; Sim City 2000; Super Robot Taisen 64.
44099 Earthworm Jim 3D
dirtymagic escribió:Con lo de 2 texturas me refiero al efecto por ejemplo del suelo de la campiña de los Zelda,o los reflejos lumínicos en las paredes del templo del agua del Zelda 64.
radorn escribió:Ah, pero eso me parece que no es un renderizado de dos texturas en un mismo poligono, si no que lo hacen superponiendo 2 poligonos, cada uno con su textura, con algun tipo de Z-bias para evitar el Z-fighting.
Quizá algun juego use alguna otra tecnica, pero lo habitual para usar dos texturas es usar dos poligonos.
dirtymagic escribió:No,usa multitextura.
Murdick escribió:Hay alguna cosa mas que diferencie las primeras versiones a las demas?
radorn escribió:Os puedo decir con confianza que la mayoria de juegos comerciales usan soundbanks (la terminologia oficial del SDK, funcionalmente equivalente a los SoundFonts habituales en PC) y estos son leidos por el RCP directamente desde la ROM, sin cargarlos en RAM. La rutina de reproduccion MIDI se carga en RAM, obviamente, y por lo que se ve, tambien las secuencias/partituras, pero el soundbank con los samples, normalmente codificados en vADPCM, se leen directamente desde el cartucho a medida que se reproduce la musica.
radorn escribió: En pruebas que hice fuera del video, por ejemplo una del Zelda OoT en la casa de link, despues de volver a meter el cartucho, algunos samples tardaron en volver a la normalidad. En el momento que introduje el cartucho, habia notas que estaban aun sonando dese antes de meterlo, y esas notas siguieron sonando corruptas hasta que se volvio a cargar el mismo sample para volverlo a tocar. Otros juegos, sin embargo, como el pilotwings, el sonido se arreglaba instantaneamente en el momento de meter el cartucho de nuevo, aunque estuviese esa nota a la mitad de su duracion.
radorn escribió:Respecto a tu teoria de los micro-parones, creo que estas totalmente desencaminado:
Lo que dices que te parecen los samples "entre el ruido" es simplemente ruido "tocado" al son de la partitura.
Aqui meto otra micro-especulacion <<< Si bien antes he dicho que el soundbank se queda en la ROM, esto es verdad a medias. El soundbank tiene a groso modo dos partes: Un "indice" donde estan las definiciones de los instrumentos, con su ADSR y los indices de donde están los samples, y despues el bloque de samples. La tabla/indice probablemente se cargue en RAM, pero los samples definitivamente se quean en la ROM y se leen desde ahi, con o sin el cacheado que mencioné antes. >>>
Te puedo asegurar que si escuchases el sonido en vivo no tendrías dudas de que no hay nada del sample original ahi. De hecho, incluso sin mi conector en T, puedes hacer algo similar con el truco de inclinar el cartucho, que basicamente consigue lo mismo, mantener las patillas del CIC conectadas pero cortar, al menos, buena parte de las pistas de datos, impidiendo, al menos en parte, la lectura de la ROM.
radorn escribió:La N64 no tiene un sample rate fijo. De hecho, solo algunos juegos de Konami usan un samplerate de 44.1Khz, e incluso este ni siquiera es exacto, si no que, en NTSC al menos, son 44095Hz.
•AI - variable, 3000-368000hz on NTSC, 3050-376000 on PAL
radorn escribió:Otra cosa que me chirria con tu teoria de los microparones es que, si realmente sucediese eso, si afectaria a la imagen aunque el microparon sea inferior a un refresco de pantalla. Como minimo tendría que verse basura a mitad de la pantalla, pero yo diría que hasta se perdería la sincronizacion de la imagen, dado que es el RCP el que le señaliza en tiempo real al al DAC donde meter los pulsos de sincronizacion. Esto lo puedes ver en la documentacion del mod RGB analogico de Tim Worthington.
http://etim.net.au/n64rgb/ http://members.optusnet.com.au/eviltim/ ... 64rgb.html
dirtymagic escribió:Hola,mirando esta web Texturas N64,me he encontrado que la textura más grande que cabe en la cache es 90px*90px*4bits pero me parece un numero rarisimo,pensaba que las texturas tenían que ser siempre potencia de 8,¿esto es así o se ha colado el tio de esa web?.
Salud.
EMaDeLoC escribió:La verdad que eso de cargar samples desde el ROM suena raro al principio, pero viendo los límites de velocidad de la RAM, la prioridad en alimentar de datos el RSP y el RDP y que por DMA puede ir del cartucho al AI de forma directa, es una forma de optimizar el uso y acceso de la RAM.
EMaDeLoC escribió:Pues habría sido muy interesante tenerlas en video, pero no hace falta que maltrates otra vez la consola, me da un poco de yuyu.
EMaDeLoC escribió:Hace nada lo he visto en el manual, la gama de frecuencias a las que puede funcionar son estas:
SeleccionarCopiar
•AI - variable, 3000-368000hz on NTSC, 3050-376000 on PAL
EMaDeLoC escribió:"Pero EMaDeLoC, BMBx64 puso un gif con tearing".
Si, pero eso era un juego NTSC en consola PAL. Eso puede pasar si el juego fuerza a refrescar el framebuffer mientras se esta volcando al buffer de video. También si el juego esta sincronizando por un reloj distinto al que usa el VI para la señal de video.
Sogun escribió:@radorn
Sí que se pueden hacer efectos de doble textura en un mismo polígono (...)
0x0500 0000 to 0x05FF FFFF Cartridge Domain 2 Address 1
0x0600 0000 to 0x07FF FFFF Cartridge Domain 1 Address 1
0x0800 0000 to 0x0FFF FFFF Cartridge Domain 2 Address 2
0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
...
0x1FD0 0000 to 0x7FFF FFFF Cartridge Domain 1 Address 3
0x0000 0000 to 0x03EF FFFF RDRAM memory:
-----------------------------------------
0x0000 0000 to 0x001F FFFF RDRAM range 0
0x0020 0000 to 0x003F FFFF RDRAM range 1
0x0040 0000 to 0x03EF FFFF Unused
radorn escribió:Puedes hacer lo mismo inclinando el cartucho, y no te de tanta aprehension, que llevan haciendolo desde hace decadas ya.
radorn escribió:EMaDeLoC escribió:Hace nada lo he visto en el manual, la gama de frecuencias a las que puede funcionar son estas:
SeleccionarCopiar
•AI - variable, 3000-368000hz on NTSC, 3050-376000 on PAL
JUASSSS para que luego digan esos audiofilos chalaos que la PS1 modelo SCPH-100x es lo mejor que hay.
NINTENDO 64, el nuevo reproductor de audio de super alta frecuencia para audiophools. Puede hacer los 96KHz 192KHz y casi casi toca los 384kHz !!!!!!!!!!!!!!
...
Claro que eso es lo que puede escupir el AI. El pobrecito DAC de audio no creo que de para tanto xD
radorn escribió:EMaDeLoC escribió:"Pero EMaDeLoC, BMBx64 puso un gif con tearing".
Si, pero eso era un juego NTSC en consola PAL. Eso puede pasar si el juego fuerza a refrescar el framebuffer mientras se esta volcando al buffer de video. También si el juego esta sincronizando por un reloj distinto al que usa el VI para la señal de video.
Donde esta eso? Cuando empecé a usar flashcarts usaba la N64 PAL con ROMs NTSC, y no recuerdo haber visto tearing nunca, y eso que siempre estoy con este tipo de cosas en la cabeza, e incluso durante una partida normal suelo avistar extrañezas de estas.
radorn escribió:De todas formas, hacer multitextura ayuda al rendimiento o lo empeora?Lo digo porque, con multiples poligonos superpuestos, el juego puede optimizar el dibujado para cargar, idealmente, cada textura una sola vez, aplicarla en todas las partes de la pantalla que corresponda, y luego cargar las que tengan alpha y hacer lo mismo, contando con el blending para lograr el fundido. Pero, con multitextura, e igual me equivoco, el dibujado en dos ciclos parace indicar que hay que cargar en la TMEM la textura 1 y la textura 2 en pasos distintos PARA CADA TRIANGULO, y eso no parece muy saludable para el rendimiento. ¿no?
radorn escribió:Tambien me he encontrado esto que arroja algo mas de luz (o confusion) sobre el tema de la capacidad maxima de los cartuchos.
https://ultra64.ca/files/tools/DETAILED ... RY_MAP.txt0x0500 0000 to 0x05FF FFFF Cartridge Domain 2 Address 1
0x0600 0000 to 0x07FF FFFF Cartridge Domain 1 Address 1
0x0800 0000 to 0x0FFF FFFF Cartridge Domain 2 Address 2
0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
...
0x1FD0 0000 to 0x7FFF FFFF Cartridge Domain 1 Address 3
d2a1 = 1000000 = 16MB
d1a1 = 2000000 = 32MB
d2a2 = 8000000 = 128MB
d1a2 = FC00000 = 252MB
...
d1a3 = 60300000 = 1539MB ???
JUAS... chupate esa, CD de PS1!!!!!!
radorn escribió:Por cierto que hay gente por ahi que, usando una N64 de los primeros modelos, que llevaban 2 chips RDRAM de 2MB, los ha reemplazado por 2 chips de 4MB sacados de expansion paks, y, sumado a el tercer chip en un expansion pak insertado en la ranura, tienen una N64 con 12MB de RAM. No se hasta donde puede llegar la cosa, pero parece que incluso se pueden poner 16MB, claro que ahi ya hay que hacer mucha soldadura y saber terminar el circuito RDRAM.
radorn escribió:El range0 es el limite imaginario de la RAM interna, el range1 es el EP, y lo demas, pues, hasta donde aguante la consola que le encadenes chips de RDRAM, me imagino xD
En total, el rango logico da para 63MB. No son 64 porque en el ultimo mega están los registros de la RDRAM
Publicidad engañosa? Deberian haberla llamado Nintendo 63? hmmm
EMaDeLoC escribió:Igual la idea era sacar audio de 4 canales por sampleo interpolado con un DAC de los buenos, pero luego como que no...
EMaDeLoC escribió:Esta en este post.
BMBx64 escribió:Pero sí, la consola PAL (o mi modelo concreto, que es de los primeros franceses) tiene un problema cuando ejecuta en NTSC, en mis tests que grabo directamente el contador de fps marca 61 fps y no es un fallo de precisión, tengo un molesto tearing en pantalla.
Recuerdo que en una tele distinta no tenía tearing con NTSC, pero tampoco analice otros datos como los fps en su momento.
EMaDeLoC escribió:Siento quitarte la ilusión, pero cada dominio de direcciones viene detallado:
EMaDeLoC escribió:Cartridge Domain 2 Address 1: 16MB, seguramente para los primeros cartuchos.
Cartridge Domain 1 Address 1: 32MB, "seems to be where the n64ddrive would be addressed", es decir, las direcciones para el 64DD y que no se confundan con las direcciones de los cartuchos.
Cartridge Domain 2 Address 2: 127MB, este no se especifica, pero podría tratarse del dominio para los cartuchos de más de 16MB. Ese podría ser el tamaño máximo real de un cartucho.
Cartridge Domain 1 Address 2: aquí no hay capacidad porque corresponde a la cabecera del ROM, registros, etc, aunque si es verdad que hay direcciones sin usar en la que quizá, solo quizá, se puedan almacenar datos.
Cartridge Domain 1 Address 3: 1.538MB, son direcciones tan distintas de las otras que posiblemente estén reservadas para otro periférico.
-ENABLE EXTERNDED ADDRESS MODE
Sets cartridge ROM emulation range
(0x1000 0000 - 0x1F7F FFFF) are mapped to SDRAM for a total of 240Mbyte SDRAM exposed to the N64
Sets CI BASE address to 0x1F80 0000
The default is DISABLED.
-DISABLE EXTENDED ADDRESS MODE
Resets cartridge ROM emulation range
(0x1000 0000 - 0x13FF FFFF) are mapped to SDRAM for a total of 64Mbyte SDRAM exposed to the N64
Resets CI BASE address to 0x1800 0000
As default, this mode is functionally identical on HW1 and HW2 units and is for backwards compatibility
with both earlier homebrew and some commercial games that expect to see unmapped space up high.
------------------------------------------------------------------
CI (CARTRIDGE INTERFACE)
The "CI" interface is a small range of memory in the upper area of the PI address space that contains
registers and some block memory associated with the 64drive hardware
EMaDeLoC escribió:Meter 12MB es interesante, pero totalmente inútil puesto que ningún juego esta preparado para ello y solo te servirá para fardar ante tus colegas modders de gastarte el dinero en cargarte un Expansion pak sin ningún sentido.
ziu escribió:Tengo entendido que el gran fallo de la N64 fue poner la misma memoria compartida para video, cpu y audio,
Y se aprovecho de esta forma muy poco los 100 mhz ya que habia mucho lag y atasco con el bus de datos,
¿no creéis que si hubiera tenido memoria independiente en Audio/video/CPU los juegos hubieran sido triplemente mejores en velocidad y calidad de graficos?
Saludos!!
radorn escribió:-ENABLE EXTERNDED ADDRESS MODE
Sets cartridge ROM emulation range
(0x1000 0000 - 0x1F7F FFFF) are mapped to SDRAM for a total of 240Mbyte SDRAM exposed to the N64
Sets CI BASE address to 0x1F80 0000
The default is DISABLED.
-DISABLE EXTENDED ADDRESS MODE
Resets cartridge ROM emulation range
(0x1000 0000 - 0x13FF FFFF) are mapped to SDRAM for a total of 64Mbyte SDRAM exposed to the N64
Resets CI BASE address to 0x1800 0000
As default, this mode is functionally identical on HW1 and HW2 units and is for backwards compatibility
with both earlier homebrew and some commercial games that expect to see unmapped space up high.
------------------------------------------------------------------
CI (CARTRIDGE INTERFACE)
The "CI" interface is a small range of memory in the upper area of the PI address space that contains
registers and some block memory associated with the 64drive hardware
Fijate donde empiezan esos rangos de direcciones. Eso es el Cartridge Domain 1 Address 2... El que tu dices que solo es para la cabecera de la rom y unos registros. La cabecera de la ROM está ahi porque tambien lo está el resto de la ROM! Ahi es donde lee la ROM del cartucho la N64, y donde los juegos esperan encontrar los datos.
El rango de los 16 MB no se para que estará pensado, pero los cartuchos normales no responden a nada ahi, si no en el D1A2.
radorn escribió:El de la pagina esta dice que el de 32 podría ser para el 64DD. Eso cubre la boot ROM que tiene y todos los registros y buffers que necesite implementar. De ser así tambien confirmaría la conversacion anterior de que no parece probable que los discos se lean mediante direcciones de memoria, dado que no habría espacio suficiente para el disco de casi 64MB.
radorn escribió:No se muy bien que será todo esto de los Domains, pero tanto el cartucho (252) como lo que aqui se identifica como 64DD (32) están en el Domain 1, y eso tiene sentido para mi, puesto que han de poder accederse al mismo tiempo.
radorn escribió:De ser así sospecho que ese rango de 32MB del 64DD tambien aloja los chips de guardado SRAM y FlashRAM de los cartuchos
radorn escribió:La cuestion es que, si uno puede poner la N64 a funcionar en esos "Domains", y el mapa de memoria de la consola escupe por el PI lo que la CPU escriba o lea en esas direcciones, siempre vas a poder construir un dispositivo que se conecte al PI y responda a esas peticiones. Ahora bien, lo mas probable es que las librerias oficiales no permitan nada de eso. Además, quien sabe que como exactamente ha de ser configurado el sistema para acceder a eso.
radorn escribió:Igual el propio CIC da instrucciones al PIF acerca de de donde debe cargar. Esto tendría sentido si consideramos que la ROM del cartucho y el IPL ROM del 64DD no ocupan la misma direccion. "Alguien" tiene que decirle al PIF de donde cargar el primer bloque de datos de la ROM.
bluedark escribió:¿Sacais todas esas conclusiones por algún tipo de manual técnico oficial de Nintendo y porque conoceis/trabajais en la materia? o es puro vicio/ansia de información consolera recopilada por internet?
EMaDeLoC escribió:¿Cómo que no responden? Tienen una parte que podría ser SRAM. D2A1 podría ser la extensión que necesitan los cartuchos de 32MB cuando se quedan cortos con D1A2.
EMaDeLoC escribió:Echandole un ojo al manual de desarrollo del 64DD, menciona que los discos se dividen en cabezales (caras del disco), dentro de ahí en zonas y finalmente en bloques de tamaño variable.
EMaDeLoC escribió:Ojo, el manual especifica que el PI no puede hacer otras operaciones mientras accede al 64DD. Ni cartucho ni SRAM, ni nada parecido.
radorn escribió:EMaDeLoC escribió:¿Cómo que no responden? Tienen una parte que podría ser SRAM. D2A1 podría ser la extensión que necesitan los cartuchos de 32MB cuando se quedan cortos con D1A2.
¿Como se van a "quedar cortos" con los 252MB del D1A2? ahí está la cabecera de la ROM y el resto de la ROM, y es el rango donde sabemos responde el 64drive, que no podría correr ROMs comerciales si no mapease su SDRAM interna al PI en ese rango.
Sin duda los cartuchos originales, y el resto de copiones y flashcarts (CD64, DrV64, Z64, NeoFLASH MYTH 64, EverDrive64 y cualquier otro que pueda haber habido alguna vez) hacen lo mismo, si no unos funcionarían y otros no.
0x1100 0000 to 0x17FF FFFF Unused
0x1800 0804 to 0x1F39 FFFF Unused
0x1000 0000 to 0x1000 003F ROM header:
---------------------------------------
0x1000 0000 initial PI_BSB_DOM1_LAT_REG value
0x1000 0001 initial PI_BSB_DOM1_PGS_REG value
0x1000 0002 initial PI_BSB_DOM1_PWD_REG value
0x1000 0003 initial PI_BSB_DOM1_PGS_REG value
0x1000 0004 to 0x1000 0007 Clock Rate
0x1000 0008 to 0x1000 000B Boot address offset
0x1000 000C to 0x1000 000F Release offset
0x1000 0010 to 0x1000 0013 CRC1
0x1000 0014 to 0x1000 0017 CRC2
0x1000 0018 to 0x1000 001F Unused
0x1000 0020 to 0x1000 0033 Image name
0x1000 0034 to 0x1000 003A Unused
0x1000 003B Manufacturer ID
0x1000 003C to 0x1000 003D Cartridge ID
0x1000 003E Country code
0x1000 003F Unused
0x1000 0040 to 0x1000 0B6F RAMROM_BOOTSTRAP_OFFSET
0x1000 0B70 to 0x1000 0FEF RAMROM_FONTDATA_OFFSET
0x1000 0FF0 to 0x1000 0FFF Unused
0x1000 1000 to 0x10FF 9FFF RAMROM_GAME_OFFSET
0x10FF A000 to 0x10FF AFFF RAMROM_APP_READ_ADDR
0x10FF B000 to 0x10FF BFFF RAMROM_APP_WRITE_ADDR
0x10FF C000 to 0x10FF CFFF RAMROM_RMON_READ_ADDR
0x10FF D000 to 0x10FF DFFF RAMROM_RMON_WRITE_ADDR
0x10FF E000 to 0x10FF EFFF RAMROM_PRINTF_ADDR
0x10FF F000 to 0x10FF FFFF RAMROM_LOG_ADDR
0x1800 0000 to 0x1800 0003 GIO Interrupt Register (R)
0x1800 0400 to 0x1800 0403 GIO Sync Register (R/W)
0x1800 0800 to 0x1800 0803 Cartridge interrupt Register (R)
0x1000 0014 to 0x1000 0017 CRC2
0x1000 0018 to 0x1000 001F Unused
0x1000 0020 to 0x1000 0033 Image name
radorn escribió:EMaDeLoC escribió:Echandole un ojo al manual de desarrollo del 64DD, menciona que los discos se dividen en cabezales (caras del disco), dentro de ahí en zonas y finalmente en bloques de tamaño variable.
Podrías darme un enlace a eso o pegar aqui el texto? Dice que las caras se accedan independientemente?
radorn escribió:EMaDeLoC escribió:Ojo, el manual especifica que el PI no puede hacer otras operaciones mientras accede al 64DD. Ni cartucho ni SRAM, ni nada parecido.
Yo no decia que se pudiesen acceder en paralelo. Obviamente el bus solo puede hacer una cosa de cada vez.
ziu escribió:¿No estaba preparada para unas 2d avanzadas(ej. Neogeo, castllelvania SON, etc..)?
ziu escribió:¿Si los programadores hubieran obviado usar todos estos nuevos elementos com z-buffer, antiasilasing etc.. ,
¿huiberan sacado los juegos mas parecidos a PSX, mejorando el rendimiento de la consola?
Calculinho escribió:@EMaDeLoC anda, eso del multidisco está muy bien. Se sabe si se podría usar esa función desde un flashcard? A fin de cuenta los juegos de 64DD los carga casi todos (a mi las betas de juegos que luego migraron a GC no me van xD)
Calculinho escribió:Gracias por el resto de explicación, en PSX se nota un huevo que no hay RAM en juegos 3D abiertos. Estoy jugando ahora el Bugs&Taz La Espiral del Tiempo que es un juegazo con varios mundos abiertos a explorar resolviendo puzzles, eliminando enemigos y encontrando coleccionables. Tiene un rollo muy parecido al Banjo&Tooie aunque controlando dos personajes al mismo tiempo como Resident Zero. El caso es que para PSX luce genial y va muy bien, pero las estructuras de lejos las muestra como polígonos planos y las va texturizando según te vas acercando, de cerca o en fases cerradas luce genial y no se aprecia eso; pero en mapa abierto se nota y supongo que es por la falta de RAM para tener cargadas todas las texturas no?
Logical Block Address (LBA)
The 64DD library accesses blocks on the disk using a series of consecutive numbers called the LBA (Logical Block Address). The LBAs on one disk range from 0 - 4291, and the numbers are allocated according to the following rules:
The ROM area is first; the RAM area is second.
Head 0 is first; Head 1 is second.
On Head 0, the outer circle (zone 0) is first. On Head 1, the inner circle (zone 8) is first.
PI - 20 Meg/sec peak, 5 Meg/sec from typical slow ROMs
EMaDeLoC escribió:Pero tú estas asumiendo que ese rango de 252MB (en realidad llega a 243MB) se puede usar completamente porque el 64drive los tiene, pero en ese documento donde se listan las partes de D1A2 hay bastantes partes que se indican como "unused" de gran capacidad:
-ROM codes
N Cartridge only
C Cartridge with Disk hooks
D Disk Only
M? Dragon Sword
-REGION CODES
0 PAL ( P U D S I F X? )
1 NTSC ( J E A? )
2 MPAL ( B )
Meaning Country/ies
A [All?] USA/Japan (1080º Snowboarding)
B Brazil
C ???
E [English] USA
D [Deutschland] Germany
F France
G ???
H ???
I Italy
J [Japan/ese] Japan
K ???
L ???
M ???
N ???
O ???
P [PAL] EUR/UK - ENG-only OR main/only multilanguage
Q ???
R ???
S Spain
T ???
U [?] Australia
V ???
W ???
X PAL multilanguage different than (P).
Y ???
Z ???
PAL multilanguage ROMs seem to be divided in 2 categories:
1- (P) for the "main" PAL release containing English with or without other languages.
2- Country specific codes for non-english single-language releases.
(X) seems to be used when there's already a (P) release containing English, with or without other languages, and another multilanguage relase is needed. If there's need for more releases with different sets of languages, (X) is still used, and they get differentiated through ROM version numbers. For example: English+German>P00, French+Italian>X00, Spanish+Portuguese>X01
Calculinho escribió:Me uno a la pregunta del usuario anterior que le habéis contestado basicamente que N64 es más mejor mucho mejor que PSX.
radorn escribió:Al final tambien resulta que me equivocaba antes y si que se accede al disco una cara primero y la otra despues (decision extraña, en mi opinion). Pero es que, además, la primera cara se lee de fuera a dentro y la segunda de dentro a fuera, y, para rematar la jugada, los bloques no son homogeneos a lo largo del disco, como en cualquier soporte moderno de PC (discos duros, memorias flash, discos opticos...) si no que cada zona, cuanto mas alejada del centro del disco, tiene bloques mayores.
No se si es peor este sistema de acceso o el CHS de los discos duros de PC antiguos xD madre mia...
radorn escribió:EMaDeLoC escribió:Pero tú estas asumiendo que ese rango de 252MB (en realidad llega a 243MB) se puede usar completamente porque el 64drive los tiene, pero en ese documento donde se listan las partes de D1A2 hay bastantes partes que se indican como "unused" de gran capacidad:
No has hecho bien ese calculo, tio. Son 252MB en el D1A2, lo he vuelto a comprobar.
radorn escribió:Todos esos RAMROM esto y lo otro, no se que pintan ahi, pero creo que no está bien.
Calculinho escribió:@radorn tampoco te he mencionado a ti expresamente, estáis escribiendo mucho estos días así que tras leerme varias páginas enormes lo expuse de forma indeterminada porque ya no sabía bien quien había dicho qué.
EMaDeLoC escribió:A mi el rango de direcciones de D1A2 me sale de 255.459.328 direcciones de bytes, que dividiendo en el estandar de 1024 salen 243'625MB. ¿Como hace tú el cálculo?
0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
0x1FC0 0000 to 0x1FC0 07BF PIF Boot ROM
EMaDeLoC escribió:También puede ser que todo eso que comentas del byte de revisiones y otros fuesen datos que solo manejaban y editaban el fabricante del cartucho y que los desarrolladores no necesitaban saber.
radorn escribió:EMaDeLoC escribió:A mi el rango de direcciones de D1A2 me sale de 255.459.328 direcciones de bytes, que dividiendo en el estandar de 1024 salen 243'625MB. ¿Como hace tú el cálculo?
Pues tal que asín:0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
0x1FC0 0000 to 0x1FC0 07BF PIF Boot ROM
Abro calculadora con modo hexadecimal (en mi caso, copié la vieja calculadora de windows xp para seguir usandola en el 7), y resto:
0x1FC00000
-0x10000000
------------------
=0x0FC00000 = 264241152 bytes en decimal = 252MB "pelaos"
...o, como se empeñan los del IEC, "Mebibytes" https://en.wikipedia.org/wiki/Template: ... s_of_bytes
¿Que haces tu para que te salgan 243.625MB?
Cartridge Domain 1(Address 2):
------------------------------
0x1000 0000 to 0x1000 003F ROM header:
---------------------------------------
0x1000 0000 initial PI_BSB_DOM1_LAT_REG value
0x1000 0001 initial PI_BSB_DOM1_PGS_REG value
0x1000 0002 initial PI_BSB_DOM1_PWD_REG value
0x1000 0003 initial PI_BSB_DOM1_PGS_REG value
0x1000 0004 to 0x1000 0007 Clock Rate
0x1000 0008 to 0x1000 000B Boot address offset
0x1000 000C to 0x1000 000F Release offset
0x1000 0010 to 0x1000 0013 CRC1
0x1000 0014 to 0x1000 0017 CRC2
0x1000 0018 to 0x1000 001F Unused
0x1000 0020 to 0x1000 0033 Image name
0x1000 0034 to 0x1000 003A Unused
0x1000 003B Manufacturer ID
0x1000 003C to 0x1000 003D Cartridge ID
0x1000 003E Country code
0x1000 003F Unused
0x1000 0040 to 0x1000 0B6F RAMROM_BOOTSTRAP_OFFSET
0x1000 0B70 to 0x1000 0FEF RAMROM_FONTDATA_OFFSET
0x1000 0FF0 to 0x1000 0FFF Unused
0x1000 1000 to 0x10FF 9FFF RAMROM_GAME_OFFSET
0x10FF A000 to 0x10FF AFFF RAMROM_APP_READ_ADDR
0x10FF B000 to 0x10FF BFFF RAMROM_APP_WRITE_ADDR
0x10FF C000 to 0x10FF CFFF RAMROM_RMON_READ_ADDR
0x10FF D000 to 0x10FF DFFF RAMROM_RMON_WRITE_ADDR
0x10FF E000 to 0x10FF EFFF RAMROM_PRINTF_ADDR
0x10FF F000 to 0x10FF FFFF RAMROM_LOG_ADDR
0x1100 0000 to 0x17FF FFFF Unused
0x1800 0000 to 0x1800 0003 GIO Interrupt Register (R)
0x1800 0004 to 0x1800 03FF Unused
0x1800 0400 to 0x1800 0403 GIO Sync Register (R/W)
0x1800 0404 to 0x1800 07FF Unused
0x1800 0800 to 0x1800 0803 Cartridge interrupt Register (R)
0x1800 0804 to 0x1F39 FFFF Unused
0x1F39 FFFF
- 0x1000 0000
---------------------
F39 FFFF
0x1000 0000 to 0x1FBF FFFF Cartridge Domain 1 Address 2
radorn escribió:Lo de las caras y los LBA... pues, vaya! la razon de ser de los LBA es precisamente ser una abstraccion logica (LOGICAL block address) sobre la geometria fisica real del dispositivo de almacenamiento para facilitarle el trabajo al programador, y lo suyo es acceder a ellos empezando por el LBA 0 y finalizando en el LBA que sea el ultimo... Si uno tiene que andarse rompiendo la cabeza con detalles de una geometria extraña en el disco, segun la que se supone que tienes que acceder a datos contiguos usando LBAs distintos y que progresan en direcciones opuestas, ya no sé que sentido tiene usar direccionamiento por LBAs.
Desde luego, si es para liar la cabeza a la gente, como dices tu, reto conseguido! xD
Pero es que ademas, la Zone0 existe solo en la Head0 y la Zone8 solo tiene presencia en la Head1, segun el esquema de la documentacion.
Yo no se como se las arreglaron para liarla tanto ni para qué, la verdad.
radorn escribió:Lo del "cartucho RAMROM" me convence porque el documento especifica un rango de 16MB llamado RAMROM_GAME_OFFSET.
Pero no debe funcionar con ROMs normales, si no que seguramente haya que subirlas con la herramienta asociada al cartucho ese, con loaders y cosas, porque hay mucha cosa rara por ahi en medio que no coincide con una ROM comercial normal.
Lo de los 16MB debe ser la capacidad concreta de ese cartucho.
Es un poco confuso eso de ponerlo ahi como si fuera algo universal de la N64, aplicable a cualquier cartucho...
radorn escribió:En fin, todo lo que nos de algo sobre lo que discutir y sacarnos los ojos, genial, verdad? xDDDDDD
BMBx64 escribió:Voy a empezar Hybrid Heaven en los próximos días, algunos consejos?
No usaré el modo alta definición, en cuanto a la versión PAL o NTSC voy a probar cual funciona mejor.
Señor Ventura escribió:Creo que es un rpg por turnos, ¿no?.
Hace años quise jugarlo pensando que tendría un pelín de la experiencia jugable adulta del metal gear, pero cuando me encontré con ese percal no pude seguir con el.
Me sacan del juego los combates por turnos, pero a gorrazos, vamos.
bluedark escribió:@BMBx64 ¿Sabes para cuando, más o menos, se liberará la nueva librería?