Autor Tema: Nuevos cracks de juegos clasicos.  (Leído 161771 veces)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #390 en: Noviembre 23, 2025, 02:12:33 »
"Vera Cruz", la verdad no me suena...
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

marcos64

  • Commodore Master
  • *****
  • Mensajes: 2972
    • Ver Perfil
    • http://marcos64.orgfree.com/
Re:Nuevos cracks de juegos clasicos.
« Respuesta #391 en: Noviembre 24, 2025, 08:57:34 »
Vives cerca?  :D
http://marcos64.orgfree.com/
Actualizacion 22/4/2018: Actualizada Load'N'Run numero 5 con nuevos TAPs y PRGs.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #392 en: Noviembre 24, 2025, 14:43:29 »
Estuve viendo en un mapa para estar seguro pero creo que estamos mas o menos a la misma distancia o quizás tú mas cerca :D
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

marcos64

  • Commodore Master
  • *****
  • Mensajes: 2972
    • Ver Perfil
    • http://marcos64.orgfree.com/
Re:Nuevos cracks de juegos clasicos.
« Respuesta #393 en: Noviembre 26, 2025, 09:03:07 »
Me referia a Santa Fe de la Vera Cruz. No se porque me sonaba que eras de esa zona. La edad haciendo de las suyas  ;D
http://marcos64.orgfree.com/
Actualizacion 22/4/2018: Actualizada Load'N'Run numero 5 con nuevos TAPs y PRGs.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #394 en: Noviembre 26, 2025, 12:21:56 »
Yo estoy bastante mas abajo :P
Al centro de Argentinia.

El que está muy cerca de ahí es @cubelindo
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

marcos64

  • Commodore Master
  • *****
  • Mensajes: 2972
    • Ver Perfil
    • http://marcos64.orgfree.com/
Re:Nuevos cracks de juegos clasicos.
« Respuesta #395 en: Noviembre 29, 2025, 20:15:55 »
Extend ha creado un nuevo crack con muchos bugfixes de un super clasico: Aztec Challenge

Juego que, estando lleno de bugs, aun asi tenia un atractivo especial. Me parece que la musica tenia gran parte de la culpa  :D

Quizas el juego era un poco demasiado ambicioso para la epoca.

EDITO: Un fix del fix https://csdb.dk/release/?id=257823




EDITO2:

Citar
Production Info
Submitted by Grue on 11 December 2025
Aztec Challenge

As usual, I used the binary from the original game to make the source code for the game and then proceeded to make fixes.

The original game was clearly coded with a machine code monitor, as the memory management used a lot of NOPs and gaps between the routines. There are strange bugs which suggest that something was patched away by altering the memory with a monitor.

I just wanted to fix the stairs level, but then the usual happened..

There is a heroine in the cover art of the game, and now you can choose to play as her by pressing F7 in the menu. The colour of the hair of the Aztec people is not white/yellow, but I decided to not care.

These notes were made during the development of this fix, some things have been forgotten for sure. My main idea was to not change the game too much, but instead to make some fixes to make the game look less jarring to the eye.

One problem with the original game is that it uses dummy loops for delays, also some levels change the timing as the levels advance. The music is played using the default CIA interrupts instead of the raster irq. When timing the screen by waiting for the proper rasterline, you'll miss the line if the music is playing at the same time. Because of this, I chose to time screens with lda $d011, bpl -. This works quite nicely on PAL systems, but because there is much less time on NTSC systems when the 9th raster line bit is on, you might see occasional problems. This could be solved by using raster irq's instead, but that would have changed the game timings too much in some of the levels.
Choices choices, if someone else wants to take this to the next level, I can share the sources, just ask.

Here is a list of the changes and some other things:

The original game told you to hit fire to start the game between the levels. It didnt react to the fire button instantly or sometimes at all, as the fire button was read between the two dummy loops that flashed the "1 up" text during the requester.
- Changed the dummy waiting loop to check for the firebutton inside the loop.

