PermaLocke

En desarrollo · sin descarga públicaIn development · no public download

PermaLocke — Tu Nuzlocke de Pokémon Ultra Luna, con las reglas vivas. Your Pokémon Ultra Moon Nuzlocke, with live rules.

PermaLocke es una aplicación de escritorio para Windows que acompaña la partida de principio a fin: genera un mundo randomizado para cada jugador, lee el juego mientras juegas, aplica las reglas de la Nuzlocke y apunta todo en un historial que se puede auditar.

PermaLocke is a Windows desktop app that stays with you from the first route to the last: it generates a randomized world for each player, reads the game while you play, enforces the Nuzlocke rules and records everything in an auditable history.

Para Pokémon Ultra Luna en el emulador Azahar. Cada jugador aporta su propia ROM.

For Pokémon Ultra Moon on the Azahar emulator. Every player brings their own ROM.

La máquina de cápsulas del gacha de PermaLocke, dibujada en píxeles
El gacha de cápsulas, animado celda a celda.
The capsule gacha, animated cell by cell.
  • 12pruebas, la Liga y el rematch, cada una con su tope de niveltrials, the League and the rematch, each with its own level cap
  • 21logros que se cuentan solosachievements that count themselves
  • 16caras en la ruleta del Ludópatafaces on the Gambler's roulette
  • 5roles, y mundos de un solo tiporoles, plus single-type worlds
  • 1.600+pruebas automatizadasautomated tests

Para quiénMade for

Quien juega NuzlockesNuzlocke players

Si estás harto de arbitrar a mano «un Pokémon por ruta», los duplicados y el tope de nivel, PermaLocke lo vigila mientras juegas y te avisa en pantalla cuando algo cuenta.

If you are tired of refereeing «one Pokémon per route», duplicates and the level cap by hand, PermaLocke watches them while you play and tells you on screen when something counts.

Grupos de amigos y torneosFriend groups and tournaments

Roles con reglas distintas, clasificación, podio y una aplicación aparte para el organizador. Cada jugador juega en su propia copia local, con su propio mundo.

Roles with different rules, a leaderboard, a podium and a separate app for the organizer. Every player runs their own local copy, with a world of their own.

Aficionados a la randomizaciónRandomizer fans

Un mundo propio por semilla, también con especies de las generaciones 8 y 9, y mundos enteros de un solo tipo para los retos monotype.

A world of your own per seed, including generation 8 and 9 species, and whole worlds of a single type for monotype runs.

Una partidaA run

Así se vive una partida con PermaLocke, de la primera pantalla a la Liga. Cada paso es algo que la app hace de verdad.

