A Year in Review

Intro

We have taken many steps forward this past year as a community and continue to make RetroAchievements a wonderful community to be a part of. Let’s take a step back and remember what we all accomplished and the teams that helpes us get here along the way over the past year.

Community Updates

  • Softcore Points Update
  • Massive amount of site updates, most notably RAWeb Version 2.0. The framework changes included in this update have paved the way towards some long awaited and request site updates. Full list of updates is here.
  • Tons of emulator and dev tool updates allow devs to make achievement more efficiently. Full list of updates is here.
  • QATeam split into dedicated Quality Assurance, Developer Compliance and DevQuest teams.
  • RAEvents team created to handle the current and upcoming RA events.
  • Quality Quest created to help the website as a whole, whether it be rescores, grammar corrections, ticket save states or full game save states.
  • What are RetroAchievements? video by iShade.
  • The Anatomy Of A Good Ticket article by VoiceOfAutumn.
  • Retro Olympics 2022 ongoing. More information here.
  • RAPodcast started. Current episodes can be viewed at the official YouTube Channel.
  • RA Minecraft server started. Server address: mc.retroachievements.org:25588
    • #minecraft Discord channel created for related discussions.

New Console Support

Console Support Date Sets Achievements Leaderboards
Dreamcast 2/12/2022 71 5,054 1,479
Amstrad CPC 3/27/2022 41 1,063 69
Arduboy 5/8/2022 55 871 144
WASM-4 5/8/2022 37 400 51
Fairchild Channel F 7/27/2022 23 240 20
Mega Duck 7/27/2022 23 581 156
Playstation 2 10/1/2022 205 20,105 7,013

Developer Rule & Policy Updates

- Naming scheme for Bonus and Multi sets. Instead of [Bonus] and [Multi], they
 should be [Subset - Bonus] and [Subset - Multi].

- The list of pre-approved Subsets has expanded. Before it was just
"Professor Oak Challenge," but now includes the following:
- Bonus/Multi
- DLC/Expansions
- Glitch Showcases
- Regional Differences
- Low Level Games/No Leveling Runs
- Solo Class/Monotype Runs
- Checkpoint Challenges (such as POC)
- Perma-Death Challenges

Other challenge run ideas (such as Rare Drops) will still need to be approved.
 The pre-approved list will likely continue to expand as more Subsets are made.

- Claims
Before: Bonus/Subsets would not need to be claimed if published alongside a
 base set. If published later, they would require a revision vote and
 count as a claim. That has been abolished to be more in line with revisions.

Now: Subsets will not count as a claim and do not require votes if the dev
 is the sole author of the base set. Otherwise, they will need to post a
 plan in the forum and have it approved via revision voting.
If a developer is inactive for six months or longer, meaning within six
 months they have not created any new achievements or resolved any incoming
 tickets, their developer status will expire.

If this happens to you, you are very welcome to come back to the scene if
 you want to create new content for our community. First, you'll want to
 review and understand this document (the Developer Code of Conduct).
 When you feel ready to adhere to it, message us to user RAdmin here
 on site or speak to the admin or mod users on the RetroAchievements
 Discord server to check how to get your developer status back.
  • Set Plagiarism Rule Introduced
  • Rules updated to reflect new Developer Set Claim system.
  • Reservation Renewals
    • Added details about the progress reports requirements.
    • Adjusted of the cooldown after denied progress reports (from 3 months to 1 month) to align with the “drop and resume before 1 month” rule.
    • Added the requirement to post progress reports after every renewal if a 1-month cooldown happened.

Moderation

Thanks to the Moderation team for keeping the RA Discord Server a kind, enjoyable and welcoming place for all the users. Moderating a server with nearly 6,000 users can be difficult at times with heated arguments, clash of opinions, and internet trolls. It can sometimes seem like a thankless job and may require an insane amount of self-control to diffuse heated situations. Your dedication to keeping the server as safe, positive, and enjoyable as it can be is very appreciated.

Thank you for everything you do.

AuburnRDM AuburnRDM BahamutVoid BahamutVoid Hotscrock Hotscrock
KickMeElmo KickMeElmo pinguupinguu pinguupinguu Snow Snow
SporyTike SporyTike Suffa28 Suffa28  

Code Reviewers & Junior Developers

The Junior Developer program is responsible for aiding and assisting aspiring achievement sets developers as they try to earn the rank of a full developer. The program is always growing and improving on to meet the needs of the users interested in creating achievements. Reviews are now being completed in their own threads in the #jr-dev-forum channel to reduce clutter in the main channel, this channel also tutorial and guides created by the Code Reviewer team, a new voice channel has been created for additional help, site permissions have been updated to allow Junior Developers more control over their sets without needed to ping Code Reviewers for simple tasks like updating box arts. This year the team had nearly 150 new Junior Developers join the program, almost 200 reviews being completed, and promoted almost 50 new Developers.

Big thanks to all the Code Reviewers who offer their free time to help review sets, teach concepts, and provide guidance to the next generation of achievement developers. If you are interested in becoming a Code Reviewer, please reach out to any of the following current Code Reviewers:

Brandovsky Brandovsky Bryan1150 Bryan1150 DanielARP DanielARP
DoctorV DoctorV Falcus Falcus Fridge Fridge
gollawiz gollawiz malasdair malasdair MrOwnership MrOwnership
pinguupinguu pinguupinguu Ryudo Ryudo Searo Searo
Shmelyoff Shmelyoff SlashTangent SlashTangent SporyTike SporyTike
Suffa28 Suffa28 ThatAmericanSlacker ThatAmericanSlacker TheMysticalOne TheMysticalOne
timenoe timenoe xnaivx xnaivx  

If you are interested in joining the Code Review Team, please reach out to any of the members above.

Quality Assurance

The Quality Assurance team handles overall set quality and maintains the sub-teams (CleanupTeam, Playtesters, SetRepair, etc). The team has been hard at working making sure the overall quality of sets is as high as it can be.

Thanks to the members of the team for all the work they do keeping the sub-teams and overall achievement set quality at a maximum.

Bartis1989 Bartis1989 DanielARP DanielARP DoctorV DoctorV
Hotscrock Hotscrock Infernox Infernox MrOwnership MrOwnership
psyduck psyduck Searo Searo Soulsderfuchs Soulsderfuchs
televandalist televandalist    

Please reach out to QATeam QATeam for any questions, comments or concerns.

Developer Compliance

The Developer Compliance handles Developer Code of Conduct related issues and updates. Sets or developers breaking rules, reservation tracking, etc. The team has been hard at work discussion incoming concerns, making decisions, and making Code of Conduct updates that best drive the community forward.

Thanks to the members of the team for all the work they do making sure that developers and their sets maintain the rules defined in the Developer Code of Conduct.

BigWeedSmokerMan BigWeedSmokerMan Bryan1150 Bryan1150 DoctorV DoctorV
Etron Etron GalacticSpear GalacticSpear Hotscrock Hotscrock
Infernox Infernox Malasdair Malasdair MrOwnership MrOwnership
pinguupinguu pinguupinguu psyduck psyduck televandalist televandalist
TheMysticalOne TheMysticalOne timenoe timenoe  

Please reach out to DevCompliance DevCompliance for and questions, comments, or concerns.

Playtesters

Playtester Badge Playtester Badge (Events)

The Playtester team consists of users who help in finding issues and validating achievement unlocks before a set goes live. Users part of the team able to earn a Playtester site badge for playtesting sets and finding bugs before they the sets gets pushed to core.

Thanks to the members of the team that test out the achievements and find bugs before they make it to the rest of the community. This really helps in limiting the never-ending stream of achievement tickets.

bcrew1375 bcrew1375 BigWeedSmokerMan BigWeedSmokerMan Daroachie Daroachie
evolutespirit evolutespirit FBernkastelKues FBernkastelKues GameZone GameZone
Haruda Haruda HolyShinx HolyShinx Jason12345 Jason12345
Kinglink Kinglink LimeJinjo LimeJinjo ockerjj ockerjj
Pudpod Pudpod RandoT RandoT Retrokaiser Retrokaiser
Soulsderfuchs Soulsderfuchs starblades starblades TheoVellum TheoVellum
TheRecognitionScene TheRecognitionScene Timrtabor123 Timrtabor123 zizom zizom
Zpeligo Zpeligo    

If you are interested in becoming a Playtester, please reach out to Haruda Haruda.

RANews

