BattleLens

User guide

Everything BattleLens does, step by step.

From installing it to streaming with OBS. Every screenshot comes from the real app.

Empieza en 3 minutos

  1. Instala BattleLens y ábrelo: aparece un icono junto al reloj.
  2. Abre tu emulador (en ventana o a pantalla completa sin bordes) y entra en un combate, con los nombres en pantalla.
  3. Bandeja → Ventana del emulador → elige tu emulador.
  4. Bandeja → Nuevo perfil con un preset… → comprueba que los recuadros caen sobre los nombres → Guardar perfil.
  5. Juega. En cada combate la ficha del rival aparece sola y se oculta al terminar.

¿Tu juego no tiene preset? Usa Calibrar a mano: es dibujar un recuadro sobre el nombre del rival.

Instalar

  1. Descarga BattleLens-Setup-x.y.z.exe de la última versión. Si prefieres no instalar nada, descarga BattleLens-x.y.z-portable.zip, descomprímelo y ejecuta BattleLens.exe.
  2. Ejecuta el instalador. No pide permisos de administrador.
  3. Si Windows muestra «Windows protegió su PC», pulsa Más información → Ejecutar de todas formas. Sale porque el ejecutable no está firmado con un certificado de pago. Puedes comprobar la descarga con el SHA256SUMS.txt de la versión.

Requisitos: Windows 10 (2004 o posterior) u 11, de 64 bits.

OCR de Windows. BattleLens lee los nombres con el reconocimiento de texto que trae Windows. Casi todos los equipos lo tienen en su idioma. Si falta, la app avisa al arrancar y aparece Instalar OCR de Windows… en la bandeja y en Ajustes › General.

Prepara el emulador

BattleLens no toca el emulador ni su memoria: hace una captura de su ventana, lee los nombres con el OCR de Windows y muestra la ficha encima. Por eso funciona con cualquier emulador, pero conviene saber qué ve.

Qué captura
El interior de la ventana que eliges en Ventana del emulador, sin el marco ni la barra de título. La lee aunque otra ventana la tape.
Minimizado
No se puede leer. Deja el emulador abierto, aunque sea detrás de otras ventanas.
Tamaño de la ventana
Con un perfil creado con un preset (o a mano en un juego con preset) puedes pasar de ventana a maximizado o a pantalla completa: las regiones siguen a la imagen del juego. Los demás perfiles esperan la ventana como estaba al calibrar.
Nitidez
Cuanto más grande se ve el juego, mejor lee. Los filtros que deforman el texto (CRT, líneas de barrido) pueden empeorar la lectura.

Pantalla completa: mejor sin bordes

Muchos emuladores tienen dos tipos de pantalla completa. En la exclusiva, el juego se queda la pantalla para él solo y Windows no deja dibujar ninguna ventana encima: la ficha no se ve. La ventana sin bordes (borderless) se ve igual y deja que la ficha aparezca delante.

Eden, Yuzu, Citron, Sudachi
Emulación › Configurar › Gráficos: en el modo de pantalla completa, elige ventana sin bordes (Borderless Windowed) en lugar de Exclusive Fullscreen.
RetroArch
Settings › Video › Fullscreen Mode: activa Windowed Fullscreen Mode.
Dolphin
Graphics › Advanced: activa Borderless Fullscreen.
Otros
Si tu emulador no tiene esta opción, su pantalla completa suele ser ya sin bordes.

¿No sabes cuál usa? Con el emulador a pantalla completa, pulsa Ctrl+Alt+P en un combate. Si la ficha no aparece y en ventana sí, es pantalla completa exclusiva. Mientras tanto, la ventana maximizada siempre funciona.

El menú de la bandeja

BattleLens no tiene ventana principal: vive en la bandeja del sistema, junto al reloj (si no lo ves, mira en la flecha ^). Haz clic en el icono para abrir el menú; con doble clic se abren los Ajustes.

