KITAQ SISTEMA DE DESARROLLO
MANUAL DE USO 2026.09

SERIE KITAQ • EDICIÓN DE REFERENCIA

KOKURA

Ejecutar, observar y registrar

Desde tu primera línea hasta la ejecución, la observación y la repetición de pruebas.
Código fuente recopilado: 14 de septiembre de 2026 · Edición inglesa: 14 de septiembre de 2026

CLI de Windows ya compilada

La raíz del repositorio incluye kokura-cli.exe. Descarga el ZIP y conserva los avisos de licencia junto al ejecutable. Esta CLI para Windows x64 no necesita Rust, Python ni .NET para ejecutarse. Los pasos de compilación siguientes sirven para reconstruirla desde las fuentes. DAISUKE OBA licencia el código independiente bajo MIT; las condiciones de las dependencias figuran en BINARY_NOTICES.md y licenses/.

1. Para qué sirve KOKURA

KOKURA emula software GB/CGB y registra imágenes, audio, ejecución de CPU, memoria, bancos, entrada y eventos de diagnóstico. El ejecutable de línea de comandos se llama kokura-cli.exe.

2. Compilar y ejecutar la primera ROM

powershell
Push-Location .\kokura
.\scripts\build.ps1
Pop-Location
.\kokura\kokura-cli.exe .\out\hello.gb --run-frames 120 --png .\out\hello.png --dump-report .\out\hello.json

Instala Rust y Cargo. Si solo necesitas la CLI, compila el crate indicado. Usa la ROM hello del volumen 1. El valor predeterminado es un fotograma; establece --run-frames para llegar a la escena deseada. Son fotogramas emulados, no segundos de espera real.

3. Elegir DMG o CGB

--hardware auto es el valor predeterminado; dmg y cgb fuerzan un modo. Prueba las ROM de modo dual en ambos. Que una ROM exclusiva de CGB rechace arrancar como DMG no demuestra por sí solo un fallo del emulador.

powershell
.\kokura\kokura-cli.exe .\out\game.gbc --hardware cgb --run-frames 180 --png .\out\cgb.png

4. Proporcionar controles

--input mantiene pulsada una combinación y --input-seq define acciones a lo largo del tiempo. Los botones son A,B,START,SELECT,UP,DOWN,LEFT,RIGHT; NONE indica que se sueltan. En PowerShell, encierra entre comillas las secuencias con punto y coma.

powershell
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 120 --input-seq "NONE:30;A:1;NONE:89" --png .\out\after_a.png --dump-report .\out\after_a.json

Incluye intervalos sin pulsación para probar flancos de entrada. Mantener A durante 120 fotogramas no equivale a pulsarlo 120 veces. En la lección del contador, la secuencia anterior debe incrementarlo una sola vez.

5. Imágenes, vídeo y sonido

--png guarda la pantalla final. --screenshot y --screenshot-frames capturan fotogramas concretos. --record-video graba vídeo y --record-wav graba audio. Un WAV silencioso es normal si el programa hello no utiliza la APU.

powershell
.\kokura\kokura-cli.exe .\out\sound.gb --run-frames 180 --record-wav .\out\sound.wav --record-wav-frames 1:180 --png .\out\sound.png
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 180 --record-video .\out\play.gif --record-video-frames 30:120

Los intervalos usan start:end. Conserva el informe para distinguir los fotogramas acumulados en un estado cargado de las posiciones de esta ejecución. Comprueba por separado sonido audible, afinación, interrupciones y saturación. La grabación del emulador no demuestra igualdad muestra a muestra con la consola física.

6. Guardar y reanudar estados

powershell
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 120 --save-state .\out\title.kqs
.\kokura\kokura-cli.exe .\out\game.gb --load-state .\out\title.kqs --input START --run-frames 30 --save-state .\out\started.kqs --png .\out\started.png

Normalmente debes usar la misma ROM y versión del emulador. Un estado de emulación no es el archivo de guardado propio del juego. El KQS de la CLI y el estado JSON de la API C son formatos diferentes; cambiar la extensión no los convierte.

7. Observar símbolos y memoria

Los archivos .map, .source_map.txt, .dbg2.json y .build_report.json pueden detectarse junto a la ROM. Conserva los correspondientes a esa compilación; mezclar archivos de otra versión puede inducir a error.