This is how a run feels with PermaLocke, from the first screen to the League. Every step is something the app really does.

  1. Empiezas una runYou start a run

    Eliges un rol, que decide la dificultad, y pones tu nombre. La app comprueba que tienes tu ROM de Ultra Luna antes de dejarte crear nada.

    You pick a role, which sets the difficulty, and type your name. The app checks you have your Ultra Moon ROM before it lets you create anything.

    La ventana Nueva run: elige tu rol y tu nombre, con la descripción del rol Normal y sus modificadores
  2. Se genera tu mundoYour world is generated

    Con una semilla propia se randomizan salvajes, iniciales, regalos, tratos, objetos, MT y tiendas, y se instala como capa de mods. La ROM original no se toca. Cada MT del suelo sale en un solo sitio, y los iniciales siempre son primera etapa de una línea de tres.

    From a seed of your own, wild Pokémon, starters, gifts, trades, items, TMs and shops are randomized and installed as a mod layer. The original ROM is never touched. Every ground TM appears in one place only, and starters are always the first stage of a three-stage line.

  3. Llegan las primeras Poké BallsThe first Poké Balls arrive

    Un aviso lo cuenta, y desde ese momento la partida cuenta de verdad: antes de la primera ball, una caída no resta nada.

    A notice announces it, and from then on the run counts for real: before the first ball, a faint costs nothing.

  4. Cada ruta, un primer encuentroEvery route, one first encounter

    PermaLocke lee en qué zona estás y qué sale en el combate. Si la ruta está gastada, te retira las Poké Balls y las devuelve después. Si el Pokémon es un duplicado, eliges: capturarlo cuenta como el encuentro de la ruta; dejarlo pasar, no. La ventana de registro te dice si una captura cumple las reglas, y por qué.

    PermaLocke reads which zone you are in and what shows up in the battle. If the route is spent, it takes your Poké Balls away and gives them back later. If the Pokémon is a duplicate, you choose: catching it counts as the route's encounter; letting it go does not. The register window tells you whether a catch follows the rules, and why.

    La ventana Registrar captura con el veredicto PERMITIDA: cumple todas las reglas, primer encuentro, Ruta 1 sin gastar
  5. Un Pokémon caeA Pokémon faints

    La app sabe cuál ha caído por su identidad, espera a ver la barra de PS a cero, graba una killcam de unos segundos alrededor del golpe, resta los puntos que marca tu rol y lo manda al cementerio. Si se pierde un equipo entero, también queda anotado.

    The app knows which one fainted by its identity, waits to see the HP bar at zero, records a few seconds of killcam around the hit, subtracts the points your role sets and sends it to the graveyard. A full team wipe is recorded too.

  6. Superas una pruebaYou clear a trial

    Cuando el cristal Z de la prueba entra en tu mochila, el logro se da solo y el tope de nivel sube al siguiente. Hasta entonces, las zonas de prueba no dejan capturar. En Monotype, además, la guardería te debe huevos de tu tipo.

    When the trial's Z-Crystal enters your bag, the achievement unlocks by itself and the level cap rises to the next one. Until then, trial zones do not let you catch anything. In Monotype, the nursery also owes you eggs of your type.

  7. La Liga y el rematchThe League and the rematch

    Ganar la Liga y repetirla tienen su propio tope y sus logros. Los Ludópatas giran la ruleta una vez por prueba, tres veces al ganar la Liga y dos más por el rematch.

    Winning the League and doing it again have their own cap and achievements. Gamblers spin the roulette once per trial, three times for winning the League and two more for the rematch.

Las reglasThe rules

Estas son las reglas que PermaLocke aplica hoy. Cada decisión pasa por un motor de reglas con pruebas propias, y deja su evento en el historial.

These are the rules PermaLocke enforces today. Every decision goes through a rules engine with its own tests and leaves its event in the history.

Primer encuentroFirst encounter

El primer combate salvaje de una ruta la gasta, pase lo que pase en él. Las rutas son las que están en el mapa de la app.

The first wild battle on a route uses it up, whatever happens in it. The routes are the ones on the app's map.

Duplicados a tu elecciónDuplicates are your call

Si su línea evolutiva ya está capturada, vivo o muerto, puedes capturarlo, y cuenta como el encuentro, o dejarlo pasar, y la ruta sigue libre.

If its evolutionary line is already caught, alive or dead, you may catch it, and it counts as the encounter, or let it go, and the route stays free.

Un variocolor siempre se capturaA shiny can always be caught

Esté gastada la ruta o no, y aunque estés fuera del mapa: un variocolor es la excepción a todo.

Whether the route is spent or not, and even outside the map: a shiny is the exception to everything.

Fuera del mapa no hay ballsNo balls off the map

En los lugares que se dejaron fuera a propósito, como el túnel del volcán o los pueblos, las Poké Balls se retiran. Las capturas estáticas permitidas, como el Necrozma de Monte Lanakila y los cuatro Tapus, siempre se pueden hacer y no gastan nada.

In the places left off on purpose, like the volcano tunnel or the towns, Poké Balls are taken away. The allowed static captures, like the Necrozma of Mount Lanakila and the four Tapus, can always be made and cost nothing.

Zonas de pruebaTrial zones

Hasta tener el cristal Z de la prueba no se captura allí, salvo un variocolor, y un combate en esa zona no gasta la ruta.

Until you hold the trial's Z-Crystal you cannot catch there, except a shiny, and a battle in that zone does not use up the route.

Tope de nivel por etapaLevel cap per stage

Catorce etapas: las doce pruebas, la Liga y el rematch. El tope sube solo cuando el cristal Z entra en tu mochila, y un panel sobre el juego te enseña el cap, el siguiente y el nivel de tu equipo.