RANews hit it’s 2-year anniversary this past August. This year we added more users to the team to help out with the monthly release. Along with the regularly delivered sections, we have also been working to bring you the following new sections:

  • Set of the Month
  • Monthly Stats
  • This Month In Retro
  • It’s A Long Way To The Top
  • Community News
  • RAScript Tutorial Series
  • Most Wanted

Thanks to all the members of the team and those in the community who submit content to fill each and every issue.

BatFastardJordy BatFastardJordy Bendyhuman Bendyhuman Brandovsky Brandovsky
Enagonius Enagonius Etron Etron Glendaal Glendaal
HolyShinx HolyShinx Hotscrock Hotscrock MrOwnership MrOwnership
Nepiki Nepiki Nydaxn Nydaxn pinguupinguu pinguupinguu
Raykusen Raykusen SporyTike SporyTike StingX2 StingX2
TimeCrush TimeCrush Xymjak Xymjak  

If you are interested in joining the RANews Team, plese reach out to RANews RANews or any of the members above.

Events Team

The new Site and Discord Events team was created to maintain the vast amount of events that are RA has ongoing and coming up. Their responsibilities include approving new events, helping to run and organize events, and hosting events that do not have a dedicated host. The team can be reached from Site by contacts RAEvents or via Discord by contacting @Events-Team. The current members of the Events Team are:

AuburnRDM AuburnRDM Bendyhuman Bendyhuman FBernkastelKues FBernkastelKues
freezestar freezestar genesislover genesislover JAM JAM
Jenettebaghead Jenettebaghead LootusMaximus LootusMaximus pinguupinguu pinguupinguu
Pudpod Pudpod Ryudo Ryudo Snow Snow
starblades starblades StingX2 StingX2 televandalist televandalist
xClawz xClawz    

Events

RetroAchievements offers a wide range of unique and entertaining events throughout the year to get the community members involved in some friendly competition. The Current Events section of RANews keeps everyone up to date with the latest and greatest event news of the past year.

DevQuest

What is DevQuest DevQuest? It’s simple: They’re achievement development-related QUESTS that act like an MMO. These quests do not have a time limit, and by completing each one you earn a site badge. You can start a quest today, one week later, or even three months later: they will still be there for you!

Introduced in 2021, DevQuest has become a staple in the journey of every RA developers. With new quests added regularly, Developers always have something new to strive for in their everlasting quest of development.

Thanks to the members of the team that track all the incoming requests and questions, and keep everyting reagarding DevQuest under control and organized.

Brandovsky Brandovsky Cadaxar Cadaxar DoctorV DoctorV
GalacticSpear GalacticSpear LogicalFallacy LogicalFallacy pinguupinguu pinguupinguu
siouxerskate siouxerskate SlashTangent SlashTangent Snow Snow
StingX2 StingX2 televandalist televandalist themysticalone themysticalone
timenoe timenoe wolfman2000 wolfman2000  

This year almost 300 DevQuest awards and 150 Veteran Developer achievements were awarded. Lets take a look at all the DevQuest and Veteran Developer progress made this year.

DevQuest Awards

[DevQuest 001] Ticket Massacre [DevQuest 001] Ticket Massacre
Bartis1989 Bartis1989 Bryan1150 Bryan1150 Etron Etron
Falcus Falcus FBernkastelKues FBernkastelKues Hotscrock Hotscrock
JAM JAM kmpers kmpers ladynadiad ladynadiad
LogicalFallacy LogicalFallacy multonic multonic pinguupinguu pinguupinguu
Ryudo Ryudo Searo Searo siouxerskate siouxerskate
Snow Snow soltyd soltyd StingX2 StingX2
Suffa28 Suffa28 Tayadaoc Tayadaoc TheMysticalOne TheMysticalOne
ventuz ventuz voiceofautumn voiceofautumn WanderingHeiho WanderingHeiho
wolfman2000 wolfman2000 zxmega zxmega


[DevQuest 002] Summer Set Repair [DevQuest 002] Summer Set Repair
Bartis1989 Bartis1989 BigWeedSmokerMan BigWeedSmokerMan ladynadiad ladynadiad
TheMysticalOne TheMysticalOne voiceofautumn voiceofautumn wolfman2000 wolfman2000
xnaivx xnaivx


[DevQuest 003] Singles in Your Area [DevQuest 003] Singles in Your Area
affftedio affftedio Bedtime Bedtime BigWeedSmokerMan BigWeedSmokerMan
Brandovsky Brandovsky Bryan1150 Bryan1150 deng deng
Etron Etron FBernkastelKues FBernkastelKues kmpers kmpers
ladynadiad ladynadiad LogicalFallacy LogicalFallacy malasdair malasdair
MrOwnership MrOwnership Snow Snow suspect15 suspect15
Tayadaoc Tayadaoc TheJediSonic TheJediSonic TheMysticalOne TheMysticalOne
timenoe timenoe ventuz ventuz voiceofautumn voiceofautumn
WanderingHeiho WanderingHeiho wolfman2000 wolfman2000


[DevQuest 004] Veteran Deveoper [DevQuest 004] Veteran Developer
Delmaru Delmaru GalacticSpear GalacticSpear Searo Searo
Snow Snow SporyTike SporyTike televandalist televandalist
wilhitewarrior wilhitewarrior


[DevQuest 005] Trigger Happy [DevQuest 005] Trigger Happy
kmpers kmpers ladynadiad ladynadiad pinguupinguu pinguupinguu
Searo Searo Snow Snow StingX2 StingX2
TheMysticalOne TheMysticalOne voiceofautumn voiceofautumn WanderingHeiho WanderingHeiho
wolfman2000 wolfman2000 zxmega zxmega ZZKer ZZKer


[DevQuest 006] The Unwanted [DevQuest 006] The Unwanted
adamjohnny5 adamjohnny5 BigWeedSmokerMan BigWeedSmokerMan Brandovsky Brandovsky
Bryan1150 Bryan1150 Cadaxar Cadaxar Darkc0m Darkc0m
Delmaru Delmaru deng deng GalacticSpear GalacticSpear
Hotscrock Hotscrock ladynadiad ladynadiad LordAndrew LordAndrew
lordpsycho lordpsycho Maximdraco Maximdraco MGNS8M MGNS8M
minibt minibt raniejogos raniejogos Sines Sines
suspect15 suspect15 TheJediSonic TheJediSonic TheMysticalOne TheMysticalOne
timenoe timenoe ventuz ventuz voiceofautumn voiceofautumn
WanderingHeiho WanderingHeiho wolfman2000 wolfman2000 zizom zizom


[DevQuest 007] Most Wanted [DevQuest 007] Most Wanted
adamjohnny5 adamjohnny5 Anic Anic Brandovsky Brandovsky
Bryan1150 Bryan1150 Cadaxar Cadaxar DanielARP DanielARP
Darkc0m Darkc0m Etron Etron Excessiveiser Excessiveiser
GalacticSpear GalacticSpear Ghal416 Ghal416 gollawiz gollawiz
ladynadiad ladynadiad LogicalFallacy LogicalFallacy malasdair malasdair
pinguupinguu pinguupinguu Sines Sines televandalist televandalist
TheJediSonic TheJediSonic TheMysticalOne TheMysticalOne timenoe timenoe
WanderingHeiho WanderingHeiho wolfman2000 wolfman2000 zxmega zxmega


[DevQuest 008] World Traveler [DevQuest 008] World Traveler
BigWeedSmokerMan BigWeedSmokerMan Brandovsky Brandovsky Cadaxar Cadaxar
Darkc0m Darkc0m Jamiras Jamiras KingS1zzle KingS1zzle
ladynadiad ladynadiad LogicalFallacy LogicalFallacy lordpsycho lordpsycho
malasdair malasdair Mekevin255 Mekevin255 raniejogos raniejogos
siouxerskate siouxerskate Snow Snow soltyd soltyd
SpaceRaton SpaceRaton SporyTike SporyTike televandalist televandalist
TheMysticalOne TheMysticalOne timenoe timenoe WanderingHeiho WanderingHeiho
wolfman2000 wolfman2000