Menú de BattleLens en la bandeja del sistema
Reconocer ahora
Lee el nombre del rival en ese momento. Útil si tienes la detección automática apagada.
Detección automática
Vigila el combate y muestra la ficha sola. Activada por defecto.
Modo de la ficha
Normal (aventura y captura) o Competitivo (combate). Ver Normal y Competitivo.
Modo stream (OBS) · Copiar URL para OBS
Ficha para tu directo. Ver Directo con OBS.
Ventana del emulador
La ventana que BattleLens mira. Puede estar tapada por otras ventanas.
Perfil activo
Cambia de perfil o abre Gestionar perfiles…. Al cambiar de juego, su perfil se activa solo.
Nuevo perfil con un preset…
La forma más rápida de configurar un juego.
Informar de un problema…
Prepara un ZIP para adjuntarlo en GitHub. Ver Si algo no va bien.

Configurar tu juego con un preset

Un perfil le dice a BattleLens dónde está cada nombre en la pantalla de tu juego. Se crea una vez por juego y se guarda.

  1. Entra en un combate en el emulador, con el nombre del rival y el de tu Pokémon a la vista.
  2. Bandeja → Nuevo perfil con un preset…
  3. Comprueba el Juego de arriba. BattleLens lo propone a partir del título de la ventana.
  4. Mira la imagen: la línea discontinua blanca marca dónde ha encontrado la imagen del juego y los recuadros de colores, dónde leerá cada cosa. Debajo tienes lo que lee en cada uno.
  5. Si los recuadros caen sobre los nombres, pulsa Guardar perfil, ponle nombre y listo.
Asistente de presets con los recuadros del rival, de tu Pokémon y del menú de ataques sobre una captura de Pokémon Espada
Rival · Tu Pokémon · Menú de ataques
  • ¿Los recuadros están desplazados? Pulsa Ajustar la imagen del juego… y dibuja un rectángulo sobre toda la pantalla del juego, sin las barras del emulador.
  • ¿El menú de ataques dice «(no leo nada)»? Es normal si no tienes abierto el menú de Luchar: se lee cuando eliges ataque.
  • ¿Nada encaja? Pulsa Calibrar a mano….

Juegos con preset: Rojo/Azul/Amarillo, Oro/Plata/Cristal, Rubí/Zafiro/Esmeralda, Rojo Fuego/Verde Hoja, Diamante/Perla/Platino, HeartGold/SoulSilver, Negro/Blanco (y 2) y Espada/Escudo.

El juego del perfil importa: decide las formas regionales (Alola, Galar, Hisui, Paldea), los tipos de esa generación y su tabla de eficacias. Puedes cambiarlo en Ajustes › Perfiles → Juego.

Un perfil creado con preset recuerda dónde estaba la imagen del juego, así que puedes jugar a pantalla completa, maximizado o en ventana: las regiones siguen a la imagen. Los perfiles creados antes de la versión 0.4 no lo saben; si cambias el tamaño de la ventana, vuelve a crearlos con un preset.

Calibrar a mano

Para juegos sin preset, o si el preset no encaja:

  1. En un combate, pulsa Ctrl+Alt+C (o Ajustes › Perfiles → Calibrar a mano…).
  2. Dibuja con el ratón un rectángulo que cubra el nombre del rival. Cuanto más ajustado, mejor; no pasa nada si incluye el nivel.
  3. Pulsa Enter para confirmar (Esc cancela).
  4. Después, haz lo mismo con el nombre de tu Pokémon y con el menú de ataques. Son opcionales: Esc o Saltar pasan al siguiente. Si el menú de ataques no está a la vista, ábrelo en el emulador (menú de Luchar) y pulsa Volver a capturar.
  5. Revisa el nombre y el juego propuestos y acepta.
Calibración a mano con un recuadro amarillo sobre el nombre del rival

Si vas a usar el modo Competitivo, incluye el nivel en el recuadro: BattleLens lo necesita para calcular las estadísticas reales y los movimientos probables.

La ficha en combate

Con la detección automática activada no tienes que pulsar nada: en cuanto se ve el nombre del rival, la ficha aparece junto al emulador. Se oculta unos segundos después de terminar el combate (4 s por defecto).

