Proyecto Churrero: AVORCHA - Pentacorn Quest 128K- RELEASED!

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
mcklain
Mensajes: 1
Registrado: Dom, 01 Feb 2015, 12:03

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor mcklain » Dom, 01 Feb 2015, 12:09

Que alguien le eche una mano, que la creación del juego está en su recta final :mrgreen:
Avatar de Usuario
alxinho
Mensajes: 98
Registrado: Dom, 02 Feb 2014, 12:36

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor alxinho » Dom, 01 Feb 2015, 12:24

Buenas!

No me había enterado de este proyecto, decir que me encanta el estilo gráfico, una pasada de verdad! :o

Con ganas de catarlo :D
Nightwolf
Mensajes: 215
Registrado: Sab, 15 Oct 2011, 11:24

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor Nightwolf » Dom, 01 Feb 2015, 16:41

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
Avatar de Usuario
angel
Mensajes: 23213
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor angel » Dom, 01 Feb 2015, 16:46

Jejeje, qué buena pinta :-)
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
alxinho
Mensajes: 98
Registrado: Dom, 02 Feb 2014, 12:36

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor alxinho » Dom, 01 Feb 2015, 19:19

Éste va a triunfar :adore:
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor radastan » Dom, 01 Feb 2015, 23:39

¡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.
Avatar de Usuario
na_th_an
Mensajes: 26413
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Churrero: AVORCHA - Pentacorn Quest

Mensajepor na_th_an » Lun, 02 Feb 2015, 14:44

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:

$this->bbcode_second_pass_code('', 'halt
di

; Ponemos la RAM3:
ld b, 3
call SetRAMBank

; copiamos
ld hl, dirección_de_los_bichos
ld de, _sprite_0_a
ld bc, lo_que_sea
ldir

; Ponemos la RAM0:
ld b, 0
Call

; encendemos
ei')

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...


Creo que es más fácil que cojáis MK2 y adaptéis el juego. MK2 es código nuevo pero está estructurado igual que la Churrera. Os valdría todo, incluso los extern, el script. Todo. Es un trabajo, pero sí, iría bastante más rápido.

Sir Ababol 2 es un motor custom que empezó siendo un fork de la Churrera 4.0 (en 2012). El año pasado le cambiamos el motor de movimiento por el que lleva MK2 (Ninjajar/Leovigildo).

Ponerse a cambiar el motor a estas alturas del cuento es un bajón - pero es lo más rápido. Sir Ababol2 Engine / MK2 usan otras variables globales y otras estructuras y la adaptación, me temo, sería más costosa que coger MK2 pelado (la última versión está en la carga del final de Leovigildo) y montarle el juego con los recursos que ya tenéis.

Otra cosa que no es mentira: Sir Ababol 2 tiene muy pocas pantallas con 3 enemigos. Es cierto que Sir Ababol2, Ninjajar! o Leovigildo van mucho más desahogaos que los juegos de la Churrera (además, MK2 ocupa menos memoria), pero tampoco esperes una maravilla.
Como diría Rorshach: "Urm..."