[DevQuest 009] Launch Party! [DevQuest 009] Launch Party!
affftedio affftedio BahamutVoid BahamutVoid Bartis1989 Bartis1989
Brandovsky Brandovsky Bryan1150 Bryan1150 Cadaxar Cadaxar
Chawk Chawk DarkyAndreas DarkyAndreas deng deng
Etron Etron Excessiveiser Excessiveiser Falcus Falcus
FBernkastelKues FBernkastelKues FRAN269 FRAN269 Fridge Fridge
gollawiz gollawiz Griffin Griffin Infernox Infernox
JAM JAM kmpers kmpers ladynadiad ladynadiad
LordAndrew LordAndrew malasdair malasdair Maximdraco Maximdraco
MelodyAsh MelodyAsh MrOwnership MrOwnership multonic multonic
Numberman Numberman Pebete Pebete PsyHunter29 PsyHunter29
raniejogos raniejogos Searo Searo Shmelyoff Shmelyoff
shnick1980 shnick1980 Soulsderfuchs Soulsderfuchs SpaceRaton SpaceRaton
StingX2 StingX2 suspect15 suspect15 suXin suXin
Tayadaoc Tayadaoc ThatAmericanSlacker ThatAmericanSlacker TheJediSonic TheJediSonic
TheMysticalOne TheMysticalOne timenoe timenoe ventuz ventuz
wolfman2000 wolfman2000 xnaivx xnaivx zizom zizom
ZZKer ZZKer


[DevQuest 010] It Takes Two [DevQuest 010] It Takes Two
Anic Anic FRAN269 FRAN269 Fridge Fridge
GalacticSpear GalacticSpear gollawiz gollawiz ladynadiad ladynadiad
pinguupinguu pinguupinguu pinguupinguu pinguupinguu SlashTangent SlashTangent
Snow Snow televandalist televandalist WanderingHeiho WanderingHeiho
wolfman2000 wolfman2000 zxmega zxmega


[DevQuest 011] Happy Birthday RA! [DevQuest 011] Happy Birthday RA!
affftedio affftedio Bartis1989 Bartis1989 Brandovsky Brandovsky
Cadaxar Cadaxar DoctorV DoctorV Etron Etron
Falcus Falcus Jamiras Jamiras kmpers kmpers
ladynadiad ladynadiad LordAndrew LordAndrew malasdair malasdair
Maximdraco Maximdraco Mekevin255 Mekevin255 MGNS8M MGNS8M
msdmario msdmario PsyHunter29 PsyHunter29 Scott Scott
siouxerskate siouxerskate SlashTangent SlashTangent StingX2 StingX2
suspect15 suspect15 Tayadaoc Tayadaoc ThatAmericanSlacker ThatAmericanSlacker
TheJediSonic TheJediSonic timenoe timenoe WanderingHeiho WanderingHeiho
wilhitewarrior wilhitewarrior wolfman2000 wolfman2000 xnaivx xnaivx
xTr4ceur xTr4ceur


[DevQuest 012] Hacker's Habit [DevQuest 012] Hacker's Habit
Brandovsky Brandovsky Cadaxar Cadaxar DarkyAndreas DarkyAndreas
Delmaru Delmaru GalacticSpear GalacticSpear ladynadiad ladynadiad
raniejogos raniejogos siouxerskate siouxerskate SlashTangent SlashTangent
Snow Snow StingX2 StingX2 voiceofautumn voiceofautumn
WanderingHeiho WanderingHeiho wolfman2000 wolfman2000 zxmega zxmega


[DevQuest 013] complete.me [DevQuest 013] complete.me
ladynadiad ladynadiad SlashTangent SlashTangent TheMysticalOne TheMysticalOne
voiceofautumn voiceofautumn wolfman2000 wolfman2000


[DevQuest 014] Laudable Leaderboards [DevQuest 014] Laudable Leaderboards
deng deng kmpers kmpers ladynadiad ladynadiad
pinguupinguu pinguupinguu TheMysticalOne TheMysticalOne voiceofautumn voiceofautumn
wolfman2000 wolfman2000


[DevQuest 015] Console Conqueror [DevQuest 015] Console Conqueror
voiceofautumn voiceofautumn


[DevQuest 016] Wish This Set [DevQuest 016] Wish This Set
BigWeedSmokerMan BigWeedSmokerMan Bryan1150 Bryan1150 Cadaxar Cadaxar
Darkc0m Darkc0m DarkyAndreas DarkyAndreas Delmaru Delmaru
DoctorV DoctorV GalacticSpear GalacticSpear ladynadiad ladynadiad
lordpsycho lordpsycho Maximdraco Maximdraco Tayadaoc Tayadaoc
timenoe timenoe wolfman2000 wolfman2000 zxmega zxmega


[DevQuest 017] RA World Cup [DevQuest 017] RA World Cup
kmpers kmpers LiveFastCyYoung LiveFastCyYoung LogicalFallacy LogicalFallacy
raniejogos raniejogos Snow Snow voiceofautumn voiceofautumn
wolfman2000 wolfman2000

Veteran Developer Progress

Vet Dev I Vet Dev IHas published at least 1000 achievements AND worked on at least 25 sets as sole or majority developer
AlexGatao AlexGatao blendedsea blendedsea Cadaxar Cadaxar
Delmaru Delmaru deng deng ladynadiad ladynadiad
Searo Searo SlashTangent SlashTangent stfN1337 stfN1337
TheMysticalOne TheMysticalOne wolfman2000 wolfman2000


Vet Dev II Vet Dev IIHas created achievements for at least ten different consoles
adamjohnny5 adamjohnny5 AlexGatao AlexGatao Anic Anic
BahamutVoid BahamutVoid Bartis1989 Bartis1989 blendedsea blendedsea
Brandovsky Brandovsky Bryan1150 Bryan1150 Cadaxar Cadaxar
Delmaru Delmaru deng deng DoctorV DoctorV
Infernox Infernox ladynadiad ladynadiad LogicalFallacy LogicalFallacy
LordAndrew LordAndrew Pebete Pebete siouxerskate siouxerskate
StingX2 StingX2 ThatAmericanSlacker ThatAmericanSlacker TheJediSonic TheJediSonic
TheMysticalOne TheMysticalOne timenoe timenoe wolfman2000 wolfman2000
ZZKer ZZKer


Vet Dev III Vet Dev IIIHas been an active developer for at least two years
AlmightyXor AlmightyXor Bartis1989 Bartis1989 BrunoKiko BrunoKiko
DanielARP DanielARP deng deng FBernkastelKues FBernkastelKues
Infernox Infernox Pebete Pebete Snow Snow
stfN1337 stfN1337 Suffa28 Suffa28 TheJediSonic TheJediSonic
TheMysticalOne TheMysticalOne voiceofautumn voiceofautumn


Vet Dev IV Vet Dev IVAt least 85 percent of overall sets have dynamic rich presence [Vet Dev I required]
AlexGatao AlexGatao blendedsea blendedsea BrunoKiko BrunoKiko
Cadaxar Cadaxar Delmaru Delmaru deng deng
ladynadiad ladynadiad MGNS8M MGNS8M Searo Searo
SlashTangent SlashTangent Snow Snow stfN1337 stfN1337
TheMysticalOne TheMysticalOne voiceofautumn voiceofautumn wolfman2000 wolfman2000


Vet Dev V Vet Dev VYielded unlocks have exceeded 50,000
AlexGatao AlexGatao AlmightyXor AlmightyXor blendedsea blendedsea
deng deng Hotscrock Hotscrock pinguupinguu pinguupinguu
SlashTangent SlashTangent


Vet Dev VI Vet Dev VIAs a sole developer, submitted one or more sets for code review and received a cumulative grade of at least 22
AlexGatao AlexGatao Delmaru Delmaru deng deng
kmpers kmpers ladynadiad ladynadiad Searo Searo
Suffa28 Suffa28 TheMysticalOne TheMysticalOne timenoe timenoe


Vet Dev VII Vet Dev VIIHas used at least 75 percent of all currently available flags and features [Vet Dev I and VI required]
Delmaru Delmaru deng deng ladynadiad ladynadiad
pinguupinguu pinguupinguu Searo Searo TheMysticalOne TheMysticalOne
wolfman2000 wolfman2000


Vet Dev VIII Vet Dev VIIIHas obtained at least two badges through DevQuest
adamjohnny5 adamjohnny5 BahamutVoid BahamutVoid Bartis1989 Bartis1989
Brandovsky Brandovsky Bryan1150 Bryan1150 Cadaxar Cadaxar
deng deng DoctorV DoctorV Falcus Falcus
FBernkastelKues FBernkastelKues Infernox Infernox Jamiras Jamiras
kmpers kmpers ladynadiad ladynadiad LogicalFallacy LogicalFallacy
LordAndrew LordAndrew Pebete Pebete Searo Searo
TheJediSonic TheJediSonic TheMysticalOne TheMysticalOne timenoe timenoe
wolfman2000 wolfman2000