The Gauntlet
- The initial arrow was shot instantly. It felt unfair and in the end it turned out to be a bug.
- fixed the initial counter to be read from the level's initialization data instead of setting it to #1 which caused the instant shot.
- the original code did eventually set that value correctly after the player had already died.
- When a death occurred, arrows were flashed in the wrong positions before the level was reset.
- disabled arrow sprites on death

The Stairs
- Fixed the scrolling of the stairs
- the original code had 4 bugs
- wrong colors, hires instead of the intended MC mode
- What are the correct colours? The hero has white hair on the gauntlet and stairs levels. Is it because both of the levels are supposed to be yellow?
- Changed the colors to match the pyramid as seen in the gauntlet level.
- People will hate me for this for sure... :D
- The addional color init routine didnt loop, it just made the wrong color blocks
- D011 scrolling didnt wait for a new frame
- Copying new stairs to the top of the screen while scrolling was done incorrectly.
- The initial 3 stones were always in the same positions.
- Randomized the initial state
- Fixed the controls, the original code was very optimistic and caused anomalies when fire/up/down was used.
- Now just Left/Right works on the stick as intended.
- ntsc testing brought the jerky scrolling back, there doesnt seem to be enough raster time available in ntsc with this method.
- I ended up predrawing the screens and switching the screen pointer instead of printing characters into the screen mem in real time. Scrolling is now nicer on ntsc as well.

The Temple

- Cleared sprite to sprite collisions on init to prevent deaths with no apparent cause.
- Sometimes the hero teleported back the left when it should have not, there was a jump to wrong place in the move code.
- fixed

The Vermin
- Fixed the scrolling
- The vermin screen first scrolls the background characters and then copies the background chars to the same place again
- why? its not necessary and the code seems like it's structured to be copying a more complex scrolling background. Looks like WIP to me :)
- I'm not talented in pixeling and since the original didnt scroll anything there, I just commented the character scrolling code out.
- The original vermin screen timed the action by using a dummy loop (yes you read it right, what an absolute mess). It's pretty much impossible to fix it to be 100% like the original, so close enough needs to suffice here.
- The Vermin screen updated some of the vermin x-coordinates several times per frame seemingly at random, if it was near the hero.
- this turned out to just be a coincidence, the bug was in the randomization code of the next set of vermin.
- The code for the falling spiders didn't check if the spider had scrolled out of the screen during falling, it just teleported to the right at coordinate 255 instead.
- fixed the original code to check if the x-coordinate had reached zero during falling as well.
- MSB bit handling triggered when the x-coordinate reached zero, causing the sprite to flash for one frame as it teleported behind the left border.
- fixed the check, checking $ff instead of 0

HopAztec
- The right hand death arrow was left hanging in the air after hitting the hero
- Hide it after a hit
- The arrow is a MC sprite, but the MC bit wasnt set for the arrow.
- Fixed
- The color of the hero's clothing changed from white to yellow on death
- Fixed

Piranha
- The hero is split in two
- The collision detection is broken this way, and cannot be fixed without recoding the whole logic.
- Changed the splashes of the piranhas to red when they snap the hero.
- it's done in a random order and only if a "coin flip" hits.

The Bridge
- A piece of the bridge disappeared at the msb bit change.
- The reason was the check for zero, if the x-coordinate reached 0 and the msb was in, it turned off and the sprite instantly teleported behind the left border causing a momentary bridge piece to flash on the screen. Changed the code to change the msb when the coordinate reaches $ff instead.
- The color of the hero's clothing changed from white to yellow on death
- Fixed

General changes / fixes

- The game uses decimal mode for counting the score, but the irq routine didnt have cld at the start of it, which can cause anomalies, mostly in the music and sfx department.
- Added cld at the start of the irq-routine.
- A lot of initialization bugs here and there, which were way too numerous to even remember.
- A lot of unneeded data was removed and tidied up. I think this must be the smallest version of Aztec challenge there is.
- not necessary anymore as the heroine gfx got added.
- Tidied up the transitions, now it turns the screen off when the screen mode is changed etc.
- F5 key for B&W mode
- This was a childhood trauma. I had an old b/w tv connected to my C64 with an rf-cable, and you couldn't see the piranhas. So you just died without any apparent reason on that level. When I saw that at my friends place on a color tv, I understood why I was dying all the time...
- The character case change is now locked
- NMI (hitting restore) restarts the game
- Turned sprites off at the init.
- Added rand8 from Codebase64 for a better random source than dc04 reads, and applied it to the places where it matters.
- Introducing the better random algorithm made the game a lot less predictable and perhaps more difficult.
- Added alternative Heroine sprites, you can activate these by pressing f7 in the menu.
- This is a one way change as in real life, there's no going back.