Fourteen stages: the twelve trials, the League and the rematch. The cap rises on its own when the Z-Crystal enters your bag, and a panel over the game shows the cap, the next one and your team's levels.

Muertes por identidadDeaths by identity

Cada Pokémon se reconoce por su identidad interna, no por su hueco en el equipo, así que un cambio de orden no confunde a quién ha caído.

Each Pokémon is recognized by its internal identity, not by its slot in the team, so reordering never confuses who has fainted.

Todo deja un eventoEverything leaves an event

Ningún punto, Pokémon o regla cambia sin un evento. Los eventos van encadenados por hash, así que una alteración a mano se nota.

No point, Pokémon or rule changes without an event. Events are hash-chained, so a manual edit shows.

FuncionesFeatures

Un mundo para cada jugadorA world for every player

Salvajes, iniciales, regalos, tratos, objetos del suelo, MT y tiendas, generados con una semilla. Se instala como capa: la ROM original no se toca nunca.

Wild Pokémon, starters, gifts, trades, ground items, TMs and shops, generated from a seed. It installs as a layer: the original ROM is never touched.

Reglas que se cumplen solasRules that enforce themselves

Primer encuentro, duplicados a elegir y tope de nivel por prueba. La app lee el juego y retira las Poké Balls cuando toca.

First encounter, duplicates to choose and a level cap per trial. The app reads the game and takes your Poké Balls away when the rules say so.

Muertes detectadasDeaths detected

Reconoce qué Pokémon cae, graba una killcam de unos segundos y lo lleva al cementerio.

It recognizes which Pokémon fainted, records a few seconds of killcam and sends it to the graveyard.

Historial auditableAuditable history

Cada punto, muerte o cambio de regla es un evento encadenado por hash en una base de datos local. Nada cambia en silencio.

Every point, death or rule change is a hash-chained event in a local database. Nothing changes silently.

Roles con reglas propiasRoles with their own rules

Normal, Cagoneta, Experto, Ludópata (con ruleta) y Monotype, donde el gacha y el wonder trade solo te dan Pokémon de tu tipo.

Normal, Cagoneta (relaxed), Experto (harder), Ludópata (roulette-driven) and Monotype, where the gacha and wonder trade only hand you Pokémon of your type.

Gacha, wonder trade y ruletaGacha, wonder trade and roulette

Una máquina de cápsulas con las probabilidades a la vista, intercambios sorpresa de cartas y una ruleta con premios y castigos.

A capsule machine with its odds on display, surprise card trades and a roulette with prizes and penalties.

Álbum de cartasCard album

Tus cajas del PC como una carpeta de cartas: rareza por tier, variocolor holográfica y las caídas, arrugadas y medio quemadas.

Your PC boxes as a card binder: rarity by tier, holographic shinies, and the fallen ones creased and half burnt.

Torneos entre amigosTournaments between friends

Clasificación, podio y una aplicación de organizador para repartir pruebas, mensajes y reglas oficiales.

Leaderboard, podium and an organizer app to hand out trials, messages and official rules.

A fondoUp close

Una máquina de cápsulas dibujada a manoA hand-drawn capsule machine

El gacha no es un menú: es una escena de píxeles con manivela, cápsula que rueda, tensión, silueta que se revela y confeti. La cúpula enseña las probabilidades reales del banner, y todo lo que ves está dibujado celda a celda por el propio código de la app.

The gacha is not a menu: it is a pixel scene with a crank, a rolling capsule, tension, a silhouette reveal and confetti. The dome shows the banner's real odds, and everything you see is drawn cell by cell by the app's own code.

  • 3 banners: Pocho, Decente y Bueno3 banners: Pocho, Decente and Bueno
  • 5 tiers por estadísticas base5 tiers by base stats
  • Tirada reproducible con semillaSeed-reproducible pulls
  • Se puede saltarSkippable
La máquina de cápsulas en reposo
Reposo
Idle
La cápsula rueda por el suelo de la sala
La cápsula rueda
The capsule rolls
La cápsula sube con el aviso ¡SUBE!
¡Sube!
It levels up!
Aparece un Pokémon legendario entre destellos y monedas
¡Legendario!
Legendary!

El álbum de cada cajaAn album for every box

Una carpeta de cartas TCG en píxeles, con la página que gira, pestañas por caja y acabados según la rareza. Es solo lectura: mirar tu equipo no puede estropearlo. Cada captura salvaje suelta además su carta desde una ball y la deja entrar en un álbum pequeño sobre el juego.

A pixel-art TCG binder with turning pages, a tab per box and finishes by rarity. It is read-only: looking at your team can never break it. Every wild catch also releases its card from a ball and lets it slide into a small album over the game.

Una doble página del álbum con cartas de varios acabados: normal, holográfica, dorada, y dos caídas quemadas
Seis cartas con sus acabados: común, holo, inversa, dorada, variocolor y caída quemada, y debajo el dorso de cada una con las estadísticas

Los acabados de las cartas: común, holo, inversa, dorada, variocolor y caída. Debajo, el dorso con las estadísticas.

The card finishes: common, holo, reverse, gold, shiny and fallen. Below, the back with the stats.

Wonder trade de cartasCard wonder trade

El intercambio sorpresa se hace desde el álbum: entregas dos cartas y vuelve una. Lo que llega tiene un total de estadísticas base parecido a la media de lo que entregaste, así que es una apuesta sobre qué Pokémon toca, no una manera de mejorarlo. En Monotype solo llegan Pokémon de tu tipo.

The surprise trade happens from the album: you hand over two cards and one comes back. What arrives has a base-stat total close to the average of what you gave, so it is a bet on which Pokémon you get, not a way to upgrade. In Monotype only Pokémon of your type come back.

Una carta entra en el círculo del intercambio
Entregas
You hand over
La carta gira sobre el círculo
Gira
It spins
Una gema rosa late en el centro del círculo
Late
It pulses
Llega una carta dorada entre destellos
Llega otra
Another arrives

Avisos y panel sobre el propio juegoNotices and panel over the game itself

Los avisos salen como un pergamino que se desenrolla sobre el emulador y se enrolla al irse, con una mecha que marca el tiempo y un sello del color del tipo de aviso: baja, variocolor, duplicado, versión nueva. El tope de nivel es una placa de trofeo que enseña la prueba, el cap, el siguiente y el nivel de cada Pokémon de tu equipo, y se adapta al tamaño de la ventana del juego.

Notices appear as a parchment that unrolls over the emulator and rolls up when it leaves, with a fuse that counts the time and a seal in the colour of the notice kind: faint, shiny, duplicate, new version. The level cap is a trophy plaque showing the trial, the cap, the next one and the level of every Pokémon in your team, and it adapts to the size of the game window.

Cuatro avisos en forma de pergamino: una baja, un variocolor, un duplicado y una versión nueva
La placa del tope de nivel: cap 24, prueba 3 de 12 y una placa por cada Pokémon del equipo

Cinco roles, cinco maneras de jugarFive roles, five ways to play

Cada rol cambia los puntos, el nivel de los rivales y los Pokémon extra de los combates importantes. Cagoneta no te quita puntos pero gana la mitad. Experto multiplica por uno y medio lo que ganas y por dos lo que pierdes. Ludópata te deja a merced de una ruleta de dieciséis caras: ocho buenas y ocho malas. Monotype limita tu equipo, tu gacha y tu wonder trade a un tipo.

Each role changes the points, the level of your opponents and the extra Pokémon in important battles. Cagoneta never loses points but earns half. Experto multiplies what you earn by one and a half and what you lose by two. Ludópata leaves you at the mercy of a sixteen-face roulette: eight good faces and eight bad ones. Monotype limits your team, your gacha and your wonder trade to a single type.

  • Se puede cambiar de rol: los puntos al momento, el mundo al volver a generarloYou can change role: points at once, the world when you generate again
El menú de roles: Normal, Cagoneta, Experto, Ludópata y Monotype, cada uno con su descripción
La ventana Cambiar de rol, con el aviso de que el mundo no cambia hasta volver a generarlo

La guardería de los MonotypeThe Monotype nursery

Con cada prueba que superas, tu guardería te debe huevos de tu tipo. Los pides con el juego cerrado y van a una caja de tu PC; no enseñan qué traen hasta que eclosionan. Una Incubadora Turbo, un objeto clave, los abre al dar dos pasos. La pantalla enseña cuántos te deben, qué da cada prueba y cómo eclosionan.

With every trial you clear, your nursery owes you eggs of your type. You ask for them with the game closed and they go to a box in your PC; they show nothing of what they hold until they hatch. A Turbo Incubator, a key item, opens them in two steps. The screen shows how many you are owed, what each trial gives and how they hatch.

La pantalla Tu guardería con Monotype Fuego: te deben 3 huevos, lo que da cada prueba y los huevos pedidos
Cinco huevos con halo dorado bajo una lluvia de estrellas

Cementerio y killcamGraveyard and killcam

Cada caída se graba sin que lo pidas: la killcam guarda unos cuatro segundos y medio antes del golpe y poco más de uno después. La reproduces desde el cementerio, junto a la especie, el nivel y los puntos que costó.

Every faint is recorded without you asking: the killcam keeps about four and a half seconds before the hit and just over one after. You replay it from the graveyard, next to the species, the level and the points it cost.

Fantasmas y lluvia de sangreGhosts and blood rain

En una competición, la muerte de un Pokémon viaja por el servidor y cruza como un fantasma el emulador de los demás. Un wipe hace llover sangre durante doce segundos en el emulador de quien lo sufre y de los demás.

In a competition, a Pokémon's death travels through the server and crosses everyone else's emulator as a ghost. A wipe makes blood rain for twelve seconds in the emulator of whoever suffers it and of everyone else.

Para el organizadorFor the organizer

Una aplicación aparte, Admin, usa los mismos servicios que la del jugador: ficha de cada jugador, órdenes que su app aplica (revivir, marcar una caída, dar un objeto, mandar un mensaje, cerrar el juego), pausar el torneo y publicar las reglas oficiales.

A separate app, Admin, uses the same services as the player's: a sheet for every player, orders their app applies (revive, mark a faint, give an item, send a message, close the game), pausing the tournament and publishing the official rules.

Y ademásAnd more

Las imágenes las dibuja el propio código de la app con datos de muestra: los Pokémon que ves son figuras genéricas, no capturas de una partida ni sprites del juego.

The pictures are drawn by the app's own code with sample data: the Pokémon you see are generic figures, not screenshots of a real run or sprites from the game.

Cómo funcionaHow it works

  1. Aportas tu ROMYou bring your ROM

    Cada jugador usa su propia copia de Pokémon Ultra Luna. PermaLocke no la incluye y nunca la modifica.

    Every player uses their own copy of Pokémon Ultra Moon. PermaLocke does not ship it and never modifies it.

  2. Genera tu mundoGenerate your world

    La app randomiza con una semilla y lo instala como capa de mods. Si algo falla, limpia lo temporal y el original queda intacto.

    The app randomizes from a seed and installs it as a mod layer. If anything fails it cleans up and the original stays intact.

  3. Juegas en AzaharYou play in Azahar

    Un emulador Azahar preparado para PermaLocke le deja leer el juego en vivo. Las reglas se aplican mientras juegas.

    An Azahar emulator prepared for PermaLocke lets it read the game live. The rules are enforced while you play.

  4. Todo queda anotadoEverything is recorded

    Capturas, muertes, puntos y reglas se guardan en un historial encadenado que cualquiera puede comprobar.

    Catches, deaths, points and rules are stored in a chained history anyone can verify.

Por dentroUnder the hood

Además, con el juego cerrado, la app puede leer y escribir la partida guardada con PKHeX: siempre sobre una copia, siempre por identidad y nunca por posición.

In addition, with the game closed, the app can read and write the save file with PKHeX: always on a copy, always by identity and never by position.

  • C#
  • .NET 10
  • WPF
  • MVVM
  • SQLite
  • PKHeX.Core
  • pk3DS.Core
  • xUnit
  • Azahar
  • GPLv3

Hecho con rigorBuilt with care

  • La ROM no se toca.The ROM is never touched. Todo va por capas de mods y, si algo falla, el original sigue como estaba.Everything goes through mod layers and, if something fails, the original stays as it was.
  • Nada falso.Nothing fake. Sin botones que aparenten funcionar. Lo que aún no se ha comprobado en una partida real se marca como tal en la documentación.No buttons pretending to work. Whatever has not been verified in a real run is labelled as such in the documentation.
  • Nada cambia en silencio.Nothing changes silently. La interfaz nunca escribe una cifra directamente: todo pasa por servicios que dejan su evento.The interface never writes a number directly: everything goes through services that leave their event.
  • Más de 1.600 pruebas automatizadasOver 1,600 automated tests sobre reglas, puntos, eventos, randomización, lectura del juego y dibujo.covering rules, points, events, randomization, game reading and drawing.
  • Código abierto, GPLv3.Open source, GPLv3. Está en GitHub, con su documentación de diseño.It lives on GitHub, with its design documentation.

EstadoStatus

En desarrollo activo. PermaLocke está en su versión 1.0 y todavía no tiene descarga pública.

Under active development. PermaLocke is at version 1.0 and has no public download yet.

Lo usa un grupo cerrado de jugadores en un torneo de pruebas, y una parte de lo último no se ha probado todavía en una partida real. Cada jugador necesita además su propia ROM de Ultra Luna. Si quieres probarla, tienes preguntas o quieres ayudar, escríbeme.

A closed group of players uses it in a test tournament, and part of the latest work has not been tried in a real run yet. Every player also needs their own Ultra Moon ROM. If you want to try it, have questions or want to help, write to me.

Plataforma
Platform
Windows
Juego
Game
Pokémon Ultra Luna
Emulador
Emulator
Azahar
Licencia
License
GPLv3
Descarga
Download
Aún no disponible
Not available yet

PreguntasFAQ

¿Necesito mi propia ROM?Do I need my own ROM?

Sí. PermaLocke no incluye ni distribuye ROM. Cada jugador aporta la suya, y la app solo la lee: nunca la modifica.

Yes. PermaLocke does not include or distribute ROMs. Every player brings their own, and the app only reads it: it never modifies it.

¿Con qué juego y en qué sistema funciona?Which game and system does it work with?

Con Pokémon Ultra Luna, jugado en el emulador Azahar, en Windows.

With Pokémon Ultra Moon, played in the Azahar emulator, on Windows.

¿Se puede descargar?Can I download it?

Todavía no hay descarga pública. Está en desarrollo y la usa un grupo cerrado. Escribe a contacto@permalocke.xyz si quieres probarla.

There is no public download yet. It is in development and a closed group uses it. Write to contacto@permalocke.xyz if you want to try it.

¿Puedo jugar solo?Can I play alone?

Sí. La competición, el podio y los fantasmas son opcionales: la copia local de cada jugador funciona por su cuenta, sin sincronizar nada.

Yes. The competition, the podium and the ghosts are optional: each player's local copy works on its own, with nothing synced.

¿Qué pasa si el emulador se cierra?What if the emulator closes?

La app lo nota, y si no lo cerraste tú guarda un informe del cierre para poder revisar qué pasó. La run tiene además copias de seguridad.

The app notices it, and if you did not close it yourself it saves a crash report so you can review what happened. The run also has backups.

¿Es código abierto?Is it open source?

Sí, bajo GPLv3. Usa PKHeX y pk3DS, que también son GPLv3, y su código y su documentación de diseño están en GitHub.

Yes, under GPLv3. It uses PKHeX and pk3DS, which are also GPLv3, and its code and design documentation are on GitHub.

¿Es un producto oficial de Pokémon?Is it an official Pokémon product?

No. Es un proyecto de aficionados, sin relación con Nintendo, Game Freak ni The Pokémon Company.

No. It is a fan project, not affiliated with Nintendo, Game Freak or The Pokémon Company.

ContactoContact

¿Preguntas, ideas o ganas de probarla cuando esté lista? Escribe un correo.

Questions, ideas, or want to try it when it is ready? Send an email.

contacto@permalocke.xyz