Vet Dev IX Vet Dev IXHas obtained at least five badges through DevQuest
blendedsea blendedsea Brandovsky Brandovsky Bryan1150 Bryan1150
Cadaxar Cadaxar Delmaru Delmaru DoctorV DoctorV
GalacticSpear GalacticSpear kmpers kmpers ladynadiad ladynadiad
LogicalFallacy LogicalFallacy MGNS8M MGNS8M Pebete Pebete
pinguupinguu pinguupinguu Searo Searo siouxerskate siouxerskate
SlashTangent SlashTangent Snow Snow SporyTike SporyTike
StingX2 StingX2 televandalist televandalist TheJediSonic TheJediSonic
TheMysticalOne TheMysticalOne timenoe timenoe voiceofautumn voiceofautumn
wilhitewarrior wilhitewarrior wolfman2000 wolfman2000 xnaivx xnaivx
ZZKer ZZKer

Discord Updates

Discord is a main area for communication and work in the RetroAchievements community. Here are some of the updates and role/channel additions that have occurred over the past year.

  • Icon Gauntlet rule updates
    1. @Art-Helper will be responsible for uploading any changes to badges or icons that pass through the gauntlet
      • If you are an active developer and wish to help finalize icon-gauntlet results, please DM gollawiz for our contribution tracking Google Sheet. You will need to verify and finalize your results there.
    2. 24 hour cooldown on repeat gauntlets
      • 24 hours must pass before submitting the same game to the icon-gauntlet. Note: Achievement badges and game icons are considered separate and may be run alongside each other. Future gauntlets are still subject to the 24 hour rule.
    3. Updates to your gauntlet
      • If you have any mistakes in your current gauntlet, let @Art-Helper know. Your original poll will be deleted and you must re-poll for accurate results.
    4. Multiple Icons
      • Completed Gauntlets for multiple images in the same set must be labeled according to the order they appear in the achievement list. (Do NOT use the achievement ID) A .zip for the badges must then be posted in the “Icon Gauntlet Uploads” thread found in gauntlet-discussion.
  • We had several channels transition into forum channels, allowing users to create forum topics for their issues or requests. This reduces clutter in the channel and makes it easier to track issues or requests without them getting lost.
  • ClaimBot and HashBot were created to auto log Developer Set Claim actions and Hash unlinks. Making it easier to track that information without needed to search the site for it.
  • PlaytestBot was created to ping the Playtest team anytime a new set is ready for playtesting.
  • Staff role was dissolved in favor of the several teams that now take care of the various projects and efforts.

Role Additions

Role Purpose
@Compatibility-Tester New role for new team created during the QA Team Restructure. Helps to test ROM compatibility for existing sets.
@Dev-Compliance New role for new team created during the QA Team Restructure. Handles any Developer Code of Conduct related topics.
@DevComplicace Role for DevCompliance team members.
@DevQuest New role for new team created during the QA Team Restructure. Handles DevQuest related topics.
@DuckStation-Tester Role for members who are testing DuckStation compatibility.
@Entry-Manager Role for hash entry users.
@Events-Team Role for RAEvents team members.
@Gambler Role for RARoulette weekly winners.
@QA-Maintainer Formally named @QA-Team, renamed as part of the QA Team Restructure. Helps maintain the several Quality Assurance discord teams.
@RAWR Role for users interested in the RARoulette event.
@Set-Repair Role and team resseructe the QA Team Restructure. Help to fix sets that are highly exploitable or vulnerable.

Channel Additions

Channel Purpose
#ardu-wasm-rollout Discussion and preparation channel for developers to get ready for the Arduboy and WASM-4 rollout.
#auction-house Allows devs to “bid” on highly exploitable or vulnerable old sets to become the new author.
#challenge-league-100 Challenge League Top 100 event discussion channel.
#claims Discussion channel for Claims Manager.
#compatibility-tester Discussion channel for the @Compatibility-Tester members.
#dev-compliance-inbox Messages to the DevCompliance site user gets forwarded here.
#dev-compliance-log Log channel for notable DevCompliance actions.
#dev-compliance Discussion channel for the @Dev-Compliance members.
#devquest-discussion Discussion channel for the @DevQuest members.
#devquest-inbox Messages to the DevQuest site user gets forwarded here.
#devs-help-me A help me channel dedicated to the developer questions.
#devs-help-me Help me channel for devs as to not clog up the main channel too much.
#duckstation Discussion channel for DuckStation compatibility.
#events-forum Events team forum channel.
#events-inbox Events team site inbox channel.
#events-team Events team discussion channel.
#hash-links-log Automated log for unlinked hashes
#jr-dev help Channel Voice channel for additional Junior Developer help.
#jr-dev-forum Forum channel for Junior Developer reviews and guides.
#minecraft RA Minecraft discussion channel.
#pcsx2-testing Discussion and testing channel for developers interested in PS2 achievements creation.
#pcxs2-news News channel with automatic posts for PCSX2 updates.
#ps2-help Help channel for any PS2 related issues.
#ps2-launch Information channel for the PS2 console launch.
#qualityquest-inbox Messages to the QualityQuest site user gets forwarded here.
#qualityquest-inbox Quality Quest site inbox channel.
#qualityquest Discussion and submission channel for QualityQuest.
#qualityquest Quality Quest discussion channel.
#rapatches RAPatches forum channel for patch request and help.
#rapodcast Discussion channel for the new RAPodcast.
#raroulette RARoulette event discussion channel.
#set-claim-log Automated log for changes to developer set requests.
#set-repair Discussion channel for the @Set-Repair members.
#site-feedback Channel allowing users to provide quick site feedback, though GitHub should be used for any substantial discussions.

RAGuide

The RAGuide Wiki allows users to create and share set guides with the rest of community. If you are interested in created guide head on over to the RAGuide Wiki and create a new page to start working on one. In the meantime, check out the guides that were featured this past year.

Game Guide By Guide Link
Legend of Zelda, The: A Link to the Past (SNES) Legend of Zelda, The: A Link to the Past (SNES) Nepiki Nepiki Guide
Robin Hood: Prince of Thieves (NES) Robin Hood: Prince of Thieves (NES) ikki5 ikki5 Guide
Digimon World 2 (PlayStation) Digimon World 2 (PlayStation) shauntmw shauntmw Guide
Ogre Battle: The March of the Black Queen (SNES) Ogre Battle: The March of the Black Queen (SNES) Sines Sines Guide
Legend of Zelda, The: Link's Awakening DX (Game Boy Color) Legend of Zelda, The: Link’s Awakening DX (Game Boy Color) Nepiki Nepiki Guide
Go Go Ackman (SNES) Go Go Ackman (SNES) Glendaal Glendaal Guide
~Hack~ The Legend of Zelda: Shadow of Night (NES) ~Hack~ The Legend of Zelda: Shadow of Night (NES) suspect15 suspect15 Guide
The Adventures of Dino Riki (NES) The Adventures of Dino Riki (NES) Glendaal Glendaal Guide
Dragon Force (Sega Saturn) Dragon Force (Sega Saturn) suspect15 suspect15 Guide
Valkyrie Profile (PlayStation) Valkyrie Profile (PlayStation) Sines Sines Guide
Shadowrun (Mega Drive) Shadowrun (Mega Drive) shauntmw shauntmw Guide

RABot

RABot is the official RetroAchievements Discord bot. It is used to get a wide variety of RetroAchievements related data and information using custom bot commands. Check out the updates that have been made to the bot this year.

  • Add missing consoles to the hotcheevs command by @MrOwnership
  • cal command fix by @MrOwnership
  • contact command update for QA Restructure by @MrOwnership
  • contact command update to add RAEvents and reword DevQuest + QualityQuest sections by @televandalist
  • RABot upgrade form node v12 to v16. Add eslint to CI workflow by @luchaos

RAWeb

This past year was filled with constant updates to the site, as well as the long awaited RAWeb Version 2.0. Some of the features that were added this year had been requested by the community and staff for several years. With several of the features saving users hours and hours of time that was usually spent on manually actions to track data and information on the site. Some of the more notable features include:

  • RAWeb v2.0
  • Mature Content Filter
  • Hash Labeling and Management
  • Message Outbox
  • Recent Masteries Page
  • Split Site Awards into Game/Event/Site Awards
  • Allow viewing recent forum posts
  • Developer Set Claims System
  • Separation of Softcore Points from Hardcore Points
  • Counters for awards on profile page
  • Allow editing achievement title, description, points and badges on site
  • Change Achievement Distribution graph to bar chart
  • New layout for dev box on game page
  • Junior developers permission updates
  • and dozens of backend and frontend changes.

