Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 12:09
por mcklain
Que alguien le eche una mano, que la creación del juego está en su recta final
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 12:24
por alxinho
Buenas!
No me había enterado de este proyecto, decir que me encanta el estilo gráfico, una pasada de verdad!
Con ganas de catarlo
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 16:41
por Nightwolf
Bueno y como primicia galáctica gracias al buen hacer Hark0, sacrificando su salud... ¡El video de un Spectrum real corriendo Pentacorn Quest!
https://www.youtube.com/watch?v=l6AADCb ... e=youtu.be
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 16:46
por angel
Jejeje, qué buena pinta
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 19:19
por alxinho
Éste va a triunfar
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Dom, 01 Feb 2015, 23:39
por radastan
¡Buf! se ve tremendamente bien, con detallitos que le separa del resto de juegos elaborados con la churrera, y con una jugabilidad de las molonas.
Ansioso de ponerle las zarpas encima.
Re: Proyecto Churrero: AVORCHA - Pentacorn Quest
Publicado: Lun, 02 Feb 2015, 14:44
por na_th_an
Ya hemos hablado en privado, pero lo pongo en público para el escarnio y esas cosas que riman con uranio y geranio.
$this->bbcode_second_pass_quote('Nightwolf', 'P')retty please... ¿Habría alguna forma sencilla de que esto pueda hacerse sin que cause la interrupción de la música? Es que sería una pena tener que o bien quitar los bichos adicionales, o tener que sufrir con el parón en la música :____________________(
Según he estado asesorándome con Syx (al cual agradezco un montón toda su ayuda) solo bastaría quitar el DI/EI de la función y poner un halt en vez del DI de página en la descompresión y dejar fuera de eso la descompresión en si, pero solo conseguimos cuelgues y más cuelgues :___(
Es un problema conocido, lamentado, y, de ser posible, oculto con subterfugios. Explico por qué ocurre y por qué no se puede arreglar.
El Spectrum es jodido e implementa las interrupciones muy mal. Es asín. En realidad no es sólo el Spectrum, sino los periféricos, que no se aclaran y joden el bus y tu programa muere si tienes cosas raras enchufadas.
Total, que para arreglar el tema los dales fran se inventaron un método que consiste en una tabla de 257 valores y una dirección de salto en un punto fijo de la memoria. Mediante un misterioso e interesante proceso que no toca explicar aquí, cuando ocurre una interrupción, con este método, se salta al sitio correcto.
En el Spectrum, la ULA lanza una interrupción cada 20 ms, o sea, una vez por "frame" de TV (50Hz en PAL). Usando el truco de los dales fran, lo que hacemos es saltar a la rutina que toca la música. Esta rutina se encarga de ver si hay una nota nueva que tocar, y en cuyo caso se lo dice a la AY y luego sale.
Mientras estén las interrupciones activadas, la música suena. Se desactivan las interrupciones, y entonces no hay nadie que se encargue de actualizar el AY, por lo que la última nota se queda sonando hasta nuevo aviso.
El problema es que la tabla de los valores y la dirección de salto que idearon los dales fran está justo al final de RAM0.
¿Qué pasa cuando descomprimes nuevos enemigos? Pues que el librarian pagina RAMx (la 3, en tu caso, creo), se trae las cosas, y luego vuelve a poner RAM0. Paginar significa que el último cacho de 16K de RAM de repente "es otro". La CPU ni se entera de esto, ojo. O sea, paginar es, en cualquier caso, timar a la CPU como a un chino.
Si las interrupciones están activadas durante este proceso, y coincide que ocurre una interrupción en medio de la descompresión - l'horreur! el Spectrum busca su tabla y encuentra... pues otra cosa. Y salta adónde sabe dios. O sea, que tienes un cuelgue.
$this->bbcode_second_pass_quote('', 'P')or que la opción teórica sería poner los sprites de los enemigos descomprimidos en memoria (según se ve, hay memoria de sobra) y así copiarlos directamente encima, con lo que se evitaría la interrupción de la descompresión (LD HL,origen LD DE,destino LD BC,longitud LDIR).
Como te expliqué en privado, se desactiva las interrupciones por el paginado, y no por la descompresión. O sea, igual ibas a tener que desactivarlas con el método de copia directa. Eso sí: seguro que copiar alrededor de 2K de datos dura mucho menos tiempo que la descompresión - incluso, si pones un "HALT" justo antes, es posible que de tiempo dentro del frame actual y no haya tirón:
Podéis tirar por ahí. Es muy probable que se minimice muchísimo el efecto del tirón.
$this->bbcode_second_pass_quote('', 'O')tra duda dudosa... ¿Se podría actualizar el motor actual por el más rápido del Sir Ababol2 (Joer qué juegaco, como mola el espadazo) reemplazando las funciones de pintado? ¿Cuáles serían? (Porque ponerse ahora a cambiarlo todo boaf, aparte de que el Abobol2 no tiene scripts...) Es que... ¡es increíble lo bien que se mueve con los 3 bichos! Y el pobre Pentacorn se muere :____( Supongo que sería incrustar __FASTCALL__ move_enems...