About the music

It is what it is, the music changes in the game as the player advances beyond certain pointsin the level.
- when the music data changes, a pointer address is changed but the index is not (this is an intentional ugly hack in the original code)
- when the player advances more, the waveform is changed in the sid but this is not in relation to the note data, it depends on how fare in the level you are.

When you consider this, the music may sound buggy. But it is what it is. I think there should be a completely different music routine to have it work properly, and it's out of scope for this project.

Phew, there were quite a lot of bugs there, and I'm sure theres still a ton left. Even though it is a beloved classic game, that doesnt mean it was bug free.

Bugfix fix notes:

- When restarted the game, the Cosmi logo was corrupted.
- fixed
- It was possible to choose heroine again after restart.
- fixed
- Music broke completely after death at piranha level
- fixed
- There was still arrow left hanging in the air in hopaztec if msb bit was on on arrow sprite
- fixed

- On the stairs, starting of the screen was ugly and it was super ugly when restarting the level after death.
- Several possible reasons for that, but I tried to fix it by blanking the screen momentarily after death.
- this calmed down the screen and even it wasnt the main cause of the ugly execution I decided to leave it.
- Start of the stairs was randomly ugly, the reason was that screen was painted without waiting the raster line being out of visible area.

- ended up fixing all the levels by blanking screen at the start and and then paint the screen before enabling it again.
- I was going to do that already earlier but totally forgot about it...
- some levels may still show some inpurities at the start, like in the gauntlet no sand at the lowert part of the screen for the first moment of the level
- also piranha level drawing is boiled into actual playcode so it is what it is.

- On the bridge level hero sprite flashes occasionally when moving upwards, its hard to avoid as the screen update is not synced to $d012, and if we start to wait for $d012 lines for the sprite writes, timings mess up on later levels when it gets a lot faster.



Tools used:
6502 Bench
64tass
retrodebugger
VSCode editor
Exomizer

« última modificación: Diciembre 12, 2025, 21:51:31 por marcos64 »
http://marcos64.orgfree.com/
Actualizacion 22/4/2018: Actualizada Load'N'Run numero 5 con nuevos TAPs y PRGs.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #396 en: Noviembre 30, 2025, 00:23:37 »
No lo tuve en la época y ya luego cuando me llegó no me terminó de enganchar especialmente.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

marcos64

  • Commodore Master
  • *****
  • Mensajes: 2972
    • Ver Perfil
    • http://marcos64.orgfree.com/
Re:Nuevos cracks de juegos clasicos.
« Respuesta #397 en: Diciembre 03, 2025, 10:35:57 »
Nostalgia ha sacado una version mejorada del crack del Street Rod

Citar
Onesided, fixed glitch in graphics when changing screen modes, color fixes and text fixes

https://csdb.dk/release/?id=257635



Y ya tenemos arbolito  ;D
http://marcos64.orgfree.com/
Actualizacion 22/4/2018: Actualizada Load'N'Run numero 5 con nuevos TAPs y PRGs.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #398 en: Diciembre 03, 2025, 11:39:31 »
Y ya tenemos arbolito  ;D

Un clásico :)
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 14710
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Nuevos cracks de juegos clasicos.
« Respuesta #399 en: Hoy a las 04:40:13 »
Seguro esto ya se publicó por este hilo, pero a raiz del programa del Dany que se termina el Impossible Mission, estuve leyendo las mejoras de esta versión "Revisited" y la verdad es para sacarse el sombrero!!

Impossible Mission Revised
https://csdb.dk/release/?id=242553&show=notes#notes


