-
Notifications
You must be signed in to change notification settings - Fork 9
Tips and Tricks
-
Do not use accented/special characters like the "é" in Pokemon, as they currently break a few things like feed if they appear on feed. They are also not visible in search without the special character.
-
Choose NTSC (U) ROMs if available, because 60 FPS is a smoother experience. (E) is PAL(50 FPS), (J) is also NTSC, but is only used if it was a Japan-exclusive game.
-
Do not use a ROM with a modded/custom launch screen like Mode7 and RisingSun -sometimes- have because it messes up RAM.
-
You can input values in the memory viewer to see if it affects the game.
-
If you find an address, also search the same region surrounding it and you could find many more useful addresses.
-
Even if something is visibly decreasing in-game, like health, the value isn't necessarily decreasing. It's possible for it to be increasing, so since it's uncommon for you to know for sure, you should just filter
!=
and==
-
If you absolutely cannot reduce the results of a filter, you can try guessing some values or at least how the value is acting(
>
or<
). For example, no health is usually "0", Stage 1 is usually value "0", Stage 2 is usually value "1" depending on the type of game. -
If the game has a demo mode (AI plays the game after you wait a while on the title screen), make sure to find the address for it and add
mode != demo
or something similar in your achievements. -
Always use 8-bit view in the Memory Viewer, just remember that when adding a 16-bit address that the address to the right comes first. Example: AB CD WX YZ in 8-bit will becomes CDAB YZWX in 16-bit.
-
If the game has a demo mode (AI plays the game after you wait a while on the title screen), make sure to find the address for it and add
mode != demo
or something similar in your achievements. -
Avoid using only one condition as the achievement will most likely pop at the wrong time.
-
Try to avoid achievement spam. If a game has 100 levels, do not make an achievement for each level. Do every 10 or so.
-
Some emulators send some addresses in RAM a specific value when reset/reloaded. It's only for the first frame, but it can cause achievements to pop up, so you need to prepare for it. It's usually all one value like FF. You can see the value if you use Frame Advance / Next Frame while resetting the game.
-
Get as creative as possible with achievements. "Beat X without using/doing Y" "Beat X in 5 seconds" "3 heart run"
-
Uncheck "Show Decimal Values" in the Achievement Editor so you can enter the hex values you see in the Memory Viewer.
-
There's a 100 achievement cap, 400 point cap, and a character cap for single achievements (try not to put 50+ conditions in one achievement).
-
Do not make achievements requiring glitches. Exploits like using a falling goomba in SMB1 to cross a large gap, or getting infinite lives in SMB3 by bouncing off the goombas coming out of the pipe are allowed, but straight-up glitches aren't.
-
16-bit requirements do not have to be used on an even number of RAM, they can be used in-between properly, even if 16-bit view doesn't show it right. Ex: 0 1 2 3 4 5, in 16-bit it's usually viewed as 10 32 54, but if you start the address at the 1 here in your requirement, "21" will be read by the achievement, even if 16-bit view in the memory viewer isn't showing it. It also works if it's the last address in the line(starting at F, going to 0).
-
Use single bits(0-7) for things that only change a single bit. In the Memory Viewer, when an address is selected, there will be "bits 0 1 2 3 4 5 6 7" above the addresses, and below those numbers will be either "0" or "1" like "0 0 0 0 0 0 0 0" if bit3 has a 1 under it, bit3=1 for that address. Single bit usage is very common for game events/unlocks/etc.. You'll want to use these in games where you can do things in different orders, dialogues, events, unlocks.. If you check for "8-bit x = 7" and someone did something different like skip something or get something extra, their 8-bit value will very likely be different because the single bits within are different and the achievement won't unlock, so in this case you check for specific bits inside the 8-bit address. Now if for example, item unlocks use all 8 bits of the 8-bit address, and you want to do "unlock all items," you can just do "8-bit x = 0xff" This may be confusing, but it's very important to understand.
- Alt groups (left side of editor) are used for "or" conditions. The core group is always there and must always be true with at least one alt group being completely true to get the achievement. The entire group is your "or" condition. See the forum thread for an image explanation of this.
- 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