powershell
.\kokura\kokura-cli.exe .\out\game.gb --symbols .\out\game.map --watch-window wram:0xC000:0x40 --run-frames 60 --dump-report .\out\watch.json

wram es el nombre de la ventana de observación, 0xC000 su inicio y 0x40 su longitud. Las ventanas pequeñas facilitan reconocer variables que cambian. --watch-baseline-mode compara con valores iniciales, el fotograma anterior o una referencia con nombre.

8. Paradas, reproducción y análisis inverso

--breakpoint, --watchpoint, --run-until y --snapshot-at detienen o guardan según condiciones. Sus minilenguajes de argumentos son distintos: consulta la referencia y la ayuda capturada.

powershell
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 120 --replay-interval 1 --replay-max-checkpoints 120 --dump-replay-tape .\out\baseline.replay.json --dump-report .\out\baseline.json
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 120 --replay-interval 1 --compare-replay-tape .\out\baseline.replay.json --dump-report .\out\compare.json

Localiza la primera divergencia y estrecha después el intervalo observado. --decompile-out genera pseudocódigo y flujo de control; --disassemble-out, instrucciones de CPU. La descompilación no recupera perfectamente el C original ni los nombres de variables.

9. Enviar diagnósticos a SARAKURA

powershell
.\kokura\kokura-cli.exe .\out\game.gb --run-frames 300 --emit-diagnostics .\out\gb_events.jsonl --dump-report .\out\run.json
.\sarakura\target\debug\sarakura.exe gb analyze --metadata .\out\build.json --events .\out\gb_events.jsonl --out .\out\gb_report --fail-on error

--emit-diagnostics de KOKURA recibe un nombre de archivo JSONL, por ejemplo out/gb_events.jsonl. Un informe JSON normal o una traza de CPU en JSONL no son entradas equivalentes de eventos de diagnóstico.

10. Trabajos de comunicación

pair modela dos máquinas; four_player_adapter, una topología lógica en la que el anfitrión selecciona al interlocutor; dmg07, el protocolo del adaptador físico DMG-07. Proporciona el trabajo JSON con --link-job o configura las sesiones con --link-topology y --link-session.

powershell
.\kokura\kokura-cli.exe --link-topology pair --run-frames 120 --link-session "name=p1|slot=0|rom=out/host.gb|input=NONE" --link-session "name=p2|slot=1|rom=out/peer.gb|input=NONE" --dump-report .\out\pair.json

Cada ROM debe implementar la comunicación. Ejecutar dos programas hello corrientes no prueba la biblioteca de enlace. Registra ROM, ranura, entrada y estado de cada sesión, y distingue qué comportamiento físico sigue sin comprobarse.

11. Aplicaciones externas

La ABI C publicada está en kokura-capi. Python puede acceder mediante el puente y el crate suministrados. Antes de investigar la integración, prepara una reproducción mínima desde la CLI.

12. Leer los informes en orden

Empieza por los fotogramas ejecutados y el motivo de parada; continúa con pantalla, entrada, sonido, errores y avisos, y perfil de ejecución. Una pantalla de título sin entrada durante mucho tiempo puede producir avisos legítimos de imagen estática o PC repetido. Interprétalos según la escena prevista, no como fallos automáticos.

13. Ejemplos de comandos y sintaxis exacta de los argumentos

Ejecute estos comandos de PowerShell desde el directorio que contiene los repositorios situados al mismo nivel. Cree primero el directorio de salida con New-Item -ItemType Directory -Force out. Sustituya out/game.gb por su ROM. KOKURA recibe las opciones después de la ruta de la ROM; no utiliza el subcomando run de KUROSAKI. --help muestra las opciones del ejecutable instalado.

13.1 Elegir una operación y un límite de fotogramas

ArgumentoFinalidad y comportamiento
ROMArchivo ROM para una ejecución normal. Una tarea o una matriz puede proporcionar su propia ROM.
--hardware auto, dmg, cgbSelecciona el hardware. El valor predeterminado es auto; pruebe explícitamente ambos modos si el juego admite las dos máquinas.
--run-frames 120Máximo de fotogramas para la ejecución directa; el valor predeterminado es 1. Las condiciones de parada pueden terminarla antes. Las secuencias de entrada también tienen sus propias duraciones.
--job out/test.jsonEjecuta una tarea JSON. Su límite de fotogramas se indica en run.frames; la ROM, el estado, las entradas y las capturas proceden de la tarea. Las rutas relativas internas se resuelven con respecto al archivo de la tarea.
--dump-report out/run.jsonGuarda el informe JSON resultante. Sin un destino, la ejecución normal imprime el informe en la salida estándar.
--regression-matrix out/matrix.jsonEjecuta tareas con observaciones esperadas. Revise los resultados de cada caso en el JSON: que el comando de la matriz se ejecute correctamente no significa que todos los casos hayan pasado.