Huge thanks to luchaos luchaos and Jamiras Jamiras for their insane amout of consistent support on RAWeb with maintaining the repo, addressing Pull Requests, deploying new updates, and providing overall maintenance on the site. And thanks to everyone who contributed to RAWeb over the past year:


  • Version 1.79.0 - Released on 2/5/2022
    • add lazy loading attribute to profile and game images outputted by JS by @Krylan in #893
    • Prefix URLs with (missing) https protocol by @luchaos in #896
    • prevent negative offset in lbinfo query by @Jamiras in #897
    • use different escaping function for Tip() by @Jamiras in #895
    • don’t lookup notes for values by @Jamiras in #894
    • Sanitize tooltip output to prevent xss attacks by @Jamiras in #900
    • delay new forum post notifications from unverified users by @Jamiras in #902
    • make account deletion wording more verbose by @Jamiras in #903
    • add mature content warning by @Jamiras in #904
    • Prevent shortcode parser changing case … by @Jamiras in #899
  • Version 1.80.0 - Released on 2/12/2022
    • Don’t show mature warning for hubs by @Jamiras in #906
    • Remove Google Analytics tracking by @luchaos in #907
    • Rename “Similar Games” to “Related”/”Relations” by @luchaos in #908
    • exclude banned users from search results by @Jamiras in #909
    • Validate Dreamcast on site by @televandalist in #905
  • Version 1.81.0 - Released on 3/20/2022
    • allow labelling hashes by @Jamiras in #920
    • add Supported Systems filter to Most Requested Sets page by @Jamiras in #916
    • add ability to view sent messages if they haven’t been deleted by the recipient by @Jamiras in #912
    • separate hubs from similar games; link hubs from summary by @Jamiras in #913
    • change MD5 references to RetroAchievements Hash by @Jamiras in #915
    • remove Locked Topic Information by @MrOwnership in #918
    • ignore all non-scaling operands for scalable flags by @Jamiras in #922
    • add admin comment block to user page by @Jamiras in #914
    • allow admins to link hashes to unsupported consoles by @Jamiras in #919
    • add Arduboy as Console ID 71 to release.php by @televandalist in #917
    • fix edits not being logged for leaderboards with an unknown author by @Jamiras in #921
    • fix other tickets not showing up for demoted achievements by @Jamiras in #923
  • Version 1.82.0 - Released on 3/27/2022
    • validate Amstrad CPC on site by @televandalist in #931
    • add Comments Section to Hash Management Page. by @MrOwnership in #927
    • add ConsoleID to getUsersCompletedGamesAndMax by @ScottFromDerby in #925
    • also list unverified posts when they’re not the last post in a forum by @Jamiras in #926
    • allow multiple comment sections on a single page by @Jamiras in #930
    • use secondary query to calculate unique players in getGameMetadata by @Jamiras in #929
    • fix adding new hashes for games with apostrophes in their filenames
    • fix log message for tracking/untracking user
  • Version 1.83.0 - Released on 3/29/2022
    • Simplify article comments by @luchaos in #933
    • Adopt versioned assets filenames by @luchaos in #934
    • Use git native core.hooksPath config by @luchaos in #928
  • Version 1.84.0 - Released on 4/13/2022
    • Add recent masteries page by @Tsearo in #571
    • Split Site Awards into Game/Event/Site Awards by @Jamiras in #937
    • Separate subsets from similar games by @Jamiras in #940
    • Add pagination to games list; replace dev filter with has achievements filter by @Jamiras in #942
    • Allow merging aliased hubs by @Jamiras in #939
    • More detailed achievement modification messages by @Tsearo in #947
    • Show user game history on ticket page by @Jamiras in #945
    • Hide controlpanel sidebar until user is registered by @Jamiras in #943
    • Reset account to unverified when user changes their email address by @Jamiras in #944
    • Escape apostrophes in hash descriptions by @Jamiras in #948
    • PHP 8 compatibility by @luchaos in #935
    • Use PHP 8 language features (using Rector) by @luchaos in #911
    • Ignore achievements with no retro ratio when determining easiest achievements by @Jamiras in #941
    • Lazy load images for completion list by @Jamiras in #946
    • Fix inbox output sanitization by @luchaos in #936
  • Version 1.84.1 - Released on 4/15/2022
    • allow award groups to be ordered by @Jamiras in #950
    • remove pagination for per-console games with achievements lists by @Jamiras in #951
    • start with collapsible sections collapsed by @Jamiras in #949
  • Version 1.85.0 - Released on 5/1/2022
    • Additional ticket filters by @Tsearo in #958
    • Add tooltip to game rating by @Jamiras in #960
    • Add date picker to user history page by @Jamiras in #954
    • Only use hardcore unlocks for calculating retro ratio by @Tsearo in #963
    • Display error on failed password resets from reset url by @Tsearo in #965
    • Authorize forum posts when giving Jr-Dev or higher permissions by @Tsearo in #966
    • Add NumAchievements, NumLeaderboards, Points, and Hashes to API_GetGameList by @Jamiras in #964
    • Fix shortcode parsed auto-link URLs including trailing sentence-punctuation characters by @luchaos in #952
    • Return failure messages when provided with an invalid file by @Jamiras in #961
    • Added configuration for docker setup that allow to use Xdebug in your IDE by @anegoda1995 in #849
    • Only run code quality tools on changed files by @luchaos in #953
    • Ensure variable type is specified for match clauses by @Jamiras in #962
  • Version 1.86.0 - Released on 5/20/2022
    • Add warnings for account deletion by @Jamiras in #980
    • Add Request ticket state so ticket authors will be more cognizant when the developer needs more information by @Jamiras in #978
    • Use paginator for forums by @Jamiras in #981
    • Allow multiple Similar Games to be removed at once by @MrOwnership in #984
    • Add PS2 console message to game info and game list pages by @luchaos in #985
    • Fix total players displayed and used in RR calc from using Unofficial by @Tsearo in #976
    • Fix pagination calculations for achievement unlocks by @Jamiras in #973
    • Fix other tickets for an achievement not showing up by @Jamiras in #975
    • Return null rank in public APIs for untracked users by @Jamiras in #974
    • Enable pagination of API_GetTicketData by @Jamiras in #979
    • Validate Arduboy and WASM-4 on site. by @televandalist in #977
    • Add TicketFilters enum by @Jamiras in #970
    • Add AchievementType enum by @luchaos in #986
  • Version 1.87.0 - Released on 6/2/2022
    • Allow viewing recent forum posts from a user by @Jamiras in #1004
    • Add first/last links to paginator by @Jamiras in #996
    • Use paginator for ticket list by @Jamiras in #997
    • Allow tab delimiter in admin tools by @luchaos in #1001
    • Add flag to return ticket details when calling API_GetTicketData with g parameter by @Jamiras in #998
    • Add DateModified in API_GetGameList query by @Jamiras in #1005
    • Add ForumTopicID in API_GetGameList query by @Jamiras in #1011
    • Fix broken dev page when first achievement is 0 pointer by @Tsearo in #989
    • Fix sanitized title/descriptions from falsely showing differences by @Tsearo in #990
    • Fix floats from breaking stored hits in mem explained view by @Tsearo in #992
    • Fix relations widget sizing for long title by @MrOwnership in #999
    • Eliminate RA_User cookie by @Jamiras in #994
    • Document remaining public APIs by @Jamiras in #991
    • Remove “How do I play?” tutorial widget from game details page by @luchaos in #1000
    • Several maintenance/cleanup and refactorings by @luchaos in #967, #995, #1002, #1003, and #1008
  • Version 1.87.1 - Released on 6/6/2022
    • Fix various errors and warnings by @luchaos in #1012
    • fix leaderboard creation permission check by @Jamiras in #1013
    • Update dependencies by @luchaos in #1014
    • Shortcode parser fixes by @luchaos in #1015
    • Authenticated user in form request only by @luchaos in #1017
    • Add directory separator agnostic assertPathEquals() to tests by @luchaos in #1021
  • Version 1.88.0 - Released on 6/9/2022
    • Do not open links in new tabs by default by @luchaos in #1022
    • move PermissionsToString into Permissions enum by @Jamiras in #1018
  • Version 1.89.0 - Released on 6/28/2022
    • Set claims by @MrOwnership in #1027
    • Redesigned search bar by @Krylan in #1023
    • Add colors to status widget by @Jamiras in #1030
    • Add audit comments for game modifications by @Jamiras in #1019
    • Include separate values for hardcore in API_GetUserRecentlyPlayedGames response by @Jamiras in #1038
    • Improve merging of Hacks hubs into Publisher field by @Jamiras in #1029
    • Fix client error when unlocking previously earned achievements by @Jamiras in #1031
    • Fix mature content user preference not saving by @Jamiras in #1035
  • Version 1.89.1 - Released on 7/27/2022
    • Don’t show authorization message for non-admins by @Jamiras in #1041
    • Validate Fairchild Channel F and Mega Duck on site. by @snowpin in #1066
  • Version 1.90.0 - Released on 8/8/2022
    • Separation of Softcore Points from Hardcore Points by @Tsearo in #1033
    • Replace Friends terminology with Followed Users by @Jamiras in #1042
    • Counters for awards on profile page by @EmoonX in #1070
    • Allow editing achievement title, description, points and badges on site by @Tsearo in #1054
    • Show message on profile page when user has disabled wall comments by @Jamiras in #1059
    • Add status widget to achievement reorder page by @Jamiras in #1058
    • Add link to manual unlock documentation on report issue page by @Jamiras in #1060
    • Fix newlines not appearing in comments widget by @Jamiras in #1039
    • Fix stackable site awards sometimes appearing as game completion awards by @MrOwnership in #1049
  • Version 1.91.0 - Released on 8/19/2022
    • Update max game progress to 100% by @Jamiras in #1079
    • New Sets/Revisions widget by @Tsearo in #1085
    • Add softcore leaderboard rankings by @Jamiras in #1083
    • Followers list now sorted by name and has link to follow user back by @Jamiras in #1078
    • Fix Compare to Others list not showing followers who weren’t mutually following by @Jamiras in #1077
    • Fix points not showing for user in Followed Users link when user rank was greater than 10 by @Tsearo in #1076
    • Fix progress reset message showing raw HTML by @luchaos in #1080
    • Fix Recent Progress graph for softcore by @Tsearo in #1081
    • Fix hub matching for values containing ampersands by @Jamiras in #1082
    • Fix game award counters overflow by @EmoonX in #1084
    • Fix Latest Masters table not showing actual mastery rank by @EmoonX in #1071
  • Version 1.91.1 - Released on 8/19/2022
    • prevent divide by zero if game only has 0 point achievements by @Jamiras in #1099
    • Fix sorting when clicking more link on New Set/Revision widget by @Tsearo in #1101
  • Version 1.91.2 - Released on 9/6/2022
    • Change Achievement Distribution graph to bar chart by @Jamiras in #1113
    • Fix white points calculation on daily/weekly leaderboard by @Tsearo in #1102
    • Fix hardcore indicator on player history page by @Jamiras in #1107
    • Fix first mutual follower showing follow link by @Jamiras in #1108
  • Version 2.0.0 - Released on 9/16/2022
    • V2: Introduce TALL Stack by @luchaos in #1103
    • Added
      • Add composer install line to readme
      • Add ranking to footer nav
    • Changed
      • Refactor requests, deprecate request helper functions, use framework request() helper
      • Update dependencies, require node v18, npm v8, run audits
      • Refactor CSS to Vite/Tailwind & remove unused classes & split styles.css
      • Change utf8mb4_0900_ai_ci to utf8mb4_general_ci for mariadb compatibility
      • Refactor “Enum” classes to be closer to PHP 8.1’s Enum
      • Refactor email update request & add global verification nag message
      • Move logout from top area to my pages dropdown
      • Remove HARDCORE ascii art
      • Clean up game pages
      • Clean up aotw component
      • Clean up comments layout to match forum topic comments
    • Fixed
      • Fix layout issues
      • Fix open graph metadata
      • Fix shortcode game resolution for unknown games
      • Fix forum topic update redirect & add anchor
      • Fix Apache not redirecting all php scripts in public/ to the index.php entrypoint
      • Fix incorrect image upload request paths
    • Fixed V1
      • Fix daily/weekly retro points calculation by @Tsearo in #1102
      • fix hardcore indicator on player history page by @Jamiras in #1107
      • fix first mutual follower showing follow link by @Jamiras in #1108
  • Version 2.0.1 - Released on 9/30/2022
    • Lazily load tooltip cards by @luchaos in #1142
    • Cache currently active on front page by @luchaos in #1143
    • Use standard colors for comments widget by @Jamiras in #1145
    • Show decimal tooltip for hex values when viewing trigger by @Jamiras in #1140
    • Fix resetting progress from achievement page by @Jamiras in #1117
    • Fix resetting progress from game page by @Jamiras in #1120
    • Fix points not being returned by API_GetUserRankAndScore by @Jamiras in #1118
    • Fix news image header path by @luchaos in #1119
    • Fix Mastered being displayed when 99.5+% of achievements earned, but not 100% by @Jamiras in #1121
    • Fix server error loading profile when user has hardcore unlocks for a game but not softcore unlocks by @Jamiras in #1126
    • Capture timing information for non-laravel queries by @Jamiras in #1127
    • Fix exception processing truncated trigger by @Jamiras in #1131
    • Return 404 for dev stats of deleted user by @Jamiras in #1132
    • Prevent 500 response when attributed developer was hard deleted by @Jamiras in #1133
    • Prevent exception visiting game compare page before playing any games by @Jamiras in #1134
    • Fix navigation when search string contains apostrophe by @Jamiras in #1141
    • Fix ‘Malformed UTF-8’ error when rich presence truncated mid UTF-8 character by @Jamiras in #1144
    • Handle missing referers in wiki edit redirects by @luchaos in #1136
    • Use cachable configuration values instead of environment variables by @luchaos in #1139
  • Version 2.1.0 - Released on 10/8/2022
    • New layout for dev box on game page by @luchaos in #1176
    • Allow user to create new ticket for achievement if previous ticket has been closed or resolved by @Jamiras in #1170
    • Disable button while submitting forum post to prevent multi-submission by @Jamiras in #1163
    • Allow devs to make collab claims when they have no claim slots available. by @MrOwnership in #1158
    • Update Time(Milliseconds) to Time(Centiseconds) in leaderboard editor by @Jamiras in #1162
    • Add Reddit footer link by @luchaos in #1189
    • Revert default game icon by @luchaos in #1167
    • Jump to comment from recent forum comment links by @Jamiras in #1181
    • Update update/unlink hash comments to match current format by @MrOwnership in #1164
    • Remove console name from games list by @luchaos in #1156
    • Render default icon for deleted user avatar by @luchaos in #1155
    • Fix user avatar word wrap by @luchaos in #1154
    • Fix exception viewing dev stats for new developer where first unlock was softcore by @Jamiras in #1157
    • Match ticket avatar icon size with other avatars by @luchaos in #1172
    • Fix scrollbar on manage claims page by @luchaos in #1175
    • Fix achievement link on game compare page by @luchaos in #1179
    • Fix html entities in page title by @luchaos in #1185
    • Prevent divide by zero if user has reset softcore but not hardcore by @Jamiras in #1182
    • Prevent exception accessing history with an invalid date by @Jamiras in #1153
    • Use loadCard for active players by @Jamiras in #1166
    • Cache ability to create tickets by @Jamiras in #1169
    • Cache recently played games by @Jamiras in #1171
    • Cache top achievers per game by @Jamiras in #1174
    • Bump doctrine/dbal from 2.13.9 to 3.4.5 by @dependabot in #1180
  • Version 2.2.0 - Released on 11/18/2022
    • Junior developers are now allowed to update game information, rich presence, and achievement order for games where they have an active new set claim by @MrOwnership in #1211
    • Add explain blocks for leaderboards by @Jamiras in #1216
    • Add Type filter to search page by @Jamiras in #1195
    • Eliminate ticket karma by @Jamiras in #1203
    • Only show recent players from the last six months on game pages by @Jamiras in #1197
    • Separate PC Engine CD from PC Engine by @televandalist in #1129
    • Restore Set Exists marker on All User Set Requests page by @Jamiras in #1193
    • Fix display issue when embedding game and achievement with same ID in same page by @Jamiras in #1198
    • Fix notes not showing up for PS2 achievement definitions by @Jamiras in #1210
    • Fix completion badge not being awarded if last unlock was hardcore by @Jamiras in #1196
    • Fix rank calculation for lower is better leaderboard when rank is shared by @Jamiras in #1202
    • Fix player activity not showing up when invalid by @Jamiras in #1204
    • Fix hardcore border not showing on game compare page by @Jamiras in #1218
    • Fix RSS feeds date, strip HTML tags, add guid by @Krylan in #1223
    • Prevent creating account with invalid username by @Jamiras in #1206
    • Prevent exception trying to create a ticket when not logged in by @Jamiras in #1190
    • Prevent exception trying to return data for non-existent game by @Jamiras in #1191
    • Prevent exception calling RecentlyPlayedGames without a user by @Jamiras in #1205
    • Don’t try to send email to deleted user when closing ticket by @Jamiras in #1213
  • Version 2.3.0 - Released on 12/1/2022
    • show points needed for next request on user’s requested sets page by @Jamiras in #1232
    • limit emulator selection to supported emulators for console when creating new tickets by @Jamiras in #1231
    • more theme colors by @luchaos in #1242
    • attempt to identify hash in ticket notes by @Jamiras in #1244
    • disallow completing claim from unofficial by @Jamiras in #1230
    • fix page calculation for search results by @Jamiras in #1236
    • fix searching on symbols by @Jamiras in #1237
    • fix games/achievements being returned by compare to another user feature by @Jamiras in #1243
    • fix empty error message when trying to fetch many user tooltips by @Jamiras in #1233
  • Version 2.4.0 - Released on 12/16/2022
    • Adjust contributions for hardcore/softcore split by @Jamiras in #1228
    • Adjust contribution tier thresholds by @Jamiras in #1257
    • Split comment search type into subtypes by @Jamiras in #1254
    • Add subpage for additional comments by @Jamiras in #1253
    • Clear resolution fields when reopening ticket by @Jamiras in #1258
    • Allow # in code notes by @Jamiras in #1259
    • Only fetch tooltip if hovering by @Jamiras in #1255
    • Make hash link redirect to hash page by @Jamiras in #1251
    • Fix enforcement of minimum number of achievements for badge by @Jamiras in #1250
    • Fix exception accessing games list for unknown console id by @Jamiras in #1246
    • Fix exception trying to view non-existent ticket by @Jamiras in #1247
    • Include calling function location in silenced sql failure by @Jamiras in #1248
  • Version 2.4.1 - Released on 12/22/2022
    • Fix wrapping of very long text in forum post content preview by @Krylan in #1265
    • Fix display of value definition containing max_of operator (‘$’) by @Jamiras in #1263
    • Fix identification of other tickets for same achievement by @Jamiras in #1267
    • Fix leaderboard not displaying if only entries are for untracked users by @Jamiras in #1268
    • Fix compare-to-user autocomplete by @Jamiras in #1270
    • Improve title/description for Portuguese-speaking forum by @EmoonX in #1275

