PDA

Ver la versión completa : Con todo nuestro esfuerzo!!



newage
01/09/2005, 21:23
¿Que pasa? ¿Que no se va hacer un buen emu para neogeoCD y gba?

Solo tenemos que ponernos para que sea la definitiva consola de emulación
de 8-16 bits + gba. Yo me voy a poner en serio con el asm del arm
porque tenemos que sacarle todo el jugo a esta consola. Personalmente me
voy a involucrar en los emus de neogeoCD y Gba para ponerlos al 95%-100%,
se que se puede. No se de emulación pero se assembler, C / CPP, pascal, etc...

Lo único dificil sera la Gba. Pero si se quiere se puede.
__________________________________________________ ___________________________________

Os animo a que pongamos en este post las cuestiones técnicas a salvar en
la emulacion de la neoGeoCD y la Gba. Los enlaces técnicos a los procesadores
de estos: el arm de la gba, el m68k, el z80 y secundarios.

Técnicas de emulación. Recompilación, etc.. (Los dos tipos de recompilacion).
La virtualizacion o algo así que se quiere aplicar a la Gba que se explique.

Además de las cuestiones tecnicas del uso del coprocesador y técnicas a
aplicar para sacarle el máximo rendimiento. Los opcodes del arm920T. Etc...
__________________________________________________ ___________________________________

Yo creo que es una acción de responsabilidad frente a la consola GP2X. Porque
si solo vamos a jugar a la snes, mal vamos. Todos sabemos que es mejor
un coprocesador que mas Mhz y que sin 90% asm por emulador no
conseguiremos el objetivo, pero si lo hacemos así y colaboramos entre
todos dando ideas (Los que puedan) será de verdad una digna sucesora de
la Gp32 que yo nunca tuve, sino no.

Todo esta en nuestras manos, a programar se ha dicho.
__________________________________________________ ___________________________________

Espero que este sea el tema donde todos podamos informarnos de las
cuestiones tecnicas y de los links a los emuladores en desaroollo o de los
que se puede conseguir infomacion técnica.

Un saludo!
__________________________________________________ ___________________________________
__::::::::::::::::::LINKS::::::::::::::::::_______ ______________________________________________