Elija una operación por invocación. El orden de prioridad es: descompilación, desensamblado, matriz de regresión, tarea de enlace, sesiones enlazadas definidas en la línea de comandos y, por último, ejecución normal. Combinar modos no hace que se ejecuten uno tras otro.

powershell
.\kokura\kokura-cli.exe out/game.gb --hardware dmg --run-frames 120 --png out/game.png --dump-report out/run.json

Este comando avanza hasta 120 fotogramas emulados y guarda la pantalla final y un informe. Compruebe en el informe el número real de fotogramas y el motivo de la parada antes de interpretar la imagen.

13.2 Mantener botones pulsados o indicar una secuencia temporizada

OpciónSintaxis y uso
--input "A,RIGHT"Mantiene ambos botones pulsados durante una ejecución directa. Los nombres no distinguen mayúsculas de minúsculas. NONE suelta todos los botones.
--input-seq "NONE:30;A:1;NONE:89"Intervalos BUTTONS:FRAMES separados por punto y coma que se ejecutan en orden. Esta secuencia suelta los botones durante 30 fotogramas, pulsa A durante uno y los suelta durante 89.
--input-script "NONE:30;A:1;NONE:89"Acepta el mismo texto de secuencia; no es un nombre de archivo. Si se indican ambas opciones de secuencia, prevalece --input-script.

Los nombres de los botones son RIGHT,LEFT,UP,DOWN,A,B,SELECT,START. Las máscaras hexadecimales son RIGHT=0x01, LEFT=0x02, UP=0x04, DOWN=0x08, A=0x10, B=0x20, SELECT=0x40 y START=0x80. Son las máscaras de entrada de KOKURA; no reutilice las del mando de NES. En PowerShell, encierre toda la secuencia entre comillas. Al probar una nueva pulsación, incluya intervalos con los botones sueltos y haga que la secuencia cubra todo el periodo que desea observar.

powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 120 --input-seq "NONE:30;A:1;NONE:89" --png out/after-a.png --dump-report out/after-a.json

En el ejemplo del contador de botones, el contador debería aumentar una vez. Una imagen estática no basta para determinar si la repetición de un botón mantenido funciona: compare una pulsación prolongada con varias pulsaciones separadas.

13.3 Capturar imágenes, movimiento y sonido

OpciónSintaxis y uso
--png out/final.pngGuarda la pantalla final; tiene prioridad sobre --screenshot si se indican ambas opciones.
--screenshot out/frame.pngOtro destino para la captura de pantalla. Admite PNG y BMP; una ruta sin extensión recibe .png.
--screenshot-frames 30:32Guarda cada fotograma seleccionado e incluye su número en el nombre del archivo. Requiere un destino de captura.
--record-wav out/audio.wavGraba audio en WAV. Utilice una ROM y un intervalo que realmente reproduzcan sonido.
--record-wav-frames 1:180Selecciona el intervalo de grabación, incluidos ambos extremos. Son números de fotograma, no cantidades de muestras.
--record-video out/motion.gifGraba movimiento en GIF o Y4M. Una ruta sin extensión recibe .gif; MP4 no es un formato admitido.
--record-video-frames 30:120Selecciona el intervalo de vídeo, incluidos ambos extremos.
--audio-buffer-frames 8192Fija la capacidad del búfer de audio en tramas de muestras estéreo, no en fotogramas de vídeo emulado ni en muestras individuales de izquierda o derecha.

Los intervalos de captura usan números decimales a partir de 1: 30 selecciona un fotograma y 30:32 incluye los fotogramas 30, 31 y 32. Se rechazan el cero y los intervalos invertidos. Los índices corresponden a la ejecución actual, por lo que debe conservar el informe al reanudar un estado anterior. Cree los directorios padre antes de capturar.

powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 180 --record-wav out/audio.wav --record-wav-frames 1:180 --record-video out/motion.gif --record-video-frames 30:120

Use varios fotogramas para evaluar el desplazamiento o la animación. Use el WAV para evaluar el sonido: un número de finalización visible no demuestra que haya sonado el canal previsto.