Development Tool Updates

Without the work of Jamiras Jamiras we would still be stuck in the stone age of achievement development and toolkit features. There are no amount of words that express the appreciation and gratitude that we all have for all the time and effort he puts into this community. Check out the major updates to development tools and emulators that he has provided this year.

RAIntegration

  • Version 1.0 - Released on 1/29/2022
    • For players:
      • Measured achievements report raw values (instead of percentage) by default
      • Fix percentage calculation for very large measured targets
      • Fix issue where flickering challenge indicator could disappear entirely when fast forwarding
      • Fix crash when attempting to display multiple challenge indicators in the same frame in RAProject64
      • Fix display of unlocked achievement count when user has unlocked Unofficial achievements
      • Prevent activating achievements if runtime was initialized for a console other than the game’s console
    • For developers:
      • Leaderboard editor
      • New sizes: Float, MBF32, 16-bit BE, 24-bit BE, and 32-bit BE
      • Add logical warnings (i.e. comparing 8-bit address to 16-bit number) to asset editor
      • Search functionality should be slightly faster and use less memory
      • Add tooltip to search results that displays the initial and last value of each search result
      • Option to specify whether Measured achievements should show raw value or percentage
      • Add ability to link hash from Test Compatibiltiy mode
      • New/Clone buttons prompt to disable hardcore instead of being disabled when in hardcore mode
      • Freeze button text on bookmarks window changes to Unfreeze when only frozen bookmarks are selected
      • Increase address column width in search results and bookmarks for systems with more than 16MB of RAM
      • New built-in macros for Rich Presence: @Number, @ASCIIChar, @UnicodeChar, @Seconds, @Minutes, @Float[1-6]
      • Fix disappearing search results in Text search mode
      • Fix AddAddress resolution (tooltip/jump to address) not working after adding new conditions to achievement
      • Fix Exclude Selected always using last page of results instead of selected page
  • Version 1.0.1 - Released on 2/11/2022
    • Fix custom bookmark descriptions disappearing over multiple sessions
    • Fix “lower is better” not being remembered for local leaderboards
    • Fix indirect tooltips in alt groups when achievement is not active
    • Fix issue where some frozen memory addresses could not be edited from the bookmark dialog
    • Fix highlights not showing when switching groups while emulator is paused
    • Fix prior always returning 0 for bit1-bit7 sizes
  • Version 1.0.2 - Released on 3/6/2022
    • add warning for conflicting conditions within achievements
    • fix performance of Continuous Filter with millions of results remaining
    • fix Track as % checkbox not appearing selected when switching to an active achievement using it
    • fix wrong code note updated if selecting a new address while overwrite confirmation dialog is visible
    • fix achievement immediately deactivating when manually activated with Processing Active disabled
    • fix results label obscuring bookmark button for small code note windows
    • fix tab characters in rich presence being sent to server as ‘t’
    • fix processing of float values in rich presence with more than 9 digits after decimal
    • fix truncation of large measured values displayed in asset editor window
    • fix invalid regions not updating when switching games
    • don’t report console mismatch when loading a game associated to the Events meta-console
  • Version 1.0.3 - Released on 5/5/2022
    • add rich presence to asset list
    • remember previously selected game for Test Compatibility feature
    • relax trigger validation when pasting
    • show Inspecting Memory (instead of Developing Achievements) in rich presence if no local or core assets exist
    • limit ‘does not trigger’ submissions to five achievements at a time
    • fix issue uploading non-PNG achievement badges
    • fix measured value from hitcount not resetting when paused
    • export _RA_GetPopupMenuItems function as alternative for _RA_CreatePopupMenu for non-WinAPI menuing systems
    • support for non-standard ports when using a custom host
  • Version 1.0.4 - Released on 5/12/2022
    • fix client ignoring server-modified rich presence script
    • fix exception pressing New button with Rich Presence filter selected
    • prevent saving achievement in invalid state when using Save All
    • add _RA_InstallMemoryBankBlockReader export
  • Version 1.1.0 - Released on 11/15/2022
    • Support for indirect code notes (code notes derived from a note on a pointer) If the first line of a code note contains the keyword “pointer”, then any following line that starts with a plus (no indent) immediately followed by a number (hexadecimal [0x prefix] or decimal, no whitespace) is treated as an indirect code note. After the number, any number of whitespace characters and/or a single non-alphanumeric character separate the indirect note from the offset. Following lines that don’t start with a plus are also considered part of the indirect note. Some examples are shown here.
    • Support for local code notes
      • Allows making temporary notes while trying to narrow down addresses
      • Fixes loss of note-in-progress if selected address is changed
      • Note modifications are kept locally until published to the server
      • Unpublished notes will appear in red in the code notes window
      • Notes are deleted by reverting (if not published) or by setting to blank and publishing
    • Support for offline development (if the game was previously loaded in online mode)
      • Offline mode is only activated if the server cannot be contacted during login.
      • It’s not meant to be something a developer can just activate whenever they want.
      • Changes will be saved to local file (XXX-User.txt)
      • Publishing is disabled
      • Achievements unlocked in offline mode will not be sync’ed to the server, and will not be eligible for manual unlocks.
    • Add Open All and Code Notes items to RetroAchievements menu
    • Add MBF32 LE memory size
    • Add BitCount search type
    • Add XOR (^) AddSource/SubSource modifier
    • Add ASCII as selectable size in bookmarks window
    • Add warning when serialized size exceeds limit
    • Add Export button to search results
    • Automatically change asset filter to local if local assets exist and no published assets exist
    • Changed points field on achievement editor to dropdown
    • Allow Invert to be selected for non-value logic
    • Allow rich presence monitor to be resized
    • Fix app title being updated on login/logout when not using RA_UpdateAppTitle
    • Fix search results being cleared when switching between disks of a multi-disk game
    • Fix crash enabling highlights without a loaded asset
    • Fix comparison against initial values for aligned searches
    • Fix redundancy warning between trigger and non-trigger conditions
    • Fix decoding of denormalized floats (values where exponent is 2^-127)