Ficha de Machop en modo Normal con los ajustes de fábrica
Así sale de fábrica: lo esencial.
Cabecera
Nombre, número de la Pokédex y tipos del rival en el color de cada tipo.
Captura
Ratio de captura con su dificultad y un medidor: cuanto más lleno, más fácil.
Eficacias
Debilidades (×2, ×4), resistencias e inmunidades según la tabla de tipos de tu juego.
  • Ciérrala con la ✕ de la esquina o con Ctrl+Alt+H.
  • Muévela arrastrándola; recuerda dónde la dejaste.
  • Pliega una sección con un clic en su título (▾). Lo plegado se recuerda en cada modo.
  • Si la ficha no cabe en la pantalla, se desplaza con la rueda del ratón.
  • ¿Prefieres ir a mano? Apaga la Detección automática en la bandeja y pulsa Ctrl+Alt+P en cada combate.

Tu ficha no sale en las capturas de pantalla ni en OBS: está oculta a propósito. Para el público está el modo stream.

Normal y Competitivo

Cambia de modo con Ctrl+Alt+M, desde la bandeja (Modo de la ficha) o en Ajustes › Ficha.

Ficha Normal con todas las secciones
Normal Para la aventura y la captura.
Ficha Competitiva con nivel, estadísticas a su nivel, habilidades, movimientos probables y entrenamiento
Competitivo Para combates duros y retos.

El modo Competitivo añade:

  • Nivel del rival y sus estadísticas reales a ese nivel (mínimo–máximo), con la fórmula de cada generación.
  • Habilidades con su descripción y su efecto en las eficacias (por ejemplo, «Levitación → Tierra ×0»).
  • Movimientos probables: los 4 últimos que aprende hasta su nivel en ese juego.
  • Quién es más rápido, tú o él, en la sección «Contra tu…».
  • Entrenamiento: EVs que da, peso (para Patada Baja) y perfil de estadísticas.

Las secciones que ves en cada modo se eligen en Tu ficha a medida. Las capturas de arriba las muestran todas.

Tu Pokémon, tus movimientos y dobles

Además del rival, cada perfil puede leer tres cosas más. Configúralas en Ajustes › Perfiles (o bandeja → Perfil activo → Gestionar perfiles…), en la tarjeta Perfil activo:

Ajustes, sección Perfiles, con las regiones del perfil activo
Tu Pokémon
Con su nombre calibrado, la ficha muestra «Contra tu X»: lo que le hacen tus tipos, lo que te hacen los suyos y un veredicto (Ventaja / Neutral / Desventaja). Si tu Pokémon tiene mote, no se puede reconocer.
Menú de ataques
Calíbralo con el menú de Luchar abierto, sobre los 4 movimientos. Cada vez que lo abres, BattleLens lee tus ataques y los recuerda por especie; la sección Tus movimientos dice cuánto le hace cada uno a ese rival. Mientras no los haya leído, muestra los probables de tu Pokémon a su nivel.
2.º rival (combates dobles)
En los combates dobles aparecen dos fichas, una al lado de la otra.
Combate doble: fichas de Zigzagoon de Galar y Stufful comparadas con tu Scorbunny
Combate doble con tu Pokémon calibrado.

«Contra tu Pokémon» y «Tus movimientos» vienen ocultas de fábrica. Actívalas en Ajustes › Ficha después de calibrar.

Megas y otras formas

Ficha de Rotom Lavado con la lista de sus otras formas

Las formas regionales (Alola, Galar, Hisui, Paldea) se eligen solas según el juego del perfil.

Las megaevoluciones y otras formas (Rotom, Deoxys, Giratina…) muestran el mismo nombre en pantalla, así que BattleLens no puede distinguirlas. Pulsa Ctrl+Alt+F para pasar por las formas disponibles en ese juego: la ficha se recalcula y mantiene esa forma mientras el Pokémon siga en combate.

La sección Otras formas (oculta de fábrica) las lista con sus tipos.

Tu ficha a medida

En Ajustes › Ficha eliges qué secciones ves en cada modo. De fábrica la ficha es mínima: Normal solo con las eficacias y Competitivo con eficacias y estadísticas. El nombre, los tipos y la captura se ven siempre. La ficha del stream sigue la misma elección.

Ajustes, sección Ficha, con los interruptores de cada sección para Normal y Competitivo
  • Mostrar todas activa todas las secciones de golpe.
  • Desplegar todas las secciones abre las que hayas plegado con un clic en su título.
  • Idioma de los datos Pokémon: nombres, tipos, habilidades y movimientos en español, inglés, francés, alemán o italiano. Es independiente del idioma de los menús.
  • Ocultar la ficha tras: segundos hasta ocultarla aunque siga el combate (0 = nunca).