13.4 Guardar y reanudar el estado de la máquina

OpciónFinalidad y prioridad
--save-state out/checkpoint.kqsGuarda el estado de la máquina al terminar la ejecución.
--snapshot out/checkpoint.kqsTiene la misma función de salida y prioridad sobre --save-state.
--load-state out/checkpoint.kqsCarga un estado KQS antes de ejecutar.
--resume-state out/checkpoint.kqsTiene prioridad sobre --load-state y puede sustituir el estado de entrada de una tarea.
--snapshot-at "frame=60&&frame_end=>out/frame60.kqs"Guarda cuando se cumple una condición de observación. Repita la opción para varias solicitudes. Sin =>path, se genera en el directorio actual un nombre numerado a partir del nombre de la ROM.

Utilice un estado compatible con la ROM y la versión del emulador. KQS representa el estado de la máquina, no la RAM de guardado del cartucho ni la serialización JSON de la API de C.

powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 120 --save-state out/title.kqs
.\kokura\kokura-cli.exe out/game.gb --resume-state out/title.kqs --input START --run-frames 30 --png out/started.png --snapshot out/started.kqs

13.5 Observar regiones de memoria con nombre

OpciónSintaxis y uso
--symbols out/game.mapCarga los símbolos de la compilación correspondiente.
--source-map out/game.source_map.txtRelaciona la ejecución con las ubicaciones del código fuente.
--toolchain-metadata out/game.dbg2.jsonCarga metadatos estructurados de la cadena de herramientas. También pueden detectarse los archivos auxiliares correspondientes junto a la ROM.
--watch-window "player:0xC700:16"Observa 16 bytes desde 0xC700 con la etiqueta player. Repita la opción para otras regiones; observa memoria, pero no detiene la ejecución por sí misma.
--watch-baseline-mode initialCompara con los valores iniciales. previous-frame compara fotogramas consecutivos; named selecciona una referencia capturada explícitamente.
--watch-baseline-tag readySelecciona el nombre de la referencia para una comparación con referencia nombrada.
--capture-watch-baseline "ready=>frame=30&&frame_end"Captura una referencia con nombre cuando se cumple una condición. Repita la opción para capturar otras referencias.
--watch-fields preview,diffElige grupos de campos de observación: hash, activity, preview, baseline, diff, insights o all. Los bytes de vista previa son una muestra limitada, no un volcado de memoria ilimitado.
--report-sections cpu,watched_memoryConserva las secciones indicadas del informe. meta y schema_version siguen presentes. Los nombres desconocidos no crean secciones nuevas.
--report-minimal cpu,watched_memoryOtra opción para indicar la lista de secciones, con prioridad sobre --report-sections. Requiere valores separados por comas; no es un interruptor booleano.

Las direcciones y los tamaños aceptan decimal o hexadecimal con 0x. Localice las variables mediante los símbolos de la compilación actual; 0xC700 es solo una dirección de ejemplo, no una ubicación estándar del jugador.

powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 60 --watch-window "player:0xC700:16" --watch-fields preview,diff --report-sections cpu,watched_memory --dump-report out/watch.json

13.6 Detenerse por condiciones de ejecución o eventos del hardware

OpciónSintaxis y finalidad
--breakpoint "pc:0x0150"Se detiene en una dirección de CPU. symbol:main utiliza símbolos; añada @bank:2 para limitar el banco.
--watchpoint "player@0xC700+4"Se detiene ante escrituras en una región de cuatro bytes. El prefijo opcional da nombre al punto de vigilancia; si se omite +size, se vigila un byte.
--stop-on-mmio "scroll@0xFF43"Se detiene al escribir en el registro MMIO indicado, SCX en este caso.
--stop-on-irq "vblank:serviced"Selecciona una fuente de interrupción y una fase: requested, serviced, blocked o any. Una fase sin fuente coincide con cualquier fuente.
--stop-on-dma oam_startSelecciona un evento DMA. Nombres admitidos: oam_start, oam_complete, hdma_start, hdma_block, hdma_complete, hdma_cancel, gdma_stall, hdma_deferred, hdma_ignored.
--run-until "frame=60&&frame_end"Se detiene cuando coinciden todos los términos de una condición de observación. Repita la opción para añadir solicitudes.

