¡Genial, gracias! Debe significar que el código ya estaba optimizado, aunque le eché un vistazo rápido y detecté algunos despistes.
En el desplazamiento 2981, hay un call &0836:ret que se podría sustituir por un jp &0836.
Unas líneas más abajo, en el desplazamiento 2992 vemos: ld de ,&9C00:add hl,de. ¡Obviamente no tiene sentido sumarle 0 al registro L! Así que es mejor usar: ld a,h:add &9C:ld h,a, lo que evita la sobrecarga de los 16 bits. A menos que sea código automodificable, por supuesto, pero no parece ser el caso aquí.
Me pregunto si tus modelos están bien entrenados para la optimización, aunque confieso que soy un ignorante en todo esto.
Le pasaré esa información a Claude y veré qué dice.
[EDIT] Sí, está de acuerdo, pero dijo lo siguiente:
Ambas opciones son correctas; solo ahorrarían unos 7 µs por ciclo de juego como máximo, lo cual es demasiado pequeño para apreciarse.
#2981, call #0836 : ret → jp #0836: ahorra 5 µs (call 5 + ret 3 frente a jp 3). Este final solo se ejecuta para la copia original, que durante el juego ahora es solo la copia completa ocasional; los menús, el título y las transiciones aún lo usan. La copia de mi ciclo de juego ya termina con jp music.
#2992, ld de,#9C00 : add hl,de → ld a,h : add a,#9C : ld h,a: ahorra 2 µs (6 frente a 4). Es seguro: el byte bajo sumado es 0, por lo que nunca hay un acarreo desde L. A está libre en ese punto, porque las siguientes instrucciones lo vuelven a cargar con ld a,(#316B), y no está automodificado. Este es el cálculo de dirección del limpiado original, que solo se ejecuta en limpiados fuera del ciclo de juego; el limpiado de mi ciclo de juego obtiene la dirección de la tabla de líneas #E600 en su lugar.
Frente a un ciclo de juego de unos 80–95 ms, eso es menos del 0,01 %. El juego está lleno de patrones como estos; en su mayoría están fuera de las rutinas que cuestan fotogramas.
Sí, había puesto un punto de interrupción en la línea 2981 y solo se llama cuando golpean al jugador, pero se llama un montón de veces y es código del bucle del juego. Dile al tal Claude este que se lo tiene que currar más
LOL sí, pero en mi opinión Claude se está volviendo demasiado bueno en esto.
El juego en el que estoy trabajando lo estoy escribiendo a la antigua usanza, pero optimizar juegos antiguos supera mi nivel de habilidad, y es bastante divertido usar a Claude para hacerlo.