Los cambios de esta página se aplican al pulsar Guardar. «Guardar» solo se activa si has cambiado algo, y la ventana avisa si la cierras con cambios pendientes. La ventana no bloquea nada: la detección sigue funcionando mientras está abierta.

Resto de ajustes

General

Ajustes, sección General

Idioma de la interfaz (menús, avisos y textos de la ficha): automático según Windows, español o inglés. Buscar actualizaciones una vez al día. Abrir carpeta de datos (configuración, perfiles, registro) y Crear informe… si algo falla.

Reconocimiento

Ajustes, sección Reconocimiento
Umbral de reconocimiento
Lo seguro que debe estar BattleLens para dar un nombre por bueno (80 por defecto). Bájalo si no reconoce nombres que se leen bien; súbelo si confunde Pokémon.
Guardar recortes de depuración
Guarda cada recorte y lo que leyó el OCR. Útil para diagnosticar.
Intervalo de vigilancia
Cada cuánto se mira la región del nombre (500 ms).
Ocultar al terminar el combate tras
Segundos sin ver al rival hasta ocultar la ficha (4 s; 0 = nunca).

Atajos

Ajustes, sección Atajos
AtajoQué hace
Ctrl+Alt+PReconocer al rival ahora
Ctrl+Alt+CCalibrar un perfil nuevo a mano
Ctrl+Alt+HOcultar la ficha
Ctrl+Alt+MCambiar entre Normal y Competitivo
Ctrl+Alt+FCambiar la forma del rival
Ctrl+Alt+SMostrar u ocultar la ficha del stream

Todos necesitan un modificador (Ctrl, Alt, Shift o Win): las teclas F solas las usan los emuladores para los estados guardados.

Directo con OBS