Los marcadores de punto de interrupción pc:, symbol: y @bank: distinguen mayúsculas de minúsculas. Las direcciones de memoria y los bancos usan decimal o hexadecimal con 0x. Mantenga un límite de fotogramas aunque solicite una parada cuya condición podría no producirse nunca.

Las condiciones de observación usan && como AND; no son expresiones de C. Los términos admitidos son frame=, ly=, pc=, bank=, bank_pc=bank:pc, symbol=, source=, event=, ppu_mode= (o mode=) y basis=. Los valores de fotograma y LY son decimales. Los términos de símbolo, origen y evento comparan texto. Los valores de basis incluyen frame_start, frame_end, step, event, trace, snapshot, stop; también se aceptan los términos independientes frame_start, frame_end, stop y vblank. Comparaciones como hp<10 no forman parte de esta gramática.

powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 120 --breakpoint "pc:0x0150" --snapshot out/entry.kqs --dump-report out/entry.json
.\kokura\kokura-cli.exe out/game.gb --run-frames 120 --stop-on-mmio "scroll@0xFF43" --dump-report out/scroll-write.json

Use el primer comando para examinar el punto de entrada y el segundo para identificar el código que cambia el desplazamiento horizontal. Compruebe si se produjo realmente la parada solicitada.

13.7 Registrar puntos de observación y comparar ejecuciones

OpciónFinalidad
--trace-point "frame=30&&frame_end"Registra una observación cuando se cumple la condición. Repita la opción para varios puntos.
--timeline-out out/timeline.jsonlGuarda la cronología de observaciones.
--trace-jsonl out/timeline.jsonlOtro destino para la cronología, con prioridad sobre --timeline-out. No solicita una traza exhaustiva de todas las instrucciones.
--timeline-format jsonlSelecciona jsonl (predeterminado) o csv; elija usted mismo la extensión correspondiente.
--replay-interval 1Habilita los puntos de control de reproducción y elige el intervalo en fotogramas.
--replay-max-checkpoints 120Limita los puntos de control conservados; el valor predeterminado es 16, con un intervalo de 1.
--rewind-on-stop-frames 10Solicita retroceder después de una parada usando el historial de reproducción conservado.
--stop-on-divergenceHabilita el comportamiento de parada por divergencia del controlador de reproducción.
--dump-replay-tape out/baseline.jsonExporta los datos de reproducción registrados. Debe habilitar su registro para generarlos.
--compare-replay-tape out/baseline.jsonCompara con datos de reproducción exportados. Use la misma ROM, entradas y estado inicial para una comparación determinista.
--compare-replay-watch-onlyRestringe la comparación a las observaciones de memoria vigilada, sin tratarla como una comparación completa de la máquina.
--snapshot-on-replay-mismatch out/mismatchProporciona un prefijo para los archivos de investigación cuando la comparación detecta una diferencia.
powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 60 --replay-interval 1 --replay-max-checkpoints 60 --dump-replay-tape out/baseline.json --dump-report out/baseline-report.json
.\kokura\kokura-cli.exe out/game.gb --run-frames 60 --replay-interval 1 --replay-max-checkpoints 60 --compare-replay-tape out/baseline.json --dump-report out/compare.json

Compruebe el resultado de la comparación y la primera diferencia en el informe. Generar ambos archivos no basta para que la comparación se considere superada.

13.8 Diagnósticos e investigación reproducible

OpciónComportamiento real
--emit-diagnostics out/events.jsonlExporta eventos de diagnóstico para SARAKURA.
--diagnostics-jsonl out/events.jsonlOtro destino de diagnóstico para ejecuciones directas; --emit-diagnostics tiene prioridad.
--repro-bundle out/repro.zipEmpaqueta un informe, eventos de diagnóstico y un manifiesto. La ROM y los metadatos se referencian por ruta, sin incorporarse al paquete; las capturas, estados y trazas no se incluyen automáticamente.
--break-on-diagnostic allExamina los diagnósticos del informe final para capturar archivos de investigación. Esto no detiene la CPU en la primera instrucción problemática. Con cualquier filtro no vacío, cualquier diagnóstico final puede activar la ruta de captura.
--png-on-diagnostic out/diagnostic-imagesDirectorio de la pantalla final de diagnóstico, usado con la captura de diagnósticos. El archivo se llama diagnostic_000001.png.
--snapshot-on-diagnostic out/diagnostic-statesDirectorio de destino para diagnostic_000001.kqs. Estas capturas reflejan el estado final actual, no el instante original de cada evento.
--diagnostic-pack NAMESe acepta el argumento, pero la ruta de ejecución no aplica un paquete de diagnósticos.
--diagnostic-rule RULESe acepta y puede repetirse, pero la ruta de ejecución no aplica esta selección de reglas.
--diagnostic-summary-limit NSe acepta el argumento, pero la ruta de ejecución no aplica este límite al resumen.
powershell
.\kokura\kokura-cli.exe out/game.gb --run-frames 180 --emit-diagnostics out/events.jsonl --dump-report out/run.json --break-on-diagnostic all --png-on-diagnostic out/diagnostic-images --snapshot-on-diagnostic out/diagnostic-states --repro-bundle out/repro.zip