Aquí va una traducción de todo lo que hicieron, espectacular. Ya solo que marque en el mapa las habitaciones que falta terminar de revisar es una gran ayuda, pero tiene muchas cosas mas.

Citar
# Impossible Mission Revised
**Basado en la versión original de Australia (AUS).**

El juego no tenía protección de disco, pero quedaban al menos 3 "bombas" en el código. El programa verifica si la dirección `$d024` contiene `$0a`; si no, se bloquea. El juego realiza un `JSR` (saltar a subrutina) al registro CIA `$dd03` donde almacena un `$60` previamente en el código, el cual luego se sobrescribe. Finalmente, tiene una llamada IRQ a la *zero page* solo para actualizar el contador de frames, que se sobrescribe al reiniciar. Todo esto ha sido eliminado y el código se ha limpiado.

Es un movimiento audaz intentar mejorar un videojuego perfecto; uno podría pensar qué demonios se podría mejorar. Revisé todos los *ports* del juego en YouTube y noté que, en la versión de BBC Micro, la pantalla temblaba cuando el héroe caía desde una altura considerable. En la versión de PlayStation, había una función excelente donde el mapa marcaba qué habitaciones habían sido vaciadas tras registrarlas. También encontré algunos errores (*bugs*) y lugares para pulir y hacer el juego aún más disfrutable de lo que era originalmente.

Para ofrecer un mayor desafío, se han rediseñado las plantillas para cortar las piezas de los puzles, de modo que las formas familiares ya no son exactamente iguales. Además, el generador de números aleatorios (RNG) ahora se gestiona de forma que cada partida sea diferente.

Personalmente, estoy muy contento con el resultado; ¡me encanta este juego, y ahora incluso más!

Los "dolores de cabeza" habituales pueden leerse en el registro de cambios a continuación.

---

### CAMBIOS:

* **Generador de Números Aleatorios (RNG):** Se insertó el algoritmo X ABC de *codebase64* en el código base.
    * Al inicio del juego, debes interactuar con el joystick 2 para añadir entropía al inicio del RNG.
    * El jugador debe presionar el botón del joy2 y, al soltarlo, la semilla del RNG se establece con la información de la interacción del usuario.
* **Rutina de espera:** Se cambió el bucle de espera vacío por una espera basada en `$D012`, en lugar de quemar ciclos de CPU para medir el tiempo.
    * Esto corrige los tiempos en sistemas con aceleradores de CPU.
* **Reloj del juego:** Ahora se ajusta con información PAL/NTSC. 1 segundo equivale a 60 frames en NTSC y 50 en PAL.
    * El juego original corría más lento en sistemas PAL, ya que un segundo se contaba como 60 frames en todas las versiones.
    * Usé la detección PAL/NTSC del juego para configurar el valor del tic del reloj.
* **Efectos de Game Over:** Tras la risa de "Game Over", la pantalla tiembla y se pone en blanco; la pantalla no quedaba centrada y el color negro asomaba por los bordes.
    * Se restauraron los valores por defecto de la pantalla tras el temblor.
* **Audio:** Se añadió código para reproducir los *samples* con más volumen en el chip 8580.
    * En el emulador Vice parece distorsionar, pero suena bien en hardware real.
* **Compresión de datos:** TNT ayudó proponiendo el empaquetado de los gráficos de Elvin Atombender.
    * TNT suministró los datos empaquetados y la rutina de descompresión.
    * La información de 1k de color ahora solo ocupa 157 bytes.
* **Guardado de archivos:** Se simplificó el proceso de guardado.
    * El original era demasiado complicado: primero guardaba "HI2", luego borraba "HI" y renombraba "HI2" a "HI".
    * El nuevo sistema utiliza sobreescritura directa.
* **Memoria:** Las rutinas de IRQ y guardado de archivos se movieron a una zona más baja de la memoria.
    * El guardado funciona ahora con el *Action Replay* activo.
    * El FC3 corrompe la pantalla tras guardar, pero el guardado funciona y puedes reiniciar el juego usando RUN/STOP, RESTORE o ambos.