RATools

  • Version 1.8.3 - Released on 1/4/2022
    • add true and false constants for script logic (continue to use always_true() and always_false() for trigger definitions)
    • add word_be, tbyte_be, and dword_be big-endian memory accessor functions
    • add max_of helper function for leaderboard value clause
    • add rich_presence_macro function
    • support for floating point numbers
    • support for writing leaderboards to local file (direct import to 0.80 DLL)
    • support for generating code for leaderboards from New Script dialog
    • add format parameter to measured function to support raw vs. percent display
    • allow negative offsets when processing pointers
    • allow bcd() to be called inside prev()
    • allow trigger(a || b) to expand to alt groups
    • allow loading file without a game id
    • lookup entries that match the fallback value are no longer included in the generated Rich Presence script
    • improved underflow adjustment calculations
    • fix empty array/dictionary showing up orange
    • fix loss of hit target when final condition of clause is optimized out
    • fix loss of ResetIf when used in Measured value
    • fix cannot apply Trigger to ResetIf error when using never inside repeated in trigger_when
    • fix highlighting issue when pasting lines that start with combining characters (&&, +, …)
    • fix stack overflow processing very long chain of conditions
    • fix maximum recursion error when processing very long AddSource chain inside prev
    • fix maximum recursion error when editing the same function over and over
    • fix crash updating local achievements when system culture uses comma as decimal separator
    • fix stats not showing up without an ApiKey
  • Version 1.8.4 - Released on 2/15/2022
    • support for bitwise and (&)
    • add lower_is_better flag to leaderboard() function
    • support for collapsing AddSource bit chain into BitCount
    • support joining multiple MeasuredIfs for when parameter of measured() function when dumping New Script
    • allow || in when parameter of measured() function.
    • use core badge when merging local/generated achievement with badge “00000”
    • improved matching for trigger diffs - most notably, when alt group indices change
    • show serialization warnings when using Update Local dialog
    • fix premature optimization of subclause causing complex condition to evaluate to always_false()
    • fix exception when line-wrapping some complex expressions when dumping script via New Script
  • Version 1.8.5 - Released on 4/3/2022
    • many improvements to generating scripts from existing achievements
      • support for generating from local achievements
      • support for built-in macros
      • support for compound code note sizes i.e. “[32-bit float]”
      • convert PauseIf with hitcounts/ResetNextIf logic to disable_when()
      • convert AddHits chain to tally()
      • fix exception if macro has no parameter
      • fix exception when no tickets are found
    • add array_map() function
    • add tally_of() function
    • add logic to convert “A<1||A>1” into “A!=1”
    • support for multiple conditions in a ResetNextIf using OrNext
    • make error more user-friendly when an if expression cannot be evaluated at compile time
    • fix multiple conditions in a repeated() in measured(when=) getting split into separate MeasuredIfs
  • Version 1.9.0 - Released on 6/14/2022
    • upgrade from .NET Framework 4.6 to .NET Core 6.0
    • add forward/backward navigation via mouse4/mouse5 buttons
    • use APIs for Analysis dialogs (fixes failures caused by scraping website when site changes)
      • added Web API Key field to settings dialog
    • add User Mastery analysis dialog (warning: fetches game stats for every game user has mastered)
    • add Unlock Distance analysis dialog
    • add Rich Presence to the Update Local dialog
    • update Rich Presence size warning to 64KB
    • fix issue dumping script with measured(tally(), when=...) clause
    • fix issue dumping script with tally(1, ...) clause
    • fix issue dumping script when local leaderboards are present
    • fix issue dumping leaderboard value with AddAddress and non-integer multiplier
    • fix issue generating rich presence when lookup is hardcoded for value=0
    • fix issue pasting multiline text into a line with an error indicator
    • fix error generating leaderboard value with measured(..., when=repeated() && never())
    • fix error using multiple nevers in a single repeated clause
    • fix whitespace not being required after else keyword
  • Version 1.9.1 - Released on 6/22/2022
    • show error when server returns non-JSON authentication error
    • improve diff logic for rich presence lookups
    • fix optimization of division by self in leaderboard value
    • fix line endings causing rich presence to appear modified
    • fix back navigation when an asset has changed
  • Version 1.10.0 - Released on 11/14/2022
    • new internal representation of logic
      • small performance boost due to not having to reevaluate on each usage
      • allows for more optimization opportunities NOTE: this causes errors to be generated for several previously allowed syntaxes:
        • implicit always_true() and always_false() are no longer supported in logic chains. logic such as: 0=1 && never(byte(0x1234) == 3) will now collapse to false as 0=1 can never be true. script authors must replace the 0=1 with an always_false() to preserve the logic in the output.
        • always_true() and always_false() are no longer supported for leaderboard values. use measured(repeated(0, always_true())) and 0 instead.
        • memory addresses can no longer be compared to true or false. Compare to 1 or 0 instead.
        • integer division is no longer implicitly converted to floats for leaderboard values: byte(0x1234) * 3 / 2 will no longer be automatically converted to byte(0x1234) * 1.5. use byte(0x1234) * 3.0 / 2 for automatic conversion.
        • calling repeated or tally with a count of 0 is no longer supported outside of a measured clause of a value expression. Doing so implies an unbounded hit requirement which cannot be reached and is equivalent to always_false(). Using these to generate an AndNext/OrNext chain was not intended. If you absolutely want to prevent the OrNext from being converted to alt groups use the __ornext(condition) function. If you have a valid reason for forcing an AndNext chain let me know.
        • measured(A && B) will now generate an error instead of just setting the Measured flag on B. The actual logic it previously generated was A && measured(B) or measured(repeated(0, A && B)) depending on whether it was being used in a trigger expression or a value expression.
        • once(A && once(B)) will now keep a separate hit count for B and for the entire clause by reordering the conditions or injecting an always_false() condition to hold the total count.
        • once(unless(A)) will now generate an error. use unless(once(A)) or disable_when(A) instead. Similarly, unless cannot be used inside repeated or tally clauses.
        • repeated(10, trigger_when(A)) will now generate an error. use trigger_when(repeated(10, A)) instead.
        • repeated(10, measured(A)) will now generate an error. use measured(repeated(10, A)) instead.
    • support for local code notes
    • add Progression analysis dialog (open from Game Stats dialog)
    • add ability to autogenerate function names in New Script dialog
    • fix “measured(bitcount(X) == 8)” being converted to “measured(byte(X) == 255)”
    • fix “measured(X + 100 > 200)” being converted to “measured(X > 100)”
    • fix “float(X) < 0” being converted to “always_false()”
    • fix never in tally clause being replaced with AndNext
    • fix Copy to Clipboard not working on Rich Presence and Leaderboard title/description
    • fix duplicating of file extension for local badge images
    • fix dumping Rich Presence with measured value in display string
    • fix viewing Rich Presence diff where lookup was removed
  • Version 1.10.1 - Released on 12/3/2022
    • fix any_of() logic for boolean predicates
    • fix dumping ResetNextIf for OR’d logic
    • fix intersecting optimization of OR’d logic
    • fix __ornext hint sometimes being optimized
  • Version 1.10.2 - Released on 12/6/2022
    • fix intersection of float comparisons