El modo stream es opcional: desactivado, no cambia nada. Como tu ficha no sale en la captura, el público tiene la suya a través de OBS.

  1. Bandeja → Modo stream (OBS).
  2. Bandeja → Copiar URL para OBS (por defecto http://localhost:17320/).
  3. En OBS, añade una Fuente de navegador con esa URL (por ejemplo, de 800×900) y colócala en tu escena. El fondo es transparente.
Ajustes, sección Modo stream, con la URL para OBS
  • La ficha del stream entra y sale con una animación con cada rival y se oculta al terminar el combate.
  • Cerrar tu ficha no la oculta; Ctrl+Alt+S sí.
  • Añade ?scale=1.5 al final de la URL para verla más grande.
  • Tiene su propio modo (Normal o Competitivo) en Ajustes › Modo stream.
  • Solo escucha en tu propio PC (127.0.0.1): nadie de fuera puede abrirla.

Si algo no va bien

La ficha no aparece
  • Comprueba en la bandeja que la Ventana del emulador es la correcta y que hay un Perfil activo.
  • Comprueba que la Detección automática está activada, o pulsa Ctrl+Alt+P.
  • ¿Has minimizado el emulador? BattleLens lee la ventana aunque esté tapada, pero no si está minimizada.
  • ¿Solo falla a pantalla completa? Si el emulador usa pantalla completa exclusiva, Windows no dibuja ninguna otra ventana encima. Cámbialo a ventana sin bordes: mira Prepara el emulador.
Sale «No reconocido» o un Pokémon equivocado
  1. Activa Ajustes › Reconocimiento → Guardar recortes de depuración y reconoce varios rivales.
  2. Abre la carpeta de datos (Ajustes › General → Abrir carpeta) y mira en debug\: cada *-recorte.png debe contener solo el nombre.
  3. Si no es así, pulsa Recalibrar… junto a Rival en Ajustes › Perfiles.
El modo Competitivo no muestra el nivel

La región del rival debe incluir el nivel. Recalíbrala con el nivel dentro. Sin nivel, la ficha sale sin movimientos probables ni estadísticas a su nivel.

Al cambiar a pantalla completa (o salir de ella) ya no reconoce nada

Las barras de menús y de estado del emulador desplazan la imagen del juego. Si el perfil es anterior a la versión 0.4 o se calibró a mano para un juego sin preset, sus regiones no se mueven con ella: vuelve a crearlo con Nuevo perfil con un preset… o recalíbralo con la ventana como vayas a jugar.

No reconoce a mi Pokémon

Si tiene mote, no se puede reconocer: BattleLens busca nombres de especie. La ficha del rival sigue funcionando.

Sigue fallando: informar del problema

Bandeja → Informar de un problema… crea un ZIP con tu configuración, el registro y una captura del emulador con lo que lee BattleLens en cada región. Se ocultan tu carpeta y tu nombre de usuario, y no se envía nada solo. Después se abre el formulario de fallo de GitHub con la versión, el emulador y el juego ya rellenados: solo tienes que adjuntar el ZIP.

Limitaciones

  • Las megaevoluciones y formas no regionales no se distinguen por el nombre: elígelas con Ctrl+Alt+F. Gigamax no aparece porque no cambia tipos ni estadísticas.
  • Los movimientos probables son los de un Pokémon salvaje o de un entrenador corriente; líderes, rivales y equipos competitivos pueden llevar otros.
  • La comparativa es por tipos (ataques con STAB) y tiene en cuenta las habilidades que cambian la eficacia; si solo alguna de sus habilidades lo hace, la ficha avisa («si tiene Levitación»). No cuenta objetos ni habilidades como Rompemoldes.
  • Tus movimientos usan su tipo y potencia del juego; los de tipo variable (Poder Oculto, Meteorobola…) muestran su tipo base.
  • La ficha no se puede ver sobre un emulador en pantalla completa exclusiva; usa la pantalla completa sin bordes.

Actualizar y desinstalar

Actualizar. BattleLens comprueba una vez al día si hay versión nueva (es su única conexión a internet, y se puede desactivar). Si la hay, te avisa y aparece Descargar BattleLens X.Y.Z… en la bandeja. Ejecuta el instalador nuevo: tus perfiles y ajustes se conservan.

Desinstalar. Desde Configuración → Aplicaciones → Aplicaciones instaladas → BattleLens. Te preguntará si quieres borrar también tus perfiles.

Tus datos están en %APPDATA%\BattleLens\: config.toml (los mismos valores que en Ajustes), los perfiles y el registro.

Get started in 3 minutes

  1. Install BattleLens and open it: an icon appears next to the clock.
  2. Open your emulator (windowed or in borderless fullscreen) and start a battle, with the names on screen.
  3. Tray → Emulator window → pick your emulator.
  4. Tray → New profile from a preset… → check the boxes sit on the names → Save profile.
  5. Play. In every battle the opponent card pops up by itself and hides when the battle ends.

No preset for your game? Use Calibrate manually: you just draw a box around the opponent's name.

Install

  1. Download BattleLens-Setup-x.y.z.exe from the latest release. If you'd rather not install anything, download BattleLens-x.y.z-portable.zip, unzip it and run BattleLens.exe.
  2. Run the installer. It doesn't need administrator rights.
  3. If Windows shows "Windows protected your PC", click More info → Run anyway. It appears because the executable isn't signed with a paid certificate. You can verify the download against the release's SHA256SUMS.txt.

Requirements: Windows 10 (2004 or later) or 11, 64-bit.

Windows OCR. BattleLens reads names with the text recognition built into Windows. Almost every PC has it for its language. If it's missing, the app tells you on startup and shows Install Windows OCR… in the tray and in Settings › General.

Set up your emulator

BattleLens doesn't touch the emulator or its memory: it takes a screenshot of its window, reads the names with Windows OCR and shows the card on top. That's why it works with any emulator, but it helps to know what it sees.

What it captures
The inside of the window you pick in Emulator window, without the frame or title bar. It reads it even when another window covers it.
Minimized
It can't be read. Keep the emulator open, even if it's behind other windows.
Window size
With a profile created from a preset (or manually for a game that has a preset) you can switch between windowed, maximized and fullscreen: the regions follow the game image. Other profiles expect the window as it was when you calibrated.
Sharpness
The bigger the game looks, the better it reads. Filters that distort text (CRT, scanlines) can make reading worse.

Fullscreen: go borderless

Many emulators have two kinds of fullscreen. In exclusive fullscreen the game takes the screen for itself and Windows draws no other window on top: the card can't be seen. Borderless windowed looks the same and lets the card appear in front.

Eden, Yuzu, Citron, Sudachi
Emulation › Configure › Graphics: set the fullscreen mode to Borderless Windowed instead of Exclusive Fullscreen.
RetroArch
Settings › Video › Fullscreen Mode: turn on Windowed Fullscreen Mode.
Dolphin
Graphics › Advanced: turn on Borderless Fullscreen.
Others
If your emulator doesn't have this option, its fullscreen is usually borderless already.

Not sure which one it uses? With the emulator in fullscreen, press Ctrl+Alt+P during a battle. If the card doesn't show up but does in a window, it's exclusive fullscreen. Meanwhile, a maximized window always works.

The tray menu

BattleLens has no main window: it lives in the system tray, next to the clock (if you can't see it, look under the ^ arrow). Click the icon to open the menu; double-click it to open Settings.

BattleLens menu in the system tray
Recognize now
Reads the opponent's name right now. Handy if automatic detection is off.
Automatic detection
Watches the battle and shows the card by itself. On by default.
Card mode
Normal (adventure and catching) or Competitive (battle). See Normal and Competitive.
Stream mode (OBS) · Copy URL for OBS
A card for your stream. See Streaming with OBS.
Emulator window
The window BattleLens watches. Other windows can cover it.
Active profile
Switch profiles or open Manage profiles…. When you change games, its profile activates by itself.
New profile from a preset…
The quickest way to set up a game.
Report a problem…
Prepares a ZIP to attach on GitHub. See Troubleshooting.

Set up your game with a preset

A profile tells BattleLens where each name is on your game's screen. You create it once per game and it's saved.

  1. Start a battle in the emulator, with the opponent's name and your Pokémon's name visible.
  2. Tray → New profile from a preset…
  3. Check the Game at the top. BattleLens suggests it from the window title.
  4. Look at the picture: the dashed white line shows where it found the game image, and the colored boxes show where it will read each thing. What it reads in each box is listed below.
  5. If the boxes sit on the names, click Save profile, name it and you're done.
Preset wizard with the opponent, your Pokémon and Fight menu boxes over a Pokémon Sword screenshot
Opponent · Your Pokémon · Moves menu
  • Boxes off target? Click Adjust the game image… and draw a rectangle over the whole game screen, without the emulator's bars.
  • Moves menu says "(nothing read)"? That's normal unless the Fight menu is open: it's read when you pick a move.
  • Nothing fits? Click Calibrate manually….

Games with a preset: Red/Blue/Yellow, Gold/Silver/Crystal, Ruby/Sapphire/Emerald, FireRed/LeafGreen, Diamond/Pearl/Platinum, HeartGold/SoulSilver, Black/White (and 2) and Sword/Shield.

The profile's game matters: it decides regional forms (Alola, Galar, Hisui, Paldea), that generation's types and its type chart. You can change it in Settings › Profiles → Game.

A profile created from a preset remembers where the game image was, so you can play fullscreen, maximized or windowed: the regions follow the image. Profiles created before version 0.4 don't know this; if you change the window size, create them again from a preset.

Calibrate manually

For games without a preset, or if the preset doesn't fit:

  1. During a battle, press Ctrl+Alt+C (or Settings › Profiles → Calibrate manually…).
  2. Drag a rectangle over the opponent's name. The tighter, the better; it's fine if it includes the level.
  3. Press Enter to confirm (Esc cancels).
  4. Then do the same for your Pokémon's name and the moves menu. They're optional: Esc or Skip moves on. If the moves menu isn't on screen, open it in the emulator (the Fight menu) and click Capture again.
  5. Check the suggested name and game, and accept.
Manual calibration with a yellow box over the opponent's name

If you'll use Competitive mode, include the level in the box: BattleLens needs it for the actual stats and the likely moves.

The card in battle

With automatic detection on you don't press anything: as soon as the opponent's name is on screen, the card appears next to the emulator. It hides a few seconds after the battle ends (4 s by default).

Machop card in Normal mode with the default settings
Out of the box: just the essentials.
Header
The opponent's name, Pokédex number and types, in each type's color.
Catch rate
Catch rate with its difficulty and a meter: the fuller, the easier.
Type matchups
Weaknesses (×2, ×4), resistances and immunities using your game's type chart.
  • Close it with the ✕ in the corner or with Ctrl+Alt+H.
  • Move it by dragging; it remembers where you left it.
  • Collapse a section by clicking its title (▾). Collapsed sections are remembered per mode.
  • If the card doesn't fit on screen, scroll it with the mouse wheel.
  • Prefer doing it by hand? Turn off Automatic detection in the tray and press Ctrl+Alt+P in each battle.

Your card doesn't show up in screenshots or OBS: it's hidden on purpose. Your viewers get stream mode.

Normal and Competitive

Switch modes with Ctrl+Alt+M, from the tray (Card mode) or in Settings › Card.

Normal card with every section
Normal For adventuring and catching.
Competitive card with level, stats at that level, abilities, likely moves and training data
Competitive For hard battles and challenge runs.

Competitive mode adds:

  • The opponent's level and its actual stats at that level (min–max), using each generation's formula.
  • Abilities with their description and their effect on matchups (for example, "Levitate → Ground ×0").
  • Likely moves: the last 4 it learns up to its level in that game.
  • Who's faster, you or them, in the "Against your…" section.
  • Training: EV yield, weight (for Low Kick) and stat profile.

You choose the sections each mode shows in Make the card yours. The screenshots above show all of them.

Your Pokémon, your moves and doubles

Besides the opponent, each profile can read three more things. Set them up in Settings › Profiles (or tray → Active profile → Manage profiles…), in the Active profile panel:

Settings, Profiles section, with the active profile's regions
Your Pokémon
With its name calibrated, the card shows "Against your X": what your types do to it, what its types do to you and a verdict (Advantage / Neutral / Disadvantage). A nicknamed Pokémon can't be recognized.
Moves menu
Calibrate it with the Fight menu open, over the 4 moves. Every time you open it, BattleLens reads your moves and remembers them per species; the Your moves section shows how much each one does to that opponent. Until they've been read, it shows your Pokémon's likely moves at its level.
2nd opponent (double battles)
In double battles you get two cards side by side.
Double battle: Galarian Zigzagoon and Stufful cards compared with your Scorbunny
A double battle with your Pokémon calibrated.

"Against your Pokémon" and "Your moves" are hidden out of the box. Turn them on in Settings › Card once you've calibrated.

Megas and other forms

Wash Rotom card listing its other forms

Regional forms (Alola, Galar, Hisui, Paldea) are picked automatically from the profile's game.

Mega Evolutions and other forms (Rotom, Deoxys, Giratina…) show the same name on screen, so BattleLens can't tell them apart. Press Ctrl+Alt+F to cycle through the forms available in that game: the card is recalculated and keeps that form while the Pokémon stays in battle.

The Other forms section (hidden out of the box) lists them with their types.

Make the card yours

In Settings › Card you choose which sections each mode shows. Out of the box the card is minimal: Normal shows only type matchups and Competitive shows matchups and stats. The name, types and catch rate are always shown. The stream card follows the same choice.

Settings, Card section, with a switch per section for Normal and Competitive
  • Show all turns every section on at once.
  • Expand all sections reopens the ones you collapsed by clicking their title.
  • Pokémon data language: names, types, abilities and moves in English, Spanish, French, German or Italian. It's separate from the menu language.
  • Hide the card after: seconds until it hides even if the battle goes on (0 = never).

Changes on this page apply when you click Save. "Save" is only enabled when something changed, and the window asks before closing with pending changes. It doesn't block anything: detection keeps working while it's open.

Other settings

General

Settings, General section

Interface language (menus, notices and card labels): automatic from Windows, English or Spanish. Check for updates once a day. Open folder with your data (settings, profiles, log) and Create report… if something goes wrong.

Recognition

Settings, Recognition section
Recognition threshold
How sure BattleLens must be to accept a name (80 by default). Lower it if names that read fine aren't recognized; raise it if it mixes up Pokémon.
Save debug crops
Saves every crop and what the OCR read. Useful for troubleshooting.
Polling interval
How often the name region is checked (500 ms).
Hide when the battle ends, after
Seconds without seeing the opponent before hiding the card (4 s; 0 = never).

Shortcuts

Settings, Shortcuts section
ShortcutWhat it does
Ctrl+Alt+PRecognize the opponent now
Ctrl+Alt+CCalibrate a new profile manually
Ctrl+Alt+HHide the card
Ctrl+Alt+MSwitch between Normal and Competitive
Ctrl+Alt+FSwitch the opponent's form
Ctrl+Alt+SShow or hide the stream card

They all need a modifier (Ctrl, Alt, Shift or Win): emulators use the plain F keys for save states.

Streaming with OBS

Stream mode is optional: turned off, nothing changes. Since your card doesn't show up in captures, your viewers get their own through OBS.

  1. Tray → Stream mode (OBS).
  2. Tray → Copy URL for OBS (by default http://localhost:17320/).
  3. In OBS, add a Browser source with that URL (for example, 800×900) and place it in your scene. The background is transparent.
Settings, Stream mode section, with the URL for OBS
  • The stream card animates in and out with every opponent and hides when the battle ends.
  • Closing your card doesn't hide it; Ctrl+Alt+S does.
  • Add ?scale=1.5 to the end of the URL to make it bigger.
  • It has its own mode (Normal or Competitive) in Settings › Stream mode.
  • It only listens on your own PC (127.0.0.1): nobody outside can open it.

Troubleshooting

The card doesn't appear
  • Check in the tray that the Emulator window is the right one and that there's an Active profile.
  • Check that Automatic detection is on, or press Ctrl+Alt+P.
  • Is the emulator minimized? BattleLens reads the window even when it's covered, but not when it's minimized.
  • Does it only fail in fullscreen? If the emulator uses exclusive fullscreen, Windows draws no other window on top. Switch it to borderless windowed: see Set up your emulator.
It says "Not recognized" or shows the wrong Pokémon
  1. Turn on Settings › Recognition → Save debug crops and recognize a few opponents.
  2. Open the data folder (Settings › General → Open folder) and look in debug\: each *-recorte.png should contain only the name.
  3. If it doesn't, click Recalibrate… next to Opponent in Settings › Profiles.
Competitive mode doesn't show the level

The opponent region must include the level. Recalibrate it with the level inside. Without a level, the card shows no likely moves and no stats at its level.

After switching to fullscreen (or back) nothing is recognized

The emulator's menu and status bars shift the game image. If the profile is older than version 0.4, or was calibrated manually for a game without a preset, its regions don't move with the image: create it again with New profile from a preset… or recalibrate it with the window the way you'll play.

It doesn't recognize my Pokémon

If it has a nickname, it can't be recognized: BattleLens looks for species names. The opponent card still works.

Still failing: report the problem

Tray → Report a problem… creates a ZIP with your settings, the log and a capture of the emulator with what BattleLens reads in each region. Your folder and user name are hidden, and nothing is sent automatically. Then the GitHub bug form opens with the version, emulator and game already filled in: just attach the ZIP.

Limitations

  • Mega Evolutions and non-regional forms can't be told apart by name: pick them with Ctrl+Alt+F. Gigantamax isn't listed because it doesn't change types or stats.
  • Likely moves are those of a wild Pokémon or a regular trainer; leaders, rivals and competitive teams may carry others.
  • The matchup is type-based (STAB attacks) and accounts for abilities that change effectiveness; if only some of its abilities do, the card warns you ("if it has Levitate"). Items and abilities like Mold Breaker aren't considered.
  • Your moves use their type and power in your game; variable-type moves (Hidden Power, Weather Ball…) show their base type.
  • The card can't be shown over an emulator in exclusive fullscreen; use borderless fullscreen.

Update and uninstall

Update. BattleLens checks once a day for a new version (its only internet connection, and you can turn it off). If there is one, it tells you and Download BattleLens X.Y.Z… appears in the tray. Run the new installer: your profiles and settings are kept.

Uninstall. From Settings → Apps → Installed apps → BattleLens. You'll be asked whether to delete your profiles too.

Your data lives in %APPDATA%\BattleLens\: config.toml (the same values as in Settings), your profiles and the log.