Para detenerse en una instrucción o escritura concreta, use las opciones del depurador de 13.6. Interprete los diagnósticos en su contexto: una pantalla de título deliberadamente inactiva puede producir observaciones que no son defectos del juego.

13.9 Desensamblar instrucciones o examinar pseudocódigo

OpciónSintaxis y finalidad
--disassemble-out out/code.txtDecodifica las instrucciones de la ROM sin ejecutar la tarea normal de emulación.
--disassemble-range "0:0100-0150"Selecciona BANK:START-END; repita la opción para más intervalos. Los tres números son hexadecimales, incluso sin 0x.
--disassemble-format texttext (predeterminado), markdown o json.
--decompile-out out/functions.jsonGenera pseudocódigo e información de flujo de control.
--decompile-format jsonjson (predeterminado), markdown o text.
--decompile-function mainSelecciona una función; repita la opción para más funciones. Los símbolos correspondientes mejoran su identificación.
--decompile-allIncluye todas las funciones con nombre conocidas por el descompilador.
--decompile-annotations out/annotations.jsonLee anotaciones en el formato JSON del descompilador.
--decompile-trace out/trace.jsonLee metadatos de traza del descompilador; un registro JSONL de diagnóstico cualquiera no los sustituye.
powershell
.\kokura\kokura-cli.exe out/game.gb --disassemble-range "0:0100-0150" --disassemble-out out/entry.txt --disassemble-format text
.\kokura\kokura-cli.exe out/game.gb --symbols out/game.map --decompile-function main --decompile-out out/main.md --decompile-format markdown

El desensamblado sirve para comprobar las instrucciones generadas; el pseudocódigo ayuda a recorrer el flujo de control. Ninguno recupera exactamente el programa C original. Conserve los símbolos y metadatos de la misma compilación de la ROM.

13.10 Ejecutar varias máquinas conectadas

OpciónSintaxis y finalidad
--link-job out/pair.jsonLee la topología y las sesiones de una tarea de enlace JSON; las rutas relativas se resuelven desde el directorio de la tarea.
--link-topology pairSelecciona pair, four_player_adapter o dmg07 para las sesiones definidas en la línea de comandos.
--link-session SPECAñade una sesión. Se requieren al menos dos. En PowerShell, encierre entre comillas toda la cadena cuyos campos están separados por barras verticales.
--link-initial-peer-slot 1Elige el interlocutor inicial cuando la topología permite seleccionarlo.

Los campos de sesión incluyen name, slot, rom, symbols, source_map, toolchain_metadata, load_state, save_state, input, input_sequence, audio_buffer_frames y watch_window. rom es obligatorio. Un campo de vigilancia puede contener varias regiones separadas por comas, como a:0xC700:4,b:0xC710:4. Use programas que realmente intercambien datos serie: dos pantallas en ejecución no demuestran por sí solas que exista comunicación.

Referencia de sintaxis de comandos

La siguiente ayuda se capturó para esta edición del código fuente. Consúltala para conocer los argumentos opcionales, los valores predeterminados y los valores admitidos. Sustituye los nombres de archivo ilustrativos por tus propios archivos. Las respuestas capturadas de las herramientas conservan su redacción original.

kokura
help
Usage: kokura-cli.exe [OPTIONS] [ROM]

Arguments:
  [ROM]  