Emulator Updates

RALibretro

  • Version 1.3.9 - Released on 1/9/2022
    • Support for Dreamcast via the flycast core (x64 only)
    • Support for NAOMI Arcade via the flycast core (x64 only)
    • Support for lightgun interface
    • Additional support for keyboard interface
    • Remove frame-smoothing code as some cores don’t generate as many frames as they claim they should
    • Deprecate DuckStation in favor of SwanStation
  • Version 1.3.10 - Released on 3/15/2022
    • enable cap32 core for Amstrad CPC
    • support for reading rzip compressed save states
    • fix crash using core settings dialog before loading a game
    • extract zip when core supports zip but requires fullpath
    • change CD-ROM submenu to Floppy Disk for systems that support floppies
  • Version 1.3.11 - Released on 5/8/2022
    • Enable cores for Arduboy (arduous) and WASM-4 (wasm4)
    • Add [Game Focus] indicator to title bar
    • Pass up to 256 characters to DLL for estimated game title
    • Fix multi-touch input polling (disable; not supported)
    • Support for #SAVEDISK: m3u extension
  • Version 1.4.0 - Released on 11/18/2022
    • support for identifying CHD-formatted CDs
    • ability to launch game using command line arguments
    • cascade Select Core menu if it contains more than 20 systems
    • attempt to report error from core when savestate loading fails
    • separate PCEngine from PCEngine CD
    • enable FreeChaF core for Fairchild Channel F
    • enable SameDuck core for MegaDuck