aorante
|
|
« : 06 de Febrero de 2010, 12:48:10 am » |
|
Hola a todos! He empezado un proyecto de un editor de los registros del PSG, con la idea de aprender. Estoy publicando todo los pasos en un blog: psged.blogspot.com, con la intención de compartir la experiencia. Quiero desarrollarlo usando C, ya que usar únicamente Assembler, es demasiado duro para mi. Tuve la fortuna de conocer a Nerlaska en la pasada RU y me hablo del SDCC. He visto su doc para hacer ROMs y he conseguido hacer el "Hello World" siguiendo el artículo de Avelino Herrera. Hoy me he leído todos los temas de este foro, donde salia la palabra SDCC (un montón y en todos estaba Nerlaska!!! ) y pensaba que la cosa seria más sencilla pero me encuentro un poco perdido por que no he encontrado apenas información y ninguna lib de apoyo para este entorno de programación. Si que he visto que para Hitech-C hay la GFX Lib de Jannone, pero ¿saveis si hay algo parecido para SDCC? Gracias!
|
|
|
En línea
|
|
|
|
pitpan
|
|
« Respuesta #1 : 06 de Febrero de 2010, 07:30:58 am » |
|
Aparentemente, SDCC funciona muy bien. No sé qué tal es en cuanto a optimización, creo que en algún lugar lei que generaba un código más compacto y eficiente HI-TECH C, pero éste es de pago, aunque circule por Internet.
Por mi parte, decirte que si lo que pretendes es aprender, lo haría al revés: empápate del ensamblador, que no es tan difícil como parece, comprende bien cómo se accede al hardware, y después, si quieres, pásate al C, que es mucho más cómodo para desarrollar la lógica del programa.
Tu proyecto tiene básicamente un interfaz (VDP) y acceso al audio (PSG). No sé si has visto cómo funciona el editor del Caruso (lo tienes como aplicación de Karoshi), pero no anda muy lejos de lo que tú pretendes, aunque el mío sea infinitamente más feo. Tu editor, si no lo he entendido mal, trabaja volcando 12 bytes cada vez al PSG... eso te generará canciones enormes.
En cualquier caso, me alegra que te hayas activado. Si necesitas cualquier ayuda, ya sabes dónde andamos. Y ya que te he visto fuerte con el tema gráfico, igual te planteo alguna cosilla, que también necesito reactivarme.
|
|
|
En línea
|
|
|
|
nerlaska
|
|
« Respuesta #2 : 06 de Febrero de 2010, 11:19:34 am » |
|
Hombre .. en el otro thread no te habia reconocido .. pero luego atando cabos y viendo tu blog .. he recordado jejejje Nada .. bienvenido al lado de la fuerza!! del SDCC pocos encontrarás que hayan hecho cosas .. pero alguno hay. En fin .. me alegro que hayas empezado con lo del SDCC .. como te decia en el otro thread .. si quieres te paso el SDK para MSXDOS2.x que tiene para manipular el VDP de los MSX1, 2, 2+, el GFX9000, el PSG, SCC, MSXAudio, MSXMusic y en general un montón de cosas. Lo que necesites .. lo tratamos por el foro, por email .. como más gustes. Como ya te dije en la RU .. ningún problema en echarte una mano y que puedas acabar haciendo cositas para el MSX.
|
|
|
En línea
|
|
|
|
aorante
|
|
« Respuesta #3 : 06 de Febrero de 2010, 12:27:04 pm » |
|
Que pasada!!! No me esperaba una contestación tan rápida!!! @pitpan, tu desarrollaste el Caruso? Personalmente me parece muy bueno, y justamente la interfaz me pareció de las más cuidadas que he visto. Yo he programado algo en Assembler, para apoyar algunos programillas que hice en basic. Más que nada para acelerar temas gráficos. El hardware de los MSX1, conozco como se accede al VDP y el PSG pero donde tengo que aplicarme es en el tema del mapeo de la memoria y las interrupciones. El proyecto es simplemente para juguetear con el PSG y aunque podría estar bien lo de guardar los valores de los registros en cada paso, lo unico que hace es disparar los que tiene editados, aunque se cambien mientras se tocan. Si después de terminar lo que tengo en mente al usarlo veo que esta chulo, lo mismo me curro otra versión con más funcionalidades y una pantalla para el secuenciador, que permita más patrones. Yo encantado de poder ayudar en cuestiones gráficas. @nerlaska. La verdad es que agradezco mucho tu ayuda. Me he animado a ponerme en serio con este proyecto gracias a la charla que tuvimos en la RU. Eso de que tenga soporte para SCC me pone los dientes largos. Me gusta mucho el resultado que se consigue con este chip tan simple. Nos ponemos en contacto por mail.
|
|
|
En línea
|
|
|
|
andrear1979
Karoshi Newbie
Mensajes: 13
|
|
« Respuesta #4 : 07 de Febrero de 2010, 01:49:59 am » |
|
(excuse me, I cannot write in Spanish)
Hola aorante, welcome in the "SDCC appreciation club". I sometimes develop in SDCC for MSX but at a beginner level I will keep following your blog, good luck for your project.
Andrea
(a rough Google translation follows)
Aorante Hola, bienvenido en el "club de apreciación SDCC". A veces desarrollo en SDCC para MSX, pero a un nivel de principiante Seguiré tu blog, buena suerte para tu proyecto.
|
|
« Última modificación: 07 de Febrero de 2010, 01:53:04 am por andrear1979 »
|
En línea
|
"... all toghether, good bad and mean, shall last forever in the Software Bin"
|
|
|
SapphiRe_MSX
Visitante
|
|
« Respuesta #5 : 07 de Febrero de 2010, 02:34:10 pm » |
|
El hardware de los MSX1, conozco como se accede al VDP y el PSG pero donde tengo que aplicarme es en el tema del mapeo de la memoria y las interrupciones. Bueno, por lo que he leído de tu proyecto, quieres que sea una ROM de 32K, por lo que (a priori) no vas a necesitar nada relacionado con el mapeo de memoria, ya que dispondrías de los 16k superiores de RAM para tí solito (vale, salvo en los pocos modelos que tienen 8k). Si necesitas más memoria RAM... bueno, ya habría que buscarla (si hay), pero no pienses en ese tema hasta que veas que es necesario. Con respecto a las interrupciones, no hay mucho misterio. En el subforo de snippets podrás encontrar uno bastante sencillo que te permite engancharte en la rutina de interrupciones y pasar (algo) de la BIOS. Todo depende de lo que vayas a necesitar, pero básicamente con ese snippet ya tendrías bastante resuelto. Ahora, también puedes pasar de engancharte en las interrupciones y dejar que sea la propia BIOS la que las gestione, con lo cual no tendrías que preocuparte de ellas lo más mínimo. Sincronizas con HALT y asunto arreglado. Eso sí, creo que te falta algo fundamental: acceso a disco/cassette. La aplicación resultaría mucho más útil si tienes la posibilidad de grabar lo que vayas generando (o cargarlo para seguir editando). ¿Cómo tienes pensado resolver el tema?
|
|
|
En línea
|
|
|
|
aorante
|
|
« Respuesta #6 : 07 de Febrero de 2010, 03:14:52 pm » |
|
Thanks Andrea for your comments. I am interested in publishing the blog in English so that more people can use my experience, but my English is very poor (I'm using a translator). I have to solve my problem of language. I have seen your site, specifically, your project INERTIA and your editor sprites. I appreciate your help. --- Gracias SapphiRe por tu ayuda. Creo que lei parte del subforo que comentas. ¿Puede ser el relacionado con la visualización de más de 5 sprites por línea? Con respecto a lo del acceso a ficheros, es algo que justamente me interesa mucho. La idea es que este proyecto me sirva como experiencia para hacer un tracker para el módulo de Yamaha SG01/05 que incorpora los CX5M, y necesito aprender como funciona el tema. He visto en la web de Konamito, unos tutoriales de Assembler de Ramones, que tocan temas bastante concretos como el acceso a disco desde la ROM y la programación del teclado, joystick y ratón, que también me interesan mucho. No me los he leído todavía, pero parecen que están bastante bien.
|
|
|
En línea
|
|
|
|
SapphiRe_MSX
Visitante
|
|
« Respuesta #7 : 07 de Febrero de 2010, 06:47:18 pm » |
|
Creo que lei parte del subforo que comentas. ¿Puede ser el relacionado con la visualización de más de 5 sprites por línea? Pues no, para nada. Me refería a la forma de enganchar el programa en los ganchos que, a tal efecto, dispone la BIOS en RAM. Mira en http://karoshi.auic.es/index.php?topic=212.0
|
|
|
En línea
|
|
|
|
aorante
|
|
« Respuesta #8 : 10 de Febrero de 2010, 02:14:02 pm » |
|
Gracias SapphiRe! Lo miraré detenidamente. Es básico para poder reproducir la secuencia. Quiero esta semana empezar a programar. Ya te contaré que tal me va. Saludos!
|
|
|
En línea
|
|
|
|
SapphiRe_MSX
Visitante
|
|
« Respuesta #9 : 10 de Febrero de 2010, 02:37:42 pm » |
|
No tiene mucho misterio, la verdad. De todas formas, para una aplicación quizá te sea más conveniente que la BIOS haga todo su trabajo y realizar sincronizaciones con HALT, con lo que no necesitarías ni enganchar tu propia rutina de gestión de interrupciones.
|
|
|
En línea
|
|
|
|
nerlaska
|
|
« Respuesta #10 : 10 de Febrero de 2010, 03:17:08 pm » |
|
Eso con el SDK que te he pasado .. mirate dentro de samples el isr.c void MyHook (void) interrupt { static _inHook = 0;
ISR_ENTER();
Log ("%d", _inHook++); ISR_LEAVE(); }
///////////////////////////////////////////////////////////////////////////
int main (char *argv[], int argc) { ISR_Init ((void *)MyHook); Log ("Press SPACE to stop..."); while (!PPI_IsKeyPressed (KEY_SPACE)) { } ISR_Exit ();
return 0; }
|
|
|
En línea
|
|
|
|
aorante
|
|
« Respuesta #11 : 12 de Febrero de 2010, 07:06:45 pm » |
|
Perdona Nerlaska, pero te mande un mail y no he recibido contestacion, por lo que no tengo tu SDK!!! Estoy mas ilusionado que un niño en vísperas de reyes!!! MandamelooooOOOOoo!!!
|
|
|
En línea
|
|
|
|
nerlaska
|
|
« Respuesta #12 : 13 de Febrero de 2010, 10:57:19 am » |
|
Hola .. si que te lo envié .. nada más recibir tu email .. que raro .. voy a mirar otra vez. SI si .. aquí lo tengo .. enviado el 06/02 .. sábado .. y te incluia el SDK. Te lo reenvío de nuevo que seguro que debo estar perdido en tu emails con virus o algo
|
|
|
En línea
|
|
|
|
aorante
|
|
« Respuesta #13 : 13 de Febrero de 2010, 05:20:59 pm » |
|
Hola nerlaska! Te he reenviado mi correo ya que no he recibido nada. He usado la dirección mail que me diste en la RU. Saludos!
|
|
|
En línea
|
|
|
|
nerlaska
|
|
« Respuesta #14 : 13 de Febrero de 2010, 08:23:31 pm » |
|
Correcto, correcto .. si yo si leo tus emails .. vamos, me llegan. Te he vuelto a reenviar (por 3a. vez ) el email .. has mirado en el spam de tu cuenta? Saludos!
|
|
|
En línea
|
|
|
|
|