Options:
      --hardware <HARDWARE>
          [default: auto] [possible values: auto, dmg, cgb]
      --job <JOB>
          
      --link-job <LINK_JOB>
          
      --link-topology <LINK_TOPOLOGY>
          
      --link-initial-peer-slot <LINK_INITIAL_PEER_SLOT>
          
      --link-session <LINK_SESSIONS>
          
      --regression-matrix <REGRESSION_MATRIX>
          
      --run-frames <RUN_FRAMES>
          [default: 1]
      --input <INPUT>
          
      --input-seq <INPUT_SEQ>
          
      --load-state <LOAD_STATE>
          
      --resume-state <RESUME_STATE>
          
      --save-state <SAVE_STATE>
          
      --dump-report <DUMP_REPORT>
          
      --dump-replay-tape <DUMP_REPLAY_TAPE>
          
      --compare-replay-tape <COMPARE_REPLAY_TAPE>
          
      --snapshot-on-replay-mismatch <SNAPSHOT_ON_REPLAY_MISMATCH>
          
      --screenshot <SCREENSHOT>
          
      --png <PNG>
          
      --snapshot <SNAPSHOT>
          
      --trace-jsonl <TRACE_JSONL>
          
      --diagnostics-jsonl <DIAGNOSTICS_JSONL>
          
      --repro-bundle <REPRO_BUNDLE>
          
      --png-on-diagnostic <PNG_ON_DIAGNOSTIC>
          
      --snapshot-on-diagnostic <SNAPSHOT_ON_DIAGNOSTIC>
          
      --break-on-diagnostic <BREAK_ON_DIAGNOSTIC>
          
      --input-script <INPUT_SCRIPT>
          
      --screenshot-frames <SCREENSHOT_FRAMES>
          
      --record-wav <RECORD_WAV>
          
      --record-wav-frames <RECORD_WAV_FRAMES>
          
      --record-video <RECORD_VIDEO>
          
      --record-video-frames <RECORD_VIDEO_FRAMES>
          
      --audio-buffer-frames <AUDIO_BUFFER_FRAMES>
          
      --symbols <SYMBOLS>
          
      --source-map <SOURCE_MAP>
          
      --toolchain-metadata <TOOLCHAIN_METADATA>
          
      --watch-window <WATCH_WINDOWS>
          
      --watch-baseline-mode <WATCH_BASELINE_MODE>
          [default: initial] [possible values: initial, previous-frame, named]
      --watch-baseline-tag <WATCH_BASELINE_TAG>
          
      --capture-watch-baseline <CAPTURE_WATCH_BASELINE>
          
      --watch-fields <WATCH_FIELDS>
          
      --report-sections <REPORT_SECTIONS>
          
      --report-minimal <REPORT_MINIMAL>
          
      --snapshot-at <SNAPSHOT_AT>
          
      --run-until <RUN_UNTIL>
          
      --trace-point <TRACE_POINTS>
          
      --timeline-out <TIMELINE_OUT>
          
      --timeline-format <TIMELINE_FORMAT>
          [default: jsonl] [possible values: jsonl, csv]
      --breakpoint <BREAKPOINTS>
          
      --watchpoint <WATCHPOINTS>
          
      --stop-on-mmio <STOP_ON_MMIO>
          
      --stop-on-irq <STOP_ON_IRQ>
          
      --stop-on-dma <STOP_ON_DMA>
          
      --replay-interval <REPLAY_INTERVAL>
          
      --replay-max-checkpoints <REPLAY_MAX_CHECKPOINTS>
          
      --rewind-on-stop-frames <REWIND_ON_STOP_FRAMES>
          
      --stop-on-divergence
          
      --compare-replay-watch-only
          
      --decompile-out <DECOMPILE_OUT>
          
      --decompile-format <DECOMPILE_FORMAT>
          [default: json] [possible values: json, markdown, text]
      --decompile-function <DECOMPILE_FUNCTIONS>
          
      --decompile-all
          
      --decompile-annotations <DECOMPILE_ANNOTATIONS>
          
      --decompile-trace <DECOMPILE_TRACE>
          
      --disassemble-out <DISASSEMBLE_OUT>
          
      --disassemble-format <DISASSEMBLE_FORMAT>
          [default: text] [possible values: json, markdown, text]
      --disassemble-range <DISASSEMBLE_RANGES>
          
      --emit-diagnostics <EMIT_DIAGNOSTICS>
          
      --diagnostic-pack <DIAGNOSTIC_PACK>
          
      --diagnostic-rule <DIAGNOSTIC_RULES>
          
      --diagnostic-summary-limit <DIAGNOSTIC_SUMMARY_LIMIT>
          
  -h, --help
          Print help