* **Escena de Game Over por tiempo (Time-out):**
    * Se corrigieron errores donde el último byte del banco era visible y los sprites del ascensor hacían que la escena pareciera rota.
    * Ahora el último byte del banco se limpia durante el temblor de pantalla y se restaura después.
    * El sprite de la pared del ascensor se apaga y el sprite del techo se mueve con la pantalla. La escena se ve mucho mejor.
* **Habitaciones 15 y 20:** Tenían asignado incorrectamente color de alta resolución (*hires*) a teselas multicolor (MC).
    * Se cambió el código de color para mostrar las teselas como MC. Esto corrige lo que considero era un error original.
* **Mapa mejorado:** Si una habitación ha sido vaciada al registrarla, aparece hueca en el mapa del jugador.
    * Esto hace el juego un poco más cómodo de jugar (fue sorprendentemente difícil de añadir).
* **Caídas:** Si el jugador acelera al caer por encima de cierto umbral, la pantalla tiembla.
    * Se implementó un temblor aleatorio de 5 frames en `$d011`.
    * Se añadió un efecto de sonido para el golpe contra el suelo (*thud*).
    * Se corrigió un error del original donde el byte de caída no se activaba al morir, causando procesamiento innecesario del héroe.
* **Formato de hora:** El reloj del juego está ahora en formato de 24 horas. (Dudo que los agentes oficiales usen AM/PM para evitar confusiones).
* **Puzles de notas:** Las habitaciones de puzles de notas ahora están marcadas en el mapa con un patrón de tablero (ajedrezado).
* **Guarida de Elvin:** La puerta de la guarida de Elvin se marca en el mapa, pero primero debes recolectar los objetos necesarios.
* **Reloj de Sprites:** Código finalizado; muestra horas y minutos. (Muestra el reloj en el campo de juego, lo cual fue un dolor de cabeza).
* **Optimización de memoria:** Me quedé sin espacio de nuevo. Se empaquetó más contenido de la pantalla final de Elvin y se movieron bloques grandes de código bajo la E/S (principalmente los encargados de la aleatorización inicial).
* **Contraseñas:** El juego ahora tiene 32 contraseñas diferentes. Se elige una al azar al empezar. (Luego se redujo a 24 para que quepan en una sola página de memoria).
* **Renderizado del reloj:** En habitaciones normales, el reloj se renderiza con caracteres en la esquina superior derecha.
    * No se muestra mientras el jugador registra objetos o en habitaciones de puzles de notas por conflictos con el set de caracteres.
* **Animación de robots:** Nuevos frames de animación por Trurl.
    * Ahora puedes ver la parte trasera del robot si el juego lo elige al azar.
    * Fue muy difícil de añadir porque el juego tenía su lógica muy ajustada a solo 6 frames. ¡Ahora tenemos 12 frames y aún queda algo de memoria!
* **Interfaz:** Corregido un error de color en la interfaz del teléfono en el mensaje "orientation corrected".
* **Diseño del reloj (Sugerencia de "the wolf" de Lemon64):**
    * El reloj corre de 12:00 a 18:00 para que el punto y coma encaje limpiamente.
    * Debido a limitaciones de espacio (16 píxeles), se usaron desplazamientos de bits (LSR/ASL) para crear un espacio de 3 píxeles para el punto y coma entre los dígitos.
* **Tipografía:** Preparativos para cambiar la fuente ROM de Commodore por la fuente "7-up".
* **Punteros de Sprites:** Los sprites extra de los robots se movieron a números de puntero pares para evitar conflictos con la lógica de "mirar atrás" del juego.
* **Desafío:** Plantillas de puzles modificadas para aumentar la dificultad.
* **Puntuación:** Corrección en el cálculo de puntos para contar segundos en el intervalo de 0-6 horas en lugar de 12-18.

---

### Herramientas tradicionales utilizadas:
64tass, Ghidra, 6502 Bench, 010 Editor, Spritepad Pro, Charpad Pro, VSCode editor, Retrodebugger, Vice, Exomizer, CC1541, Dart, DirMaster.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com