-
Notifications
You must be signed in to change notification settings - Fork 10
Working with the Right ROM
Related: Achievements for ROM hacks, Bonus Sets
Only one achievement set is allowed per game per console. This is true in cases of existing official revisions (ex. Rev A), official and unofficial fix patches, and over language versions.
Bonus Sets are an exception to this rule, but are considered an extension to a standard set and follow different rules for what types of achievements are allowed.
Almost every game has multiple ROM versions out there, sometimes dozens. Often there are major differences under the hood to the point where for one game, one ROM will not be compatible with the achievements of another ROM of the same game. Thus, finding the best ROM for achievements is important and should be done carefully.
-
Region Selection: Where possible choose no-intro
NTSC USA
release ROMs, because 60 FPS is a smoother gaming experience.PAL European
releases run at 50 FPS, and are to be avoided in most cases.NTSC Japan
releases also run at 60 FPS , but is only the best choice if the game was a Japan-exclusive release. Needing to resort to aPAL European
release game should be a last resort case (Europe-only exclusive), and is typically a very select few unique games from the entire console's library. The PAL/NTSC issue does not apply to GBA emulation, which runs all region versions at the same FPS. -
No Mods: Do not use a ROM with a modded/custom launch screen like Mode7 and RisingSun have because it messes up RAM.
-
No Trainers: Do not use a ROM that includes an integrated cheat feature. These are most often refereed to as after-market
ROM trainers
, are not official, and not in any way supported by Retro Achievements.
No-Intro ROMs are the preferred type of ROMs to be linked in the RA database, and should be the ones that you should use to make your set where possible. They filter out bad dumps, hacks, fakes, overdumps, underdumps, etc. and only display the ROMs that are most accurate to the original cartridge. No-Intro ROMs can be identified by the following naming scheme:
Game Name (Region) (Available Languages if Applicable) (Current Revision if Applicable) Example: Diddy Kong Racing (USA) (En,Fr) (Rev A)
GoodTools Game Name (Region) [!], as well as some of the Game Name (Region) (Rom Dumper Group) ROMs from an earlier era might match those in the No-Intro database but it is not guaranteed.
You can verify that your ROM checksum matches the No-Intro database here. Unfortunately some of the RA Emulators don't calculate the checksum correctly (namely NES) so you may need to find your ROM checksum from another source.
English is the Primary language of RetroAchievements. Translation Patches are sometimes applied by developers to non-English titles as the main MD5 for an achievement set where no licenced English version exists. In these cases patching instructions will be provided in the forum thread of that title. Providing an up-to-spec translation patch for an existing title is possibly allowed to make a game more accessible to other native language speakers. You must deep-memory inspect your translation contribution against the core set and submit it for approval before handing it over to the developer of the set for posting in their thread along with the game.
Sometimes translation patches may critically differ from the developer MD5 in memory differences that you may find online. Before linking these patches check with the original developer or do deep memory tests to ensure total compatibility. You can link translation patches you find online to core sets as long as the game's core achievements all function correctly and do not make the game more or less difficult.
- User Guidelines
- Developer Guidelines
- Content Guidelines
- FAQ
- Setup Guide
- Emulator Support and Issues
- Ways to Contribute
- RABot, the RA Discord Robot
- Events
- Overlay Themes
- Useful Links
- Contributing with the docs
- About Us
- Tutorials
- Developer Docs
- How to Become an Achievement Developer
- Getting Started as an Achievement Developer
- Game Identification
- Achievement Design
- Achievement Scoring
- Difficulty Scale and Balance
- Progression and Win Condition Typing
- Badge and Icon Creation
- Achievement Development Overview
- Flags
- BitCount Size
- Alt Groups
- Hit Counts
- Delta Values
- Prior Values
- Value Definition
- Condition Syntax
- Minimum Required Versions for Logic Features
- Memory Inspector
- Real Examples
- Set Development Roadmap
- Achievement Templates
- Tips and Tricks
- Leaderboards
- Rich Presence
- RATools
- Console Specific Tips
- Emulator Hotkeys for Developers
- libretro core support
- Docs To Do List
- WIP User Code of Conduct
- WIP CoC FAQ
- WIP Content Guidelines
- WIP-Jr
- WIP---Dev-Tips---Code-Notes-En-Masse
- WIP-‐-Reauthorship-Policy
- Manifesto RetroAchievements
- Código de Conduta do Usuário
- FAQ - Perguntas Frequentes
- Como contribuir se você não é um desenvolvedor
- Tutorial para Jogos Multi-Discos
- Introdução
- Primeiros Passos como um Desenvolvedor de Conquistas
- Recursos de Lógica para Achievements
- Exemplos Reais
- Dicas e Truques
- Dicas Específicas de Console
- Modelos de Achievement
- Escala de Dificuldade e Equilíbrio
- Roteiro de Desenvolvimento de um Set de Conquistas
- Criação de Ícones e Emblemas
- Leaderboards
- Rich Presence
- Design de Conquistas
- Manifesto RetroAchievements
- Código de Conducta del Usuario
- FAQ - Preguntas Frecuentes
- Tablas Globales y Reglas para la Casería de Logros
- Mi juego no esta cargando los logros
- Como contribuir si no eres un desarrollador
- Por que no deberías utilizar la función de cargar estado
- Contribuyendo con los documentos
- Como funciona la Documentación de RA
- Descargas
- Intro
- Código de Conducta del Desarrollador
- Como convertirme en un Desarrollador de Logros
- Primeros pasos como un Desarrollador de Logros
- Un vistazo al Inspector de Memoria
- Características en la Logica de un Logro
- Ejemplos Reales
- Intro
- Utilizando Hit Counts como un Temporizador
- Utilizando Valores Delta y Hit Counts para Detectar un Incremento
- Un Ejemplo Simple en como evitar el Abuso de Estados de Guardado
- Evitar el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame
- Creando un Temporizador con un ResetIf Hits basándote en la Velocidad de un Juego
- Plantillas para Logros
- Tips y Trucos
- Escala de Dificultad y Balance
- Diseño de Logros
- Mapa de Desarrollo de Set
- Revisiones en Set de Logros
- Creación de Iconos y Badges
- Tablas de Clasificación
- Rich Presence
- Trabajando con el ROM apropiado
- Identificación del Juego
- Guía para Sets Bonus
- Logros para ROM hacks
- Tips Específicos por Consola