Warning: Compatibility only with Pokémon Fire Red and Emerald USA.
"Informações Antigas / Old Info (V1.0)"
UPDATE-> PokéROM Editor (V2.0 - Major Update!):
Prints:
WARNING:
Download Link:
PokéROM Editor v2.0, Link Download: Google Drive , MEGA
SHA-256: 2226fcb82f8dd8c8997e11e931adc8878081e5e5fd01cff959b37fb9d543d1d7
Link Virus Total: VirusTotal - File - 2226fcb82f8dd8c8997e11e931adc8878081e5e5fd01cff959b37fb9d543d1d7
Changelog Old Version:
"Informações Antigas / Old Info (V1.0)"
PORTUGUÊS:
Nas versões anteriores (V1.0), o programa exigia o uso de um arquivo .ini gerado pelo Advanced INI Generator na mesma pasta para funcionar. O salvamento era dividido em "Salvar Dados" (que salvava tudo de uma vez na memória) e salvamentos diretos. As antigas funções de Backup automático e Exportação/Importação em .json foram substituídas na V2.0 pelo sistema de Salvamento Atômico direto na ROM e pelo Live File Watcher.
ENGLISH:
In previous versions (V1.0), the program required the use of an .ini file generated by Advanced INI Generator in the same folder to work. Saving was divided into "Save Data" (which saved everything at once in memory) and direct saves. The old automatic Backup and .json Export/Import functions were replaced in V2.0 by the direct Atomic Save system to the ROM and the Live File Watcher.
ESPAÑOL:
En versiones anteriores (V1.0), el programa requería el uso de un archivo .ini generado por Advanced INI Generator en la misma carpeta para funcionar. El guardado se dividía en "Guardar Datos" (que guardaba todo a la vez en la memoria) y guardados directos. Las antiguas funciones de Copia de seguridad automática y Exportación/Importación en .json fueron reemplazadas en la V2.0 por el sistema de Guardado Atómico directo en la ROM y por el Live File Watcher.
Nas versões anteriores (V1.0), o programa exigia o uso de um arquivo .ini gerado pelo Advanced INI Generator na mesma pasta para funcionar. O salvamento era dividido em "Salvar Dados" (que salvava tudo de uma vez na memória) e salvamentos diretos. As antigas funções de Backup automático e Exportação/Importação em .json foram substituídas na V2.0 pelo sistema de Salvamento Atômico direto na ROM e pelo Live File Watcher.
ENGLISH:
In previous versions (V1.0), the program required the use of an .ini file generated by Advanced INI Generator in the same folder to work. Saving was divided into "Save Data" (which saved everything at once in memory) and direct saves. The old automatic Backup and .json Export/Import functions were replaced in V2.0 by the direct Atomic Save system to the ROM and the Live File Watcher.
ESPAÑOL:
En versiones anteriores (V1.0), el programa requería el uso de un archivo .ini generado por Advanced INI Generator en la misma carpeta para funcionar. El guardado se dividía en "Guardar Datos" (que guardaba todo a la vez en la memoria) y guardados directos. Las antiguas funciones de Copia de seguridad automática y Exportación/Importación en .json fueron reemplazadas en la V2.0 por el sistema de Guardado Atómico directo en la ROM y por el Live File Watcher.
UPDATE-> PokéROM Editor (V2.0 - Major Update!):
É uma ferramenta avançada e autônoma de edição de dados para ROMs GBA de Pokémon. Esqueça arquivos complexos: a ferramenta lê dados e offsets diretamente da ROM de forma automática e possui integração online! Abaixo estão todos os recursos detalhados do programa:
GESTÃO DE ARQUIVOS E ROMS (FILE I/O)
* Identificação Automática de ROM: Ao carregar um arquivo, o programa lê o cabeçalho hexadecimal para identificar se é Pokémon Fire Red ou Pokémon Emerald, ajustando automaticamente os ponteiros (Offsets) de leitura de dados, nomes, sprites e itens.
* Carregamento via Drag & Drop: Suporte nativo para arrastar e soltar arquivos .gba diretamente na janela do programa.
* Sistema de ROMs Recentes: Um botão "Menu" que guarda o histórico das últimas 5 ROMs abertas. Os dados são salvos no arquivo recent_roms.json para persistir entre as sessões.
* Live File Watcher: Um loop de fundo que verifica a data de modificação (mtime) do arquivo .gba a cada 1 segundo. Se o usuário alterar os dados do jogo em outro programa (como o editor hexadecimal HxD) e salvar, o PokéROM Editor atualiza os dados na interface visual instantaneamente, sem precisar recarregar a ROM e sem piscar a tela. O sistema possui "amnésia" inteligente para ignorar "auto-saves" feitos pelo próprio editor.
* Atomic Save: Prevenção absoluta contra corrupção de dados. Quando clicar em Salvar, o programa grava os dados em um arquivo temporário (.tmp). Somente se a gravação for 100% bem-sucedida, ele substitui o arquivo original. Evita perda total da ROM em caso de queda de energia, disco cheio, etc.
INTERFACE E UX
* Navegação por Scroll e Setas Otimizada: É possível rodar o scroll do mouse sobre qualquer lista suspensa ou usar as setas do teclado para alternar os valores de forma silenciosa e fluida.
* Feedback de Save "Inline": Ao salvar a ROM, em vez de um Pop-up intrusivo do Windows que exige um clique em "OK", uma mensagem verde ("Dados salvos diretamente na ROM!") aparece de forma sutil em um espaço vazio na tela e desaparece automaticamente após 2 segundos.
* Atalhos de Teclado Globais:
* Ctrl + O: Abre a janela de seleção de ROM.
* Ctrl + S: Salva os dados do Pokémon atual na ROM.
* Seta para Cima / Baixo: Navega rapidamente para o próximo Pokémon ou o anterior na lista principal.
INTERNACIONALIZAÇÃO (i18n)
* Suporte Multi-Idiomas Dinâmico: O sistema suporta 6 idiomas (Inglês, Português, Espanhol, Francês, Italiano, Alemão) controlados por arquivos .json externos na pasta /lang.
* Troca de Idiomas em Tempo Real: Um botão "Menu" permite trocar o idioma. A interface é inteiramente destruída e reconstruída numa fração de segundo com os novos textos, preservando os dados da ROM, a posição do Pokémon selecionado e o limite de itens atuais.
* Scroll de Idioma: É possível posicionar o mouse sobre o botão "Languages" e rodar o scroll para circular instantaneamente por todos os idiomas instalados.
* Memória de Idioma: A escolha do idioma é gravada num arquivo local config.json para que o programa abra no idioma preferido do usuário na próxima inicialização.
INTEGRAÇÃO POKEAPI (AUTOMAÇÃO DE DADOS)
* Modo PokeAPI: Um Checkbox que, quando ativado, busca os dados reais da franquia diretamente no database do PokeAPI toda vez que o usuário muda de Pokémon na lista.
* Destaque de Alterações (Golden Stars
): Sistema "Detetive". Se a PokeAPI alterar um dado (ex: O Attack passou de 49 para 65), a Label correspondente ganha uma Estrela Dourada (
Attack
e a fonte muda para Âmbar.
* Gestor de Hidden Abilities: Se a PokeAPI retornar mais de 2 Abilities para um Pokémon, uma Janela Modal ("Hidden Ability Detectada") é aberta sobre a UI, congelando o fundo, e pede ao usuário para selecionar manualmente quais 2 Abilities ele quer importar para a ROM (com descrições das habilidades inclusas).
* Tradução Inteligente de Aliases: O script mapeia divergências de nomenclatura da PokeAPI para o padrão da ROM (ex: de "Compound Eyes" para "Compoundeyes", de "Water1" para "Water 1").
* Alerta de Compatibilidade: Se a API tentar injetar um Item, Tipo ou Habilidade que não existe na ROM atual (ex: um item da 9ª Geração), o dado é ignorado e, no fim, um Pop-up compila uma lista mostrando tudo o que "falhou" e foi mantido original.
* Suporte a Regional Forms: Botão "Forms". Quando ativado e o Pokémon possui variações (ex: Mega, Alola, Galar, Gigantamax), abre uma janela para selecionar e importar os Status Base específicos dessa forma.
* Atualização de Sprite via API: Além dos status, o programa tenta baixar e exibir a imagem do Pokémon diretamente da base da PokeAPI enquanto ele é editado. Obs: Isso não insere a sprite do PokeAPI na rom, apenas baixa a sprite do pokémon atualmente selecionado como referência.
SISTEMA DE LIMITES DE HARDWARE
* Controle de Caixas de Totais: O usuário pode definir manualmente quantos Pokémon (até 65535), Itens (até 65535) e Abilities (até 255) a ROM possui. Caixas protegidas contra letras (apagamento automático de chars não numéricos).
* Teto Máximo: O programa grava o valor máximo aprovado na sessão. Se o usuário tentar aumentar os limites originais do jogo (ex: Pokémon > 412), um alerta de leitura cega e risco de "Corrupção Irreversível" aparece. Se o usuário aceitar, o programa cria uma autorização (max_seen) e não pergunta mais enquanto ele oscilar os números abaixo desse teto.
* Amnésia de Sessão: O estado de alerta e teto máximo é totalmente resetado e apagado da memória RAM ao carregar um novo arquivo via "Load ROM" ou "Recent ROMs" para evitar vazamento de estado (State Bleed) entre os projetos.
* Salvamento de Configuração Local: Ao ajustar os totais e clicar em "Apply", os limites são salvos em um arquivo .comp vinculado ao nome da ROM para serem recarregados sozinhos da próxima vez que aquela ROM for aberta.
SISTEMAS DE EDIÇÃO AVANÇADA (MODALS E LÓGICAS)
* Botões de Engrenagem (Custom Value Modal): Presente em valores não-nominais (Base Happiness, Steps to Hatch, Gender Ratio). Permite escolher valores tabelados ou abrir uma caixa blindada para inserir um "Valor Custom" de 0 a 255.
* Auto-Conversão: Se o usuário digitar um valor custom (ex: 70 no Happiness) que corresponda a um dado conhecido da tabela, o programa automaticamente traduz para "Normal (70)". Se for desconhecido, mantém "Custom (XX)".
* Gatilho via Scroll: Rodar o scroll até a palavra "Custom" na lista suspensa abre automaticamente a Janela de Engrenagem. Se clicar em Cancelar, o valor anterior é restaurado na lista, apagando o nome "Custom" inútil.
* Botões de Lupa (Search Dialog Modal): Janelas modais que exibem Listboxes pesquisáveis para Listas Grandes (Pokémon e Held Items). Permite pesquisa por digitação (Search Bar). Duplo-clique ou Enter aplica o dado na UI Principal.
* Smart Decap & Rename (Lupa de Pokémon):
* Rename: Caixa de texto que obriga o usuário a respeitar o limite de exatos 10 caracteres do GBA, com contador visual em tempo real (Length 0/10).
* Decap Single / Decap All: Transforma letras maiúsculas em Title Case (BULBASAUR -> Bulbasaur). Possui uma lista inteligente de exceções fixadas (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Salva e Atualiza: Modificar o nome via Decap ou Rename salva o bytearray formatado em Hexadecimal diretamente na ROM na mesma hora, re-renderizando a Listbox instantaneamente.
* Implementação do Tipo Fada (Fairy Toggle): Uma checkbox controlada pela UI. Quando marcada, uma janela nativa pede ao usuário para fornecer o ID da Fada usado na sua Hack ROM (Hexadecimal ou Decimal).
* A engine do programa reescreve os Comboboxes injetando a palavra "Fairy" em tempo real baseada nesse ID. Se for desativado, o programa converte todos os Pokémon que estavam "Fairy" na tela para "Normal" para evitar erros de ponteiro.
GESTÃO DE SPRITES
* Exibição de Sprite do Pokémon: A UI puxa dinamicamente as paletas LZ77 e lê as imagens descomprimidas do Pokémon a partir dos offsets hexadecimais nativos.
* Botão Shiny (
Shiny?): Atualiza a interface e a PokeAPI instantaneamente para exibir a paleta/cor Alternativa (Shiny) do Pokémon selecionado.
* Janela de Sprite Settings: Botão com ícone de Engrenagem próximo ao Pokémon. Abre a ferramenta de Sprite para importar e repontar .png indexados no espaço da ROM com cálculo de free_space.
* Exibição de Sprites de Itens: Ao lado de "Common Held" e "Rare Held", o programa exibe Ícones visuais de 24x24 do item selecionado, lidos diretamente do banco de dados da ROM, atualizando dinamicamente conforme a lista suspensa muda.
* Identificação Automática de ROM: Ao carregar um arquivo, o programa lê o cabeçalho hexadecimal para identificar se é Pokémon Fire Red ou Pokémon Emerald, ajustando automaticamente os ponteiros (Offsets) de leitura de dados, nomes, sprites e itens.
* Carregamento via Drag & Drop: Suporte nativo para arrastar e soltar arquivos .gba diretamente na janela do programa.
* Sistema de ROMs Recentes: Um botão "Menu" que guarda o histórico das últimas 5 ROMs abertas. Os dados são salvos no arquivo recent_roms.json para persistir entre as sessões.
* Live File Watcher: Um loop de fundo que verifica a data de modificação (mtime) do arquivo .gba a cada 1 segundo. Se o usuário alterar os dados do jogo em outro programa (como o editor hexadecimal HxD) e salvar, o PokéROM Editor atualiza os dados na interface visual instantaneamente, sem precisar recarregar a ROM e sem piscar a tela. O sistema possui "amnésia" inteligente para ignorar "auto-saves" feitos pelo próprio editor.
* Atomic Save: Prevenção absoluta contra corrupção de dados. Quando clicar em Salvar, o programa grava os dados em um arquivo temporário (.tmp). Somente se a gravação for 100% bem-sucedida, ele substitui o arquivo original. Evita perda total da ROM em caso de queda de energia, disco cheio, etc.
* Navegação por Scroll e Setas Otimizada: É possível rodar o scroll do mouse sobre qualquer lista suspensa ou usar as setas do teclado para alternar os valores de forma silenciosa e fluida.
* Feedback de Save "Inline": Ao salvar a ROM, em vez de um Pop-up intrusivo do Windows que exige um clique em "OK", uma mensagem verde ("Dados salvos diretamente na ROM!") aparece de forma sutil em um espaço vazio na tela e desaparece automaticamente após 2 segundos.
* Atalhos de Teclado Globais:
* Ctrl + O: Abre a janela de seleção de ROM.
* Ctrl + S: Salva os dados do Pokémon atual na ROM.
* Seta para Cima / Baixo: Navega rapidamente para o próximo Pokémon ou o anterior na lista principal.
* Suporte Multi-Idiomas Dinâmico: O sistema suporta 6 idiomas (Inglês, Português, Espanhol, Francês, Italiano, Alemão) controlados por arquivos .json externos na pasta /lang.
* Troca de Idiomas em Tempo Real: Um botão "Menu" permite trocar o idioma. A interface é inteiramente destruída e reconstruída numa fração de segundo com os novos textos, preservando os dados da ROM, a posição do Pokémon selecionado e o limite de itens atuais.
* Scroll de Idioma: É possível posicionar o mouse sobre o botão "Languages" e rodar o scroll para circular instantaneamente por todos os idiomas instalados.
* Memória de Idioma: A escolha do idioma é gravada num arquivo local config.json para que o programa abra no idioma preferido do usuário na próxima inicialização.
* Modo PokeAPI: Um Checkbox que, quando ativado, busca os dados reais da franquia diretamente no database do PokeAPI toda vez que o usuário muda de Pokémon na lista.
* Destaque de Alterações (Golden Stars
* Gestor de Hidden Abilities: Se a PokeAPI retornar mais de 2 Abilities para um Pokémon, uma Janela Modal ("Hidden Ability Detectada") é aberta sobre a UI, congelando o fundo, e pede ao usuário para selecionar manualmente quais 2 Abilities ele quer importar para a ROM (com descrições das habilidades inclusas).
* Tradução Inteligente de Aliases: O script mapeia divergências de nomenclatura da PokeAPI para o padrão da ROM (ex: de "Compound Eyes" para "Compoundeyes", de "Water1" para "Water 1").
* Alerta de Compatibilidade: Se a API tentar injetar um Item, Tipo ou Habilidade que não existe na ROM atual (ex: um item da 9ª Geração), o dado é ignorado e, no fim, um Pop-up compila uma lista mostrando tudo o que "falhou" e foi mantido original.
* Suporte a Regional Forms: Botão "Forms". Quando ativado e o Pokémon possui variações (ex: Mega, Alola, Galar, Gigantamax), abre uma janela para selecionar e importar os Status Base específicos dessa forma.
* Atualização de Sprite via API: Além dos status, o programa tenta baixar e exibir a imagem do Pokémon diretamente da base da PokeAPI enquanto ele é editado. Obs: Isso não insere a sprite do PokeAPI na rom, apenas baixa a sprite do pokémon atualmente selecionado como referência.
* Controle de Caixas de Totais: O usuário pode definir manualmente quantos Pokémon (até 65535), Itens (até 65535) e Abilities (até 255) a ROM possui. Caixas protegidas contra letras (apagamento automático de chars não numéricos).
* Teto Máximo: O programa grava o valor máximo aprovado na sessão. Se o usuário tentar aumentar os limites originais do jogo (ex: Pokémon > 412), um alerta de leitura cega e risco de "Corrupção Irreversível" aparece. Se o usuário aceitar, o programa cria uma autorização (max_seen) e não pergunta mais enquanto ele oscilar os números abaixo desse teto.
* Amnésia de Sessão: O estado de alerta e teto máximo é totalmente resetado e apagado da memória RAM ao carregar um novo arquivo via "Load ROM" ou "Recent ROMs" para evitar vazamento de estado (State Bleed) entre os projetos.
* Salvamento de Configuração Local: Ao ajustar os totais e clicar em "Apply", os limites são salvos em um arquivo .comp vinculado ao nome da ROM para serem recarregados sozinhos da próxima vez que aquela ROM for aberta.
* Botões de Engrenagem (Custom Value Modal): Presente em valores não-nominais (Base Happiness, Steps to Hatch, Gender Ratio). Permite escolher valores tabelados ou abrir uma caixa blindada para inserir um "Valor Custom" de 0 a 255.
* Auto-Conversão: Se o usuário digitar um valor custom (ex: 70 no Happiness) que corresponda a um dado conhecido da tabela, o programa automaticamente traduz para "Normal (70)". Se for desconhecido, mantém "Custom (XX)".
* Gatilho via Scroll: Rodar o scroll até a palavra "Custom" na lista suspensa abre automaticamente a Janela de Engrenagem. Se clicar em Cancelar, o valor anterior é restaurado na lista, apagando o nome "Custom" inútil.
* Botões de Lupa (Search Dialog Modal): Janelas modais que exibem Listboxes pesquisáveis para Listas Grandes (Pokémon e Held Items). Permite pesquisa por digitação (Search Bar). Duplo-clique ou Enter aplica o dado na UI Principal.
* Smart Decap & Rename (Lupa de Pokémon):
* Rename: Caixa de texto que obriga o usuário a respeitar o limite de exatos 10 caracteres do GBA, com contador visual em tempo real (Length 0/10).
* Decap Single / Decap All: Transforma letras maiúsculas em Title Case (BULBASAUR -> Bulbasaur). Possui uma lista inteligente de exceções fixadas (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Salva e Atualiza: Modificar o nome via Decap ou Rename salva o bytearray formatado em Hexadecimal diretamente na ROM na mesma hora, re-renderizando a Listbox instantaneamente.
* Implementação do Tipo Fada (Fairy Toggle): Uma checkbox controlada pela UI. Quando marcada, uma janela nativa pede ao usuário para fornecer o ID da Fada usado na sua Hack ROM (Hexadecimal ou Decimal).
* A engine do programa reescreve os Comboboxes injetando a palavra "Fairy" em tempo real baseada nesse ID. Se for desativado, o programa converte todos os Pokémon que estavam "Fairy" na tela para "Normal" para evitar erros de ponteiro.
* Exibição de Sprite do Pokémon: A UI puxa dinamicamente as paletas LZ77 e lê as imagens descomprimidas do Pokémon a partir dos offsets hexadecimais nativos.
* Botão Shiny (
* Janela de Sprite Settings: Botão com ícone de Engrenagem próximo ao Pokémon. Abre a ferramenta de Sprite para importar e repontar .png indexados no espaço da ROM com cálculo de free_space.
* Exibição de Sprites de Itens: Ao lado de "Common Held" e "Rare Held", o programa exibe Ícones visuais de 24x24 do item selecionado, lidos diretamente do banco de dados da ROM, atualizando dinamicamente conforme a lista suspensa muda.
It is an advanced, standalone data editing tool for Pokémon GBA ROMs. Forget complex files: the tool automatically reads data and offsets directly from the ROM and features online integration! Below are all the detailed features of the program:
FILE I/O AND ROM MANAGEMENT
* Automatic ROM Identification: Upon loading a file, the program reads the hexadecimal header to identify if it is Pokémon Fire Red or Pokémon Emerald, automatically adjusting the reading pointers (Offsets) for data, names, sprites, and items.
* Drag & Drop Loading: Native support to drag and drop .gba files directly into the program window.
* Recent ROMs System: A "Menu" button that saves the history of the last 5 opened ROMs. Data is saved in the recent_roms.json file to persist between sessions.
* Live File Watcher: A background loop that checks the .gba file's modification date (mtime) every 1 second. If the user alters game data in another program (like the HxD hex editor) and saves, the PokéROM Editor updates the data on the visual interface instantly, without needing to reload the ROM and without screen flickering. The system features a smart "amnesia" to ignore "auto-saves" made by the editor itself.
* Atomic Save: Absolute prevention against data corruption. When clicking Save, the program writes the data to a temporary file (.tmp). Only if the saving process is 100% successful, it replaces the original file. Prevents total loss of the ROM in case of a power outage, full disk, etc.
INTERFACE AND UX
* Optimized Scroll and Arrow Navigation: It is possible to use the mouse scroll wheel over any dropdown list or use the keyboard arrows to switch values silently and smoothly.
* "Inline" Save Feedback: When saving the ROM, instead of an intrusive Windows pop-up requiring an "OK" click, a green message ("Data saved directly to the ROM!") subtly appears in an empty space on the screen and disappears automatically after 2 seconds.
* Global Keyboard Shortcuts:
* Ctrl + O: Opens the ROM selection window.
* Ctrl + S: Saves the current Pokémon's data to the ROM.
* Up / Down Arrow: Quickly navigates to the next or previous Pokémon in the main list.
INTERNATIONALIZATION (i18n)
* Dynamic Multi-Language Support: The system supports 6 languages (English, Portuguese, Spanish, French, Italian, German) controlled by external .json files in the /lang folder.
* Real-Time Language Switching: A "Menu" button allows changing the language. The interface is entirely destroyed and rebuilt in a fraction of a second with the new texts, preserving the ROM data, the selected Pokémon's position, and the current item limits.
* Language Scroll: It is possible to hover the mouse over the "Languages" button and use the scroll wheel to cycle instantly through all installed languages.
* Language Memory: The language choice is saved in a local config.json file so the program opens in the user's preferred language on the next startup.
POKEAPI INTEGRATION (DATA AUTOMATION)
* PokeAPI Mode: A Checkbox that, when activated, fetches the franchise's real data directly from the PokeAPI database every time the user changes the Pokémon in the list.
* Alteration Highlights (Golden Stars
): "Detective" system. If the PokeAPI alters a stat (e.g., Attack went from 49 to 65), the corresponding Label gains a Golden Star (
Attack
and the font changes to Amber.
* Hidden Abilities Manager: If the PokeAPI returns more than 2 Abilities for a Pokémon, a Modal Window ("Hidden Ability Detected") opens over the UI, freezing the background, and asks the user to manually select which 2 Abilities they want to import to the ROM (including ability descriptions).
* Smart Alias Translation: The script maps PokeAPI nomenclature divergences to the ROM's standard (e.g., from "Compound Eyes" to "Compoundeyes", from "Water1" to "Water 1").
* Compatibility Alert: If the API tries to inject an Item, Type, or Ability that does not exist in the current ROM (e.g., a 9th Generation item), the data is ignored, and at the end, a Pop-up compiles a list showing everything that "failed" and was kept original.
* Regional Forms Support: "Forms" button. When activated and the Pokémon has variations (e.g., Mega, Alolan, Galarian, Gigantamax), it opens a window to select and import the specific Base Stats of that form.
* Sprite Update via API: In addition to the stats, the program tries to download and display the Pokémon's image directly from the PokeAPI database while it is being edited. Note: This does not insert the PokeAPI sprite into the ROM; it only downloads the currently selected Pokémon's sprite as a reference.
HARDWARE LIMITS SYSTEM
* Totals Boxes Control: The user can manually define how many Pokémon (up to 65535), Items (up to 65535), and Abilities (up to 255) the ROM has. Boxes are protected against letters (automatic deletion of non-numeric chars).
* Maximum Ceiling: The program saves the maximum approved value in the session. If the user tries to increase the game's original limits (e.g., Pokémon > 412), a blind read and "Irreversible Corruption" risk alert appears. If the user accepts, the program creates an authorization (max_seen) and does not ask again as long as they oscillate the numbers below that ceiling.
* Session Amnesia: The alert state and maximum ceiling are totally reset and cleared from RAM when loading a new file via "Load ROM" or "Recent ROMs" to prevent state leakage (State Bleed) between projects.
* Local Configuration Saving: When adjusting the totals and clicking "Apply", the limits are saved in a .comp file linked to the ROM's name to be automatically reloaded the next time that ROM is opened.
ADVANCED EDITING SYSTEMS (MODALS AND LOGICS)
* Gear Buttons (Custom Value Modal): Present in non-nominal values (Base Happiness, Steps to Hatch, Gender Ratio). Allows choosing tabulated values or opening a shielded box to input a "Custom Value" from 0 to 255.
* Auto-Conversion: If the user inputs a custom value (e.g., 70 in Happiness) that corresponds to a known table data, the program automatically translates it to "Normal (70)". If unknown, it keeps "Custom (XX)".
* Trigger via Scroll: Scrolling down to the word "Custom" in the dropdown list automatically opens the Gear Window. If "Cancel" is clicked, the previous value is restored to the list, erasing the useless "Custom" name.
* Magnifying Glass Buttons (Search Dialog Modal): Modal windows that display searchable Listboxes for Large Lists (Pokémon and Held Items). Allows search by typing (Search Bar). Double-click or Enter applies the data to the Main UI.
* Smart Decap & Rename (Pokémon Search):
* Rename: Text box that forces the user to respect the exact 10-character limit of the GBA, with a real-time visual counter (Length 0/10).
* Decap Single / Decap All: Transforms uppercase letters into Title Case (BULBASAUR -> Bulbasaur). Features a smart list of fixed exceptions (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Save and Update: Modifying the name via Decap or Rename saves the formatted bytearray in Hexadecimal directly to the ROM in real-time, instantly re-rendering the Listbox.
* Fairy Type Implementation (Fairy Toggle): A UI-controlled checkbox. When checked, a native window asks the user to provide the Fairy ID used in their Hack ROM (Hexadecimal or Decimal).
* The program's engine rewrites the Comboboxes, injecting the word "Fairy" in real-time based on that ID. If unchecked, the program converts all Pokémon that were "Fairy" on the screen to "Normal" to avoid pointer errors.
SPRITE MANAGEMENT
* Pokémon Sprite Display: The UI dynamically pulls LZ77 palettes and reads the decompressed Pokémon images from native hexadecimal offsets.
* Shiny Button (
Shiny?): Instantly updates the interface and PokeAPI to display the selected Pokémon's Alternative (Shiny) palette/color.
* Sprite Settings Window: Gear icon button next to the Pokémon. Opens the Sprite tool to import and repoint indexed .png files in the ROM space with free_space calculation.
* Item Sprites Display: Next to "Common Held" and "Rare Held", the program displays 24x24 visual Icons of the selected item, read directly from the ROM database, dynamically updating as the dropdown list changes.
* Automatic ROM Identification: Upon loading a file, the program reads the hexadecimal header to identify if it is Pokémon Fire Red or Pokémon Emerald, automatically adjusting the reading pointers (Offsets) for data, names, sprites, and items.
* Drag & Drop Loading: Native support to drag and drop .gba files directly into the program window.
* Recent ROMs System: A "Menu" button that saves the history of the last 5 opened ROMs. Data is saved in the recent_roms.json file to persist between sessions.
* Live File Watcher: A background loop that checks the .gba file's modification date (mtime) every 1 second. If the user alters game data in another program (like the HxD hex editor) and saves, the PokéROM Editor updates the data on the visual interface instantly, without needing to reload the ROM and without screen flickering. The system features a smart "amnesia" to ignore "auto-saves" made by the editor itself.
* Atomic Save: Absolute prevention against data corruption. When clicking Save, the program writes the data to a temporary file (.tmp). Only if the saving process is 100% successful, it replaces the original file. Prevents total loss of the ROM in case of a power outage, full disk, etc.
* Optimized Scroll and Arrow Navigation: It is possible to use the mouse scroll wheel over any dropdown list or use the keyboard arrows to switch values silently and smoothly.
* "Inline" Save Feedback: When saving the ROM, instead of an intrusive Windows pop-up requiring an "OK" click, a green message ("Data saved directly to the ROM!") subtly appears in an empty space on the screen and disappears automatically after 2 seconds.
* Global Keyboard Shortcuts:
* Ctrl + O: Opens the ROM selection window.
* Ctrl + S: Saves the current Pokémon's data to the ROM.
* Up / Down Arrow: Quickly navigates to the next or previous Pokémon in the main list.
* Dynamic Multi-Language Support: The system supports 6 languages (English, Portuguese, Spanish, French, Italian, German) controlled by external .json files in the /lang folder.
* Real-Time Language Switching: A "Menu" button allows changing the language. The interface is entirely destroyed and rebuilt in a fraction of a second with the new texts, preserving the ROM data, the selected Pokémon's position, and the current item limits.
* Language Scroll: It is possible to hover the mouse over the "Languages" button and use the scroll wheel to cycle instantly through all installed languages.
* Language Memory: The language choice is saved in a local config.json file so the program opens in the user's preferred language on the next startup.
* PokeAPI Mode: A Checkbox that, when activated, fetches the franchise's real data directly from the PokeAPI database every time the user changes the Pokémon in the list.
* Alteration Highlights (Golden Stars
* Hidden Abilities Manager: If the PokeAPI returns more than 2 Abilities for a Pokémon, a Modal Window ("Hidden Ability Detected") opens over the UI, freezing the background, and asks the user to manually select which 2 Abilities they want to import to the ROM (including ability descriptions).
* Smart Alias Translation: The script maps PokeAPI nomenclature divergences to the ROM's standard (e.g., from "Compound Eyes" to "Compoundeyes", from "Water1" to "Water 1").
* Compatibility Alert: If the API tries to inject an Item, Type, or Ability that does not exist in the current ROM (e.g., a 9th Generation item), the data is ignored, and at the end, a Pop-up compiles a list showing everything that "failed" and was kept original.
* Regional Forms Support: "Forms" button. When activated and the Pokémon has variations (e.g., Mega, Alolan, Galarian, Gigantamax), it opens a window to select and import the specific Base Stats of that form.
* Sprite Update via API: In addition to the stats, the program tries to download and display the Pokémon's image directly from the PokeAPI database while it is being edited. Note: This does not insert the PokeAPI sprite into the ROM; it only downloads the currently selected Pokémon's sprite as a reference.
* Totals Boxes Control: The user can manually define how many Pokémon (up to 65535), Items (up to 65535), and Abilities (up to 255) the ROM has. Boxes are protected against letters (automatic deletion of non-numeric chars).
* Maximum Ceiling: The program saves the maximum approved value in the session. If the user tries to increase the game's original limits (e.g., Pokémon > 412), a blind read and "Irreversible Corruption" risk alert appears. If the user accepts, the program creates an authorization (max_seen) and does not ask again as long as they oscillate the numbers below that ceiling.
* Session Amnesia: The alert state and maximum ceiling are totally reset and cleared from RAM when loading a new file via "Load ROM" or "Recent ROMs" to prevent state leakage (State Bleed) between projects.
* Local Configuration Saving: When adjusting the totals and clicking "Apply", the limits are saved in a .comp file linked to the ROM's name to be automatically reloaded the next time that ROM is opened.
* Gear Buttons (Custom Value Modal): Present in non-nominal values (Base Happiness, Steps to Hatch, Gender Ratio). Allows choosing tabulated values or opening a shielded box to input a "Custom Value" from 0 to 255.
* Auto-Conversion: If the user inputs a custom value (e.g., 70 in Happiness) that corresponds to a known table data, the program automatically translates it to "Normal (70)". If unknown, it keeps "Custom (XX)".
* Trigger via Scroll: Scrolling down to the word "Custom" in the dropdown list automatically opens the Gear Window. If "Cancel" is clicked, the previous value is restored to the list, erasing the useless "Custom" name.
* Magnifying Glass Buttons (Search Dialog Modal): Modal windows that display searchable Listboxes for Large Lists (Pokémon and Held Items). Allows search by typing (Search Bar). Double-click or Enter applies the data to the Main UI.
* Smart Decap & Rename (Pokémon Search):
* Rename: Text box that forces the user to respect the exact 10-character limit of the GBA, with a real-time visual counter (Length 0/10).
* Decap Single / Decap All: Transforms uppercase letters into Title Case (BULBASAUR -> Bulbasaur). Features a smart list of fixed exceptions (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Save and Update: Modifying the name via Decap or Rename saves the formatted bytearray in Hexadecimal directly to the ROM in real-time, instantly re-rendering the Listbox.
* Fairy Type Implementation (Fairy Toggle): A UI-controlled checkbox. When checked, a native window asks the user to provide the Fairy ID used in their Hack ROM (Hexadecimal or Decimal).
* The program's engine rewrites the Comboboxes, injecting the word "Fairy" in real-time based on that ID. If unchecked, the program converts all Pokémon that were "Fairy" on the screen to "Normal" to avoid pointer errors.
* Pokémon Sprite Display: The UI dynamically pulls LZ77 palettes and reads the decompressed Pokémon images from native hexadecimal offsets.
* Shiny Button (
* Sprite Settings Window: Gear icon button next to the Pokémon. Opens the Sprite tool to import and repoint indexed .png files in the ROM space with free_space calculation.
* Item Sprites Display: Next to "Common Held" and "Rare Held", the program displays 24x24 visual Icons of the selected item, read directly from the ROM database, dynamically updating as the dropdown list changes.
Es una herramienta de edición de datos avanzada e independiente para ROMs de GBA de Pokémon. Olvídate de archivos complejos: ¡la herramienta lee los datos y offsets directamente de la ROM automáticamente y posee integración online! A continuación se detallan todas las características del programa:
GESTIÓN DE ARCHIVOS Y ROMS (FILE I/O)
* Identificación Automática de ROM: Al cargar un archivo, el programa lee el encabezado hexadecimal para identificar si es Pokémon Fire Red o Pokémon Emerald, ajustando automáticamente los punteros (Offsets) de lectura de datos, nombres, sprites y objetos (Items).
* Carga vía Drag & Drop (Arrastrar y Soltar): Soporte nativo para arrastrar y soltar archivos .gba directamente en la ventana del programa.
* Sistema de ROMs Recientes: Un botón "Menú" que guarda el historial de las últimas 5 ROMs abiertas. Los datos se guardan en el archivo recent_roms.json para persistir entre sesiones.
* Live File Watcher (Observador de Archivos en Vivo): Un bucle en segundo plano que verifica la fecha de modificación (mtime) del archivo .gba cada 1 segundo. Si el usuario altera los datos del juego en otro programa (como el editor hexadecimal HxD) y guarda, el PokéROM Editor actualiza los datos en la interfaz visual instantáneamente, sin necesidad de recargar la ROM y sin parpadeos en la pantalla. El sistema posee una "amnesia" inteligente para ignorar los autoguardados realizados por el propio editor.
* Guardado Atómico (Atomic Save): Prevención absoluta contra la corrupción de datos. Al hacer clic en Guardar, el programa escribe los datos en un archivo temporal (.tmp). Solo si el guardado es 100% exitoso, reemplaza el archivo original. Evita la pérdida total de la ROM en caso de cortes de energía, disco lleno, etc.
INTERFAZ Y UX
* Navegación Optimizada por Scroll y Flechas: Es posible usar la rueda de desplazamiento del ratón sobre cualquier lista desplegable o usar las flechas del teclado para alternar los valores de forma silenciosa y fluida.
* Feedback de Guardado "Inline": Al guardar la ROM, en lugar de una ventana emergente intrusiva de Windows que requiere hacer clic en "Aceptar", aparece sutilmente un mensaje verde ("¡Datos guardados directamente en la ROM!") en un espacio vacío de la pantalla y desaparece automáticamente después de 2 segundos.
* Atajos de Teclado Globales:
* Ctrl + O: Abre la ventana de selección de ROM.
* Ctrl + S: Guarda los datos del Pokémon actual en la ROM.
* Flecha Arriba / Abajo: Navega rápidamente al Pokémon siguiente o anterior en la lista principal.
INTERNACIONALIZACIÓN (i18n)
* Soporte Multilingüe Dinámico: El sistema soporta 6 idiomas (Inglés, Português, Español, Francés, Italiano, Alemán) controlados por archivos .json externos en la carpeta /lang.
* Cambio de Idiomas en Tiempo Real: Un botón "Menú" permite cambiar el idioma. La interfaz se destruye por completo y se reconstruye en una fracción de segundo con los nuevos textos, preservando los datos de la ROM, la posición del Pokémon seleccionado y el límite de objetos actuales.
* Scroll de Idioma: Es posible posicionar el ratón sobre el botón "Languages" y girar la rueda de desplazamiento para alternar instantáneamente entre todos los idiomas instalados.
* Memoria de Idioma: La elección del idioma se guarda en un archivo local config.json para que el programa se abra en el idioma preferido del usuario en el próximo inicio.
INTEGRACIÓN POKEAPI (AUTOMATIZACIÓN DE DATOS)
* Modo PokeAPI: Una casilla de verificación (Checkbox) que, al activarse, busca los datos reales de la franquicia directamente en la base de datos de PokeAPI cada vez que el usuario cambia de Pokémon en la lista.
* Resaltado de Alteraciones (Golden Stars
): Sistema "Detective". Si la PokeAPI altera un dato (ej: el Attack pasó de 49 a 65), la Etiqueta (Label) correspondiente gana una Estrella Dorada (
Attack
y la fuente cambia a color Ámbar.
* Gestor de Hidden Abilities (Habilidades Ocultas): Si la PokeAPI devuelve más de 2 Abilities para un Pokémon, se abre una Ventana Modal ("Hidden Ability Detectada") sobre la interfaz, congelando el fondo, y le pide al usuario que seleccione manualmente cuáles 2 Abilities desea importar a la ROM (incluyendo las descripciones de las habilidades).
* Traducción Inteligente de Alias: El script mapea las divergencias de nomenclatura de la PokeAPI al estándar de la ROM (ej: de "Compound Eyes" a "Compoundeyes", de "Water1" a "Water 1").
* Alerta de Compatibilidad: Si la API intenta inyectar un Item, Tipo o Habilidad que no existe en la ROM actual (ej: un objeto de la 9ª Generación), el dato se ignora y, al final, una ventana emergente compila una lista mostrando todo lo que "falló" y se mantuvo original.
* Soporte de Regional Forms: Botón "Forms". Cuando está activado y el Pokémon tiene variaciones (ej: Mega, Alola, Galar, Gigantamax), abre una ventana para seleccionar e importar los Base Stats específicos de esa forma.
* Actualización de Sprite vía API: Además de los stats, el programa intenta descargar y mostrar la imagen del Pokémon directamente desde la base de datos de PokeAPI mientras se edita. Obs: Esto no inserta el sprite de PokeAPI en la ROM, solo descarga el sprite del Pokémon actualmente seleccionado como referencia.
SISTEMA DE LÍMITES DE HARDWARE
* Control de Cajas de Totales: El usuario puede definir manualmente cuántos Pokémon (hasta 65535), Items (hasta 65535) y Abilities (hasta 255) posee la ROM. Las cajas están protegidas contra letras (borrado automático de chars no numéricos).
* Límite Máximo (Techo): El programa graba el valor máximo aprobado en la sesión. Si el usuario intenta aumentar los límites originales del juego (ej: Pokémon > 412), aparece una alerta de lectura ciega y riesgo de "Corrupción Irreversible". Si el usuario acepta, el programa crea una autorización (max_seen) y no vuelve a preguntar mientras oscile los números por debajo de ese límite.
* Amnesia de Sesión: El estado de alerta y el límite máximo se restablecen y borran por completo de la memoria RAM al cargar un nuevo archivo vía "Load ROM" o "Recent ROMs" para evitar la filtración de estados (State Bleed) entre proyectos.
* Guardado de Configuración Local: Al ajustar los totales y hacer clic en "Apply", los límites se guardan en un archivo .comp vinculado al nombre de la ROM para que se recarguen automáticamente la próxima vez que se abra esa ROM.
SISTEMAS DE EDICIÓN AVANZADA (MODALS Y LÓGICAS)
* Botones de Engranaje (Custom Value Modal): Presente en valores no nominales (Base Happiness, Steps to Hatch, Gender Ratio). Permite elegir valores tabulados o abrir una caja blindada para introducir un "Valor Custom" de 0 a 255.
* Autoconversión: Si el usuario introduce un valor personalizado (ej: 70 en Happiness) que corresponde a un dato conocido de la tabla, el programa lo traduce automáticamente a "Normal (70)". Si es desconocido, mantiene "Custom (XX)".
* Disparador vía Scroll: Desplazar la rueda del ratón hasta la palabra "Custom" en la lista desplegable abre automáticamente la Ventana de Engranaje. Si se hace clic en Cancelar, el valor anterior se restaura en la lista, borrando el nombre inútil "Custom".
* Botones de Lupa (Search Dialog Modal): Ventanas modales que muestran Listboxes con función de búsqueda para Listas Grandes (Pokémon y Held Items). Permite buscar escribiendo (Search Bar). Al hacer doble clic o pulsar Enter se aplica el dato en la Interfaz Principal.
* Smart Decap & Rename (Lupa de Pokémon):
* Rename (Renombrar): Caja de texto que obliga al usuario a respetar el límite de exactamente 10 caracteres de GBA, con un contador visual en tiempo real (Length 0/10).
* Decap Single / Decap All: Transforma las letras mayúsculas al formato Title Case (BULBASAUR -> Bulbasaur). Posee una lista inteligente de excepciones fijas (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Guarda y Actualiza: Modificar el nombre vía Decap o Rename guarda el bytearray formateado en Hexadecimal directamente en la ROM al instante, volviendo a renderizar la Listbox inmediatamente.
* Implementación del Tipo Hada (Fairy Toggle): Un checkbox controlado por la interfaz. Al marcarlo, una ventana nativa le pide al usuario que proporcione el ID del tipo Hada (Fairy) usado en su Hack ROM (Hexadecimal o Decimal).
* El motor del programa reescribe los Comboboxes inyectando la palabra "Fairy" en tiempo real basándose en ese ID. Si se desactiva, el programa convierte todos los Pokémon que eran "Fairy" en la pantalla a "Normal" para evitar errores de punteros.
GESTIÓN DE SPRITES
* Exhibición de Sprite de Pokémon: La interfaz extrae dinámicamente las paletas LZ77 y lee las imágenes descomprimidas del Pokémon a partir de los offsets hexadecimales nativos.
* Botón Shiny (
Shiny?): Actualiza la interfaz y la PokeAPI instantáneamente para mostrar la paleta/color Alternativo (Shiny) del Pokémon seleccionado.
* Ventana de Ajustes de Sprite (Sprite Settings): Botón con icono de Engranaje junto al Pokémon. Abre la herramienta de Sprites para importar y repuntar archivos .png indexados en el espacio de la ROM con cálculo de free_space.
* Exhibición de Sprites de Items: Junto a "Common Held" y "Rare Held", el programa muestra Iconos visuales de 24x24 del objeto seleccionado, leídos directamente de la base de datos de la ROM, actualizándose dinámicamente según cambia la lista desplegable.
* Identificación Automática de ROM: Al cargar un archivo, el programa lee el encabezado hexadecimal para identificar si es Pokémon Fire Red o Pokémon Emerald, ajustando automáticamente los punteros (Offsets) de lectura de datos, nombres, sprites y objetos (Items).
* Carga vía Drag & Drop (Arrastrar y Soltar): Soporte nativo para arrastrar y soltar archivos .gba directamente en la ventana del programa.
* Sistema de ROMs Recientes: Un botón "Menú" que guarda el historial de las últimas 5 ROMs abiertas. Los datos se guardan en el archivo recent_roms.json para persistir entre sesiones.
* Live File Watcher (Observador de Archivos en Vivo): Un bucle en segundo plano que verifica la fecha de modificación (mtime) del archivo .gba cada 1 segundo. Si el usuario altera los datos del juego en otro programa (como el editor hexadecimal HxD) y guarda, el PokéROM Editor actualiza los datos en la interfaz visual instantáneamente, sin necesidad de recargar la ROM y sin parpadeos en la pantalla. El sistema posee una "amnesia" inteligente para ignorar los autoguardados realizados por el propio editor.
* Guardado Atómico (Atomic Save): Prevención absoluta contra la corrupción de datos. Al hacer clic en Guardar, el programa escribe los datos en un archivo temporal (.tmp). Solo si el guardado es 100% exitoso, reemplaza el archivo original. Evita la pérdida total de la ROM en caso de cortes de energía, disco lleno, etc.
* Navegación Optimizada por Scroll y Flechas: Es posible usar la rueda de desplazamiento del ratón sobre cualquier lista desplegable o usar las flechas del teclado para alternar los valores de forma silenciosa y fluida.
* Feedback de Guardado "Inline": Al guardar la ROM, en lugar de una ventana emergente intrusiva de Windows que requiere hacer clic en "Aceptar", aparece sutilmente un mensaje verde ("¡Datos guardados directamente en la ROM!") en un espacio vacío de la pantalla y desaparece automáticamente después de 2 segundos.
* Atajos de Teclado Globales:
* Ctrl + O: Abre la ventana de selección de ROM.
* Ctrl + S: Guarda los datos del Pokémon actual en la ROM.
* Flecha Arriba / Abajo: Navega rápidamente al Pokémon siguiente o anterior en la lista principal.
* Soporte Multilingüe Dinámico: El sistema soporta 6 idiomas (Inglés, Português, Español, Francés, Italiano, Alemán) controlados por archivos .json externos en la carpeta /lang.
* Cambio de Idiomas en Tiempo Real: Un botón "Menú" permite cambiar el idioma. La interfaz se destruye por completo y se reconstruye en una fracción de segundo con los nuevos textos, preservando los datos de la ROM, la posición del Pokémon seleccionado y el límite de objetos actuales.
* Scroll de Idioma: Es posible posicionar el ratón sobre el botón "Languages" y girar la rueda de desplazamiento para alternar instantáneamente entre todos los idiomas instalados.
* Memoria de Idioma: La elección del idioma se guarda en un archivo local config.json para que el programa se abra en el idioma preferido del usuario en el próximo inicio.
* Modo PokeAPI: Una casilla de verificación (Checkbox) que, al activarse, busca los datos reales de la franquicia directamente en la base de datos de PokeAPI cada vez que el usuario cambia de Pokémon en la lista.
* Resaltado de Alteraciones (Golden Stars
* Gestor de Hidden Abilities (Habilidades Ocultas): Si la PokeAPI devuelve más de 2 Abilities para un Pokémon, se abre una Ventana Modal ("Hidden Ability Detectada") sobre la interfaz, congelando el fondo, y le pide al usuario que seleccione manualmente cuáles 2 Abilities desea importar a la ROM (incluyendo las descripciones de las habilidades).
* Traducción Inteligente de Alias: El script mapea las divergencias de nomenclatura de la PokeAPI al estándar de la ROM (ej: de "Compound Eyes" a "Compoundeyes", de "Water1" a "Water 1").
* Alerta de Compatibilidad: Si la API intenta inyectar un Item, Tipo o Habilidad que no existe en la ROM actual (ej: un objeto de la 9ª Generación), el dato se ignora y, al final, una ventana emergente compila una lista mostrando todo lo que "falló" y se mantuvo original.
* Soporte de Regional Forms: Botón "Forms". Cuando está activado y el Pokémon tiene variaciones (ej: Mega, Alola, Galar, Gigantamax), abre una ventana para seleccionar e importar los Base Stats específicos de esa forma.
* Actualización de Sprite vía API: Además de los stats, el programa intenta descargar y mostrar la imagen del Pokémon directamente desde la base de datos de PokeAPI mientras se edita. Obs: Esto no inserta el sprite de PokeAPI en la ROM, solo descarga el sprite del Pokémon actualmente seleccionado como referencia.
* Control de Cajas de Totales: El usuario puede definir manualmente cuántos Pokémon (hasta 65535), Items (hasta 65535) y Abilities (hasta 255) posee la ROM. Las cajas están protegidas contra letras (borrado automático de chars no numéricos).
* Límite Máximo (Techo): El programa graba el valor máximo aprobado en la sesión. Si el usuario intenta aumentar los límites originales del juego (ej: Pokémon > 412), aparece una alerta de lectura ciega y riesgo de "Corrupción Irreversible". Si el usuario acepta, el programa crea una autorización (max_seen) y no vuelve a preguntar mientras oscile los números por debajo de ese límite.
* Amnesia de Sesión: El estado de alerta y el límite máximo se restablecen y borran por completo de la memoria RAM al cargar un nuevo archivo vía "Load ROM" o "Recent ROMs" para evitar la filtración de estados (State Bleed) entre proyectos.
* Guardado de Configuración Local: Al ajustar los totales y hacer clic en "Apply", los límites se guardan en un archivo .comp vinculado al nombre de la ROM para que se recarguen automáticamente la próxima vez que se abra esa ROM.
* Botones de Engranaje (Custom Value Modal): Presente en valores no nominales (Base Happiness, Steps to Hatch, Gender Ratio). Permite elegir valores tabulados o abrir una caja blindada para introducir un "Valor Custom" de 0 a 255.
* Autoconversión: Si el usuario introduce un valor personalizado (ej: 70 en Happiness) que corresponde a un dato conocido de la tabla, el programa lo traduce automáticamente a "Normal (70)". Si es desconocido, mantiene "Custom (XX)".
* Disparador vía Scroll: Desplazar la rueda del ratón hasta la palabra "Custom" en la lista desplegable abre automáticamente la Ventana de Engranaje. Si se hace clic en Cancelar, el valor anterior se restaura en la lista, borrando el nombre inútil "Custom".
* Botones de Lupa (Search Dialog Modal): Ventanas modales que muestran Listboxes con función de búsqueda para Listas Grandes (Pokémon y Held Items). Permite buscar escribiendo (Search Bar). Al hacer doble clic o pulsar Enter se aplica el dato en la Interfaz Principal.
* Smart Decap & Rename (Lupa de Pokémon):
* Rename (Renombrar): Caja de texto que obliga al usuario a respetar el límite de exactamente 10 caracteres de GBA, con un contador visual en tiempo real (Length 0/10).
* Decap Single / Decap All: Transforma las letras mayúsculas al formato Title Case (BULBASAUR -> Bulbasaur). Posee una lista inteligente de excepciones fijas (Ho-Oh, Porygon2, Farfetch'd, Mime Jr.).
* Guarda y Actualiza: Modificar el nombre vía Decap o Rename guarda el bytearray formateado en Hexadecimal directamente en la ROM al instante, volviendo a renderizar la Listbox inmediatamente.
* Implementación del Tipo Hada (Fairy Toggle): Un checkbox controlado por la interfaz. Al marcarlo, una ventana nativa le pide al usuario que proporcione el ID del tipo Hada (Fairy) usado en su Hack ROM (Hexadecimal o Decimal).
* El motor del programa reescribe los Comboboxes inyectando la palabra "Fairy" en tiempo real basándose en ese ID. Si se desactiva, el programa convierte todos los Pokémon que eran "Fairy" en la pantalla a "Normal" para evitar errores de punteros.
* Exhibición de Sprite de Pokémon: La interfaz extrae dinámicamente las paletas LZ77 y lee las imágenes descomprimidas del Pokémon a partir de los offsets hexadecimales nativos.
* Botón Shiny (
* Ventana de Ajustes de Sprite (Sprite Settings): Botón con icono de Engranaje junto al Pokémon. Abre la herramienta de Sprites para importar y repuntar archivos .png indexados en el espacio de la ROM con cálculo de free_space.
* Exhibición de Sprites de Items: Junto a "Common Held" y "Rare Held", el programa muestra Iconos visuales de 24x24 del objeto seleccionado, leídos directamente de la base de datos de la ROM, actualizándose dinámicamente según cambia la lista desplegable.
WARNING:
Aviso Importante sobre Antivírus (Falso-Positivo)
É possível que o seu software antivírus (Windows Defender, Avast, Avira, etc.) exiba um alerta ao tentar executar este programa. Isso é um "falso-positivo" e acontece por uma combinação de fatores técnicos:
Método de Compilação (Heurística): O script python é "empacotado" em um executável. O método usado para isso (descompactar e executar o código em memória ou numa pasta temporária) é tecnicamente similar ao padrão que alguns malwares utilizaram no passado. Por segurança, o antivírus prefere ser cauteloso e alertar sobre esse comportamento, mesmo que o conteúdo seja seguro.
Arquivo Novo e Pouco Conhecido: Por ser uma ferramenta de nicho e recém-compilada, o arquivo é desconhecido para a base de dados do antivírus. Arquivos novos e com poucos downloads são frequentemente tratados como suspeitos até que uma reputação seja estabelecida.
Falta de Assinatura Digital: O executável não possui uma assinatura digital de uma grande empresa de software. Antivírus confiam mais em arquivos assinados, pois eles verificam a autenticidade e a integridade do desenvolvedor.
Ambos os arquivos disponíveis neste post são seguros e não contêm nenhum tipo de vírus ou código malicioso. Você pode executá-los com segurança. Se necessário, adicione uma exceção nas configurações do seu antivírus para permitir a execução.
Abaixo deixarei o link para download de ambos, e também uma análise no VirusTotal juntamente com uma Sha-256. Caso o arquivo baixado não possua a Sha-256 idêntica à do arquivo que disponibilizei, não o baixe em hipótese alguma; e se o baixar, não execute de maneira alguma.
É possível que o seu software antivírus (Windows Defender, Avast, Avira, etc.) exiba um alerta ao tentar executar este programa. Isso é um "falso-positivo" e acontece por uma combinação de fatores técnicos:
Método de Compilação (Heurística): O script python é "empacotado" em um executável. O método usado para isso (descompactar e executar o código em memória ou numa pasta temporária) é tecnicamente similar ao padrão que alguns malwares utilizaram no passado. Por segurança, o antivírus prefere ser cauteloso e alertar sobre esse comportamento, mesmo que o conteúdo seja seguro.
Arquivo Novo e Pouco Conhecido: Por ser uma ferramenta de nicho e recém-compilada, o arquivo é desconhecido para a base de dados do antivírus. Arquivos novos e com poucos downloads são frequentemente tratados como suspeitos até que uma reputação seja estabelecida.
Falta de Assinatura Digital: O executável não possui uma assinatura digital de uma grande empresa de software. Antivírus confiam mais em arquivos assinados, pois eles verificam a autenticidade e a integridade do desenvolvedor.
Ambos os arquivos disponíveis neste post são seguros e não contêm nenhum tipo de vírus ou código malicioso. Você pode executá-los com segurança. Se necessário, adicione uma exceção nas configurações do seu antivírus para permitir a execução.
Abaixo deixarei o link para download de ambos, e também uma análise no VirusTotal juntamente com uma Sha-256. Caso o arquivo baixado não possua a Sha-256 idêntica à do arquivo que disponibilizei, não o baixe em hipótese alguma; e se o baixar, não execute de maneira alguma.
Important Antivirus Notice (False Positive)
It is possible that your antivirus software (Windows Defender, Avast, Avira, etc.) may display an alert when you try to run this program. This is a "false positive" that occurs due to a combination of technical factors:
Packaging Method (Heuristics): The Python script is "packaged" into an executable. The method used for this (decompressing and running the code in memory or a temporary folder) is technically similar to the pattern that some malware has used in the past. As a precaution, the antivirus prefers to be cautious and warn about this behavior, even if the content is safe.
New and Little-Known File: As a niche and newly compiled tool, the file is unknown to the antivirus database. New files with few downloads are often treated as suspicious until a reputation is established.
Lack of a Digital Signature: The executable does not have a digital signature from a major software company. Antivirus programs place more trust in signed files because they verify the developer's authenticity and integrity.
Both files available in this post are safe and do not contain any type of virus or malicious code. You can run them safely. If necessary, you may need to add an exception in your antivirus settings to allow execution.
Below I will leave the download link for both, and also a VirusTotal analysis along with a SHA-256 hash. If the downloaded file does not have a SHA-256 hash identical to the one I have provided, do not download it under any circumstances; and if you do download it, do not run it whatsoever.
It is possible that your antivirus software (Windows Defender, Avast, Avira, etc.) may display an alert when you try to run this program. This is a "false positive" that occurs due to a combination of technical factors:
Packaging Method (Heuristics): The Python script is "packaged" into an executable. The method used for this (decompressing and running the code in memory or a temporary folder) is technically similar to the pattern that some malware has used in the past. As a precaution, the antivirus prefers to be cautious and warn about this behavior, even if the content is safe.
New and Little-Known File: As a niche and newly compiled tool, the file is unknown to the antivirus database. New files with few downloads are often treated as suspicious until a reputation is established.
Lack of a Digital Signature: The executable does not have a digital signature from a major software company. Antivirus programs place more trust in signed files because they verify the developer's authenticity and integrity.
Both files available in this post are safe and do not contain any type of virus or malicious code. You can run them safely. If necessary, you may need to add an exception in your antivirus settings to allow execution.
Below I will leave the download link for both, and also a VirusTotal analysis along with a SHA-256 hash. If the downloaded file does not have a SHA-256 hash identical to the one I have provided, do not download it under any circumstances; and if you do download it, do not run it whatsoever.
Aviso Importante sobre Antivirus (Falso Positivo)
Es posible que su software antivirus (Windows Defender, Avast, Avira, etc.) muestre una alerta al intentar ejecutar este programa. Esto es un "falso positivo" y ocurre por una combinación de factores técnicos:
Método de Compilación (Heurística): El script de Python es "empaquetado" en un ejecutable. El método utilizado para esto (descomprimir y ejecutar el código en memoria o en una carpeta temporal) es técnicamente similar al patrón que algunos tipos de malware han utilizado en el pasado. Por seguridad, el antivirus prefiere ser precavido y alertar sobre este comportamiento, aunque el contenido sea seguro.
Archivo Nuevo y Poco Conocido: Al ser una herramienta de nicho y recién compilada, el archivo es desconocido para la base de datos del antivirus. Los archivos nuevos y con pocas descargas a menudo son tratados como sospechosos hasta que establecen una reputación.
Falta de Firma Digital: El ejecutable no posee una firma digital de una gran empresa de software. Los antivirus confían más en los archivos firmados, ya que estos verifican la autenticidad e integridad del desarrollador.
Ambos archivos disponibles en esta publicación son seguros y no contienen ningún tipo de virus o código malicioso. Puede ejecutarlos de forma segura. Si es necesario, es posible que deba agregar una excepción en la configuración de su antivirus para permitir su ejecución.
A continuación, dejaré el enlace de descarga para ambos, y también un análisis de VirusTotal junto con un hash SHA-256. Si el archivo descargado no posee un hash SHA-256 idéntico al que he proporcionado, no lo descargue bajo ninguna circunstancia; y si lo descarga, no lo ejecute de ninguna manera.
Es posible que su software antivirus (Windows Defender, Avast, Avira, etc.) muestre una alerta al intentar ejecutar este programa. Esto es un "falso positivo" y ocurre por una combinación de factores técnicos:
Método de Compilación (Heurística): El script de Python es "empaquetado" en un ejecutable. El método utilizado para esto (descomprimir y ejecutar el código en memoria o en una carpeta temporal) es técnicamente similar al patrón que algunos tipos de malware han utilizado en el pasado. Por seguridad, el antivirus prefiere ser precavido y alertar sobre este comportamiento, aunque el contenido sea seguro.
Archivo Nuevo y Poco Conocido: Al ser una herramienta de nicho y recién compilada, el archivo es desconocido para la base de datos del antivirus. Los archivos nuevos y con pocas descargas a menudo son tratados como sospechosos hasta que establecen una reputación.
Falta de Firma Digital: El ejecutable no posee una firma digital de una gran empresa de software. Los antivirus confían más en los archivos firmados, ya que estos verifican la autenticidad e integridad del desarrollador.
Ambos archivos disponibles en esta publicación son seguros y no contienen ningún tipo de virus o código malicioso. Puede ejecutarlos de forma segura. Si es necesario, es posible que deba agregar una excepción en la configuración de su antivirus para permitir su ejecución.
A continuación, dejaré el enlace de descarga para ambos, y también un análisis de VirusTotal junto con un hash SHA-256. Si el archivo descargado no posee un hash SHA-256 idéntico al que he proporcionado, no lo descargue bajo ninguna circunstancia; y si lo descarga, no lo ejecute de ninguna manera.
Download Link:
PokéROM Editor v2.0, Link Download: Google Drive , MEGA
SHA-256: 2226fcb82f8dd8c8997e11e931adc8878081e5e5fd01cff959b37fb9d543d1d7
Link Virus Total: VirusTotal - File - 2226fcb82f8dd8c8997e11e931adc8878081e5e5fd01cff959b37fb9d543d1d7
Changelog Old Version:
1. Corrigido um bug visual onde a sprite do Pokémon era exibida cortada após alterar o idioma do programa.
#
Fixed a visual bug where the Pokémon's sprite was displayed cropped after changing the program's language.
#
Corregido un error visual donde el sprite del Pokémon se mostraba cortado después de cambiar el idioma del programa.
=========
2. Corrigido um bug de foco do teclado que ocorria após o diálogo inicial.
A caixa de diálogo inicial não devolvia o "foco" para a janela principal após ser fechada. Isso impedia que o programa registrasse qualquer entrada do teclado, como atalhos e a navegação por setas.
#
Fixed a keyboard focus bug that occurred after the initial dialog.
The initial dialog would not return keyboard focus to the main window after being closed. This prevented the program from registering any keyboard input, such as shortcuts and arrow navigation.
#
Corrección: Corregido un error de foco del teclado que ocurría después del diálogo inicial.
Causa: El cuadro de diálogo inicial no devolvía el "foco" a la ventana principal tras ser cerrado. Esto impedía que el programa registrara cualquier entrada del teclado, como los atajos y la navegación con las flechas.
==========
3. Corrigido problema de importação de dados de Pokémon, tanto a importação Solo quanto a importação em massa.
#
Se corrigió el problema de importación de datos de Pokémon, tanto en la importación individual como en la importación masiva.
#
Fixed the Pokémon data import issue, both for single imports and import all.
#
Fixed a visual bug where the Pokémon's sprite was displayed cropped after changing the program's language.
#
Corregido un error visual donde el sprite del Pokémon se mostraba cortado después de cambiar el idioma del programa.
=========
2. Corrigido um bug de foco do teclado que ocorria após o diálogo inicial.
A caixa de diálogo inicial não devolvia o "foco" para a janela principal após ser fechada. Isso impedia que o programa registrasse qualquer entrada do teclado, como atalhos e a navegação por setas.
#
Fixed a keyboard focus bug that occurred after the initial dialog.
The initial dialog would not return keyboard focus to the main window after being closed. This prevented the program from registering any keyboard input, such as shortcuts and arrow navigation.
#
Corrección: Corregido un error de foco del teclado que ocurría después del diálogo inicial.
Causa: El cuadro de diálogo inicial no devolvía el "foco" a la ventana principal tras ser cerrado. Esto impedía que el programa registrara cualquier entrada del teclado, como los atajos y la navegación con las flechas.
==========
3. Corrigido problema de importação de dados de Pokémon, tanto a importação Solo quanto a importação em massa.
#
Se corrigió el problema de importación de datos de Pokémon, tanto en la importación individual como en la importación masiva.
#
Fixed the Pokémon data import issue, both for single imports and import all.
Última edición:





