Skip to content

RetroAchievements website

RA discord server

Achievement Logic Features

There are several tools and options available to a developer. Knowing how to properly utilize them will improve the quality of your sets. These tools/options can be used in the Achievement Editor:

achievement_editor

For more help regarding these, our Discord server is always open for assistance.

Delta Valueslink

A Delta value is the previous frame's value.

Examples of how it can be used:

  • Detect if the level has been increased: level > delta level. It means "current level is greater than the previous frame's level".
  • Detect damage: health < delta health. It means "current health is smaller than the previous frame's health". Or you can just make the previous frame's value a requirement. health delta = 1 means "the previous frame's value for health must be 1 when the achievement pops up."

You can see how it works in the Real Examples page.

Hit Countslink

In the Achievement Editor, it's the field on the far right side is Hit Count.

Zero is default, none. It means the condition must be true when the achievement pops.

If you set a manual hit count, like 1, it means the condition must be true for at least 1 frame, and once that hit count is met, it doesn't need to be met again at any other time.

PLEASE NOTE: if a condition has a hit count, and reaches the number required, this condition is no longer tested. It is true and remains true, UNLESS you have a Reset If, which we will discuss below.

You can see how it works in the Real Examples page.

Special Flagslink

In the Achievement Editor, it's the field titled as Special?

These flags conditions only work if you set a manual hit count for a condition.

PauseIflink

The PauseIf pauses activity for all conditions in the same group. it does NOT pause conditions on other groups (more about groups below).

Note: keep in mind that all conditions in the sentence above includes ResetIf conditions! In other words ResetIf won't work while a PauseIf is active.

The PauseIf is usually used to pause hit count going up during a specific situation (like pausing the game). It's used when you want to keep previously earned hit count, but don't want to reset it when someone simply pauses the game, for example.

ResetIflink

This will reset the hit count for conditions you set a manual hit count for. It's much more common to use than PauseIf

Note: Unlike PauseIf, this will reset conditions in all groups

You can see how it works in the Real Examples page.

N64 Special Flagslink

When developing for N64, there are additional "arithmetic flag operations" that can be used. These flags are currently exclusive to N64. Please note, any condition with arithmetic flags are always considered true, regardless of their comparison values.

Add Sourcelink

Will add the value of the source in the field labeled Memory to the next achievement condition. The total value will be used in the next achievement condition.

Add Source Example

In this example, conditions #1 and #2 will have their values (5 and 3 respectively) added until they reach condition #3. At that point, the value contained in the Memory field will be 5 + 3 + 20, and it's new value will be 28. Condition #3 will now be true and read as: 28 > 20

Sub Sourcelink

Works similarly to Add Source, but will instead subtract the source value.

Note: Sub Source subtracts the current value from the additive buffer. It does not subtract the next condition from the current total. The final line (without Add Source or Sub Source) is still added to the additive buffer. Using the Add Source example, if the second item were changed to a Sub Source, the result would be 5 - 3 + 20, resulting in 22. If both were changed to Sub Source, the result would be - 5 - 3 + 20, resulting in 12.

Add Hitslink

Will add the hit count for the current condition to the next achievement condition. The total hit count will be used when determining if the hit count for the next non-Add Hits condition is met.

Alt Groupslink

Achievements can have groups added to them that can act as alternative requirements to unlock an achievement. These are called Alt Groups.

One extremely important thing to note: For an achievement to unlock it must have it's Core group AND at least one Alt group be true. If there are no Alt groups present, then only the Core group's conditions need to be true.

Tip: Because the Core group always need to be active, typically you would put conditions there that is common among all the alternative requirements. However, one trick you can use to basically ignore needing a Core group is to give it a condition that is always true such as:

Mem 0x0001 = Mem 0x0001

Since the Core group is now always true, and you can now focus on differentiating the Alt groups.

Comments