Ensamblador Arm9:
Instrucciones de arm 1 (http://www.arm.com/pdfs/QRC0001H_rvct_v2.1_arm.pdf)
Instrucciones de arm 2 (http://www.arm.com/pdfs/QRC0001H_rvct_v2.1_thumb.pdf)
Instrucciones de arm920T (http://www.arm.com/pdfs/DVI0024B_920t_po.pdf)
Coprocesador:
Tec. NeoGeoCD:
Tec. Gba:
compiladores, ensambladores, etc... (http://www.devrs.com/gba)
Emu. gba gp32 (http://gpadvance.sourceforge.net)
gbadev (http://www.gbadev.org)
gbatek (http://www.work.de/nocash/gbatek.htm)
Tecnicas de emulacion:
introduccion (http://www.speccy.org/sromero/spectrum/articulos/htprogemu/)
__________________________________________________ ___________________________________
NOTA: Ya cambiaré el post de sitio en su momento.
NOTA: En septiembre estoy ausente que tengo examenes. Hasta el 22.

bulbastre
01/09/2005, 21:26
Tú ahí con dos huevos sí señor!!!

(_=*ZaXeR*=_)
01/09/2005, 21:34
Te animo a que sigas con la idea, pero creo que en la GP2X XDDDDDD no hara falta tirar tanto de ensamblador.

Si te pondes con la GP32 tirando de ensamblador podras tambien conseguir cosas muy importantes.

Sprunkie
01/09/2005, 22:20
No tengo ni idea de programar un emulador, pero me gusta la propuesta, así que animo, espero verlo pronto en la gpx2 o gp2x ya estoy echo un lió no me acuerdo como se llamaba antes y como se llama ahora.

darevix
01/09/2005, 22:40
:rever: :rever: :rever: :rever: oh dios casi lloro con ese discurso tipo BraveHeart

......muy buena NewAge :quepalmo:

Os dejo info de la emulación de GBA (que me parece la mas ardua):

Desarrollo de Software (http://www.gbadev.org/)

Compiladores, ensambladores, etc. (http://www.devrs.com/gba/)

Máquina Virtual (http://www.bottledlight.com/index.html)

Emulador/SDL para linux claro... (http://boycottadvance.emuunlim.com/)

Especificaciones Técnicas (http://www.work.de/nocash/gbatek.htm)

Lazebrazul
02/09/2005, 23:46
Te acabas de hacer mi idolo
Es aseguro que me lo miraré

urimm
03/09/2005, 00:00
newage fan club ya! :) :) :) :saltando:

newage
03/09/2005, 05:03
Uff es muy de noche. He estado con los tableaux de la logica de predicados de primer orden.
Vaya memez si me lo hubiese estudiado en su tiempo :babea:.

Bueno posteo para decir que no me hagais la pelota, que si posteo esto es para que nos pongamos a trabajar.

Mmmm. He estado mirando la Gba y según parece la única alternativa que tenemos para conseguir el 100% es correr los opcodes en el procesador de la GP2X :rolleyes:. Supongo que si hacemos esto tendremos que resolver ciertas cosas mas difiiles de implementar que en un emulador clásico.

El procesador arm de la Gba y por lo menos el principal de la GP2X parecen muy compatibles. No en serio son 100% compatibles. El de la Gba es el ARM7TDMI y si mirais:
arm920T (http://www.arm.com/pdfs/DVI0024B_920t_po.pdf)
Vereis que pone en la primera pagina en letras grandes que es compatible con strongarm y con ARM7TDMI. Nos lo ponen a huevo los de Gam Park "a secas" por que ya no me creo lo de que se hayan separado (Se preveen las caracteristicas tecnicas de la proxima GP la tercera sería y se dice que soportara 3D y wifi XGP ? GP2X no son nombres parecidos? :) como son estos koreanos).

Bueno el caso es que lo han hecho a proposito seguro. Ahora vienen las dificultades y preguntas... Bien hay que utilizar el primer procesador como semiemulador de la gba en la cuestion del procesador ya que esta es la que efectua las interrupciones por software (SWI opcode) y creo que es el procesdo principal el único capaz de hacer esto ademas de porque ira mas rapido ya que los principal del emulador es "semiemular" el procesador de la GBA.

Tenemos que implementar una BIOS que implemente las interrupciones de la GBA.
Buff y mas cosas, hay que mirar si los temporizadores coinciden y los dispositivos de control. Hay muchas cosas que aun habiendo programado algunas cosas de sist. operativos no tengo ni idea de lo que son. Pero por suerte tengo el libro de minix con una traducion penosa al español por un hispanoparlante (Sin ofender lo digo porque el que ha escrito el libro se come unas frases en castellano que e español suenan espantosas simplemente no sabe traducir con un 100% de corecctitud, que recto soy :rolleyes: ) Bueno ya lo mirare.

La cuestion con la que os quiero dejar reflexionar es que el codigo de la GBA es compatible con el de la GPX2 (100%) y tendriamo que mirar el mapa de memoria de la GBA para meter ahi la bios en memoria y demas rollos. Y además colocar el emulador por arriba del todo de la RAM para que no moleste a los juegos de la GBA y encima de implementar las interrupciones mirar incompatibilidades y solucionarlas de lo que se encargaría el emulador ademas de ponerle un buen filtro y escalado a la salida de pantalla como opcion.

La cosa es que para implementar esto necesitariamos multithread y ademas para rular tendría que correr sin cargar Linux. Que han dicho que se podrá. Por lo que habrá que implementar multitread o como se diga multiples hilos vamos.

Bueno esta es mi idea general del emulador a hacer sin mucha idea de emulacion. Como veis no es facil, pero tampoco es dificil porque nos quitamos tener que emular el procesador, solo las incompatibilidades.

Supongo que habría que coger e ir mirando los opcodes del juego y si es compatible se corre en el procesador quizas no habria que mirar uno por uno sino mirar grupos de compatibles o algo asi y despues la cuestion es que el emulador recoja el PC. Dificil ehh :) ya se me ocurrira algo. Luego también esta la sincronizacion de esto con el refresh de la pantalla y el escalado y filtro de esta con el coprocesador ademas de otras cosas como timer y demás.

La bios se programa en ensamblador. Eso es el ensamblador indespensable por ahora. El resto iría en C cuando nos pongamos.

¿¿Que ideas se os ocurren genios?? Que para eso esta este post.
Recordad que no tengo ni pija de emuladores nunca he progrmado uno.
Comentadme las incoherencias o dificultades extra de lo que comento aquí.

La neogeo ayudaríamos programando cosas en asm del arm y nada mas.
Es decir nada tectnico si no coger codigo de alto nivel pasrloa a asm simpllifcando flujo de programa al minimo y eso que no es poco.
Aunque no creo que haya que tocar mucho porque seguro que se lo curran para la neogeoCD lo de la gba es mas complicado.

Me voy a dormir. Que tengais dulces sueños amigitos amantes del trance
:fieston:
Bueno yo escuho Vangelis y las BSO de finalfantasy. Si es que soy muy friki :) y tengo muy buen gusto. :cool:

Ya podeis ponerme un fan club :babea: :arriba:

NOTA: Lo que no entendais que va a ser mucho es normal ni yo mismo me entiendo a veces lo posteais para que os lo alcare yo u otra gente del foro.
La cuestion es aclarar las ideas para ver si sacamos algo con logica atar todos los cabos y despues ya si que nos pondríamos a programar.
E ir haciendo un FAQ y la especificacion de nuestro emulador de Gba. Como dije la neogeo es cuestion de implementacion. Quizas portar el core del z80 y el yamaha a ensamblador

Scrembolxp
03/09/2005, 09:06
Yo NPI de programacion :llorosr: ... pero si quereis que me curre el interfaz grafico de algun emu solo decirlo, tambien pienso que con un poco de trabajo de la scene veremos grandes cosas en GP2POR xD, pero yo no puedo ayudar con la programacion. Lo dicho y como muestra rescato una imagen (que tiene que estar perdida por algun hilo) de lo que le pase a Dmouse para su NesterGPd. Voi a mandarle un mail hamber si al final tuvo tiempo y lo implemento o no hehehe
Si alguien necesita un interface chulo para su emu... solo tiene que decirlo :brindis:
Salu2.
Scrembolxp.

newage
03/09/2005, 14:55
Eso estaba pensando yo. Que necesitamos un interface :).
Bueno lo que voy a pedir yo va a tener bastantes cosas y hay que pensarlo mas detenidamente cuando tenga el esquema general te aviso :).
Necesitaremos que tenga cosas como saber que instruccion es la proxima en ejecutar del juego y recorrer el codigo. Mmmm necesitaremos un desamblador.

Bueno no es tan difícil como parece.
Ya diré como tenemos que hacer la base cuando se empiece.
El interface será una de las cosas primeras que haremos con menús ocultos para la depuración. Porque supongo que será tan complejo que no funcione mas que en la GP2X real.

Gracias por el apoyo! :chupete:
Pero si no tienes idea de programación será mejor que lo haga otro :rolleyes:

He estado pensando en lo útil que nos puede resultar el segundo procesador para controlar el PC del emulador y el PC del juego de GBA y asi no tener que hacer multihilos o algo asi ya veremos, dar ides. Vamos a tener que mirarnos la documentación del coprocesador.

El SDK sale la proxima semana!!!

Hay que mirar incoherencias en el mapa de memoria de la GBA.
memory map (http://www.work.de/nocash/gbatek.htm#memorymap) con el de la GPX2 sin Linux

Necesitamos informarnos de: Interrupt vector, Interrupt Stack, y BIOS Call Stack
en la GPX2 y como establecerlos para simular el sistema de la GBA.

newage
03/09/2005, 18:00
Estaba pensando en el uso del coprocesador.
Nunca he programado para un coprocesador. Y quisiera que nos aclarasemos entre todos el uso de este en ensamblador, aunque cuando salga el SDK se vería pero para ir avanzando.

Bien, lo que pensaba es que si hay que indicar que opcodes ha de ejecutar el coprocesador el flujo del procesador principal se estancaría y no serviría de nada. Que mente mas simple tengo. A si que mire los opcodes de coprocesador.

Hay tres tipos: los de transferencia de registro creí entender los de manejo de RAM y los de proceso de instrucciones vamos lo que me interesa hacer que el coprocesador ejecute cosas - opcodes.

CDP{cond} [copr], [op1] CRd, CRn, CRm {, [op2]}

¿Que se psa una lista de los opcodes a ejecutar o una direccion de memoria
donde esten estas instrucciones? A mi me parece que lo segundo.

Mmmm, que formato mas raro. La cuestion es que la solución sería que el coprocesador manejase el emulador en la parte mas alta de la RAM mientras que el procesador principal que es el compatible 100% con el procesador de la GBA ejecutase el codigo del juego de la GBA cosa que no pasa con el coprocesador pues ya lo he mirado. Y asi ahorrarnos multihilos y darle una velocidad de la h.o.s.t.i.a mojada en vino :) :brindis:

¿Pero como controlar le procesador principal desde el coprocesador?
Mmm Y además creo que las SDL no nos servirían como interface del emulador y habría que programarlo a pelo cosa que no nos devería asustar.

Bueno realmente creo que esto es bastante loable. Todo el emulador se programaría en assembler y nos ahorraríamos muchas pijadas.

1º) Cargar el emulador en la cima de la RAM. Hay que mirar en esto tamaños de los segmentos y tamaño del emulador ademas de otras cosas pero programado en ensamblador ocuparía poco.

2º) Pasar el control del emulador al coprocesador.

3º) Cargar BIOS al principio de la RAM como nos indica el I/O map de las GBA.

4º) Empezar a ejecutar codigo del juego despues de cargar la imagen e ir controlando el procesador principal desde el coprocesador para hacer interface entre las llamadas a disposotivos de la GBA y los dispositivos reales de la GPX2: timers, LCD, sonido, etc... ¿comorrr?

Esa es la idea del superhiperemulador de newage :) . Ahora hay que ver si puede ser llevado a cabo :rolleyes:. Yo creo que hay posibilidades, rectificarme si me equivoco. de todas formas s me equivoco ya me dare cuenta cuando empecemos ahora voy a mirar ejemplos de uso de coprocesador enassembler.

NOTA: En este emulador al sobreescribir la memoria RAM desde el principio al antojo de la GBA abría que poner reseteo de la GPX2 al salir del emulador para que se vuelva a cargar todo. Habra que implementar el manejo de archivos de la SD y FLASH memory en ensamblador a pelo sin ayuda de OS ni na, es decir sin interrupciones predefinidas. Lo que propongo es complicado pero desde luego el rendimiento sería inmejorable

urimm
03/09/2005, 18:27
creo haber entendido q el SDK llega la semana q viene, osea q la semana q viene trastea un poco. Tio, tu tienes madera, sigue asi y nos mataras d un orgasmo a todos. :brindis:

newage
03/09/2005, 19:15
¿Algún linuxero conoce un buen emulador de la gba con depurador que rule en linux con wine o sin el? Gracias!

mortimor
04/09/2005, 00:01
VGBA32 esta portado ya a GP32 con SDL, by Chui :D:D:D

Por otro lado te recomendaria que miraras el codigo del GPAdvance ya que hace algo parecido a lo que quieres.

En cuanto al mapeado de direcciones de acceso a memoria de la GBA no tienes mas que modificar las tabla de la MMU de la GP2X para adaptarlas a las roms de GBA, esto lo hace el GPAdvance (lee su codigo). Por otro lado hay que redireccionar las interrupciones o simular algunas, tambien habria que completar los modos graficos para lo cual se podria usar el coprocesador.

Un consejo en cuanto a diseño, no pases el control al arm940t ya que no es el procesador principal y no tiene operaciones para controlar adecuadamente el otro procesador. Lo suyo es seguir la linea del GPAdvance y con el tamaño de ram superior y la aceleracion que supondra el hacer los render con el coprocesador seguro que gana muchisima velocidad, yo diria que seria jugable sin sonido y sin hacer muchos cambios. El tema esta en que quedan muchas cosas por hacer.

newage
04/09/2005, 08:32
A mi no me cabe en la cabeza que no pueda ir mas lentos los juegos en la GP2X que en la GBA. Si todo se puede conseguir reprogramando las tablas de la MMU y los procesos de las interrupciones, como es posible que no jale si va a 200 MHz, :loco:

Voy a ir mirando el código mas detenidamente.

mortimor
04/09/2005, 12:01
Es que la GBA tiene "ayuditas" para manejar los graficos, no es solo el set de instrucciones de arm7, por eso hay que hacer mucho parche. TAmbien hay que gestionar las diferencias en los DMA y otras cosillas. Pero, como te digo, el GPAdvance tiene mucho trabajo hecho y si lo continuan no tardaria en ser jugable sin sonido. Si fuera facil ya estaria hecho ;)

newage
04/09/2005, 13:02
Yo no sabía que se corriese el código directamente por procesador en el emulador de la gba para gp32. Mmm... con el aumento de los Mhz y emulando los interface DMA para dispositivos hardware ademas de timers y demás en el coprocesador no podremos ver juegos a la velocidad real de la gba?? Pufff, no se si no se emula el procesador lo lógico sería que fuese muchísimo mas rápido no?? Lo que mas me jode es lo del sonido es una putada que sea lo que pero se emule por recursos. Espero que a alguien se le ocurra una maravillosa idea para solucionar esto con el coprocesador.. :rolleyes:

efegea
04/09/2005, 15:57
¿Algún linuxero conoce un buen emulador de la gba con depurador que rule en linux con wine o sin el? Gracias!

VisualBoyAdvance

EDITO: es nativo. Ah, y mi athlon64 se atraganta un poquito en la emulación, me pregunto porqué es tan lento :loco: