diff --git a/Unwelcome-Concepts/index.html b/Unwelcome-Concepts/index.html index b956992f..04f5f874 100644 --- a/Unwelcome-Concepts/index.html +++ b/Unwelcome-Concepts/index.html @@ -4750,9 +4750,11 @@
Achievements for dying, getting a game over, or repeatedly failing a task just for the sake of it are unnecessary.
-When these are acceptable: - - Many point-and-click adventure games and visual novels often tie a player's death into the story, which can result in unique scenes a player would not witness otherwise. - - If playing poorly results in a humorous or otherwise interesting in-game acknowledgement such as being awarded a helmet for taking too many head shots.
+When these are acceptable:
+Examples of this are achievements for simply starting a game, collecting a single coin, watching a video, etc.
When these are acceptable:
@@ -4853,6 +4855,7 @@Last 10 changes on this page:
[2024-05-05 11:11] Andrew Comer:
Updated Unwelcome Concepts (markdown)[2024-05-05 11:08] Andrew Comer:
Bullet formatting fixes.[2024-03-27 09:46] The Mystical One:
Added details for "Requires Complete Perfection"[2024-01-26 08:49] The Mystical One:
Updated Unwelcome Concepts (markdown)Welcome to the RetroAchievements documentation!
The docs are currently under heavy construction so be sure to check back often! Each section appears in the sidebar, but here is a brief explanation of the categories:
We encourage all community members to join our Discord Server; we use this for most communication.
Translations
Last 10 changes on this page:
[2023-11-28 14:29] televandalist:
Removed the RA logo from the top since the link was broken[2023-06-30 12:36] televandalist:
Updated Home (markdown)[2023-06-30 12:14] televandalist:
Updated Home (markdown)[2023-06-06 10:35] televandalist:
Fix broken link[2023-04-13 15:08] televandalist:
Removed the links to pages that deal with specific support questions. They should/will be merged with a support section or the FAQ to declutter the home page.[2023-04-13 14:51] televandalist:
Removed link to \"Free Games\" section. While they are free homebrews, the downloads are typically on site if they actually have a set. If they aren't, they should be.[2022-08-23 20:22] Jazerus:
grammar fixes[2022-02-18 21:24] televandalist:
Add Event page link[2021-04-21 10:23] meleu:
french docs are yet incomplete[2020-09-07 09:06] meleu:
add ManifestoLet's start jumping directly to the conclusion:
If you mastered a game and then it received a revision, don't feel frustrated! Keep in mind that changes come for a better quality.
Now let's elaborate why we are saying that.
RetroAchievements is a \"young\" project and is constantly evolving. It was launched in the late 2012, and in the early days the emulators and the site (database stuff, PHP, HTML, CSS, JavaScript, etc.) were developed by a single person: Scott. Therefore the evolution occurred slowly.
Another thing that was occurring very slowly in the early days was the diffusion of knowledge about achievement creation. Specially about good practices when creating achievements. There wasn't documentation at that time (RADocs only started in November/2017). People were learning to create achievements by sharing knowledge on forum threads and/or by personal messages.
In the early days the community didn't have a very clear a concept of what a good achievement design is. And it resulted in many poorly designed sets compared to our current standards (e.g. sets with only progress-based achievements). We also didn't have much experience of how achievements could be protected against in-game cheats or battery save abusing. That's why from time to time some achievement sets receive revisions. We make set revisions with quality in mind, and to show actual respect for the game.
When a revision is going to happen, we try to involve the community by discussing on our forums (usually the official game's topic) and/or on our discord server. We are aware that this is insufficient to reach all interested people, but it is the way we are currently using.
We are working on new ways to discuss revisions with the community by implementing some new social features on the RA website, but while those features are not implemented, we'll keep using the forums and discord.
If you would like to propose new methods for discussing revisions, we are open to suggestions.
"},{"location":"About-Us/","title":"About Us","text":""},{"location":"About-Us/#ra-staff","title":"RA Staff","text":"The RetroAchievements project started as a personal project of Scott Breen and in the early days the project had only administrators, achievement creators, and regular users (and it's still like that on the website). At that time administrators were responsible to do things like:
As the community continues to grow, the amount of work, time, and energy required to keep it running also grows. In order to assure the project thrives, without administrators having burnouts and ragequitting the project, various roles with specific tasks were created.
These roles are not really visible in the website, but they are on discord and here in this page we list the roles and their responsibilities.
Shared accounts used by their respective team members:
Members who have direct access to the webserver.
A group of dedicated and trusted users with varied responsibilities, the heaviest being decision-making regarding the direction of the project and community:
The team responsible to keep the this community a healthy place (at least for those who adhere to the User's Code of Conduct and agree with the RetroAchievements Manifesto):
The team responsible for the adherance and driving updates to the Developer's Code of Conduct.
The team responsible for ensuring the overall quality of achievement sets: including logic, correct titles and descriptions, working leaderboards, working rich presence and hash compatibility:
The team responsible for helping Jr. Devs learn how to make achievements sets and review their work to ensure their understanding is enough to make sets on their own:
The team that is more involved with the tech side of things, whether it be the website, emulators, Discord bots, etc.:
Users who oversee one of the QA sub-teams:
The RetroAchievements project was created by Scott Breen in 2012. He hacked some open source emulators to add the RetroAchievements feature and coded all the backend/website mostly alone.
By January 2014, there were 4 RA emulators, over 5000 achievements to earn (thanks to the devotion of many passionate achievement developers) and over 1000 players registered. After a couple of years Scott was called by the real life the website development went into a period of hiatus with just a few sporadic improvements (the achievement developers were continually working on more and more games, though).
In late 2015 leiradel started to work to integrate the RetroAchievements feature into RetroArch. And, as RetroArch is able to run on a wide variety of platforms (such as Mac and Linux) and devices (such as Android phones and Raspberry pi), it helped a lot to increase the popularity of the RetroAchievements project.
As the site slowly grew, so did the bandwidth costs, so in late 2016, Scott reached out to the community and they suggested doing a Patreon to keep the site going. After implementing it, the community response was fantastic, which allowed the site to continue completely ad-free.
Mid 2017 the RetroAchievements Discord server was started and it made communication across the community much easier. Since then, many knowledgeable members (coders, web developers, etc.) joined the scene volunteering to contribute to the project.
Up to this point all the achievement creation knowledge was scattered in several forum posts, making it very tough for a newbie to learn how to create achievements. Then in the late 2017 meleu started the RADocs project and thanks to contributions from many experienced achievement creators it is now a reasonably solid resource of information. Helping dozens of Jr. Developers (and even the experienced ones) to create content for our community.
In the early 2018 Scott opened the source of the back-end/website, which was a turning point in the history of the development of the whole RetroAchievements project (see us at github).
Later in the same year a more concise staff began to take shape and is now an awesome team. These talented guys keep the ball rolling and make it very clear that the RA community is alive and stronger than ever.
In some areas the project may still look like a beta version, but we are continually working hard to make things better.
"},{"location":"About-Us/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-08-04 23:23] Snow:
Updated users in roles[2023-04-13 14:37] televandalist:
Updated the list.[2022-06-09 19:04] Searo:
Swap QA and DevComp descriptions[2022-06-09 18:45] Searo:
Add DevComp, Update QA after the split, Add CR, Suffa28 to Mods, SnowPin to Admins[2022-04-16 12:07] snowpin:
Updated Staff & Tech Team members[2022-03-21 15:08] ScottFromDerby:
I am now Breen instead of Davies :)[2022-03-13 21:11] televandalist:
Updated according to current roles.[2022-01-28 18:40] SporyTike:
added RAdmin and QATeam as contacts to the lists, I got feedback from users that it might be good to put them here[2021-11-28 14:14] televandalist:
Update team lists[2021-06-01 09:19] meleu:
add missing human being to be listed in the mod teamEsta es una gu\u00eda en como pensar en un buen dise\u00f1o de logros. No el lado t\u00e9cnico sino el conceptual.
Este contenido es un resumen de lo que originalmente escribi\u00f3 el usuario de RA cirellio en un tema del foro.
"},{"location":"Achievement-Design-es/#logros-basados-en-progresion","title":"Logros basados en Progresi\u00f3n","text":"Hay 3 tipos de logros basados en progresi\u00f3n: progresi\u00f3n simple, progresi\u00f3n basada en historia, y logros de progresi\u00f3n/colecci\u00f3n.
"},{"location":"Achievement-Design-es/#progresion-simple","title":"Progresion Simple","text":"Logros basados en progresi\u00f3n son usualmente los mas simples, especialmente si el juego que estas haciendo es nada mas que eso. O no tiene mucho que ver con una trama/historia o algo parecido. En este caso, veamos algunos BUENOS y MALOS ejemplos sobre esto:
Toma ligeramente mas trabajo programar un logro donde el jugador necesita completar un stage en vez de simple llegar al siguiente. Pero es aparte mas satisfactorio para el jugador, y se ve mucho mas profesional. Aparte tambi\u00e9n es menos susceptible a problemas donde los jugadores cargan partidas de guardado o estados de guardado (savestates) para logros gratis.
Es cierto que los logros basados en progresi\u00f3n son usualmente logros regalados, pero generalmente todos estamos de acuerdo en que un logro sobre empezar el juego es demasiado f\u00e1cil, y no del todo memorable para el jugador. Es simplemente es una norma, sin embargo es muchas veces la parte mas memorable de un juego para el jugador, y completar un juego es definitivamente un logro en si. Es correcto hacer un logro que funcione de la siguiente manera \"Completa el ultimo mundo y completa el juego\".
Una de las peores cosas que puedes hacer es spammear logros. Juegos de Puzzle son notorios por tener ese tipo de problemas, porque los stages son cortos y por lo regular, hay cientos o hasta mas. Como resultado, el feed de la pagina principal termina con un mont\u00f3n de micro-actualizaciones, y sacan a los logros de otros usuarios r\u00e1pidamente del feed. La manera de corregir esto de la manera mas profesional posible es espaciar los logros un poco mas, en grupos de stages. Por ejemplo, si los stages 1-10 todos tienen tem\u00e1tica de fuego, y los stages 11-20 todos tienen tem\u00e1tica del espacio, puedes crear logros basados en esas tem\u00e1ticas. Se creativo.
"},{"location":"Achievement-Design-es/#progresion-basada-en-historia","title":"Progresion Basada en Historia:","text":"Los momentos mas memorables en la historia de los videojuegos usualmente no est\u00e1n relacionados a coleccionar un \u00edtem o a misiones secundarias, sino a escenas especificas relacionadas con la historia.
Ejemplos:
La cosa es de ser extremadamente cuidados con los spoilers. Si encuentras alg\u00fan logro relacionado con historia y cuenta con un spoiler, contacta al desarrollador responsable. Y a los desarrolladores, por favor sean comprensivos cuando se trate de critica constructiva, el numero y el porcentaje de este tipo de logros varia de juego en juego--Esto realmente se vasa en que tan fuertemente el juego esta enfocado en su historia.
"},{"location":"Achievement-Design-es/#progresioncoleccion","title":"Progresi\u00f3n/Colecci\u00f3n","text":"Progresi\u00f3n/Colecci\u00f3n es com\u00fanmente un h\u00edbrido. No solo estas coleccionando un \u00edtem, sino tambi\u00e9n sale una memorable (y mandataria) escena.
Ejemplos:
Logros en esta categor\u00eda h\u00edbrida tipicamente mas satisfactorios ya que hacen doble-trabajo. El jugador no esta solamente obteniendo un \u00edtem, sino tambi\u00e9n viendo una escena memorable y obteniendo un logro a la vez. Bastante dosis de endorfinas!
"},{"location":"Achievement-Design-es/#progresion-pros-y-contras","title":"Progresion Pros y Contras","text":"Logros basados en progresi\u00f3n son garantizados que le van a salir al jugador en un play-through normal. Entonces para que tenerlos en primer lugar?
"},{"location":"Achievement-Design-es/#pros","title":"Pros","text":"Los juegos de anta\u00f1o, por lo general, ofrecen de muy poco a nada por vencer un modo extra, mas all\u00e1 de simplemente hacerlo en un d\u00eda lluvioso despu\u00e9s de pasar el juego. Los juegos viejos no contaban con una conexi\u00f3n a Internet. Y no contaban con aspectos sociales mas all\u00e1 del modo de 2-jugadores, y tal vez decirle a tus amigos que pasaste algo. Pero ahora, con RetroAchievements.org, podemos mostrar nuestros logros de anta\u00f1o (incluso si implica volver a hacer lo que hicimos hace a\u00f1os atr\u00e1s). Estos Trofeos son medallas de honor. Puedes observar con ver los logros de otro compa\u00f1ero y empezar a entender que tan lejos a llegado, que tanta habilidad tiene. Junto con eso tambi\u00e9n viene el respeto hacia otros compa\u00f1eros. Socializamos, felicitamos a cualquiera que hubiera hecho un buen trabajo. Sentimos como si perteneci\u00e9ramos, y estuvi\u00e9ramos en buena compa\u00f1\u00eda.
"},{"location":"Achievement-Design-es/#misiones-secundarias","title":"Misiones Secundarias","text":"A menudo hay cosas que el jugador puede hacer, pero no son necesarias de completar. En otras palabras, un reto hecho por los desarrolladores. Usualmente son divertidas, o algunas veces no tanto, pero merecen un precio porque requieren de trabajo duro y persistencia para lograrlos. Tienes que caminar por una cuerda floja entre si los jugadores dedicados har\u00e1n algo al respecto, vs. si la meta es algo est\u00fapido. La gente simplemente le va a dar la vuelta, as\u00ed que ten eso en mente.
Algunas veces, este tipo de logros son incluso Easter Eggs o cosas que el jugador en toda su vida jam\u00e1s supo que exist\u00edan! Muchos jugadores adoran este tipo de logros. Yo pienso porque aprenden algo nuevo de un juego con el que crecieron, o pensaban que eran los \u00fanicos que saben sobre ello y se emocionan al verlo como un logro aqu\u00ed. Es realmente importante para nosotros los desarrolladores REALMENTE conocer el juego por dentro y por fuera antes de crear un set de logros.
Ejemplos de Misiones Secundarias:
Las misiones secundarias son mas com\u00fanmente encontradas en RPGs, pero especialmente en estos d\u00edas, las sidequests se encuentra pr\u00e1cticamente en cualquier genero. Manten los ojos bien abiertos - Incluso el plataformero que menos piensas podr\u00eda tener una o dos sidequests. La serie de Kirby, en algunos casos, cuenta con \u00e1reas y cuartos escondidos. Algunas veces, las sidequests terminan otorgando un \u00edtem, que cae en un hibrido de: Misiones Secundarias/Colleccionables.
"},{"location":"Achievement-Design-es/#logros-opcionales","title":"Logros Opcionales","text":"Ejemplos de Logros Opcionales:
Estos son los desarrolladores del juego esperando a que te guste su juego lo suficiente para que vuelvas a el aun mas, incluso despu\u00e9s que hubieran rodado los cr\u00e9ditos. Ellos intentan recompensar al jugador por completar su juego, y crear un poco mas de re-jugabilidad. Si los desarrolladores del juego se dieron la molestia de hacer cosas como estas una parte integral del juego, nosotros como desarrolladores de logros deber\u00edamos de reconocer estos retos y crear los logros adecuados tan siquiera para algunos de ellos.
Chrono Trigger, Chrono Cross, y Star Ocean: The Second Story son famosos por hacer esto. Las entregas para el Game Boy Advance de Castlevania tambi\u00e9n hacen esto. En efecto, muchos juegos lo hacen. Si no estas completamente seguro de que tu juego cuente con modos extras o retos, procura hacer un poco de research y checar algunos FAQs. O tambi\u00e9n puedes preg\u00fantale a la comunidad de aqu\u00ed, varios de nosotros somo expertos en varios juegos de aqu\u00ed.
"},{"location":"Achievement-Design-es/#sidequestsopcionales-pros-y-contras","title":"Sidequests/Opcionales Pros y Contras","text":"Los logros de Sidequests/Opcionales son fant\u00e1sticos suplementos para los logros de Progresion.
"},{"location":"Achievement-Design-es/#pros_1","title":"Pros","text":"La mayor\u00eda de los logros basados en coleccionables son opcionales, al menos que los items sean MacGuffins, que en ese caso ya cae en Progresi\u00f3n/Colecci\u00f3n.
Ejemplos:
Si el juego almacena cierta stat/habilidad, los desarrolladores pr\u00e1cticamente te est\u00e1n motivando a que lo maximices. Ahora, podr\u00edas ser ese tipo de jugador, o tal vez no. Eso tienes que pregunt\u00e1rtelo a ti mismo, como un desarrollador, como quieras o no, otros jugadores si podr\u00edan ser capaz de conseguir esas 9999 bajas de murci\u00e9lagos vampiro por ejemplo, incluso si tu no lo hicieras. Las ventajas de esto es que la gente que no lo haria normalmente ahora tiene algo por lo que volver cuando tengan ganas de volver a jugar el juego. La desventaja es que hay otros jugadores que no llegarian tan lejos como para hacerlo, pero tambi\u00e9n sienten que tienen que MASTERIZAR cada juego r\u00e1pidamente (algo un poco raro), al final se van a quejar. Y si consigues bastantes quejas, tal vez quieras dar de baja ese logro de haz 9999 o a algo un poco mas razonable, como 500. Si nadie se divierte haciendo alg\u00fan logro, ese simplemente no es el esp\u00edritu de jugar juegos y de hacer logros.
Tienes que utilizar tu criterio y pensar que es lo que el jugador disfrutar\u00eda mas. Como una regla de oro, es mejor tener algunos logros sobre Sidequests/Opcionales que ni siquiera ninguno. Pero con un poco de empe\u00f1o extra, estos logros pueden hacer tu lista mucho mas memorable.
Siguiente, a llegado el momento de que nos subamos nuestras mangas como desarrolladores y nos pongamos MUY creativos, hemos llegado cuando el desarrollador reta al jugador a retos que van mucho mas all\u00e1 de las reglas del juego.
"},{"location":"Achievement-Design-es/#logros-por-diversion","title":"Logros por Diversi\u00f3n","text":"Este tipo de logros usualmente otorgan solamente algunos puntos, pero siguen siendo divertidos
Ejemplos de Por Diversi\u00f3n:
Algunas veces, los desarrolladores dejan divertidos easter eggs. Ellos se van la milla extra para entrener al jugador con \u00a8que pasar\u00eda si...\u00a8. De nuevo, es nuestro trabajo identificar este tipo de casos y as\u00ed darles soporte como desarrolladores.
"},{"location":"Achievement-Design-es/#retos","title":"Retos","text":"Una cosa que tienes que recordar sobre jugadores retro - y los juegos que juegan - es que la mayor\u00eda de las veces nosotros hemos jugado estos juegos un mill\u00f3n de veces anteriormente. Esta es la misma vieja canci\u00f3n y baile para la mayor\u00eda de nosotros, e inclusive a veces necesitamos algo de motivaci\u00f3n para hacerlo de nuevo. Algunos de nosotros hemos terminado Contra sin perder una sola vida. Bueno, a llegado la hora que lo demostremos!
A lo que me refiero es que, pi\u00e9nsalo: Antes de este sitio web, la \u00fanica manera de demostrarle a alguien que te pasaste Contra perfectamente era invitar a un amigo para que lo viera, o moverle a un software de grabaci\u00f3n de v\u00eddeo y subir un a YouTube. Pero incluso hay, muchos de esos v\u00eddeos est\u00e1n modificados para que se vean que fue un playthrough perfectos. En cambio, este sitio, cuenta con Hardcore mode, que te ayuda a indicar que nadie esta haciendo trampa.
Tal vez ya cuentes con logros de progresi\u00f3n y logros sobre Sidequests/Opcionales, pero si tu quieres crear una lista de logros que sea realmente grandiosa, necesitas al menos algunos logros sobre Retos. Intenta pensar atr\u00e1s a cerca de todos los juegos que haz jugado en este sitio web. Cuales son algunos de los logros mas memorables? Te puedo garantizar que son Logros sobre Retos. Hay excepciones en la regla, claro, pero el jugador tipico no va a realmente recordar un logro sobre, 'Completa el Stage 2-6', o 'Llega al Nivel 30'. Es mas probable que recuerden logros que convirtieron a su playthrough en una experiencia \u00fanica, as\u00ed como...
Esto es lo que hace a este sitio tan especial, y lo que hace a los logros algo mucho mas de simplemente completar el juego.
Incluso los jugadores que odian la simple idea de los Logros podr\u00edan decir, \"Bueno, excepto por ESTE. Este si estaba bien.\" y te puedo garantizar que el ejemplo del que ESE ejemplo del que estaban hablando fue un logro sobre un reto, algo que reta al jugador mas all\u00e1 del juego en si.
Un buen desarrollador de logros va a mantener sus ojos bien abiertos, y sus sentidos al m\u00e1ximo cuando se trate de desarrollar un juego, buscando buenos e inusuales retos. Tal vez notes algo en el juego que seria una haza\u00f1a bastante complicada y que vale la pena.
"},{"location":"Achievement-Design-es/#retos-de-speedruns","title":"Retos de Speedruns","text":"Los Timers introducen una presi\u00f3n a los jugadores en sus juegos favoritos que tal vez jamas hubieran sentido. Muy pocas cosas hacen que el coraz\u00f3n se acelere tanto que un reloj haciendo tik-tok. A\u00f1ade un timer, y un juego que era anteriormente tan f\u00e1cil que se poda completar con los ojos cerrados se va a convertir transformar de repente en la prueba jugabilista definitiva de sus vidas.
Ejemplos de Retos de Speedruns:
Un desarrollador tal vez quiera ir a YouTube o Twitch y ver que tan r\u00e1pido la gente esta terminando un juego (Y por favor ignora v\u00eddeos que utilicen TAS - \"Tool Assisted Speedruns\"). Algunos pro speed-runners son muy r\u00e1pidos que el jugador t\u00edpico no tendr\u00eda la posibilidad de lograrlo en ese tiempo establecido, tienes que encontrar una manera que sea un buen balance. Y si no puedes encontrar un buen tiempo el cual retar a los jugadores, para eso est\u00e1n las tablas de clasificaci\u00f3n - Convi\u00e9rtelo en una competici\u00f3n! De hecho, algunos de tus celebridades favoritas del mundo del speedrun podr\u00edan venir a este sitio y meter uno que otro tiempo.
Tu sabes cuando un logro te esta metiendo presi\u00f3n cuando te empiezan a sudar las manos y te encuentras nervioso mientras observas y observas el reloj. Como dije anteriormente, nada grita mas fuerte, \"Despierta!\" que un timer, especialmente cuando los desarrolladores empiezan a\u00f1adir este tipo de logros con OTROS tipos de logros (e incluso tablas de clasificaci\u00f3n) durante una secci\u00f3n contrarreloj del juego. Los Retos de Tiempo tienen una sinergia muy grande con otros tipos de logros.
"},{"location":"Achievement-Design-es/#retos-de-limitaciones","title":"Retos de Limitaciones","text":"Ejemplos de Retos con Limitaciones:
Sitios web basados en juegos en especifico son un recurso fant\u00e1stico para encontrar estos tipos de logros ellos tienen una muy buena idea de que es posible y que es imposible, e inclusive han asta escrito FAQs discutiendo retos alternos y maneras diferente de jugar el juego.
Algunas veces, pasara de que no hay en si una comunidad. No FAQs. No tablas de mensajes. E inclusive tal vez no all\u00e1 v\u00eddeos \u00fatiles. En esos casos, tu necesitas ser una persona con la idea de crear nuevos e interesantes retos para el jugador. Ten en cuenta que ese tipo de logros toman mucha practica, tiempo, y experiencia para ser creados.
La clave de esto es que SEAS CREATIVO! Y recuerda mantenerlo DIVERTIDO!
"},{"location":"Achievement-Design-es/#retos-de-puntuacion","title":"Retos de Puntuaci\u00f3n","text":"Ejemplos de Retos de Puntuaci\u00f3n:
Logros sobre retos son tu oportunidad para mostrarle a los jugadores como jugar sus juegos favoritos de una manera diferente, \u00fanica, y inclusive en maneras alucinantes. A pesar de que este tipo de logros le dan un respiro de vida a un set aburrido, tu generalmente solo quieres que una peque\u00f1a parte de este tipo de logros est\u00e9n en tu lista final.
"},{"location":"Achievement-Design-es/#pros_2","title":"Pros","text":"Last 10 changes on this page:
[2019-05-12 13:11] eldexterr:
Updated Achievement Design es (markdown)[2019-05-11 18:54] eldexterr:
Updated Achievement Design es (markdown)[2019-05-10 17:08] eldexterr:
Updated Achievement Design es (markdown)[2019-05-10 11:58] eldexterr:
Updated Achievement Design es (markdown)[2019-05-08 17:30] eldexterr:
Updated Achievement Design es (markdown)[2019-04-25 19:25] eldexterr:
Updated Achievement Design es (markdown)[2019-04-24 16:49] eldexterr:
Updated Achievement Design es (markdown)[2019-04-23 17:38] eldexterr:
Updated Achievement Design es (markdown)[2019-04-22 17:12] eldexterr:
Updated Achievement Design es (markdown)[2019-04-17 17:45] eldexterr:
Updated but still not finishedLink para o texto em ingl\u00eas: Achievement Design
Este \u00e9 um guia de como pensar sobre e desenvolver boas conquistas. N\u00e3o o lado t\u00e9cnico, mas o lado conceitual.
Este conteudo \u00e9 um resumo do que foi originalmente escrito pelo usu\u00e1rio cirellio em um forum. texto em ingl\u00eas
H\u00e1 3 tipos de conquistas baseadas em progresso: progresso simples, progresso baseado na hist\u00f3ria, e conquistas baseadas em progresso/coletagem.
"},{"location":"Achievement-Design-pt_BR/#progresso-simples","title":"Progresso Simples","text":"Conquistas baseadas em Progresso s\u00e3o geralmente mais simples, especialmente se o jogo que voc\u00ea est\u00e1 fazendo n\u00e3o passa de fases lineares. Ou n\u00e3o tem muita coisa acontecendo na hist\u00f3ria. Neste caso, vamos dar uma olhadas em alguns exemplos BONS e RUINS disto:
\u00c9 preciso um pouco mais de trabalho para codificar uma conquista em que o jogador precisa concluir a fase, em vez de simplesmente chegar a pr\u00f3xima. Mas tamb\u00e9m \u00e9 muito mais satisfat\u00f3rio para o jogador, e tem muito mais um olhar profissional. Tamb\u00e9m \u00e9 menos suscet\u00edvel a problemas com jogadores que carregam save games ou savestates para ganhar conquistas em massa Nota do tradutor: Em outras palavras: Evitar Cheats
Enquanto as conquistas baseadas em progresso s\u00e3o frequentemente brindes, geralmente \u00e9 concordado aqui que uma conquista para come\u00e7ar o jogo \u00e9 um pouco f\u00e1cil demais, e n\u00e3o \u00e9 nada memor\u00e1vel para o jogador. \u00c9 apenas uma formalidade. E finalizando o jogo, no entanto, \u00e9 frequentemente a parte do jogo mais memor\u00e1vel para um jogador, e completar um jogo \u00e9 definitivamente uma conquista em si. \u00c9 uma boa pr\u00e1tica fazer essas conquistas como \"Derrote o ultimo chefe/fase e conclua o jogo\"
Uma das piores coisas que voc\u00ea pode fazer \u00e9 criar spams de conquistas. Jogos de Puzzles s\u00e3o not\u00e1veis por esses tipos de problemas, porque as fases s\u00e3o curtas e existem centenas delas ou mais. Como um resultado, o feed da p\u00e1gina principal fica com muitas micro-atualiza\u00e7\u00f5es, que \"spama\" as conquistas das outras pessoas para baixo e pra fora da p\u00e1gina principal rapidamente. A maneira de se mostrar mais profissional nessa quest\u00e3o \u00e9 ampliar um pouco mais as conquistas, em grupos de fases. Por exemplo, se os est\u00e1gios 1-10 s\u00e3o todas tem\u00e1ticas de fogo, e as fases 11-20 s\u00e3o tem\u00e1ticas de espa\u00e7o sideral, voc\u00ea pode criar conquistas ao redor desses temas. Seja criativo.
"},{"location":"Achievement-Design-pt_BR/#progresso-baseado-na-historia","title":"Progresso Baseado na hist\u00f3ria:","text":"Os momentos mais memor\u00e1veis na hist\u00f3ria dos jogos muitas vezes n\u00e3o est\u00e3o relacionados \u00e0 cole\u00e7\u00e3o de itens ou sidequests, mas para cenas espec\u00edficas relacionadas \u00e0 hist\u00f3ria
Exemplos: - O primeiro encontro com Pyramid Head na s\u00e9rie Silent Hill - Encontrar a verdade sobre Darth Revan em Knights of the Old Republic - Encontrar o que ir\u00e1 acontecer no futuro em Chrono Trigger - Lan\u00e7ar a vaca em Earthworm Jim. - Praticamente qualquer morte de personagem.
A coisa que voc\u00ea tem que ter cuidado extra \u00e9 com os spoilers. Se voc\u00ea pegar uma conquista baseada em progresso que tem um spoiler, contacte um desenvolvedor sobre isso. E os desenvolvedores, por favor, seja receptivo quando vier cr\u00edticas construtivas! Al\u00e9m disso, o n\u00famero e at\u00e9 a porcentagem deles ir\u00e3o variar de jogo para jogo--E depende muito de como o jogo \u00e9 baseado na hist\u00f3ria.
"},{"location":"Achievement-Design-pt_BR/#progressocoletagem","title":"Progresso/Coletagem","text":"Progresso/Coletagem \u00e9 um h\u00edbrido comum. N\u00e3o apenas em voc\u00ea coletar um item, mas tamb\u00e9m inicia uma cena memor\u00e1vel (e obrigat\u00f3ria).
Exemplos - Obter a Master Sword em Link to the Past, que sustenta a maldi\u00e7\u00e3o em Lost Woods - Encontrar a espada na praia em Link's Awakening, na primeira cena em que a coruja s\u00e1bia fala com voc\u00ea. - Pegar o seu Pokemon inicial, que acontece durante uma cena inicial, mas \u00e9 um \"ritual de passagem\" para a maioria dos jogadores.
Conquistas nesta categoria h\u00edbrida podem oferecer muito mais satisfa\u00e7\u00e3o porquer eles s\u00e3o Conquistas nesta categoria h\u00edbrida geralmente s\u00e3o mais satisfat\u00f3rios pois eles desempenham um papel duplo. O jogador n\u00e3o est\u00e1 apenas pegando um item, mas tamb\u00e9m assistindo uma cena memor\u00e1vel e farturando uma conquista, tudo de uma vez. Que enxurrada de endorfina!
"},{"location":"Achievement-Design-pt_BR/#pros-e-contras-em-progresso","title":"Pr\u00f3s e Contras em Progresso","text":"Conquistas em Progresso s\u00e3o garantidos ao jogador em uma jogada normal. Ent\u00e3o, por que t\u00ea-los?
"},{"location":"Achievement-Design-pt_BR/#pros","title":"Pr\u00f3s","text":"Os jogos antigos, por si s\u00f3, oferecem pouco ou nenhum incentivo para zerar um bonus, al\u00e9m de que \u00e9 algo para fazer em um dia chuvoso depois de voc\u00ea ter zerado o jogo. Jogos antigos n\u00e3o tinham conectividade com a Internet. E eles n\u00e3o tinham aspectos sociais al\u00e9m de 2 jogadores, e talvez dizendo a seus amigos da escola que voc\u00ea vencesse alguma coisa. Mas agora, com o Retroachievements.org, nos podemos mostrar seus trof\u00e9is antigos (mesmo que isso nos obrigue a refazer o que provavelmente j\u00e1 fizemos h\u00e1 muitos anos). Estes trof\u00e9is s\u00e3o emblemas de honra. Voc\u00ea pode olhar as conquistas de outros membros e come\u00e7ar a entender o qu\u00e3o longe eles foram, o qu\u00e3o h\u00e1beis eles s\u00e3o. Junto com isso vem o respeito dos outros membros. N\u00f3s socializamos, n\u00f3s parabenizamos uns aos outros por um trabalho bem feito. E n\u00f3s somos uma boa compania.
"},{"location":"Achievement-Design-pt_BR/#sidequests","title":"Sidequests","text":"Muitas vezes h\u00e1 coisas que o jogador pode fazer que est\u00e3o confinados \u00e0s regras do jogo, mas n\u00e3o s\u00e3o necess\u00e1rias para complet\u00e1-lo. Em outras palavras, um desafio contruido para o jogo pelos desenvolvedores originais do jogo. Geralmente elas s\u00e3o divertidos, mas merecem ser ganhos porque elas requerem trabalho duro e pesistencia para ganhar. Voc\u00ea tem que caminhar em uma corda bamba bem entre se jogadores dedicados s\u00e3o propensos a fazer algo, vs. se o objetivo \u00e9 estupido. As pessoas ter\u00e3o vis\u00f5es diferentes sobre isso, ent\u00e3o fortale\u00e7a-se.
Muitas vezes, esses tipos de conquistas s\u00e3o at\u00e9 Easter Eggs ou coisas que o jogador nunca soube que existiam em toda a sua vida! Muitos jogadores adoram esses tipos de conquistas. Provavelmente porque eles acabam conhecendo algo novo sobre um jogo que eles cresceram jogando, ou talvez por perceber que aquele segredo do jogo que \"s\u00f3 ele conhece\" est\u00e1 sendo suportado aqui. \u00c9 muito importante para n\u00f3s desenvolvedores conhecer MUITO BEM o jogo antes de criar um set de conquistas.
Exemplos de Sidequests:
Sidequests s\u00e3o mais frequentemente encontrados em RPGs, mas especialmente nesses dias, sidequests s\u00e3o encontrandas em quase todos os g\u00eaneros. Mantenha seus olhos abertos, jogos de plataforma pode tem uma ou tr\u00eas sidequests. Os jogos da s\u00e9rie Kirby por exemplo, tem muitas salas e \u00e1reas escondidas. Muitas vezes, sidequests acabam com \"ganhando um item\" no qual acaba sendo um hibrido: Sidequest/Coletagem.
"},{"location":"Achievement-Design-pt_BR/#conquitas-opcionais","title":"Conquitas Opcionais","text":"Estes s\u00e3o os criadores do jogo esperando que voc\u00ea goste de seu jogo o suficiente para continuar voltando para mais, mesmo depois que esses cr\u00e9ditos terminarem. Eles est\u00e3o tentando recompensar o jogador por completar seu jogo e criar alguma forma de satisfazer uma segunda jogatina. Se os criadores do jogo tem problemas de fazer essas coisas como parte integral do jogo, nos como desenvolvedores de conquistas devemos reconhecer esses desafios e criar conquistas apropriadas para pelo menos alguns deles.
Chrono Trigger, Chrono Cross, and Star Ocean: The Second Story s\u00e3o famosos por isso. De fato, muitos jogos fazem isso. Se voc\u00ea n\u00e3o tem certeza se o seu jogo tem modos extras ou desafios, tenha certeza de fazer alguma pesquisa e chegar alguns FAQs. Ou perguntar na nossa comunidade, muitos de n\u00f3s somos experts nos jogos que s\u00e3o suportados aqui.
"},{"location":"Achievement-Design-pt_BR/#pros-e-contras-de-sidequestsopcionais","title":"Pr\u00f3s e Contras de Sidequests/Opcionais","text":"Conquistas de Sidequests/Opcional fazem complementos fant\u00e1sticos para Conquistas de Progresso.
"},{"location":"Achievement-Design-pt_BR/#pros_1","title":"Pr\u00f3s","text":"A maioria das conquistas baseadas em coleta s\u00e3o opcionais, a menos que os itens em si sejam MacGuffins, que, nesse caso, cairiam diretamente em Progress\u00e3o / Cole\u00e7\u00e3o.
Exemplos:
Se o jogo acompanhar uma estat\u00edstica, o desenvolvedor do jogo est\u00e1 praticamente desafiando voc\u00ea a maximiz\u00e1-lo. Agora, voc\u00ea pode ser esse tipo de jogador, e voc\u00ea pode n\u00e3o ser. Voc\u00ea tem que perguntar a si mesmo, como um desenvolvedor, se os outros jogadores provavelmente obter\u00e3o 9999 mortes de um inimigo, mesmo que voc\u00ea n\u00e3o o fa\u00e7a. As vantagens disso s\u00e3o que as pessoas que normalmente n\u00e3o fazem isso sempre t\u00eam algo para voltar e trabalhar quando sentem vontade de jogar novamente. A desvantagem \u00e9 que outros jogadores que normalmente n\u00e3o ir\u00e3o t\u00e3o longe e talvez n\u00e3o o fa\u00e7a, mas tamb\u00e9m sentem que precisam PLATINAR rapidamente todos os jogos (raros de encontrar), v\u00e3o reclamar. Se voc\u00ea receber reclama\u00e7\u00f5es suficientes, voc\u00ea pode querer reduzir 9999 algo mais razo\u00e1vel, como 500. Se ningu\u00e9m est\u00e1 se divertindo com uma conquista, n\u00e3o \u00e9 no esp\u00edrito de jogar ou fazer uma conquista.
Voc\u00ea tem que usar seu melhor julgamento aqui e pensar no que o jogador mais gosta. Como regra geral, \u00e9 melhor ter algumas conquistas paralelos / opcionais do que nenhuma. Mas com um pouco de esfor\u00e7o extra, essas conquistas podem tornar sua lista muito memor\u00e1vel.
Em seguida, \u00e9 hora de arrega\u00e7ar as mangas como desenvolvedores e ser REALMENTE criativos quando os pr\u00f3prios desenvolvedores desafiam o jogador al\u00e9m das regras do jogo.
"},{"location":"Achievement-Design-pt_BR/#conquistas-divertidas","title":"Conquistas divertidas","text":"Este tipo de conquistas geralmente vale apenas alguns pontos, mas eles ainda s\u00e3o divertidos
Exemplos de divers\u00e3o:
Uma coisa que voc\u00ea deve lembrar sobre os jogadores retr\u00f4 - e os jogos que eles jogam - \u00e9 que a maioria de n\u00f3s j\u00e1 jogou esses jogos um milh\u00e3o de vezes antes. Esta \u00e9 a mesma velha m\u00fasica e dan\u00e7a para a maioria de n\u00f3s, e muitas vezes precisamos de motiva\u00e7\u00e3o para faz\u00ea-lo novamente. Alguns de n\u00f3s podem terminar o Contra sem perder uma \u00fanica vida. Bem, agora \u00e9 a nossa chance de provar isso!
Quero dizer, pense nisso: antes deste site, a \u00fanica maneira de provar que voc\u00ea pode fazer uma corrida impec\u00e1vel de Contra era convidar um amigo, sentar e mostrar a ele, ou descobrir software de grava\u00e7\u00e3o e fazer um v\u00eddeo no YouTube. Mas mesmo assim, muitos desses v\u00eddeos s\u00e3o manipulados para se parecer com jogos perfeitos. Este site, no entanto, tem o modo Hardcore, que ajuda a indicar que ningu\u00e9m est\u00e1 trapaceando.
Voc\u00ea pode ter Conquistas progressivas e Sidequest / Conquistas Opcionais, mas se voc\u00ea quiser criar uma lista de conquistas que seja realmente \u00f3tima, voc\u00ea precisa de pelo menos algumas Conquistas de Desafio. Tente pensar em todos os jogos que voc\u00ea jogou aqui neste site. Quais s\u00e3o algumas das realiza\u00e7\u00f5es mais memor\u00e1veis? Eu quase posso garantir que eles eram Conquistas de Desafio. Existem exce\u00e7\u00f5es \u00e0 regra, \u00e9 claro, mas o jogador t\u00edpico n\u00e3o vai se lembrar com carinho, Concluir a fase 2-6', ou 'Chegar ao nivel 30'. Eles s\u00e3o mais propensos a se lembrar com carinho de realiza\u00e7\u00f5es que fizeram de seus jogatinas uma experi\u00eancia \u00fanica, como ...
Isso \u00e9 o que torna este site t\u00e3o especial, e o que faz das conquistas algo mais do que apenas vencer um jogo.
Mesmo os cr\u00edticos mais contundentes que odeiam a id\u00e9ia de realiza\u00e7\u00f5es podem dizer: \"Bem, exceto por este. Esse foi bom\". E eu garanto que UM exemplo de que eles est\u00e3o falando \u00e9 uma conquista de desafio, algo que desafiou o jogador al\u00e9m do pr\u00f3prio jogo.
Um bom desenvolvedor de realiza\u00e7\u00f5es manter\u00e1 seus olhos abertos, sua intelig\u00eancia sobre eles e seus sentidos afiados ao desenvolver um jogo, procurando por desafios bons e incomuns. Eles podem perceber algo no jogo que \u00e9 um feito dif\u00edcil.
"},{"location":"Achievement-Design-pt_BR/#desafios-de-speedrun","title":"Desafios de Speedrun","text":"Os timers apresentam uma press\u00e3o adicional que os jogadores podem nunca ter sentido antes enquanto jogam seus jogos favoritos. Poucas coisas fazem o cora\u00e7\u00e3o bombear mais do que um rel\u00f3gio imponente. Adicione um elemento de temporizador, e um jogo que anteriormente era t\u00e3o f\u00e1cil que eles poderiam venc\u00ea-lo de olhos vendados poderia de repente ser transformado no maior desafio de jogo de suas vidas.
Exemplos de desafios do Speedrun:
Um desenvolvedor pode querer ir ao YouTube ou Twitch e ver o qu\u00e3o r\u00e1pido as pessoas est\u00e3o terminando um jogo (E, por favor, ignore o TAS - \"Tool Assisted Speedruns\"). Alguns corredores profissionais de velocidade s\u00e3o t\u00e3o r\u00e1pidos que o jogador t\u00edpico n\u00e3o ter\u00e1 a menor chance de competir, mas voc\u00ea deve ser capaz de encontrar um ponto m\u00e9dio entre o melhor tempo dele e o seu. E se voc\u00ea n\u00e3o consegue descobrir um bom momento para desafiar os jogadores aqui, \u00e9 para isso que os Leaderboards s\u00e3o - Transforme isso em uma competi\u00e7\u00e3o! Na verdade, alguns de seus favoritos speed-runners podem vir a este site e colocar seus tempos.
Voc\u00ea saber\u00e1 quando voc\u00ea est\u00e1 enfrentando uma conquista de press\u00e3o quando as palmas das m\u00e3os est\u00e3o suando e voc\u00ea se v\u00ea nervosamente olhando para o cron\u00f4metro. Como eu disse antes, nada grita: \"Aten\u00e7\u00e3o!\" mais alto que um cron\u00f4metro, especialmente quando os desenvolvedores come\u00e7am a tecer esse tipo de conquista com OUTROS tipos de conquistas (e at\u00e9 placares de l\u00edderes) durante uma parte cronometrada de um jogo. Os Desafios Temporizadores t\u00eam uma quantidade insana de sinergia com outros tipos de conquistas.
"},{"location":"Achievement-Design-pt_BR/#desafios-de-limitacao","title":"Desafios de Limita\u00e7\u00e3o","text":"Exemplos de Desafios de Limita\u00e7\u00e3o:
Os sites da comunidade constru\u00eddos em torno de determinados jogos s\u00e3o um recurso fant\u00e1stico para esses tipos de realiza\u00e7\u00f5es. Eles ter\u00e3o uma boa id\u00e9ia sobre o que \u00e9 poss\u00edvel e imposs\u00edvel, e provavelmente escreveram perguntas frequentes discutindo maneiras alternativas e desafiadoras de jogar o jogo inteiro.
Muitas vezes, por\u00e9m, n\u00e3o haver\u00e1 comunidade. N\u00e3o h\u00e1 perguntas frequentes. Nenhum quadro de mensagens. E talvez nem v\u00eddeos \u00fateis. Nesses casos, voc\u00ea precisar\u00e1 ser uma pessoa de ideias para criar maneiras novas e interessantes de desafiar o jogador. Esteja ciente de que esse tipo de conquista requer muita pr\u00e1tica, tempo e experi\u00eancia para criar.
O jeito aqui \u00e9 ser criativo! E lembre-se de mant\u00ea-lo divertido!
"},{"location":"Achievement-Design-pt_BR/#desafios-de-pontuacao","title":"Desafios de pontua\u00e7\u00e3o","text":"Exemplos de desafios de pontua\u00e7\u00e3o:
As conquistas de desafio s\u00e3o a sua chance de mostrar aos jogadores como jogar seus jogos favoritos de maneiras diferentes, \u00fanicas e at\u00e9 alucinantes. Embora essas conquistas possam dar vida a um conjunto de realiza\u00e7\u00f5es que, de outra forma, \u00e9 mon\u00f3tono, voc\u00ea geralmente quer que apenas um pequeno grupo delas esteja na sua lista final.
Pr\u00f3s
Contras
texto em ingl\u00eas
texto em ingl\u00eas
texto em ingl\u00eas
Last 10 changes on this page:
[2018-05-25 12:10] meleu:
Updated Achievement Design pt_BR (markdown)[2018-04-01 00:18] KingDice001:
Updated Achievement Design pt_BR (markdown)[2018-03-31 15:03] meleu:
Updated Achievement Design pt_BR (markdown)[2018-03-30 22:15] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 22:08] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 21:25] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 21:16] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 20:59] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 18:50] KingDice001:
Updated Achievement Design pt_BR (markdown)[2018-03-30 18:47] KingDice001:
Updated Achievement Design pt_BR (markdown)This is a guide on how to think about and design good achievements. Not the technical side, but the conceptual.
"},{"location":"Achievement-Design/#progression-based-achievements","title":"Progression Based Achievements","text":"There are 3 types of progression-based achievements: simple progression, story-based progression, and progression/collection achievements.
"},{"location":"Achievement-Design/#simple-progression","title":"Simple Progression","text":"Progression-based achievements are usually simplest ones, especially if the game you are doing is nothing but linear stages. Or doesn't have much going on in the way of storylines. In this case, let's look at some GOOD and BAD examples of this:
It takes slightly more work to code an achievement where the player is required to clear the stage rather than simply reach the next one. But it is also much more satisfying for the player, and it is much more professional-looking. It is also less susceptible to problems with players loading save games or save states for freebie achievements en masse.
While it is true progression-based achievements are often freebies, it is generally agreed upon here that an achievement to start the game is a bit too easy, and not at all memorable for the player. It's just a formality. The ending of the game, however, is often the most memorable part of a game for a player, and completing a game is definitely an achievement in itself. It's a good practice to make such achievement work like \"Beat last stage and beat the game\".
One of the worst things you can do is create achievement spam. Puzzle games are notorious for these kinds of problems, because the stages are short and often, there are one-hundred of them or more. As a result, the main page feed ends up with a lot of micro-updates, which spams other folks' achievements down and off the front page quickly. The way to come off as more professional in this matter is to space out the achievements a bit more, into groups of stages. For instance, if stages 1-10 are all fire themed, and stages 11-20 are all outer-space themed, you can create achievements around these themes. Be creative.
"},{"location":"Achievement-Design/#story-based-progression","title":"Story Based Progression:","text":"The most memorable moments in gaming history are often not related to item collection or sidequests, but to specific scenes relating to the story.
Examples:
The thing you have to be extra-careful with here is spoilers. If you catch a progression-based achievement that has a spoiler in it, by all means contact the dev about it. And devs, please be receptive when it comes to constructive criticism! Also, the number and even percentage of these will vary from game to game--The dependence lies heavily upon how story-driven the game is.
"},{"location":"Achievement-Design/#progressioncollection","title":"Progression/Collection","text":"Progression/Collection is a common hybrid. Not only are you collecting an item, but it also launches into a memorable (and mandatory) scene.
Examples:
Achievements in this hybrid category are often more satisfying because they are pulling double-duty. The player is not only obtaining an item, but watching a memorable scene and nabbing an achievement all at once. Quite the rush of endorphins!
"},{"location":"Achievement-Design/#progression-pros-and-cons","title":"Progression Pros and Cons","text":"Progression Achievements are guaranteed to the player on a normal play-through. So why even have them?
"},{"location":"Achievement-Design/#pros","title":"Pros","text":"Vintage games, on their own, offer little-to-no incentive to beat a bonus mode, other than that it's something to do on a rainy day after you've beaten the game. Old games didn't have internet connectivity. And they had no social aspects other than 2-player mode, and maybe telling your friends at school that you beat something. But now, with RetroAchievements.org, we can display our vintage trophies (even though it requires us to redo what we've probably already done many years ago). These trophies are badges of honor. You can look at another member's Challenge Achievements and begin to understand how far they went, how skilled they are. Along with that comes respect from the other members. We socialize, we congratulate each other on a job well done. We feel like we belong, and we are in good company.
"},{"location":"Achievement-Design/#sidequests","title":"Sidequests","text":"There are often things the player can do that are confined to the rules of the game, but aren't necessary to complete it. In other words, a challenge built into the game by the original game developers. Usually they are fun, or sometimes not so fun, but deserve an award because they require hard work and persistence to achieve. You have to walk a fine tightrope between if dedicated players are likely to do something, vs. if the goal is stupid. People will have differing views over this, so steel yourself.
Often times, these types of achievements are even Easter Eggs or things the player never knew existed in their entire lives! Many players adore these types of achievements. I think it's because they learn something new about a game they grew up with, or feel like maybe they were the only ones who knew about a given secret and were excited to see it supported here. It's important for us developers to REALLY know a game inside-and-out before creating an achievement set.
Examples of Sidequests:
Sidequests are most often found in RPGs, but especially these days, sidequests are finding their way into just about every genre. Keep your eyes peeled - Even the unsuspecting platformer may have a sidequest or three. The Kirby series, for instance, has many hidden rooms and areas. Often times, sidequests end up awarding an item, which falls under a hybrid: Sidequest/Collection.
"},{"location":"Achievement-Design/#optional-achievements","title":"Optional Achievements","text":"Examples of Optional Achievements:
This is the game makers hoping you'll like their game enough to keep coming back for more, even after those ending credits scroll by. They are trying to reward the player for completing their game, and create some form of satisfying re-playability. If the game makers went to the trouble making things like this an integral part of the game, we as achievement developers should recognize these challenges and create appropriate achievements for at least a few of them.
Chrono Trigger, Chrono Cross, and Star Ocean: The Second Story are famous for this. The Game Boy Advance Castlevania entries also do this. In fact, many games do this. If you aren't sure if your game has any extra modes or challenges, be sure to do some research and check out some FAQs. Or ask the community here, many of us are experts on the games supported here.
"},{"location":"Achievement-Design/#sidequestoptional-pros-and-cons","title":"Sidequest/Optional Pros and Cons","text":"Sidequest/Optional Achievements make fantastic supplements to Progression Achievements.
"},{"location":"Achievement-Design/#pros_1","title":"Pros","text":"Most collection-based achievements are optional, unless the items themselves are MacGuffins, which in that case they would fall squarely under Progression/Collection.
Examples:
If the game keeps track of a stat, the game developer is practically daring you to max it out. Now you might be that kind of player, and you might not. You have to ask yourself, as a dev, whether or not other players are likely to get 9999 vampire bat kills, even if you wouldn't. The advantages to this are that people who wouldn't normally do this always have something to come back and work for when they feel like playing the game again. The disadvantage is that other players who wouldn't normally go that far and never would, but also feel like they have to MASTER every game quickly (a rare breed), will complain. If you get enough complaints, you might want to bring down that 9999 to something more reasonable, like 500. If no one's having fun with an achievement, it's not in the spirit of playing games or making achievements.
You have to use your better judgment here and think of what the player would enjoy the most. As a rule of thumb, it's better to have a few Sidequest/Optional Achievements than none at all. But with a little extra effort, these achievements can make your list very memorable.
Next, it's time to roll up our sleeves as devs and get REALLY creative when the devs themselves challenge the player beyond the rules of the game.
"},{"location":"Achievement-Design/#for-fun-achievements","title":"For-Fun achievements","text":"This kind of achievements usually worths just a few points, but they are still fun
Examples of For Fun:
Sometimes, game makers add fun easter eggs. They went the extra mile to entertain the player with 'what if's'. Again, it is our job as devs to recognize and support these as much as we can.
"},{"location":"Achievement-Design/#challenges","title":"Challenges","text":"One thing that you have to remember about retro gamers - and the games they play - is that most of us have played these games a million times before. This is the same old song and dance for most of us, and we often need motivation to do it again. Some of us can clear Contra without losing a single life. Well, now is our chance to prove it!
I mean, think about it: Before this website, about the only way to prove you can do a flawless run of Contra was to invite a friend over, sit him down, and show him, or figure out recording software and make a YouTube video. But even then, a lot of those videos are doctored to look like flawless playthroughs. This site, however, has Hardcore mode, which help to indicate no one is cheating.
You may have Progression Achievements and Sidequest/Optional Achievements, but if you want to create an achievement list that's truly great, you need at least a few Challenge Achievements. Try to think back to all the games you've played here at this website. What are some of the most memorable achievements? I can almost guarantee you that they were Challenge Achievements. There are exceptions to the rule, of course, but the typical player isn't going to fondly recall, 'Cleared Stage 2-6', or 'Reached Level 30'. They are more likely to fondly remember achievements that made their play-throughs a unique experience, such as...
That is what makes this website so special, and what makes achievements something more than just beating a game.
Even the most vocal critics who hate the idea of Achievements may say, \"Well, except for THIS one. This one was okay.\" And I guarantee you that ONE example they're talking about is a Challenge Achievement, something that challenged the player beyond the game itself.
A good achievement developer will keep their eyes peeled, their wits about them, and their senses sharp when developing a game, looking for good, unusual challenges. They may notice something in the game that's a difficult feat.
"},{"location":"Achievement-Design/#speedrun-challenges","title":"Speedrun Challenges","text":"Timers introduce an added pressure players may have never felt before while playing their favorite games. Few things get the heart pumping more than an imposing ticking clock. Add a timer element, and a game that was previously so easy they could beat it blindfolded could suddenly be transformed into the ultimate gaming challenge of their lives.
Examples of Speedrun Challenges:
A dev may want to head out to YouTube or Twitch and see how fast people are finishing a game (And please ignore TAS - \"Tool Assisted Speedruns\"). Some pro speed-runners are so fast, the typical player here won't stand a chance at the times being posted, but you should be able to find a happy medium. And if you can't figure out a good time to challenge the players here, that's what Leaderboards are for - Turn it into a competition! In fact, some of your favorite celebrity speed-runners may come to this very site and submit a time or two.
You'll know when you're facing a pressure achievement when your palms are sweating and you find yourself nervously glancing at the timer. Like I said before, nothing screams, \"Wake up!\" louder than a timer, especially when developers start weaving this kind of achievement with OTHER kinds of achievements (and even leaderboards) during a timed portion of a game. Timer Challenges have an insane amount of synergy with other types of achievements.
"},{"location":"Achievement-Design/#limitation-challenges","title":"Limitation Challenges","text":"Examples of Limitation Challenges:
Community websites built around certain games are a fantastic resource for these kinds of achievements They'll have a good idea about what's possible and impossible, and have likely written up FAQs discussing alternative and challenging ways to play the entire game.
Often times, though, there will be no community. No FAQs. No Message Board. And maybe even no useful videos. In these cases, you'll need to be an idea person to come up with new and interesting ways to challenge the player. Be aware that these kinds of achievements take a lot of practice, time, and experience to create.
The takeaway here is to BE CREATIVE! And remember to keep it FUN!
"},{"location":"Achievement-Design/#score-challenges","title":"Score Challenges","text":"Examples of Score Challenges:
Challenge Achievements are your chance to show players how to play their favorite games in different, unique, and even mind-bending ways. While these achievements can breathe life into an otherwise dull achievement set, you generally only want a small handful of these to be in your final list.
"},{"location":"Achievement-Design/#pros_2","title":"Pros","text":"Last 10 changes on this page:
[2023-06-02 19:40] televandalist:
Updated Achievement Design (markdown)[2018-05-08 16:36] meleu:
fixed some lists formatation[2018-02-01 17:29] meleu:
Updated Achievement Design (markdown)[2018-01-30 23:04] meleu:
Updated Achievement Design (markdown)[2018-01-28 18:50] meleu:
removed \"unique achievements\" section - it's the same thing as for-fun achievements[2018-01-28 14:57] meleu:
added one more link to an external resource and put them at the end of the doc[2018-01-28 11:42] meleu:
changed link to jeff sullivan article (better formatation)[2018-01-27 18:25] meleu:
Updated Achievement Design (markdown)[2018-01-27 13:22] Kvon:
added two links to guilds[2018-01-27 13:12] meleu:
summing up the cirellio's postsPage is heavily WIP, but the goal is to dive deep into achievement creation. Will probably end up merging the \"Real Examples\" into this section somehow. Each flag, type, size, comparison, etc. will have its own page to show the various ways they can be used. Will also include several tips, case studies, etc.
"},{"location":"Achievement-Development-Overview/#basics","title":"Basics","text":"- Adding Games to the Database - Everything you ever wanted to know (but were too scared to ask) about hashes - Patch Guide - RAM digging - Utilizing Game Genie, Game Shark, Codebreaker, Action Replay, etc. codes - Code Notes - Formatting conventions
"},{"location":"Achievement-Development-Overview/#achievement-editor","title":"Achievement Editor","text":"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:
"},{"location":"Achievement-Development-Overview/#flags","title":"Flags","text":"PauseIf
Flag - PauseIf
with hit countsResetIf
Flag - ResetIf
with hit countsResetNextIf
FlagAddSource
FlagSubSource
Flag - Checking for a negative resultAddHits
and SubHits
FlagAddAddress
FlagAndNext
and OrNext
FlagsMeasured
and MeasuredIf
FlagsTrigger
Flag- Mem - Value - Delta - Mem > Delta
Comparisons - Prior - BCD - Float
- bit0 - bit7 - 8-Bit - 16-Bit - 24-Bit - 32-Bit - Lower4 and Upper4 - 16-Bit BE - 24-Bit BE - 32-Bit BE - BitCount - Float - MBF32
"},{"location":"Achievement-Development-Overview/#general-comparisons","title":"General Comparisons","text":"- =
- <
- <=
- >
- >=
- !=
- *
- /
- &
- Hit Counts - Using with Reset If - Using with Pause If - Alt Groups
"},{"location":"Achievement-Development-Overview/#protections","title":"Protections","text":"- Demo Protection - Finding and testing demo addresses - Save Protection - Delta and Prior - Using in-game timers - Using event flags - Password Protection - Cheat Protection - Multiplayer Protection - Other - Dipswitch - BIOS (PlayStation and Saturn)
"},{"location":"Achievement-Development-Overview/#logic-tips-and-tricks","title":"Logic Tips and Tricks","text":"- Checkpoints hits - Pause Locks - Using Hit Counts as a timer - Using Delta Values and Hit Counts to Detect an Increment - Circumvent the Problem of a Counter Incrementing Twice in the Same Frame - note: need to add something about how the toolkit still uses hex even if the value is in BCD
- Various types of chains - When to use Reset If or Pause If - When to use Delta or Prior - Using BitCount for collectables - Using Add Source with Mem / Mem
comparisons - Creating a Timer with Reset If hits based on the speed of the game - Using bit0
to include or exclude odd-numbered values
- Double-Clicking bitflags while in 8-bit view - Right-Clicking addresses in the editor to jump to them in the Memory Inspector (also works with offsets to jump to the current address) - Highlighting conditions and holding CTRL while clicking to change a field in multiple conditions at once
"},{"location":"Achievement-Development-Overview/#workflow-tips","title":"Workflow Tips","text":"- Using Google Sheets and Notepad++ - Editing local file
"},{"location":"Achievement-Development-Overview/#things-to-avoid-and-why","title":"Things to Avoid and Why","text":"- Redundant Reset Ifs - Single-Condition achievements - Text-Based addresses
"},{"location":"Achievement-Development-Overview/#see-also","title":"See Also","text":"- Point Distribution - Badge Creation - Rich Presence - Leaderboards - RATools - Making Tutorial Videos - Syntax Table
"},{"location":"Achievement-Development-Overview/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-02 20:08] televandalist:
Updated Achievement Development Tutorials (markdown)Estas son algunas severas herramientas y opciones disponibles para el desarrollador. Saber como utilizarlas apropiadamente mejorara la calidad en tus sets. Estas herramientas/opciones pueden ser utilizadas en el Editor de Logros (Achievement Editor):
Para mas ayuda relacionada con esto, nuestro servidor de Discord esta siempre abierto para ayuda.
Aqui hay una lista de funciones disponibles:
ResetIf
- ResetIf
con hit counts (contador de golpes)PauseIf
- PauseIf
con hit counts (contador de golpes)AddSource
SubSource
- Buscando un resultado negativoAddHits
Last 10 changes on this page:
[2019-04-16 15:30] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Achievement Logic Features ES (markdown)Link para o texto em ingl\u00eas: Achievement Logic Features
Existem v\u00e1rias ferramentas e op\u00e7\u00f5es dispon\u00edveis para o desenvolvedor, saber como utiliz\u00e1-las adequadamente melhorar\u00e1 a qualidade de seus sets. Essas ferramentas/op\u00e7\u00f5es podem ser usadas no Achievement Editor:
Para ajuda sobre esses, o nosso servidor do Discord estar\u00e1 sempre aberto para ajudar.
"},{"location":"Achievement-Logic-Features-pt_BR/#valores-delta","title":"Valores Delta","text":"Um valor Delta
\u00e9 o valor do frame anterior.
Exemplos de como ele pode ser usado:
level > delta level
. Significa que \"o n\u00edvel atual \u00e9 maior que o n\u00edvel do frame anterior\".health < delta health
. Significa que \"a sa\u00fade atual \u00e9 menor do que a sa\u00fade do frame anterior\". Ou voc\u00ea pode apenas tornar o valor do frame anterior um requisito. delta health = 1
significa que \"o valor do frame anterior para a sa\u00fade deve ser 1\". Voc\u00ea pode ver como isso funciona no Exemplos ReaisNo Achievement Editor, o campo do lado direito \u00e9 Hit Count.
Zero \u00e9 o valor padr\u00e3o. Isso significa que a condi\u00e7\u00e3o deve ser verdadeira quando a conquista aparecer.
Se voc\u00ea definir manualmente uma contagem (hit), por exemplo 1, significa que a condi\u00e7\u00e3o deve ser verdadeira por pelo menos 1 frame e, uma vez que a contagem de hits seja atendida, ela n\u00e3o precisa ser atendida novamente em outro momento.
ATEN\u00c7\u00c3O: se uma condi\u00e7\u00e3o tiver uma contagem de hits e atingir o n\u00famero necess\u00e1rio, esta condi\u00e7\u00e3o n\u00e3o \u00e9 mais testada. Ela \u00e9 verdadeira e permanece verdadeira, A MENOS que voc\u00ea tenha um Reset If
, o qual discutiremos abaixo.
Voc\u00ea pode ver como isso funciona no Exemplos Reais
"},{"location":"Achievement-Logic-Features-pt_BR/#special-flags","title":"Special Flags","text":"No Achievement Editor, \u00e9 o campo intitulado como Special?.
Essas flags condicionais s\u00f3 funcionam se voc\u00ea definir uma contagem de hits para uma condi\u00e7\u00e3o.
"},{"location":"Achievement-Logic-Features-pt_BR/#pauseif","title":"PauseIf
","text":"Isso pausar\u00e1 a atividade para todas as condi\u00e7\u00f5es no mesmo grupo.
Nota: tenha em mente que isso n\u00e3o ir\u00e1 pausar as condi\u00e7\u00f5es em outros grupos.
O PauseIf
\u00e9 usado para pausar a contagem de hits em uma situa\u00e7\u00e3o espec\u00edfica (como pausar o jogo). \u00c9 usado quando voc\u00ea deseja manter a contagem de hits previamente conquistada, mas n\u00e3o deseja reinici\u00e1-la quando algu\u00e9m simplesmente faz uma pausa no jogo, por exemplo.
ResetIf
","text":"Isso ir\u00e1 zerar a contagem de hits para todas condi\u00e7\u00f5es em que voc\u00ea definiu uma contagem de hits. Ele \u00e9 muito mais comum de usar do que PauseIf
Nota: Ao contr\u00e1rio do PauseIf
, le ir\u00e1 zerar as condi\u00e7\u00f5es em todos os grupos
Voc\u00ea pode ver como isso funciona no Real Examples
"},{"location":"Achievement-Logic-Features-pt_BR/#add-source","title":"Add Source
","text":"Quando uma condi\u00e7\u00e3o tem a flag Add Source
o valor daquele endere\u00e7o de mem\u00f3ria \u00e9 adicionado ao valor do endere\u00e7o na condi\u00e7\u00e3o logo abaixo, e a compara\u00e7\u00e3o \u00e9 feita na condi\u00e7\u00e3o abaixo daquela com o Add Source
. Isso pode soar um pouco confuso, mas o exemplo a seguir vai esclarecer como funciona:
Neste exemplo o valor em 0x8010
ser\u00e1 adicionado ao valor em 0x8020
e a compara\u00e7\u00e3o \u00e9 se esta soma \u00e9 maior ou igual a zero.
Se o valor em 0x8010
\u00e9 1
e o valor em 0x8020
\u00e9 2
, a compara\u00e7\u00e3o ser\u00e1 1 + 2 > 0
, ou 3 > 0
.
Nota: todos os campos de compara\u00e7\u00e3o na condi\u00e7\u00e3o com a flag Add Source
s\u00e3o ignorados.
Tentando resumir esta explica\u00e7\u00e3o com uma imagem:
Nota: voc\u00ea pode usar Add Source
para somar mais endere\u00e7os, como no exempo abaixo:
Sub Source
","text":"Funciona muito semelhante ao Add Source
, por\u00e9m o Sub Source
faz o valor naquele endere\u00e7o de mem\u00f3ria ser negativo.
Nota 1: Sub Source
N\u00c3O \u00e9 um flag de subtra\u00e7\u00e3o. Ele apenas torna o valor negativo.
Nota 2: A linha final (sem Add Source
ou Sub Source
) ainda \u00e9 adicionada para a compara\u00e7\u00e3o final.
Usando aquele exemplo de uso de Add Source
example, se n\u00f3s o substitu\u00edssemos por Sub Source
e com os mesmos valores (valor(0x8010) = 1
e valor(0x8020) = 2
), a compara\u00e7\u00e3o seria -1 + 2 > 0
, or 1 > 0
.
Add Hits
","text":"Tamb\u00e9m funciona de maneira de similar ao Add Source
, por\u00e9m relacionado aos hitcounts.
O Add Hits
adiciona o hitcount da condi\u00e7\u00e3o atual \u00e0 pr\u00f3xima condi\u00e7\u00e3o. O hitcount total a ser checado ser\u00e1 aquele definido na condi\u00e7\u00e3o logo ap\u00f3s a \u00faltima condi\u00e7\u00e3o com Add Hits
. Se a condi\u00e7\u00e3o logo ap\u00f3s o \u00faltimo Add Hits
n\u00e3o tiver um hitcount definido, todas as condi\u00e7\u00f5es com Add Hits
ser\u00e3o ignoradas.
Diferentemente do Add Source
, todos os campos s\u00e3o usados numa condi\u00e7\u00e3o Add Hits
, inclusive os campos de compara\u00e7\u00e3o. Se uma condi\u00e7\u00e3o \u00e9 verdadeira, o hitcount para esta condi\u00e7\u00e3o \u00e9 incrementada (e parar\u00e1 de incrementar se assim que o n\u00famero de hitcount definido for atingido).
As condi\u00e7\u00f5es com Add Hits
n\u00e3o precisam ser verdadeiras para a conquista disparar. Por\u00e9m primeira condi\u00e7\u00e3o ap\u00f3s o \u00faltimo Add Hits
, sim, precisa ser verdadeira.
Os achievements podem ter grupos adicionados a eles que podem atuar como requisitos alternativos para desbloquear um achievement. Estes s\u00e3o chamados de Alt Groups.
Uma coisa extremamente importante a notar: para uma conquista desbloquear, deve ter o Core group E pelo menos um Alt group ser verdadeiro. Se n\u00e3o houver nenhum grupo Alt presente, apenas as condi\u00e7\u00f5es do Core group's precisam ser verdadeiras.
Dica: devido ao grupo Core sempre precisar ser verdadeiro, normalmente voc\u00ea colocaria l\u00e1 condi\u00e7\u00f5es que sejam \u00e0 todos os requisitos alternativos. No entanto, um truque que voc\u00ea pode usar para basicamente para ignorar a necessidade de um grupo Core \u00e9 dar-lhe uma condi\u00e7\u00e3o que \u00e9 sempre verdadeira, como:
Mem 0x0001 = Mem 0x0001
Como o grupo Core agora \u00e9 sempre verdadeiro, agora voc\u00ea pode se concentrar em diferenciar os grupos Alt.
"},{"location":"Achievement-Logic-Features-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-07-14 13:33] meleu:
melhorando explica\u00e7\u00f5es sobre AddSource/SubSource e afins[2018-07-14 13:17] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-28 19:57] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-28 19:56] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-25 11:46] KingDice001:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-23 01:17] meleu:
Updated Achievement Logic Features.pt_BR (markdown)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:
For more help regarding these, our Discord server is always open for assistance.
Here is the list of features available:
ResetIf
Flag - ResetIf
with hit countsPauseIf
Flag - PauseIf
with hit countsAddSource
FlagSubSource
Flag - Checking for a negative resultAddHits
and SubHits
FlagThere is no set point cap. When scoring achievements match your scores to one of these 5 tiers.
Point Tiers Difficulty Significance (Level of Importance) 0-5 Easy Minor- Collecting a power-up- Beating a stage 10 Medium Intermediate- Beating a boss 25 Hard Major - Beating the Game 50 Very Hard Completion Level 100 \"Impossible\" Typically for Bonus SetsThere are other factors you should consider as well, such as achievement spread and game length.
Scoring from set to set will never perfectly match up, but this scoring system allows the points earned to more closely match skill and effort.
"},{"location":"Achievement-Scoring/#factors-to-consider-while-scoring-achievements","title":"Factors to Consider While Scoring Achievements","text":""},{"location":"Achievement-Scoring/#difficulty","title":"Difficulty","text":"Consider for the whole set:
Imagine you had two versions of the same set, with the same difficulty:
Up until June 2019, RetroAchievements had a 400-point cap per set, with no restrictions on individual achievements. The set cap was removed to put less focus on set totals and more on the achievements themselves. This initiative was also meant to eliminate the misconception that a set worth 400 points is a \"complete\" set.
As with revisions and aesthetic changes, a rescore typically requires community approval. You can find more information on rescores here.
"},{"location":"Achievement-Scoring/#exceptions","title":"Exceptions","text":"Some games may come up as exceptions to the normal scoring tiers and will be listed here.
Last 10 changes on this page:
[2023-12-29 22:14] Andrew Comer:
Bullet formatting fixes.[2023-06-02 19:21] televandalist:
Changed the point tiers to a table format. Got rid of the \"Significance\" section and put the info into the table.[2022-05-07 14:33] Searo:
Update Achievement Scoring with section noting exceptions such as picross and sudoku[2021-08-20 06:44] meleu:
fix markdown format (lists)[2020-03-23 06:37] televandalist:
Removed most info regarding rescores and redirected to the revision page.[2019-08-08 03:19] Kvon:
Achievement Scoring: typo[2019-08-08 03:18] Kvon:
Achievement Scoring: Added details for phase four of rescoring[2019-07-11 08:44] Kvon:
create page[m]
in the end of achievement's title was the standard format to mark missables. Do Not mark missable achievements in this way. Use the achievement-type system instead.Last 10 changes on this page:
[2024-05-04 13:57] Andrew Comer:
Fix bullet formatting.[2024-02-06 08:48] The Mystical One:
Updated Achievement Set Requirements (markdown)[2024-02-06 08:47] The Mystical One:
Updated to clarify that [m] should no longer be used to mark missables.[2023-11-03 08:11] The Mystical One:
Adds requirement to mark progression and win conditions[2023-06-05 20:54] televandalist:
Added the note about compilation games[2023-06-03 02:16] televandalist:
Updated Achievement Set Requirements (markdown)[2023-06-02 20:27] televandalist:
Updated WIP Achievement Set Requirements (markdown)Revisiones, osea trabajar en un set el cual ya cuenta con logros existentes tipicamente requiere aprovacion por la comunidad, presentando tu plan en el foro y en el canal de #revision-voting channel en Discord. No todos los cambios requieren aprovacion.
"},{"location":"Achievement-Set-Revisions-es/#preparando-tu-plan","title":"Preparando tu plan","text":"Cualquier desarrollador que quiera revisar un set necesita:
Preparar un plan para cada uno de los siguientes puntos (cuando tu no eres el autor original) - Adicci\u00f3n - Eliminaci\u00f3n - Retrabajo de Logros - Posibilidad de cambiar las tablas de clasificaci\u00f3n - Actualizaci\u00f3n de rich presence
Resuelve los tickets abiertos de todos los logros que quedan en el set.
Presenta tu plan - Tu plan completo en el foro del juego - En #revision-voting publica un link al post del foro
Cualquiera en la comunidad puede expresar sus preocupaciones u objeciones. Permitiendo tiempo para discutirlo y para el desarrollador ajustar su plan si es que as\u00ed lo decide. Si cualquier queja u objeciones son expresadas, de acuerdo al desarrollador ajustando el plan, una votaci\u00f3n se tiene que llevar acabo.
Una vez que la discusi\u00f3n se all\u00e1 terminado, la votaci\u00f3n tiene que ser publicada por un desarrollador en el canal de #revision-voting .
La votaci\u00f3n es aprobada/rechazada despu\u00e9s de 72 horas. Si pasa/falla por la mayor\u00eda de la gente.
"},{"location":"Achievement-Set-Revisions-es/#cuando-haces-una-revision","title":"Cuando haces una revisi\u00f3n","text":"Esto previene que los jugadores necesiten innecesariamente volver a conseguir los logros, restringe cambios que no son necesarios a sets, y preserva una buena calidad de desarrollador en tu trabajo y en tus conceptos.
"},{"location":"Achievement-Set-Revisions-es/#despues-de-la-aprobacion","title":"Despu\u00e9s de la Aprobaci\u00f3n","text":"Si producir la revisi\u00f3n esta tomando tiempo mucho mas largo, cada dos meses (+/- 2 semanas) haz un nuevo post en la pagina del juego explicando el progreso actual de la revisi\u00f3n. No hacer esto invalida tu revisi\u00f3n; el plan de revisi\u00f3n necesitar\u00eda volver a tener una nueva aprobaci\u00f3n.
"},{"location":"Achievement-Set-Revisions-es/#no-se-necesita-aprobacion","title":"No se necesita aprobaci\u00f3n","text":"De acuerdo a la importancia en los iconos de juegos hacer cambios a estos son tomados por votaci\u00f3n de la comunidad. Mira Game Icon Gauntlet.
"},{"location":"Achievement-Set-Revisions-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-12 14:28] eldexterr:
Created Achievement Set Revisions es (markdown)Any changes to a set with existing achievements is considered a revision. They typically happens after someone present a plan in the game's forum topic and in the #revision-voting
channel on Discord and the plan is approved by the achievement creators community.
There are three types of revisions:
Each are assigned their own Discord role:
Type Role Getting the role Who can get the role Standard Revisions@revision-voting
React with \ud83d\uddf3\ufe0f here achievement creators Rescores @rescore
React with \ud83d\udcaf here achievement creators Icon Gauntlet @icon-gauntlet
React with \ud83c\udfa8 here any verified discord user"},{"location":"Achievement-Set-Revisions/#standard-revisions","title":"Standard Revisions","text":"Any developer wanting to revise a set need to:
Prepare a plan for each (where you're not the original author) - Addition - Demotion - Achievement rework
Contact each active author of the set. They may have valuable insight or resources that you can utilize to help your revision. Wait for a response (after 72 hours have passed, you may proceed without a response). - Some authors opt out of requiring contact. Check the Public Opt-Out Sheet. If the author is listed as opting out of this revision type, they do not need to be contacted. To update your own Opt-Out information, use this form.
Post the plan in the game's forum topic. NOTE: Be as specific as possible, but if you have only a vague plan, provide a general idea of what you want to do and don't go too far from that idea.
Start a vote by posting a link to that topic in #revision-voting
. If you're not on Discord, another developer can do it for you. Whomever creates the vote must ping @revision-voting
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.
Address concerns: Once a revision vote is posted, the developer can address any comments, concerns, and objections the community may have to the plan.
The vote is approved/rejected after 24 hours and is pass/fail by simple majority.
Note: Anonymous revision proposals - If desired, a developer can choose to propose a revision plan while remaining anonymous throughout the voting process. Simply contact a mod or admin to request that the plan be presented on your behalf.
"},{"location":"Achievement-Set-Revisions/#when-making-a-revision","title":"When Making a Revision","text":"In the event that a revision includes merging two sets together (e.g. the Pokemon Red/Blue merge), the developer who does the revision needs to keep track of achievements in the demoted set and their equivalent achievements in the set it is being merged with. If the revision vote passes, this information must be sent to an admin so the achievements from the merged set can be manually awarded to the earners of the demoted set.
"},{"location":"Achievement-Set-Revisions/#respecting-revision-plans","title":"Respecting Revision Plans","text":"If you are one of or the original set developer(s) for a set that is currently undergoing a revision, you must communicate with the developer carrying out the revision before making changes to the set. This is to prevent potential extra work for the revision, overlapping or redundant changes, etc.
"},{"location":"Achievement-Set-Revisions/#rescores","title":"Rescores","text":"Up until June 2019, RetroAchievements sets had a cap of 400 points, with no restrictions on individual achievements. The set cap was removed to focus less on overall set totals and more on the achievements themselves. This initiative was also meant to eliminate the misconception that a set worth 400 points is a \"complete\" set, but is also an ongoing community effort to promote fairness across the board. Information on the scoring process can be found here.
Anyone wanting to rescore a set needs to:
Prepare a rescore plan that shows the original scores and the proposed scores. A quick and easy way to do this is by utilizing this sheet; you can enter the Game ID in F2 to bring up a full list of that game's achievements and scores.
Contact each active author of the set. They may have valuable insight into the chosen scores. You do not need to wait for a response.
Post the plan in the game's forum topic.
Start a vote by posting a link to the topic in the #revision-voting
channel on Discord. Whomever creates the vote must ping @rescore-voting
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.
Address concerns: Prepare to do some negotiating with other users and try to find a good middle-ground.
Voting will be active for 24 hours. If a rescore passes, you can make the necessary changes.
Some achievement sets can be rescored without going through the voting process:
The Icon Gauntlet is used to vote for new game icons or new badges for a set. With the vote it is checked which version is preferred by the community.
Any user wanting to change the game icon or badges of a set need to:
Create the game icon or new badges. For more info, see Badge and Icon Creation.
Upload the work on an image sharing site.
Consider sharing samples of your badges or icons in #gauntlet-discussion
prior to starting the revision vote. This will help polish any issues and avoid multiple updates to the gauntlet.
Start a vote by posting links to the old icon/badges and their contenders in the #icon-gauntlet
channel on Discord.
@icon-gauntlet
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.?quickpoll (game/hub page link) | Current (current icon/badges link) | Contender (contender icon/badges link)
\ud83d\udcca 1 vs. 2 or 3 proposal: ?quickpoll (game/hub page link) | Current (current icon link) | Contender 1 (contender 1 icon link) | Contender 2 (contender 2 icon link) | Contender 3 (contender 3 icon link)
Discord only embeds 4 images at maximum in a single post (current icon vs. 3 contenders), so if there's at least 5 images required (current icon vs. 4+ contenders), you'll have to do a montage with all icons: \ud83d\udcca 1 vs. 4+ proposal: ?quickpoll (game/hub page link) | Current | Contender 1 | Contender 2 | Contender 3 | Contender 4 | Contender 5 | Contender 6 (single image montage link with all icons)
#icon-gauntlet-uploads
Notes:
The game does not have an achievement set, nor is it reserved by a developer.
The entry has no game icon or badges.
The new icon/badge(s) display the same content, but are of better quality.
You are the existing set's sole developer and no other developer has changed the icon/badge(s).
You are one of the existing set's original developers as part of a collaborative set, all parties agree to the change, and no other developer has changed the icon/badge(s).
Revision voting is currently dev-only. While voting is exclusive to Discord, please remember that anyone can express their comments, questions, concerns, criticisms, etc. in the forum thread in which the plan was posted. The issues regarding Discord exclusivity will be addressed in a future version of the website.
Last 10 changes on this page:
[2024-02-02 12:33] The Mystical One:
Reordered the 'reauthor' clause so it's clearer.[2024-01-26 08:41] The Mystical One:
Added additional new revision guidelines to the 'When Making a Revision' section to clarify what is expected from a revision. Updated section on achievement clones to clearly indicate that reauthoring requires Developer Compliance Permission.[2023-12-07 14:05] The Mystical One:
Updated rules for missable types now that there is a missable typing.[2023-11-06 18:20] Andrew Comer:
Formatting updates.[2023-11-03 08:18] The Mystical One:
Added rules for progression and win typing to Standard Revisions[2023-08-15 10:28] The Mystical One:
Reduces requirements for when to ping active authors at vote start.[2023-08-01 13:47] The Mystical One:
Adjusted bullet list formatting.[2023-07-14 10:35] The Mystical One:
Fix a minor capitalization typo. Add the word 'Vote' after 'No Need for Approval' just for extra clarification.[2023-07-13 09:59] The Mystical One:
Added opt-out form and public sheet. Added section about contacting an active author.[2023-07-11 10:46] The Mystical One:
Clarify \"No Need for Approval\" for revisions that are collaborations. Add in revision rule alignment changes (contact, waiting for response, pinging authors). Add bold highlights for the main ideas of each step. Add post-vote process to icon gauntlet.Aqu\u00ed encontraras varios ejemplos de varios logros t\u00edpicos. Puedes utilizarlo como una inspiraci\u00f3n para crear tu propio logro. Pero ten en mente lo siguiente:
CADA JUEGO ES DIFERENTE! La memoria tiene un comportamiento diferente de juego en juego.
A si que NO tomes estas plantillas como una regla. Simplemente son para motivos educativos.
En estos ejemplos utilizamos la siguiente definici\u00f3n, 0xNIVEL es el valor en memoria que representa el ID del Nivel; 0xVIDA es el valor utilizado para la vida de nuestro personaje; 0xTIEMPO para el tiempo, 0xITEM por obtener un item, etc...
"},{"location":"Achievement-Templates-es/#coleccionando-un-item-n-veces","title":"Coleccionando un Item N veces","text":"Abra situaciones en las que quieras otorgar un logro por coleccionar un item (como una moneda o anillo) N numero de veces. Vas a necesitar encontrar el valor en memoria responsable en contar cuantas veces tienes un item. Una vez que tengas la variable, esta l\u00f3gica usualmente hace el trabajo:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCONTADOR > Delta 0xCONTADOR (N)Pero es mas probable que quieras ser mas especifico, por ejemplo \"obt\u00e9n el item N veces sin morir\". Entonces tendr\u00edas que utilizar otra condici\u00f3n con un ResetIf
, de la siguiente manera:
La condici\u00f3n del ResetIf
podr\u00eda ser \"mientras est\u00e9s en el nivel X\", \"sin utilizar una bomba\", etc.
En este ejemplo queremos otorgar el logro cuando el jugador termino el nivel N
y pasa al nivel N+1
.
Requisitos
N
m\u00ednimo una vezN+1
El valor 0xTITULO significa \"en la pantalla de titulo del juego\". Tu necesitas poner un ResetIf
en la pantalla de titulo para evitar que se dispare en el momento equivocado.
Aqui hay un ejemplo de una situacion de un juego en el que podria hacer que el logro se dispare en el momento equivocado si no estuviera el ResetIf:
Si no utilizamos el ResetIf tendr\u00edamos estas condiciones:
Y seria lo suficiente para que el logro se dispare (en un momento equivocado). Por eso estamos utilizando el ResetIf en este ejemplo.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-antes-de-que-el-tiempo-llegue-a-t","title":"Termina el Nivel N antes de que el tiempo llegue a T","text":"En este ejemplo vamos a considerar un juego en el que el tiempo decrementa (ej.: Super Mario Bros). Adapta el logro de acuerdo al comportamiento del tiempo de tu juego.
Queremos premiar el logro si el jugador termina el nivel N
mientras el tiempo es mayor que T
.
Requisitos
Los Requisitos 1-4 son los mismos que la plantilla Termina el Nivel N.
T
.Ten en cuenta que mas all\u00e1 de saber como funciona el contador en tu juego tambi\u00e9n necesitas saber como se maneja en la memoria del juego.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-sin-morir-o-sin-que-te-peguen-usar-un-arma-etc","title":"Termina el Nivel N sin Morir (o sin que te peguen, usar un arma, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xPANTALLA = Value NVL_N_INTRO (1) 6 ResetIf 0xVIDA < Delta 0xVIDARequisitos
Los Requisitos 1-4 son los mismos que los de la plantilla Termina el Nivel N.
El requisito 6 tambi\u00e9n puede ser utilizado para resetear el si se utiliza un arma, se recibe da\u00f1o, o cualquier otra cosa que NO quieras que el jugador haga.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-con-un-item","title":"Termina el Nivel N con un Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xITEM = Value VERDADERORequisitos
Los Requisitos 1-4 son los mismos que los de la plantilla Termina el Nivel N.
Esta plantilla es para salvados de bater\u00eda o protecci\u00f3n contra passwords para items. Evita premiar \"obten x item\" cargando cuando el jugador ya cuenta con ese item. Checa que el item se obtenga en nivel/habitacion donde se supone que tenga que ser obtenido, y solo lo premia cuando se hace de esa manera.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSO (1) 2 0xITEM = Value VERDADERO 3 ResetIf 0xNIVEL != Value nivel donde se coleccionaRequisitos
Los Requisitos 1 y 3 juntos significan \"llego al ID de nivel/habitacion sin el item\".
Incluso si el jugador carga un estado de guardado y va al nivel requerido el no seria capaz de a\u00f1adir hits a la condici\u00f3n 1, ya que no se pueden conseguir solamente por gameplay normal.
No necesita ser necesariamente un ID de nivel/habitaci\u00f3n. Hay otros m\u00e9todo para enfrentar este problema, por ejemplo ejemplo un valor en memoria \u00fanico que solo ocurre cuando lo coleccionas. Etc.
"},{"location":"Achievement-Templates-es/#colecciona-100-en-algo","title":"Colecciona 100% en algo","text":"Esta es proteccion limitada de salvado de bateria /proteccion de password cuando el jugador coleccione 100% de algo como pasar cada stage en Super Mario world, u obtener 100% en el porcentaje de coleccionables en Super Metroid. Es necesario que el jugador no pueda simplemente cargar un save con 100% y obtener el logro de a gratis. (Como siempre hay otras maneras de enfrentar este problema tambi\u00e9n.)
ID Special? Type Memory Cmp Type Mem/Val Hits 1 Delta 0xPorcentajeColeccionado < Value valor 100% 2 Mem 0xPorcentajeColeccionado = Value valor 100% 3 PauseIf Mem 0xEstadoJugador != Value Modo especifico/punto donde % es incrementadoUsar la variable y el valor indicado en la condici\u00f3n 3 es especialmente importante. Necesitas encontrar una variable que represente un momento \u00fanico en el juego cuando este porcentaje aumenta. Tu no quieres que el logro salte cuando el jugador cargue su archivo de guardado, que quiere decir que el logro tiene que ser pausado en ese momento.
Ejemplo: En Super Mario World este cambio pasa cuando el jugador observa el mapa del mundo despu\u00e9s de a ver completado un stage.
Nota: Este comportamiento es similar y el resultado a Colecciona un item en un nivel en especifico.
"},{"location":"Achievement-Templates-es/#evitando-el-problema-de-que-un-contador-se-incremente-dos-veces-en-el-mismo-frame","title":"Evitando el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame","text":"En Coleccionando un item N veces estamos contando que tantas veces este contador aumenta. Pero en algunos juegos hay algunas situaciones en el que el contador aumenta al doble en el mismo frame, y el hit counter se incremente solo por uno. Este comportamiento, obviamente, arruina nuestra l\u00f3gica. Vamos a ver una manera para evitar este problema.
La t\u00e9cnica utilizada aqu\u00ed se baza en otras dos:
AddHits
Aqu\u00ed esta el truco:
ID Special? Type Memory Cmp Type Mem/Val Hits 1 SubSource Delta 0xCONTADOR 2 AddHits Mem 0xCONTADOR = Value 0x02 3 Mem 0xCONTADOR > Delta 0xCONTADOR (N) 4 ResetIf Mem 0xVIDAS < Delta 0xVIDASPodr\u00eda verse un poco confuso a primera vista, pero talvez utilizando un ejemplo de verdad pueda ser todo mas claro. Checa Evitar el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame.
"},{"location":"Achievement-Templates-es/#checar-el-cambio-de-un-valor-especifico-a-otro-valor-especifico-diez-veces","title":"Checar el cambio de un valor especifico a otro valor especifico diez veces","text":"En este ejemplo queremos detectar que un valor cambie de V1
a V2
diez veces:
Requisitos
0xADDRESS
en el frame anterior es 0xV1
, aumenta el hitcount (hasta 10).0xADDRESS
es igual a 0xV1
, aumenta el hitcount (hasta 10).0xADDRESS
.Resets Condicionales se pueden utilizar para muchas cosas.
Digamos que quieres tener un reset si el jugador entra a cierta zona X e Y del nivel:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xNIVEL = Value NIVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONE 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONE 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONE 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONEALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2019-05-24 19:57] meleu:
fix broken link[2019-04-16 11:16] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Achievement Templates
"},{"location":"Achievement-Templates-pt_BR/#atencao-todo-jogo-e-diferente","title":"ATEN\u00c7\u00c3O: TODO JOGO \u00c9 DIFERENTE!","text":"Aqui voc\u00ea ir\u00e1 ver exemplos de algumas conquistas tip\u00edcas. Voc\u00ea pode usar elas como inspira\u00e7\u00e3o para criar suas conquistas. Mas mantenha em mente o seguinte:
TODO O JOGO \u00c9 DIFERENTE! A mem\u00f3ria tem uma diferen\u00e7a de comportamento de jogo para jogo.
Ent\u00e3o N\u00c3O fa\u00e7a desses exemplos como regras. Elas est\u00e3o aqui apenas para fins educacionais.
Nesses exemplos n\u00f3s usamos a seguinte conven\u00e7\u00e3o 0xNIVEL \u00e9 o endere\u00e7o de mem\u00f3ria (memory address) com o ID de n\u00edvel; 0xVIDA \u00e9 o endere\u00e7o usado para a vida do personagem; 0xTEMPO para obter um item, etc...
"},{"location":"Achievement-Templates-pt_BR/#termine-nivel-n","title":"Termine N\u00edvel N","text":"Neste exemplo n\u00f3s queremos premiar quando o jogador terminar o n\u00edvel N
e v\u00e1 para o n\u00edvel N+1
Requerimentos
N
pelo menos uma vezN+1
O valor 0xTITULO significa \"na tela de t\u00edtulo do jogo\". Voc\u00ea precisa do ResetIf
indo para a tela de t\u00edtulo para evitar uma premia\u00e7\u00e3o na hora errada
Aqui est\u00e1 um exemplo do fluxo de jogo que poderia fazer a conquista ser ativada em uma hora errada se n\u00e3o fosse pelo ResetIf:
Se n\u00e3o estiver usando o ResetIf, teremos estas condi\u00e7\u00f5es:
E seria o suficiente para ativar a conquista (no momento errado). \u00c9 por isso que nos estamos usando o ResetIf
neste exemplo
Neste exemplo vamos considerar um jogo quando o tempo diminuir (ex: Super Mario Bros). Adaptar-lo de acordo com o tempo no seu jogo tem um comportamento diferente.
N\u00f3s queremos premiar se o jogardor finalizar o n\u00edvel N
enquanto o tempo for maior que T
Requerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
T
.Mantenha em mente que por tr\u00e1s de al\u00e9m saber como o tempo se comporta no jogo, al\u00e9m disso voc\u00ea precisa pesqusar como se comporta na mem\u00f3ria
"},{"location":"Achievement-Templates-pt_BR/#terminar-nivel-n-sem-morrer-ou-ser-atingido-usando-uma-arma-etc","title":"Terminar N\u00edvel N sem Morrer (ou ser atingido, usando uma arma, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITLE 5 0xTELA = Value NVL_CM_INTRO (1) 6 ResetIf 0xVIDA < Delta 0xVIDARequerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
O requerimento 6 pode tamb\u00e9m ser usando para resetar o contador de hits se uma arma for usada, tomado dano, ou qualquer coisa al\u00e9m daquilo que voc\u00ea n\u00e3o quer que o jogador fa\u00e7a
"},{"location":"Achievement-Templates-pt_BR/#termine-o-nivel-n-com-item","title":"Termine o N\u00edvel N com Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xITEM = Value VERDADEIRORequerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
Aqui est\u00e1 uma forma de checar se o item foi coletado em um n\u00edvel/sala que deve ser coletado. Isto evita a premia\u00e7\u00e3o \u00e0 \"consiga item X\" por carregando um savestate onde o jogador j\u00e1 tem o item.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSO (1) 2 0xITEM = Value VERDADEIRO 3 ResetIf 0xNIVEL != Value nivl de coletaRequerimentos
Requerimentos 1 e 3 juntos significa \"chegou ao n\u00edvel/sala sem o item\"
Mesmo se o jogador carregar um savestave e for para o n\u00edvel requerido eles n\u00e3o poder\u00e3o adicionar hits para a condi\u00e7\u00e3o 1, portanto eles n\u00e3o podem conseguir exceto em gameplay normal
N\u00e3o precisa ser necessariamente n\u00edvel/sala. H\u00e1 outras maneiras de abordar esse problema, por exemplo uma \u00fanica Mem\u00f3ria/Valor que apenas ocorre na coletagem. Etc
"},{"location":"Achievement-Templates-pt_BR/#cheque-por-um-valor-especifico-mudando-para-outro-valor-especifico-dez-vezes","title":"Cheque por um valor espec\u00edfico mudando para outro valor espec\u00edfico dez vezes","text":"Neste exemplo n\u00f3s queremos para detectar uma mudan\u00e7a de valor de V1
para V2
dez vezes:
Resets Condicionais podem ser usado para muitas coisas.
Vamos dizer que voc\u00ea quer para resetar se um jogador entrar ema certa zona X e Y de um n\u00edvel:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xNIVEL = Value NIVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONA 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONA 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONA 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONAALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2018-03-25 12:07] KingDice001:
Updated Achievement Templates pt_BR (markdown)[2018-03-25 11:51] KingDice001:
Updated Achievement Templates pt_BR (markdown)[2018-03-24 04:22] KingDice001:
Created Achievement Templates pt_BR (markdown)Here you'll see examples of some typical achievements. You can use them as inspiration to create your own achievement. But keep in mind the following:
EVERY GAME IS DIFFERENT! The memory has a different behavior from game to game.
So do NOT take these templates as a rule. They are here just for educational purposes.
In these examples we use the following convention 0xLEVEL is the memory address with the level ID; 0xLIFE is the address used for the character life; 0xTIME for time, 0xITEM for getting an item, etc...
There are some situations where you want to award an achievement for collecting an item (like a coin or a ring) N times. You'll need to find in the memory the address responsible to count how much of the item you have. Once you have the address, this logic usually does the job:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCOUNT > Delta 0xCOUNT (N)But you most likely will want to be more specific, for example \"get item N times without dying\". Then you should use another condition with a ResetIf
, like this:
The ResetIf
condition could be \"while in level X\", \"without using a bomb\", etc.
In this example we want to award when the player finish the level N
and goes to level N+1
.
Requirements
N
at least one timeN+1
The value 0xTITLE means \"at game's title screen\". You need to ResetIf
going to the title screen to avoid the awarding at a wrong time.
Here is an example of game flow that could make the achievement trigger at a wrong time if it wasn't for that ResetIf:
If not using the ResetIf we will have these conditions:
And it would be enough to trigger the cheevo (at a wrong time). That's why we're using the ResetIf
in this example.
In this example we consider a game where the time decreases (e.g.: Super Mario Bros). Adapt it accordingly the time on your game has a different behavior.
We want to award if the player finishes the level N
while time is greater than T
.
Requirements
Requirements 1-4 are the same as Finish Level N template.
T
.Keep in mind that besides knowing how the time behaves in game you also need to research how it behaves in memory.
"},{"location":"Achievement-Templates/#finish-level-n-without-dying-or-getting-hit-using-a-weapon-etc","title":"Finish Level N without Dying (or getting hit, using a weapon, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xLEVEL = Value N (1) 2 0xLEVEL = Value N+1 3 0xLEVEL > Delta 0xLEVEL 4 ResetIf 0xLEVEL = Value TITLE 5 0xSCREEN = Value LVL_N_INTRO (1) 6 ResetIf 0xLIFE < Delta 0xLIFERequirements
Requirements 1-4 are the same as Finish Level N template.
The requirement 6 can also be used to reset hit count if a weapon was used, damage taken, or anything else that you want the player to NOT do.
"},{"location":"Achievement-Templates/#finish-level-n-with-item","title":"Finish Level N with Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xLEVEL = Value N (1) 2 0xLEVEL = Value N+1 3 0xLEVEL > Delta 0xLEVEL 4 ResetIf 0xLEVEL = Value TITLE 5 0xITEM = Value TRUERequirements
Requirements 1-4 are the same as Finish Level N template.
This template is for battery save or password protection for items. It avoids awarding \"get item X\" by loading to where player already has the item. It checks that an item is collected in the level/room ID it is supposed to be collected, and only allows it be earned at that time.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSE (1) 2 0xITEM = Value TRUE 3 ResetIf 0xLEVEL != Value collect levelRequirements
Requirements 1 and 3 together mean \"arrived the level/Room ID without the item\".
Even if the player loads a savestate and goes to the required level they will not be able to add hits to condition 1, thus they can't get it except in normal gameplay.
It does not necessarily have to be level/Room ID. There are other ways to approach this problem, for example a unique Mem/Val that only occurs on collection. Etc.
"},{"location":"Achievement-Templates/#collected-100-percent-of-something","title":"Collected 100 Percent of Something","text":"This is limited battery save /password protection for when a player will collect 100% of something like clearing each stage in Super Mario world, or getting a 100% collection rate in Super Metroid. It's necessary so that a player cannot just load a save at 100% and get the achievement for free. (As usual there are other ways to approach this problem too.)
ID Special? Type Memory Cmp Type Mem/Val Hits 1 Delta 0xCollectPercent < Value 100% value 2 Mem 0xCollectPercent = Value 100% value 3 PauseIf Mem 0xPlayerState != Value Specific mode/point in game where % is increasedUsing the correct address value for condition 3 is especially important. You need to find an address that represents a unique time in the game where this percent increases. You'd not want the achievement to trigger when the player is loading their in game save file, which means this achievement must be paused at that time.
Example: In Super Mario World this change happens while the player sees the world map after completing a stage.
Note: This is similar in behavior and result to Collect an Item in a specific Level.
"},{"location":"Achievement-Templates/#circumvent-the-problem-of-a-counter-incrementing-twice-in-the-same-frame","title":"Circumvent the Problem of a Counter Incrementing Twice in the Same Frame","text":"In the Collecting an Item N times we are counting how many times the counter goes up. But in some games there are situations where the counter goes up twice in the same frame, and the hit counter is incremented only by one. This behavior, obviously, ruins our logic. We're going to see a way to circumvent this issue.
The technique used here relies on two other ones:
SubSource
to count specific incrementsAddHits
FlagHere's the trick:
ID Special? Type Memory Cmp Type Mem/Val Hits 1 SubSource Delta 0xCOUNT 2 AddHits Mem 0xCOUNT = Value 0x02 3 Mem 0xCOUNT > Delta 0xCOUNT (N) 4 ResetIf Mem 0xLIVES < Delta 0xLIVESIt can looks a bit confusing at a first sight, but maybe using a real example it can be more clear. Check the Circumvent the Problem of a Counter Incrementing Twice in the Same Frame.
"},{"location":"Achievement-Templates/#check-for-a-specific-value-changing-to-another-specific-value-ten-times","title":"Check for a Specific Value Changing to Another Specific Value Ten Times","text":"In this example we want to detect a value changing from V1
to V2
ten times:
Requirements
0xADDRESS
in the previous frame is 0xV1
0xADDRESS
is 0xV2
, increases the hitcount (up to 10).Conditional resets can be used for many things.
Lets say you want to have a reset if a player enters a certain X and Y zone of a level:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xLEVEL = Value LEVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONE 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONE 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONE 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONEALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2023-06-06 11:17] televandalist:
Added ToC[2021-05-01 07:24] meleu:
fix link to AddHits page[2020-09-01 09:50] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:31] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:28] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:23] Brandon D:
Updated as per feedback from Keltron[2020-09-01 09:04] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 08:47] Brandon D:
Took a real usage case from my game Dicing Knight Period and condensed it down to something more manageable. The AddHits docs are also a bit vague on some things and this hopefully will help out there.[2019-12-02 11:25] Searo:
Updating \"Check for a specific value changing to another specific value ten times\" to use AndNext to simplify the logic[2019-02-17 21:19] meleu:
add \"Collecting an Item N times\" and \"Circumvent the Problem of a Counter Incrementing Twice in the Same Frame\"\u00bfEste hack que encontr\u00e9/Que hice puede tener un set en RetroAchievements?
RetroAchievements abre la puerta a todos esos divertidos hacks para el disfrute de los jugadores. Pero esto tambi\u00e9n abre el tema de \"Que es permitido, y que no esta permitido que tenga un set en RetroAchievements?\"
"},{"location":"Achievements-for-ROM-hacks-es/#parches-para-game-trainers","title":"Parches Para Game Trainers","text":"No est\u00e1n permitidos sobre cualquier circunstancia
Hacks que incluyan \"game trainers\" o funciones de integradas de cheats (por razones obvias) no est\u00e1n permitidos.
"},{"location":"Achievements-for-ROM-hacks-es/#hacks-de-dificultad-e-historia","title":"Hacks de Dificultad e Historia","text":"Posiblemente Permitido
Si un hack tiene suficiente diferencias que la versi\u00f3n licenciada del juego, tanto que incluso el juego puede ser considerado un juego completamente diferente, usualmente la creaci\u00f3n de un set es usualmente aceptable. Consulta con un administrador para una aprobaci\u00f3n mas especifica.
Ejemplo: Metroid - Rogue Dawn
"},{"location":"Achievements-for-ROM-hacks-es/#lanzamiento-beta-prototipo-correccion-de-un-bug-re-balanceo-y-hacks-para-testing","title":"Lanzamiento Beta, prototipo, correcci\u00f3n de un bug, re-balanceo, y hacks para \"testing\"","text":"No est\u00e1n permitidos
Hacks para corregir un bug, parches de balance, versiones prototipo, hacks que est\u00e1n a nivel desarrollador y que cuentan con herramientas integradas (Selecci\u00f3n de Niveles f\u00e1cil de accesar, menus de debuging, menus que muestran informaci\u00f3n o proveen funciones de prueba y que no son normalmente accesibles en el juego normal), no pueden ser agregadas a un set core, y son tipicamente no permitidas que cuenten con su propio set de logros.
Si un rom hack esta en un estado de beta con potenciales glitches que puedan romper el juego, crasheos, o bugs, intactos siendo un resultado del hack, esto no esta permitido.
"},{"location":"Achievements-for-ROM-hacks-es/#parches-de-traduccion","title":"Parches de Traducci\u00f3n","text":"Posiblemente Permitidos
Ingles es el Lenguaje Primario en RetroAchievements. Parches de traducci\u00f3n son algunas veces aplicados por los desarrolladores a t\u00edtulos que no son en Ingles cuando en el MD5 principal de un set de logros no existe un versi\u00f3n licenciada en ingles. En este tipo de casos instrucciones de como parchear el juego tienen que ser agregadas al foro del juego. Proveer una traducci\u00f3n completa a un titulo existente es posiblemente permitido para que as\u00ed un juego sea mas accesible a gente que hable otros idiomas. Recuerda que tienes que inspeccionar profundamente la memoria del juego entre el parche y el set core y meter una solicitud de aprobaci\u00f3n antes de que esta se entregue al desarrollador del set para que la postee en el foro junto con el parche.
Algunas veces los parches de traducci\u00f3n pueden diferir cr\u00edticamente de como trabaja la memoria de acuerdo al MD5 del desarrollador. Antes de linkear estos parches checa con el desarrollador original o haz algunas pruebas profundas en memoria para asegurarte que sea completamente compatible. Puedes agregar parches de traducci\u00f3n que encuentres en linea siempre y cuanto todos los logros core funcionen de manera correcta y estos no se hagan mas o menos dif\u00edciles.
"},{"location":"Achievements-for-ROM-hacks-es/#hacks-cosmeticos-sprites","title":"Hacks Cosm\u00e9ticos / Sprites","text":"Posiblemente permitidos
Ejemplo: Roll-chan Evolution, Episode I - Roll-chan Gaiden
"},{"location":"Achievements-for-ROM-hacks-es/#parches-para-sets-bonus","title":"Parches para Sets Bonus","text":"Hacks Cosm\u00e9ticos que producen un MD5 \u00fanico para un Set Bonus son usualmente permitidos para que sean agregados al proceso de revisi\u00f3n. Inclusive este tipo de parches tienen que ser testeada profundamente la memoria con el set core para asegurarte que todos los logros funcionan de manera correcta. Esto envuelve artas ediciones a la pantalla de titulo para que pueda conseguir los requisitos de los lineamientos. Para parches cosmeticos para Sets Bonus para que permitan que el jugador pueda jugar el Set Bonus en vez del juego original, por favor habla con Salsa si necesitas ayuda en el proceso de creaci\u00f3n. Salsa maneja la sub-comunidad de creaci\u00f3n de parches IPS para desarrollo de Sets Bonus de RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks-es/#consultando","title":"Consultando","text":"Consulta a la comunidad por medio del foro y/o Discord para meter tu solicitud de aprobaci\u00f3n. Puedes darte una buena idea de que es lo que le gusta ver a la comunidad preguntando. Preguntar por una aprobaci\u00f3n antes de agregar un parche es una practica integra de un Desarrollador, y cae en tu c\u00f3digo de conducta como desarrollador aqu\u00ed en RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-21 11:56] eldexterr:
Created Achievements for ROM hacks es (markdown)RetroAchievements opens the doorway to include fun hack sets for players to enjoy. The issue arising in such a broad category open to world of creativity being \"What is allowed, and what is not allowed to have a set at RetroAchievements?\" This page will go over the various types of hacks that are not allowed to have their own set and whether or not they are allowed to be linked to a base set.
[t1]
, [t2]
, etc. in the title are examples of this.Usually not allowed
If a rom hack is incomplete or in a beta/prototype/testing state with potential game-breaking glitches, crashes, or bugs, intact as a result of hacking, it is usually not allowed.
Examples:
Usually allowed
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 usually 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.
Tip: For games with text-triggered achievements (especially RPGs) it's recommend to find an event flag instead of hooking onto text or text ID. Text presentation varies between regional versions making multi-region support difficult.
Examples:
Usually allowed
Examples:
Consult the community via the forum and Discord for review and approval. You can get a good view-port of what the community likes to see by asking. Asking for approval before linking is an integral Developer practice, and falls within your code of conduct as a developer here at RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-03 20:09] televandalist:
Updated Achievements for ROM hacks (markdown)[2023-06-05 21:43] televandalist:
Updated Achievements for ROM hacks (markdown)[2021-03-01 01:06] televandalist:
Removed section about using cosmetic patches for Bonus sets. It's not a good practice and should have been in the Bonus set guide anyway.[2020-07-06 09:53] meleu:
markdown fix[2020-02-17 05:32] meleu:
speak with BenGhazi for bonus set patches[2019-08-13 19:45] Kvon:
Achievements for Romhacks, text hooking tip[2019-07-22 17:14] Kvon:
minor edit. Changed capitalization[2019-07-22 14:38] Kvon:
Achievements for romhacks: Added much clarification, more examples, split out \"Beta Release...\" into is own section. Updated what might be allowed to match status quo.[2018-09-09 20:27] Kvon:
Listed translation patches as possibly allowed[2018-02-03 22:10] meleu:
changed the titleAddAddress
modifies the memory address(es) of the following condition by the calculated value. It works similar to AddSource
, but modifies the address, not the resulting value. Additionally, it affects addresses on both sides of the condition.
AddAddress
only affects the next condition. If multiple AddAddress
lines are chained together, each lookup in the chain will be altered; the values won't all be added to the final lookup.
The 32-bit value at 0x0112F8 is a pointer to the data for the first character in the party. When the party order changes, the pointer will point at a different block of memory, but data within the block will have the same structure.
To translate the real pointer to a memory inspector address, we compare the two values. For example:
AddAddress
is how RAIntegration handles pointers. There are four major types of pointer support:
Direct Pointer: The pointer contains another address that is referenced without modification. These are most commonly used for string pointers. To use a direct pointer, the base address to which the pointer is added would be 0.
Indirect Pointer: The pointer contains another address that indicates the start of some block of data. The data of interest is a fixed number of bytes into the block of data. These are commonly used for attributes of a character/object.
For both Direct and Indirect Pointers, the AddAddress
line should reference the pointer, and the address in the following line should be the offset into the block of data for the information relevant to the condition. While you would typically use 0 for a Direct Pointers, the following line would also contain any value necessary to convert between a real address and a memory inspector address.
The example above is an Indirect Pointer, where the data is 0x5C bytes into a block of data. The conversion from a real address to a memory inspector address is handled by using a 24-bit read instead of a 32-bit read.
Array Index: The pointer contains an offset to apply to a fixed pointer.
Scaled Array Index: The pointer contains an offset to apply to a fixed pointer after it has been scaled.
For Array Indices, the AddAddress
line should reference the offset to apply, and the following line should contain the address of the first element of the array (index 0). For example:
AddAddress 16-bit Mem 0x1234\n 8-bit Mem 0x4567\n
Would read a 16-bit number from 0x1234 and read the single byte that is that many bytes after 0x4567.
To scale an array index, click on the space in the Cmp column for the array index address and select the *
symbol. Then enter the size of each array item in the second mem/val column. For example:
AddAddress 16-bit Mem 0x1234 * Value 4\n 8-bit Mem 0x4567\n
Would read a 16-bit number from 0x1234, multiply it by 4, and read the single byte that is that many bytes after 0x4567.
"},{"location":"AddAddress-Flag/#chaining-pointers","title":"Chaining Pointers","text":"AddAddress
can be chained to perform multi-step lookups, but only one step at a time. As such, you can reference data pointed at by a pointer that's pointed at by another pointer, but you can't reference data in an array that's pointed at by another pointer unless either the array or the array index is at a fixed address.
To do a delta check on an AddAddress
chain, you should only put the delta on the final condition. You want to use the current value for each step of the chain to derive the final result, and you only care about the changes in the final value. Using previous values for the pointers will have you reading invalid memory and will likely cause problems.
A) AddAddress Mem 0000\nB) AddAddress Mem 0000\nC) Delta 0000\n
Assuming Mem: $0000=0, $0001=2, and $0002=4, this will evaluate to 0 for the first few frames, and when Mem 0 changes to 1, the following happens:
Frame N : A = Mem[0] = 1 (delta[0] = 0), B = Mem[A] = Mem[1] = 2 (delta B = 0), C = Mem[B] = Mem[2] = 4 (delta C = 0)\nFrame N+1: A = Mem[0] = 1 (delta[0] = 1), B = Mem[A] = Mem[1] = 2 (delta B = 2), C = Mem[B] = Mem[2] = 4 (delta C = 4)\n
You can see the entire delta chain updates in the same frame (one frame after the change occurs).
If you use Delta for A and B, something different happens:
A) AddAddress Delta 0000\nB) AddAddress Delta 0000\nC) Delta 0000\n
Frame N : Mem[0] = 1 (delta[0] = 0), B = Mem[deltaA] = Mem[0] = 1 (delta B = 0), C = Mem[deltaB] = Mem[0] = 1 (delta C = 0)\nFrame N+1: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 1), C = Mem[deltaB] = Mem[1] = 2 (delta C = 1)\nFrame N+2: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 2), C = Mem[deltaB] = Mem[2] = 4 (delta C = 2)\nFrame N+3: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 2), C = Mem[deltaB] = Mem[2] = 4 (delta C = 4)\n
Not only does it take two extra frames for delta C to be correct, it has two intermediate values that are not correct. The value went from 0 to 4 in a single frame and never was 1 or 2.
"},{"location":"AddAddress-Flag/#calculating-your-offset","title":"Calculating your offset","text":"Once you think that you've found your data and something that points at (or near) your data, you need to calculate the offset to use to read that data. * 32-bit data at 0x821448
(RetroAchievements address) * Pointer at 0xA1CA14
(RetroAchievements address) (value is 0x8C821440
)
First, determine how much of the pointer you need. For a system with 16MB of RAM, you need 24-bits to address it all (2^24 = 16777216). For 32MB, you'd need 25-bits. For 8MB, you'd only need 23-bits.
For the data provided above, we have 16MB of memory, so we only need 24-bits of the pointer (0x8C821440
& 0x00FFFFFF
= 0x821440
)
Then, subtract that value from the data address to calculate the offset: 0x821448
- 0x821440
= 0x000008
Now, you can construct the logic. Place the pointer address and size/mask in the AddAddress
condition and the offset/logic in the second line:
AddAddress Mem 24-bit 0x00A1CA14\n Mem 32-bit 0x00000008 < 1000\n
Executing this example with the provided data: * Read 24-bit data at 0x00A1CA14
: 0x00821440
* Add the offset: 0x00821440
+ 0x00000008
= 0x00821448
* Read 32-bit data at new address (0x00821448
)
0x1B385E0
(RetroAchievements address)0xE7B054
(RetroAchievements address) (value is 0x09B42F0C
)0x09B42F0C
& 0x01FFFFFF
= 0x1B42F0C
0x1B385E0
- 0x1B42F0C
= 0xFFFFFFFFFFFF56D4
(truncate to 32-bits: 0xFFFF56D4
)AddAddress Mem 32-bit 0x00E7B054 & 0x1FFFFFF Mem 16-bit 0xFFFF56D4 = 0x0E
In this case, the pointer is actually pointing backwards, so the offset is a really big number. That's how computers represent negative values. Due to the rules of twos-compliment and overflow, you can add the really big number to perform subtraction. Executing this example with the provided data: * Read 32-bit data at 0x00E7B054
: 0x09B42F0C
* Mask off 25-bits: 0x09B42F0C
& 0x01FFFFFF
= 0x01B42F0C
* Add the offset: 0x1B42F0C
+ 0xFFFF56D4
= 0x101B385E0
(truncated to 32-bits: 0x01B385E0
) * Read 16-bit data at new address (0x01B385E0
)
The experienced achievement creator wilhitewarrior made a nice video showing how to work with pointers and AddAddress flag.
You can check it here: https://www.youtube.com/watch?v=_gk0vYYlm-E.
"},{"location":"AddAddress-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-01-26 08:53] Jamiras:
add calculating offset section[2021-10-06 19:35] Jamiras:
Updated AddAddress Flag (markdown)[2021-08-08 18:59] Jamiras:
update for scaled array index support[2020-08-05 02:06] meleu:
cosmetic[2020-08-05 01:58] meleu:
add link to wilhitewarrio's video tutorial[2019-11-17 22:18] meleu:
fix markdown formats[2019-11-16 07:53] Jamiras:
Updated AddAddress Flag (markdown)[2019-11-14 20:25] Jamiras:
Created AddAddress Flag (markdown)Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
La bandera de AddHits
puede ser seleccionada en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Cuando una condicion con la bandera de AddHits
es verdadera, el contador de hits (hit count) de la siguiente condicion sin el AddHits
es incrementada.
Si la siguiente condicion si el AddHits
no tiene un numero de hits especificos (hit target), la condicion AddHits
no tiene un efecto en el logro.
La condicion AddHits
no tiene que ser verdadera para el logro se dispare, pero la siguiente condicion sin el AddHits
si tiene que serlo, que es afectada por la condicion que si tiene el AddHits
.
Last 10 changes on this page:
[2019-03-12 15:01] meleu:
Updated AddHits Flag ES (markdown)NOTE: This technique is not needed for simple games, so it is not mandatory for jr-devs.
AddHits
and SubHits
can be chosen in the Flag column of the Achievement Editor.
The AddHits
/SubHits
conditions do not have to be true for the achievement to trigger. They modify the hit count of another condition, which does have to be true for the achievement to trigger. The sequence of conditions is referred to as a AddHits
chain (even if it contains SubHits
).
When a condition with the AddHits
/SubHits
flag is true, the hit count for that condition is incremented. A hit target may be placed on the condition to keep it from tallying too many times.
The total hit count of the final condition in a chain is incremented by the hit counts of any AddHits
conditions in the chain, and decremented by any SubHits
conditions in the chain. If the total hit count meets or exceeds the target hit count of the final condition, it's considered true.
If the final condition of the chain does not have a hit target, the AddHits
/SubHits
conditions have no effect on the achievement. The final condition will be true if, and only if, it is true by itself.
NOTE: The hit target on the final condition of the chain serves as both the overall target hit count and the maximum hit count for that condition. As a result, it is impossible to use SubHits
without AddHits
, as any hits subtracted by the SubHits
could not be recovered without a separate AddHits
. Similarly, if you need to put a condition-specific limit on the final condition of the chain, you should pull it out as an AddHits
condition with the appropriate limit and use a dummy final condition with the overall hit target (i.e. 0=1 (10)
). The dummy condition would never accumulate any hits of its own, and only serve to tally the other values in the chain.
Last 10 changes on this page:
[2021-04-30 12:40] Jamiras:
Updated AddHits Flag (markdown)Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
Un AddSource
puede ser seleccionado en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Cuando una condicion tiene la bandera de Add Source
, el valor de esa variable es a\u00f1adido al valor de la variable de la condicion de abajo, y la comparacion es hecha en la condicion que se encuentra abajo de la que si tiene la bandera de Add Source
. Puede sonar un poco confuso, pero el ejemplo de aqui abajo va a aclarar como funciona:
En este ejemplo el valor en 0x8010
va a ser agregado a el valor en 0x8020
y la comparacion es si la suma es mas grande que cero.
Si el valor en 0x8010
es 1
y el valor en 0x8020
is 2
, la comparacion seria 1 + 2 > 0
, o 3 > 0
.
Nota: Todo lo que este en los campos de comparacion (Cmp) en una condicion con una bandera de Add Source
son ignorados.
Intentando resumir la explicacion con una imagen:
Nota: puedes utilizar la bandera Add Source
para sumar mas variables, como en el siguiente ejemplo:
Last 10 changes on this page:
[2019-03-12 15:00] meleu:
Updated AddSource Flag ES (markdown)Note: most likely this technique is not needed for simple games. So, it's not mandatory for jr-devs.
The AddSource
can be chosen in the Flag column of the Achievement Editor
When a condition has the Add Source
flag, the value on that memory address is added to the accumulator. When a condition is reached that does not modify the accumulator, the accumulator is added to value of the address on that condition before the comparison is made, and the accumulator will be reset to 0. It may sound a bit confusing, but the example below will clarify how this works:
In this example the value in 0x8010
will be added to the value in 0x8020
and the comparison will check is if this sum is greater than four.
If the value in 0x8010
is 1
and the value in 0x8020
is 2
, the comparison will be 1 + 2 > 4
, or 3 > 4
.
Trying to summarize the explanation in an image:
"},{"location":"AddSource-Flag/#chaining","title":"Chaining","text":"You can use the Add Source
flag to sum more addresses, like in the example below:
This represents value(0x8010) + value(0x8011) + value(0x8020) > 4
.
The accumulator is reset after its used, so you can have multiple AddSource
chains in one trigger without having to worry about them interfering with each other.
This represents value(0x8010) + value(0x8020) > 4 AND value(0x8030) + value(0x8040) < 0x80
.
The accumulator and all logic being performed is limited to 32-bits. If the total value exceeds 0xFFFFFFFF, there will be an overflow and only the 32 least significant bits will be used in the comparison.
ID Flag Type Size Memory Cmp Type Size Mem/Val Hits 1 AddSource Mem 32-bit 0x8010 2 Mem 32-bit 0x8020 > Value 0x30000000 0 (0)If 0x8010 is 0xC0000000 and 0x8020 is 0x54321ABC, then the total will be 0x114321ABC, which is more than 32-bits and will be truncated to 0x14321ABC, which is not more then 0x30000000, so the logic will evaluate false.
"},{"location":"AddSource-Flag/#using-modifiers","title":"Using Modifiers","text":"Additionally, you can use AddSource to modify a value. By clicking on the \"Cmp\" column, a dropdown will open with three operators: *
, /
, and &
. This allows you to modify the value before adding it to the accumulator.
*
: Multiply the left side by the right side. - AddSource 8-bit Mem 0x8010 * Value 0x14
would read the 8-bit value from $8010, multiply it by 20 (0x14 hex) and then add that to the accumulator.
/
: Divide the left side by the right side. - AddSource 8-bit Mem 0x8010 / Value 0x14
would read the 8-bit value from $8010, divide by 20 (rounding down) and then add that to the accumulator.
&
: Bitwise-mask the left side with the right side. - AddSource 8-bit Mem 0x8010 & Value 0x3f
would read the 8-bit value from $8010, discard bits 6 and 7 (0x3f is 00111111 in binary) and then add that to the accumulator.
You can use memory references on the right side as well. AddSource 8-bit Mem 0x8010 * 8-bit Mem 0x8011
would read the two 8-bit values, multiply them together, and add that to the accumulator.
The accumulator is typed based on the first thing added to it. If the first AddSource
/SubSource
of a chain is an integer, the accumulator will be an integer and any floats added to the accumulator will be floored before they're added to the accumulator. If the first AddSource
/SubSource
of a chain is a float, the accumulator will be a float and any integers added to the accumulator will be converted to floats before they're added to the accumulator.
Note that when the accumulator is added to the final condition, the type of the final condition is used. So if the final condition is float and the accumulator is an integer, the accumulator will be converted to a float before it's added to the final condition.
To force all floats in an AddSource
chain to be floored, you need an extra first and last condition:
Line 1 primes the accumulator as an integer, so lines 2-4 will be floored before they're added to the accumulator. Line 5 ensures the final value is an integer before doing the comparison. Without line 1, lines 2-4 would be accumulated as floats. Without line 5, the accumulator would be added to the last float without it being floored.
"},{"location":"AddSource-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-09-02 07:13] Jamiras:
add interaction with floats section[2021-11-27 08:38] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:20] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:17] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:14] Jamiras:
Updated AddSource Flag (markdown)[2019-02-12 09:37] meleu:
Updated AddSource (markdown)Un logro puede tener grupos agregados a el que permiten requisitos alternativos para que el logro se desbloquee. A esto se le conoce como Alt Groups, (Grupos Alternativos)
Cuando utilizamos Alt groups, para que se dispare un logro, todas las condiciones en Core group TIENEN que ser verdaderas. Y as\u00ed tambi\u00e9n todas las condiciones de CUALQUIER Alt group tienen que ser verdaderas. En otras palabras, cada Alt group utiliza la logica OR
.
En este simple ejemplo para Contra (NES) el logro requiere, \"En un Stage mira hacia arriba o ag\u00e1chate.\" Veamos que hay en el Core group y en los Alt groups:
En el grupo core: 0x18 = 5
. Esto checa si el jugador se encuentra en un Stage.
En Alt 01
: 0xbc = 1
. Esto checa si el jugador esta viendo hacia arriba.
En Alt 02
: 0xbc = 2
. Esto checa si el jugador esta agachado.
Mientras el jugador se encuentre en un stage. El grupo core es verdadero. Si el jugador mira hacia arriba, Alt 01 es verdadero. Si el jugador se agacha, Alt 02 es verdadero. Si core + Alt 01 \u00d3 Alt 02 es verdadero, este logro se dispararia.
"},{"location":"Alt-Groups-es/#datos-sobre-los-alt-groups","title":"Datos sobre los Alt Groups","text":"+
o -
en la parte inferior izquierda del editor de logros (achievement editor). O
ESO puedes dejar el core group en blanco y a\u00f1adir ESTE en Alt 01
, y ESO en Alt 02
.Alt groups
tenga un logro, si el grupo Core es verdadero, solo un Alt tiene que ser verdadero para que el logro se dispare.Avanzado: Un Alt group puede ser utilizado para crear una condici\u00f3n ResetIf que solo se activa por cierto tiempo.
Si tu creas un Alt group que contenga una condici\u00f3n PauseIf y una condicion ResetIf, puedes utilizar la condici\u00f3n PauseIf para pausar la condici\u00f3n ResetIf sobre ciertas circunstancias y sin deshabilitar todo el logro. - Un Reset afecta a todos los grupos, incluyendo el grupo core. El Pause solo pausara el Alt group que contenga el PauseIf. - Esta l\u00f3gica puede ser aplicada a m\u00faltiples Alt groups en el mismo logro para proteger varios Reset de ser disparados por separado. - Ten en cuenta de tener m\u00ednimo un Alt group que sea verdadero o el logro no se disparara. La manera mas facil de hacer esto es crear un alt group extra que tenga una condici\u00f3n que sea Valor 1 = Valor 1
. - Cuidado: Si tu condici\u00f3n Pause es falsa, y la condici\u00f3n Reset tambi\u00e9n es falsa, el grupo va a ser considerado como verdadero al menos que tengas otra condici\u00f3n falsa en el grupo. Cuando utilizamos un Alt group para segregar un PauseIf, ten en cuenta de incluir siempre una condici\u00f3n que sea falsa como Valor 1 = Valor 0
.
Last 10 changes on this page:
[2019-04-16 11:13] eldexterr:
ES title changed to esAchievements can have groups added to them that allow for alternative requirements to unlock an achievement. These are called Alt Groups,
When using Alt groups, for the achievement to trigger, all the conditions in the Core group MUST be true. And then all the conditions of ANY Alt group must be true. In other words, each Alt group uses OR
logic.
In this dummy example for Contra (NES) the achievement requires, \"While on stage look up or crouch.\" Lets look at what's in the Core group and in the Alt groups:
In the core group: 0x18 = 5
. This checks that the player is on stage.
In Alt 01
: 0xbc = 1
. This checks that the player is looking up.
In Alt 02
: 0xbc = 2
. This checks that the player is crouching.
As long as the player is on stage. The core group is true. If the player looks up, Alt 01 is true. If the player crouches, Alt 02 is true. If core + Alt 01 OR Alt 02 are true, the achievement will trigger.
"},{"location":"Alt-Groups/#facts-about-alt-groups","title":"Facts about Alt Groups","text":"+
or -
button in the bottom left of the achievement editor. OR
that you can leave the core group blank and add this in Alt 01
, and that in Alt 02
.Alt groups
an achievement has, if the Core group is true, only one Alt has to be true for the achievement to trigger.Advanced: An Alt group can be used to create a ResetIf condition that is only active some of the time.
If you create an Alt group containing a PauseIf condition and a ResetIf condition, you can use the PauseIf condition to disable the ResetIf condition under certain circumstances without disabling the entire achievement.
Value 1 = Value 1
.Value 1 = Value 0
.Last 10 changes on this page:
[2019-06-18 15:48] Jamiras:
add whitespace so bullets are joined when document is published[2019-03-07 21:00] Jamiras:
Updated Alt Groups (markdown)[2019-02-12 09:38] meleu:
Created Alt Groups (markdown)AndNext
and OrNext
are used to associate more than one condition to a ResetIf, PauseIf, or Hit Count.
AndNext
and OrNext
can be chosen in the Flag column of the Achievement Editor
When a condition has the AndNext
flag, the condition must be true in addition to the following condition for the following condition to be considered true.
When a condition has the OrNext
flag, the condition or the following condition must be true for the following condition to be considered true.
You can chain multiple AndNext
and OrNext
conditions to create complex requirements for a single ResetIf
, PauseIf
, or Hit Count
.
When evaluating a combination of AndNext
and OrNext
conditions, each line is evaluated individually.
AndNext A=1\nOrNext B=1\nAndNext C=1\nOrNext D=1\nAndNext E=1\nResetIf F=1\n
Represents the following logical statement:
reset if (((((A = 1 && B = 1) || C = 1) && D = 1) || E = 1) && F = 1)\n
Alt Groups are still preferred over OrNext
for most use cases. They allow for multiple conditions to be present in each clause of the OR, and support more than two clauses.
AndNext
is not required for simple logic. All conditions in a group are automatically AND'd together. AndNext
just allows for two or more conditions to affect a single PauseIf
, ResetIf
, or Hit Count
.
Last 10 changes on this page:
[2021-01-25 13:18] meleu:
fix markdown links[2020-05-17 14:01] Jamiras:
update titleTabla de Contenidos - Iconos de Juegos - Dise\u00f1ando mis nuevos iconos - gu\u00eda est\u00e9tica - Flexibilidad para la gu\u00eda est\u00e9tica - Tengo que seguir esta gu\u00eda de est\u00e9tica? - Otros Tips de Dise\u00f1o de Iconos - Archivo y Tama\u00f1o del Icono - mejores practicas - Subiendo Iconos de juegos (Desarrollador) - Subiendo Iconos de Juegos (no-Desarrollador) - Game Icon Gauntlet - Reglas para proponer un nuevo icono de juego - La votaci\u00f3n en Icon Gauntlet - Que pasa con la imagen cuando subes el icono de un juego - Servidores de los Archivos de Iconos - Badges de Logros - Gu\u00edas y Tips en la Creaci\u00f3n de Badges - Tama\u00f1o y Archivo del Badge - mejores practicas - Subiendo un Badge (Desarrollador) - Subiendo un Badge (No-Desarrollador) - Que pasa con la imagen cuando subes un Badge - Servidor de los archivos de Badges - Donde se muestran los Badges e Iconos
"},{"location":"Badge-and-Icon-Creation-es/#iconos-de-juegos","title":"Iconos de Juegos","text":"Los Iconos son im\u00e1genes subidas por el usuario que sirven para representar a un juego por medio de la pagina. Debido a la prominencia en las pagina de juego y de usuarios estas reciben una atenci\u00f3n especial.
Icono en Sonic the Hedgehog's
Cuando dise\u00f1es el nuevo icono de un juego considera los siguientes puntos: La mayor\u00eda de la comunidad prefiere que los iconos utilicen el artwork original del juego; - que se encuentre dentro del juego, - o en documentos del juego, - o en el manual, - o material promocional, - y un sin fin; arte creado por el equipo original.
Utilizar dise\u00f1os mas actuales (o fan art) para personajes cl\u00e1sicos de v\u00eddeo juegos tal vez parezca prudente. Pero varios podr\u00edan encontrar esto como irrespetuoso al material original.
"},{"location":"Badge-and-Icon-Creation-es/#flexibilidad-para-la-guia-estetica","title":"Flexibilidad para la gu\u00eda est\u00e9tica","text":"~hacks~
donde hay muy poco material original disponible, utilizar arte no-official podr\u00eda ser razonable.El estilo que escoges para tus dise\u00f1os ya depende de ti. Puedes romper estas reglas siempre y cuando no rompas alguna lei de copyright, o subas algo vulgar, ofensivo o pornogr\u00e1fico.
"},{"location":"Badge-and-Icon-Creation-es/#otros-tips-de-diseno-de-iconos","title":"Otros Tips de Dise\u00f1o de Iconos","text":"Los desarrolladores de logros tienen permitido cambiar iconos de juegos en entradas que no cuenten con logros. Como desarrollador si tu quieres postear un respaldo de la antigua imagen eres libre de hacerlo pero no es realmente un requisito. Mientras creas un nuevo set de logros tu eres libre de crear o escoger que icono quieres para el juego.
Para cambiar el Icono de un juego primero ve a la pagina del juego y haz click en Dev tools:
Luego haz click en el bot\u00f3n de choose file que se encuentra resaltado. Encuentra el archivo en tu PC, y luego presiona el bot\u00f3n resaltado de submit:
Si un juego que ya cuenta con logros el cambio de Icono tiene que pasar por medio de Icon Gauntlet.
"},{"location":"Badge-and-Icon-Creation-es/#subiendo-iconos-de-juegos-no-desarrollador","title":"Subiendo Iconos de Juegos (no-Desarrollador)","text":"Si, absolutamente puedes, pero recuerda leer las regla de Icon Gauntlet. Tambien seria bueno darle un vistazo a las reglas de dise\u00f1o para nuevos iconos de juegos.
"},{"location":"Badge-and-Icon-Creation-es/#game-icon-gauntlet","title":"Game Icon Gauntlet","text":"El game Icon Gauntlet enfrenta un icono posteado por un usuario en una pelea cara-a-cara con el icono actual. El voto popular es lo que toma lugar en #Icon-Gauntlet este canal de Discord es lo que determina que se queda y que se va. Todos los usuarios verificados de Discord son elegibles de ingresar su voto. Spawncalibur es el administrador en todos los aspectos de esta din\u00e1mica.
"},{"location":"Badge-and-Icon-Creation-es/#reglas-para-proponer-un-nuevo-icono-de-juego","title":"Reglas para proponer un nuevo icono de juego","text":"[img=http://YourImageURL.png]
[game=GameID]
. Puedes encontrar el ID del juego viendo el URL de la pagina de este)Cuando se sube, tu imagen es reducida a un PNG de 32-bits colores y a un tama\u00f1o de 96x96. Si subes un icono que sea mas peque\u00f1o que 96x96 la imagen va a retener su tama\u00f1o original.
Lo mismo pasa para los Badges, excepto que el tama\u00f1o maximo para los badges es de 64x64. (El de Imagenes de Perfil es de 128x128.)
"},{"location":"Badge-and-Icon-Creation-es/#servidores-de-los-archivos-de-iconos","title":"Servidores de los Archivos de Iconos","text":"Los Iconos son almacenados en el sitio de la siguiente manera y lugar: i.retroachievements.org/Images/000705.png
. Ellos son almacenados en el mismo folder donde se almac\u00e9n todas las dem\u00e1s im\u00e1genes como las caratulas y las screenshots por ejemplo.
Los Badges (Emblemas) son las imagenes creadas por el usuario para cada logro en individuo de un juego.
Si te encuentras creando logros eres libre de subir badges para ellos.
Los Badges se suben con las herramientas de desarrollador del emulador por medio del editor de logros:
O tambi\u00e9n puedes seleccionar una imagen prefabricada o encontrar otras im\u00e1genes que haz subido por medio de la lista desglosable:
Subir archivos .jpg
, .jpg
o .gif
. No es completamente importante el formato, pero si es completamente recomendable que la imagen sea cuadrada.
Si el juego ya cuenta con badges existentes \u00e9chale una checada y sigue el procedimiento para Subiendo Badges (No-Desarrollador).
"},{"location":"Badge-and-Icon-Creation-es/#subiendo-badges-no-desarrollador","title":"Subiendo Badges (No-Desarrollador)","text":"Postea todas las im\u00e1genes nuevas que quieres remplazar en el foro oficial del juego. Tambi\u00e9n enlista cuales badges quieres remplazar. Un desarrollador o un moderador va a evaluar tu trabajo y decidir si, s\u00ed ser\u00e1n remplazados. Si as\u00ed lo deciden se posteara un respaldo de los iconos actuales en el foro, y tambi\u00e9n se remplazaran por los nuevos.
Este respaldo es necesario si llega a existir el caso en el que hay desacuerdos con los nuevos badges. En estos casos algunos o todos los badges podr\u00edan ser revertidos a los anteriores.
Es mas f\u00e1cil hacer una referencia a los viejos y nuevos badges como links de img
: - ejemplo: [img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
- (Dev) percatate de capturar los antiguos ID de los badges del Editor de Logros antes de subir los nuevos - El ID de los nuevos badges aparecer\u00e1n en el Editor de Logros despu\u00e9s de que sean subidos. - ambos valores tambi\u00e9n pueden ser capturados desde el sitio web, pero tienes que copiar el link de la imagen como el hover link del logro.
Aqu\u00ed hay un ejemplo perfecto de como hacer un respaldo apropiado de Badges reci\u00e9n cambiados.
"},{"location":"Badge-and-Icon-Creation-es/#que-pasa-con-la-imagen-cuando-subes-un-badge","title":"Que pasa con la imagen cuando subes un Badge","text":"Cuando se sube, tu archivo es convertido a lo siguiente: - 64x64 PNG de 32-bit de color. Ejemplo:
![00136](https://user-images.githubusercontent.com/8508804/37221161-b9b0bb02-23a7-11e8-81b2-3d09fa7456af.png)\n
Estos se almacenan en el sitio de la siguiente manera y lugar: i.retroachievements.org/Badge/00136.png
; el numero coincide con el ID de Badges que se encuentra con el Editor de Logros.
La im\u00e1genes actuales no se les cambia el tama\u00f1o. La imagen es escalada por el navegador al tama\u00f1o correspondiente. Algunos navegadores como el de Android muestran de una manera mas clara las im\u00e1genes mas grandes. Tambi\u00e9n puedes aumentar el zoom de tu navegador para ver aun mas claro.
Se espera que en la versi\u00f3n futura del sitio, los Iconos y Badges se muestren en tama\u00f1o completo en otros lugares.
"},{"location":"Badge-and-Icon-Creation-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-15 10:10] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-15 10:06] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-15 09:58] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-12 16:01] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-04-18 17:26] eldexterr:
Document created but still not finishedLink para o texto em ingl\u00eas: Badge and Icon Creation
"},{"location":"Badge-and-Icon-Creation-pt_BR/#introducao","title":"Introdu\u00e7\u00e3o","text":"Emblemas e \u00edcone s\u00e3o usados em todo o site e s\u00e3o uma boa maneira de representar a conquista no jogo.
Emblemas s\u00e3o as imagens para os achievements de um jogo. Eles s\u00e3o armazenados no site da seguinte maneira e local: i.retroachievements.org/Badge/00136.png
; o n\u00famero coincide com o ID do emblema encontrado no Achievement editor.
Os \u00edcones s\u00e3o armazenados no site da seguinte maneira e colocam: i.retroachievements.org/Images/000705.png
, armazenados na mesma pasta que outras imagens do jogo, como a caixa do jogo (game box) e screenshots do jogo.
Quando carregado, seu arquivo \u00e9 convertido no seguinte:
N\u00e3o \u00e9 totalmente importante como o arquivo \u00e9 formatado antes do upload, mas, desde que seja quadrado, o arquivo ser\u00e1 carregado e convertido facilmente. Naturalmente, \u00e9 importante n\u00e3o infringir nenhuma lei de direitos autorais ou fazer upload de algo vulgar, ofensivo ou pornogr\u00e1fico, com as poss\u00edveis consequ\u00eancias de ser advertido, potencialmente reportado e potencialmente removido da RetroAchievements.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#formato-de-icone","title":"Formato de \u00edcone","text":"Quando carregadas, as imagens do seu \u00edcone s\u00e3o reduzidas para um PNG em cores de 32 bits 96x96 no m\u00e1ximo. Se voc\u00ea fizer o upload de um \u00edcone menor que 96x96, a imagem enviada manter\u00e1 seu tamanho original.
O mesmo vale para os emblemas, exceto que o tamanho m\u00e1ximo dos emblemas \u00e9 64x64. (O m\u00e1ximo de imagens do perfil \u00e9 128x128.)
Lugares e tamanhos Os \u00edcones s\u00e3o exibidos:
A mesma coisa que com os emblemas, a imagem real n\u00e3o est\u00e1 sendo redimensionada apenas o tamanho da tela, se voc\u00ea usar o Android ou aumentar o zoom do seu navegador, voc\u00ea ver\u00e1 as imagens com mais clareza.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#diretrizes-e-dicas","title":"Diretrizes e Dicas","text":"Como o site n\u00e3o tem, na maioria dos casos, um rollback permanente / estilo git-rollback / estilo wiki para todas as a\u00e7\u00f5es tomadas em um conjunto, \u00e9 recomendado que quando um desenvolvedor faz altera\u00e7\u00f5es de qualquer tipo em um conjunto dele no f\u00f3rum para esse jogo.
Em rela\u00e7\u00e3o aos emblemas, publique na p\u00e1gina do f\u00f3rum do jogo uma das seguintes op\u00e7\u00f5es:
[img = \"https://retroarchievement.org/badge/1234]
)Aqui est\u00e1 um exemplo perfeito de como fazer o backup corretamente de emblemas alterados.
\u00e9 recomendado, para ajudar a manter tudo em ordem, de modo que, nos casos em que as revers\u00f5es ou altera\u00e7\u00f5es sejam adequadas, \u00e9 muito mais f\u00e1cil faz\u00ea-las.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-10-11 00:45] CoolCanuck:
https[2018-03-26 23:01] meleu:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-26 02:52] KingDice001:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-26 02:52] KingDice001:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-25 23:13] 7Mogami7:
Created Badge and Icon Creation pt_BR (markdown)Icons are user uploaded images that are used throughout the site to represent a game. Due to their prominence on game and user pages they are worth special attention. These icons should be representative of the game and its common themes, and therefore should be instantly recognizable.
Sonic the Hedgehog's game Icon
Achievement Developers are allowed to change game icons freely for entries that do not have achievements. As a Developer if you'd like to post a backup of the previous image there, if there is one, or backup yours in the forum you're free to but not required. As you create a new set of achievements you are free to create or choose the image you'd like to use as the game icon.
To change a game icon first go to the game page and click on the Dev tools:
Then click the choose file button highlighted. Find the file on your PC, and then press the submit button highlighted:
If a game has existing achievements, game icon changes need to go through revision process.
"},{"location":"Badge-and-Icon-Creation/#uploading-game-icons-non-developer","title":"Uploading game icons (non-Developer)","text":"Yes, you absolutely can, but they are subject to revisions. It will also be good to review the guidelines for designing new game icons.
"},{"location":"Badge-and-Icon-Creation/#what-happens-to-the-image-when-you-upload-a-game-icon","title":"What happens to the image when you upload a game Icon","text":"When uploaded, your Icon images will be rejected unless they are a 96x96 32-bit colour PNG. If you upload an Icon that is smaller than 96x96 the image uploaded will retain its original size.
The same is true for Badges, except Badge size is 64x64. (Profile images maximum is 128x128.)
"},{"location":"Badge-and-Icon-Creation/#icon-server-files","title":"Icon server files","text":"Icons are stored on the site in the following manner and place: i.retroachievements.org/Images/000705.png
. They are stored in the same server folder as other game images such as the game box and game screenshots.
Badges are the user created images for individual achievements of a game.
If you are creating new achievements you are free to upload badges for them.
Badges are uploaded from within the emulator developer tools while in the achievement editor:
Or you can select a prefabricated image or find other images you've uploaded in the drop down box:
Upload .png
file types.
If the game has existing badges review and follow the procedure for Uploading Badges (Non-Developer).
"},{"location":"Badge-and-Icon-Creation/#making-new-badges-for-existing-achievements","title":"Making new Badges for existing achievements","text":"If you'd like to make improved badges for existing achievements, you can. Your images will go through the revision process, which will put your creations to a community vote.
Post all the new images you'd like to replace current ones in the Icon Gauntlet Forum Topic. Also post all the badges that the new images are meant to replace. They will be placed for a community review by as a single vote. After a community vote is complete if you are a dev you can replace the Badges or if you are not, ask for help in the #help-me channel on Discord or in the Icon Gauntlet Forum Topic.
It's easiest to just reference the old and new Badges as img
links:
[img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
Here is a perfect example of how to effectively post new and old Badges.
"},{"location":"Badge-and-Icon-Creation/#what-happens-to-the-image-when-you-upload-a-badge","title":"What happens to the image when you upload a Badge","text":"When uploaded, your file is converted into the following: - 64x64 32-bit colour PNG. Example:
![00136](https://user-images.githubusercontent.com/8508804/37221161-b9b0bb02-23a7-11e8-81b2-3d09fa7456af.png)\n
They are stored on site in the following manner and place: i.retroachievements.org/Badge/00136.png
; the number coincidences with the badge ID found in the Achievement.
The actual images are not being resized. The image is scaled by the browser to the display size. Some browsers such as Android's browser will display larger images more clearly. You can also increase your browser zoom to see them more clearly.
It's anticipated that in a future website version, Icons and Badges will be displayed at full size in other places.
"},{"location":"Badge-and-Icon-Creation/#creating-good-screenshots","title":"Creating Good Screenshots","text":"Most emulators have a screenshot function that takes screenshots at the system's native resolution, regardless of your output resolution. It can be helpful to leverage these to get crisp screenshots without added distortion or filters. For example, in RALibretro, the print screen key will take a screenshot in this manner.
"},{"location":"Badge-and-Icon-Creation/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-26 13:48] The Mystical One:
Added a note about screenshots.[2023-06-21 07:59] The Mystical One:
Removed jpg and gif references.[2023-06-13 13:05] The Mystical One:
Added new rules about game icons as proposed by art team and approved by DevCompliance. Cleaned up a few other details.[2023-05-31 10:21] The Mystical One:
Fixing badge and icon size design rules.[2021-07-01 09:00] StingX2:
Added \"These icons should be representative of the game and its common themes, and therefore should be instantly recognizable.\"[2021-05-10 21:09] HolyShinx:
Updated Badge and Icon Creation (markdown)[2021-04-26 13:26] meleu:
fix links[2020-10-25 18:30] meleu:
Updated Badge and Icon Creation (markdown)[2020-03-23 06:31] televandalist:
Fixed several typos. Removed Game Icon Gauntlet information (going to merge it with revisions) and linked to the revision page where applicable.[2019-11-17 22:14] meleu:
remove Table of Contents (it was bad formatted)When someone mentions badges, they could be talking about one of two things: - Achievement badges, which are user-created images associated with the individual achievements of a set. - Sonic the Hedgehog's first Badge - #00199) - - Game icons, also known as mastery badges, which is a single image used to represent an achievement set. - Sonic the Hedgehog's game icon -
"},{"location":"Badge-and-Icon-Guidelines/#badge-format-and-sizes","title":"Badge Format and Sizes","text":"Achievement badges should refer in some way to what the achievement is about - i.e. a picture of the boss, level or collectible that the achievement requires the player to get to.
"},{"location":"Badge-and-Icon-Guidelines/#designing-new-game-icons","title":"Designing New Game Icons","text":""},{"location":"Badge-and-Icon-Guidelines/#game-mastery-icons-must-represent-the-associated-game-by-using-official-art-only","title":"Game Mastery Icons must represent the associated game by using 'Official' art only.","text":"Developers: - Achievement Developers are allowed to change game icons freely for entries that do not have achievements. As a Developer if you'd like to post a backup of the previous image there, if there is one, or backup yours in the forum you're free to but not required. As you create a new set of achievements you are free to create or choose the image you'd like to use as the game icon. - To change a game icon first go to the game page and click on the Dev tools: - Then click the choose file button highlighted. Find the file on your PC, and then press the submit button highlighted:
If a game has existing achievements, game icon changes need to go through revision process.
Non-Developers: - Yes, you absolutely can, but they are subject to revisions. It will also be good to review the guidelines for designing new game icons.
"},{"location":"Badge-and-Icon-Guidelines/#uploading-badges","title":"Uploading Badges","text":"For Developers:
If you are creating new achievements you are free to upload badges for them.
Badges are uploaded from within the emulator developer tools while in the achievement editor:
Or you can select a prefabricated image or find other images you've uploaded in the drop down box:
"},{"location":"Badge-and-Icon-Guidelines/#badge-server-files","title":"Badge Server Files","text":"i.retroachievements.org/Images/000705.png
. They are stored in the same server folder as other game images such as the game box and game screenshots.i.retroachievements.org/Badge/00136.png
; the number coincidences with the badge ID found in the Achievement.If you'd like to make improved badges for existing achievements, you can. Your images will go through the revision process, which will put your creations to a community vote.
Post all the new images you'd like to replace current ones in the Icon Gauntlet Forum Topic. Also post all the badges that the new images are meant to replace. They will be placed for a community review by as a single vote. After a community vote is complete if you are a dev you can replace the Badges or if you are not, ask for help in the #help-me channel on Discord or in the Icon Gauntlet Forum Topic.
It's easiest to just reference the old and new Badges as img
links: - Example: [img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
- (Dev) Make sure to capture the old Badge ID from the Achievement Editor before uploading the new Badge - The new Badge ID will appear in the Achievement Editor after uploading it. - Both values can also be captured from the web site, but you have to copy the image links as the hover link is for the achievement.
Here is a perfect example of how to effectively post new and old Badges.
"},{"location":"Badge-and-Icon-Guidelines/#to-do","title":"To Do","text":"Last 10 changes on this page:
[2023-06-21 09:42] The Mystical One:
Adding the Mastery Icon to these guidelines.[2023-06-03 03:55] televandalist:
Created Badge and Icon Guidelines (markdown)BitCount
is a shortcut for counting the number of bits set in a byte.
BitCount Mem 0x1234 == Value 6\n
is the same as
AddSource Bit0 Mem 0x1234\nAddSource Bit1 Mem 0x1234\nAddSource Bit2 Mem 0x1234\nAddSource Bit3 Mem 0x1234\nAddSource Bit4 Mem 0x1234\nAddSource Bit5 Mem 0x1234\nAddSource Bit6 Mem 0x1234\n Bit7 Mem 0x1234 == Value 6\n
and would be true for 0x3F
(00111111), 0xDB
(11011011), 0xEE
(11101110), etc.
Its most common use is counting collectibles for a Measured condition.
It can be combined with other flags like Delta.
BitCount Mem 0x1234 != BitCount Delta 0x1234\n
If you just want to make sure all the bits are set and don't need to worry about some subset of bits being set, you should check for concrete values (i.e. Eight Bit 0x1234 = 0xFF
or Lower4 0x1234 = 0x0F
).
WARNING: BitCount always counts all eight bits in a byte. If you only need 6 or 7 bits, you should use the AddSource chain in case the other bits are used for something else.
"},{"location":"BitCount-Size/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-07-09 15:18] RALordAndrew:
Double-bracket links do not work on docs.retroachievements.org[2021-04-22 09:12] Jamiras:
Updated BitCount Size (markdown)[2021-04-22 09:06] Jamiras:
Updated BitCount Size (markdown)[2020-05-17 14:09] Jamiras:
add BitCountTema Avanzado para Desarrolladores
"},{"location":"Bonus-Sets-es/#que-es-un-set-bonus","title":"\u00bfQue es un Set Bonus?","text":"\u00bfSe te ocurren algunos verdaderos retos para retar al jugador mas masoquista mientras dise\u00f1as un set? O tal vez \u00bfalgunos extras que no est\u00e1n incluidos en el set core? \u00bfTuviste muchas solicitudes de algo que no encajaba del todo en el set core? RetroAchievements da la bienvenida y motiva todos esos retos y diversi\u00f3n, pero como siempre nos gusta hacerlo de una manera organizada. Puntos Bonus para sets populares es una grandiosa idea!
"},{"location":"Bonus-Sets-es/#que-deberia-de-incluir-en-un-set-bonus","title":"\u00bfQue deber\u00eda de incluir en un Set Bonus?","text":"Sets dise\u00f1ados para probar la maestr\u00eda en un juego y proveer nuevos y divertidos retos. Siempre deber\u00edas seguir el estandarte de \"\u00bfEs esto realmente diferente?\" cuando te encuentres haciendo Sets Bonus.
Tu obviamente deber\u00edas comentar la idea primero . Es tu trabajo y una regla que se tiene que cumplir.
Actualmente, crear un set Bonus no es f\u00e1cil. Tienes que b\u00e1sicamente aplicar un hack que no destruya el ROM a una copia de la ROM original y lanzar el parche IPS que incluye las diferencias para que la gente lo pueda disfrutar. Parchear un ROM con el parcheador IPS es relativamente f\u00e1cil. Un jugador que disfrute de muchos ROM hacks para probar retos adicionales a de estar bastante acostumbrado. Sin embargo es algo que tienes que aceptar para lanzar tu Set Bonus, crear un parche no-destructivo.
Algunas veces un administrador (as\u00ed como Salsa, que es la cabecilla del proyecto de los Sets Bonus y del creado de parches) puede ser capaz de guiarte por la direcci\u00f3n correcta. Si tu solamente desarrollas logros, adentrarte en la creaci\u00f3n del parche puede llegar a ser algo complicado y confuso.
Si tu eres un programador o un artista y ya estas consiente del uso apropiado de las herramientas de hacking, los pasos se encuentras mas abajo para como generar un parche IPS cosmetico. Recuerda seguir los lineamientos!
NOTA
Este meto cambiara cuando los Sets Bonus sea una funci\u00f3n integrada de RetroAchievements. Mientras tanto puede proveer parches IPS mientras esta funci\u00f3n aun es agregada.
"},{"location":"Bonus-Sets-es/#paso-1-obten-el-juego-original","title":"Paso 1 - Obt\u00e9n el juego original","text":"El primer paso para dise\u00f1ar un Set Bonus es conseguir el ROM original del juego. Recuerda que nosotros no podemos proveer un m\u00e9todo descarga para eso. \u00bfYa tienes tu Dumpeador/Extractor de ROMs a la mano?
"},{"location":"Bonus-Sets-es/#paso-2-crea-una-copia-del-rom-original","title":"Paso 2 - Crea una copia del ROM original","text":"Este es el archivo que vas a utilizar para editar para convertirlo en el ROM para tu set Bonus
"},{"location":"Bonus-Sets-es/#paso-3-agarra-un-editor-hexadecimal-o-una-herramienta-de-modificacion-de-sprites-sprite-hacking-tool","title":"Paso 3 - Agarra un editor hexadecimal o una herramienta de modificaci\u00f3n de sprites (sprite-hacking tool).","text":"Puedes saltarte este paso si es que ya cuentas con uno. Algunos juegos ya cuenta con herramientas de hackeo especializadas. Algunas de ellas se encuentran aqu\u00ed disponibles en github, y tambi\u00e9n hay bastantes de ellas en ROMHacking.net, que esto aria tu trabajo aun mas f\u00e1cil. Vas a necesitar un editor mas gen\u00e9rico si el juego no cuenta con una herramienta. La edici\u00f3n tiene que ser lo suficiente para que se puede crear un nuevo MD5sum para el archivo del ROM. Herramientas para editar tu ROM pueden ser encontradas en la Pagina de Utilidades de ROMHacking.net's.
Aqu\u00ed hay algunas b\u00fasquedas que te podr\u00edan resultar \u00fatiles:
Por favor \u00e9chale a la sesi\u00f3n de Parches Cosm\u00e9ticos para Sets Bonus de los lineamientos del Linkeado de ROMs para mas informaci\u00f3n.
ESTE PASO REQUIERE PEDIR APROBACI\u00d3N ANTES DE SEGUIR AVANZANDO
Es algo integro que solicites una aprobaci\u00f3n antes de agregar/linkear cualquier cosa a RetroAchievements. Es tu trabajo y es parte del C\u00f3digo de Conducta del Desarrollador de RetroAchievements.
"},{"location":"Bonus-Sets-es/#paso-5-agrega-el-md5-al-nuevo-set-bonus","title":"Paso 5 - Agrega el MD5 al nuevo Set Bonus","text":"Despu\u00e9s de recibir la aprobaci\u00f3n, carga tu ROM parcheado en un Emulador de RA, y sigue las instrucciones de como linkear tu nuevo Set Bonus a tu ROM en el sitio web. Si tu juego produce un MD5 igual al de otro juego, procura hacer mas modificaciones al ROM para que este genere un MD5 nuevo otra vez y lo cargue como un juego nuevo.
"},{"location":"Bonus-Sets-es/#paso-6-modifica-la-pagina-de-detalles-del-set","title":"Paso 6 - Modifica la pagina de detalles del set","text":"Navega por tu perfil de usuario y procede a la nueva pagina de tu juego que deber\u00eda de aparecer ahora. Puedes editar los detalles del juego, capturas de pantalla, e informaci\u00f3n desde el panel de Dev Options en la nueva pagina del set.
PREG\u00daNTALE A UN ADMINISTRADOR PARA QUE RESE\u00d1E TU TRABAJO DESPU\u00c9S QUE HUBIERAS COMPLETADO ESTE PASO
"},{"location":"Bonus-Sets-es/#paso-7-crea-logros-para-el-set-anuncialo-y-lanzalo","title":"Paso 7 - Crea logros para el set, an\u00fancialo y l\u00e1nzalo.","text":"Ahora ya puedes empezar a desarrollar logros para tu Set Bonus. Cuando termines, anuncia tu set e incluye tu parche IPS en el tema del foro despu\u00e9s de a ver pasado los logros a Core. Actualmente los miembros necesitan aplicar tu parche al juego original as\u00ed como lo hiciste en tus pruebas para que ellos puedan jugar tu Set Bonus. No esta permitido lanzar el ROM parcheado en si. Tu tienes que SOLAMENTE lanzar el Parche IPS para cumplir con los lineamientos del sitio de no compartir p\u00fablicamente material con derechos de autor/copyright en RetroAchievements).
"},{"location":"Bonus-Sets-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-21 11:01] eldexterr:
Updated Bonus Sets es (markdown)[2019-05-21 11:00] eldexterr:
Created Bonus Sets es (markdown)En este ejemplo veras como evitar el problema de que un contador se incremente dos veces en el mismo frame combinando un SubSource y AddHits.
En la libreria del Game Boy Advance hay un plataformero Navide\u00f1o conocido como Santa Claus Jr. Advance. Hay algunos logros de coleccionar varios dulces en cada uno de los Stages Bonus.
Esos logros se suponen que tendrian que ser algo simple, como esto:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xDULCES != Delta 0xDULCES (N) 2 ResetIf 0xSTAGE != Value 0xBONUSEsto se traducir\u00eda \"checa si el contador de dulces cambio N
veces en el stage bonus\".
Nota: estamos utilizando 0xDULCES != Delta 0xDULCES
(utilizando !=
, y no >
) porque cuando el jugador cuenta con 99 dulces y colecciona uno mas el contador se va a cero.
Sin embargo, hay un aspecto en este juego (y muchos otros) donde si el jugador colecciona 2 dulces a la vez el contador va a aumentar por 2 en el mismo frame. Cuando pasa el contador de hits es aumentado por uno mientras que el contador de dulces aumento en dos. Esto, obviamente, arruina la l\u00f3gica que utilizamos arriba.
En manera que podamos evitar este problema tenemos que utilizar la t\u00e9cnica de utilizar SubSource
para contar incrementos espec\u00edficos combinado con una AddHits
flag.
Echemos un vistazo a la l\u00f3gica del logro y as\u00ed poder ver la explicaci\u00f3n:
Variables (Addresses)
0x80dc
: Contador de Dulces.0x809c
: ID de Stage.As\u00ed que ahora la estructura de logro seria de esta manera:
Condiciones
Junto con la condici\u00f3n 2, es un truco para ver si 0xDULCES - Delta 0xDULCES = 2
. En otras palabras, el contador de dulces fue incrementado por dos.
Utilizando a la vez con la condici\u00f3n 1 (como se explica arriba) y 3. Como se explica en su respectiva pagina, cuando la condici\u00f3n de AddHits
es verdadera, el hit counter en la siguiente condici\u00f3n es incrementado. Entonces , en nuestro ejemplo de aqu\u00ed, cuando condici\u00f3n 2 es verdadera, el hitcounter en condici\u00f3n 3 es incrementado.
Contador cuando el contador de dulces cambia.
Resetear contador si no se encuentra en un Stage Bonus.
Todas esta condiciones se pueden traducir como \"mientras est\u00e9s en un stage bonus, salta el logro si el contador de dulces cambia 99 veces, y si el contador de dulces es incrementado por 2 en el mismo frame, a\u00f1ade un cambio extra al contador de dulces.\"
"},{"location":"Circumvent-the-Problem-of-a-Counter-Incrementing-Twice-in-the-Same-Frame-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:33] meleu:
fix broken links[2019-04-16 11:15] eldexterr:
ES title changed to esIn this example you'll see how to circumvent the problem of a counter incrementing twice in the same frame by combining SubSource and AddHits.
In the Game Boy Advance library there's a Christmas platformer game called Santa Claus Jr. Advance. There are some achievements for collecting all candy canes in each one of the bonus stages.
Such achievements were supposed to be quite simple, like this:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCANDIES != Delta 0xCANDIES (N) 2 ResetIf 0xSTAGE != Value 0xBONUSThis translates into \"check if the candy canes counter changed N
times in the bonus stage\".
Note: we're using 0xCANDIES != Delta 0xCANDIES
(using !=
, and not >
) cause when the player has 99 candies and collect one more, the counter goes to zero.
However, there is an aspect in this game (and many others) where if the player collect 2 candy canes simultaneously the counter is increased by 2 in the same frame. When it happens the hit counter is increased by one while the candy counter is increased by two. This, obviously, ruins the logic used above.
In order to circumvent this issue we have to use that technique of using SubSource
to count specific increments combined with the AddHits
flag.
Let's take a look at the achievement logic and then we'll see the explanation:
Addresses
0x80dc
: Candy Canes counter.0x809c
: Stage ID.So now the structure of the achievement is going to be like this:
Conditions
Together with condition 2, is a trick used to check if 0xCANDIES - Delta 0xCANDIES = 2
. In other words, the candy counter was incremented by two.
Used together with condition 1 (as explained above) and 3. As explained in its respective page, when the AddHits
condition is true, the hit counter in the next condition is incremented. Therefore, in our example here, when condition 2 is true, the hitcounter in condition 3 is incremented.
Count when the candy counter changes.
Reset the counter if not in the Bonus stage.
All these conditions could be translated as \"while in the bonus stage, trigger the achievement if the candy counter changes 99 times, and if the candy counter is incremented by 2 in the same frame, count an extra change in the candy counter.\"
So, now it is 100% solved, right? Well, actually, almost. There is still a very minor exception. Remember it was said before that !=
was being used instead of >
because when the player has 99 candies and collect one more, the counter goes to zero
?
This means that, if we get two canes in the same frame (which is already rare), there's a very small possibility that this change will be from 98 -> 00
or from 99 -> 01
. In these only two cases our code won't work, because 00 - 98
is not 2, it is -98
. Same thing for 01 - 99
, it is not 2, it is also -98
.
Despite being a very unlikely possibility, we should treat this case too. So we're gonna add two more requirements to the code, and it will end up looking like this:
It is the same as before, with the only changes being lines 3 and 4, which represents an extra SubSource + Add Hits
to check if 0xCANDIES - Delta 0xCANDIES = -98
, only to take care of this very minor exception just mentioned.
And now it is solved!
"},{"location":"Claims-System/","title":"Claims System","text":"To make a claim, go to the Developer panel of a game entry, which will contain one of the following links: - Make Claim - Make Claim and Forum Topic (Junior Developers require a forum topic to be made on their behalf) - Make Revision Claim - Make Collaboration Claim - Make Collaboration Revision Claim
"},{"location":"Claims-System/#dropping-a-claim","title":"Dropping a Claim","text":"Dropping a claim is as simple as selecting the \"Drop Claim\" link in the Developer panel.
"},{"location":"Claims-System/#extending-a-claim","title":"Extending a Claim","text":"Developer Compliance
for subsequent renewals. The report should provide an overview of the development situation and include details such as:To mark a claim as complete, you can select the \"Complete Claim\" link in the Developer panel. Doing so will free the claim slot and notify users who have a set request for the game, via email, that new achievements have been added for that game.
When selecting \"Complete Claim\" within 24 hours of making the claim, a prompt will inform the developer that they should have approval before marking it as complete. Approval must be from someone on the Developer Compliance team.
"},{"location":"Claims-System/#collaboration-claims","title":"Collaboration Claims","text":"Collaboration claims are made when there is already a primary claim on a game and acts as a \"child\" of said primary claim. It will inherit the primary claim's expiration date. Extending or completing a collaboration claim can only be done by the developer with the primary claim.
There are several ways to view claim information: - Every game entry will show if it has a claim or not - A developer's profile will show which claims they currently have active. - The site navbar contains New Sets & Revisions
, Sets in Progress
, My Claims
, and Expiring Claims
. - The set request list will show if a game has an active claim.
Each developer is allowed four primary claims. Junior developers are allowed one primary claim. However, the following claim types can be marked as free claims and therefore will not take up a slot: - Claims made specifically for console rollouts. This is due to the unpredictable nature of rollouts as well as a way to reduce stress/pressure on developers. - If a developer makes a revision or subset claim, the claim can be set to \"Own Revision\" depending on criteria I haven't copy-pasted into this section yet. - Collaboration claims.
"},{"location":"Claims-System/#important-notes","title":"Important Notes","text":"Last 10 changes on this page:
[2024-03-12 07:43] The Mystical One:
Fixed confusion between when a mandatory detailed progress report is needed as the two metrics given were not equivalent before.[2024-02-07 16:40] The Mystical One:
Updated Claims System (markdown)[2024-02-02 13:08] The Mystical One:
Updated emphasis on new forum post.[2024-02-02 13:07] The Mystical One:
Removed a redundancy where the 'one month' cooldown unnecessarily appeared twice.[2024-01-26 09:08] The Mystical One:
Updated Claims System (markdown)[2024-01-26 08:56] The Mystical One:
Added new claims enforcement rules, including requirement to comment on progress prior to extending a claim, and clearer guidelines for what to do at the one-year mark.[2023-06-05 18:08] televandalist:
Typos[2023-06-04 19:37] televandalist:
Added the notes under the section for collaboration claims. These were taken from the DevCoC and slightly reworded.[2023-06-03 04:56] televandalist:
Updated Claims System (markdown)[2023-06-03 04:39] televandalist:
Updated Claim System (markdown)Code notes are a vital part of achievement development. They provide valuable context to memory addresses used in achievement creation. Good code notes can make future achievement troubleshooting a breeze for developers, while bad code notes can make it a nightmare. This guide will help developers create clear, helpful, and consistent code notes that can be used by any developer looking at their sets in the future.
"},{"location":"Code-Notes/#how-to-make-code-notes","title":"How to Make Code Notes","text":"Code notes are made by the developer in the Memory Inspector as they are RAM digging a game. This allows for easily seeing where sizes of notable addresses as well as areas in the RAM that hold important values. Code notes can be added, deleted and updated from the Memory Inspector. Code notes that are already created can be updated or deleted from the games' \"Code Notes\" page on the website. This is intended for quick fixes to notes and not intended as the main form of code note modification.
There are multiple ways to specify a memory address that will be recognized by the Memory Inspector highlighting. Any code note that does not specify a valid size will cause the Memory Inspector to highlight the byte the note is for. Any number of bit and byte lengths will be recognized by the Memory Inspector highlighting. Many developers will enclose the address size in square brackets ([]
) to make it more noticeable in the full note.
[Lower4]
, [Upper4]
[8-bit]
, [16-bit]
, [24-bit BE]
, [32-bit]
, [Float]
[1 byte]
, [2 bytes]
, [4 bytes]
, [8-bytes]
[128 bits]
, [78 bytes]
, [428 bits]
, [1024 bytes]
Very often you will run into an address that uses each bit within the address to store data. Noting the individual bits won't affect any Memory Inspector highlighting, though each bit should be properly noted in the code note. Some people choose to mark the size for these as [Bitfield] or [Bitflags] instead of [8-Bit].
"},{"location":"Code-Notes/#adding-values-and-labels","title":"Adding values and labels.","text":"When you need to label specific values or bit meanings in a note, here are some things to keep in mind.
0x
so that it is clear the value is in hex. This is especially important if none of your values use characters A-F.(Values below are decimal)
Simple address types cover the very basic address that are needed for nearly every achievement set and are often the some of first addresses noted when RAM digging. Often easily described in a line or two. These may include health, lives, in game currency, level, X/Y positions, etc...
"},{"location":"Code-Notes/#good-examples","title":"Good Examples","text":"Good examples here include size, description, and different values or affects on the values.
[8-bit] Difficulty\n0x01 - Easy\n0x02 - Normal\n0x03 - Hard\n
[16-bit] Player Health\nMax health is 0x1200, each hit reduces it by 0x8\n
"},{"location":"Code-Notes/#bad-examples","title":"Bad Examples","text":"Difficulty\n
health\n
"},{"location":"Code-Notes/#map-or-screen-id-types","title":"Map or Screen ID Types","text":"Map and Screen ID type code notes are very often used to determine location within the game and commonly used in level completion or item collection achievements.
"},{"location":"Code-Notes/#good-example","title":"Good Example","text":"Good examples here include the various values that the address can take throughout the game. All addresses used in the achievement logic are noted in detail.
[8-bit] Screen ID\nChapter I\n0x36 - Initial Screen with woman's face\n0x0b - Taxi ride opening scene\n0x07 - Outside of apartment (Day 1)\n0x04 - Apartment main hall (Day 1)\n0x16 - Apartment main hall (Day 2)\n\nChapter II\n0x37 - Driving intro cutscene\n0x2b - Outside of Inn (Day 1)\n0x2c - Inn main room (Day 1)\n
"},{"location":"Code-Notes/#bad-example","title":"Bad Example","text":"screen id\n
"},{"location":"Code-Notes/#scores","title":"Scores","text":"There are numerous way a game can store the players scores with memory, as such there are numerous ways to write the score code note out.
"},{"location":"Code-Notes/#good-examples_1","title":"Good Examples","text":"Good examples here will specify the size, which digits of the score are being represented, how the on screen score is calculated from the value in memory, Binary Coded Decimal (BCD) notation if applicable, as well any any other important details.
[1 byte] 1P display score, digits 0000XX00 in BCD\n
[16bit][DEC] P2 Score XXXX0000\n
Score [24-Bit BE BCD] (Determines Rank)\n0-9=Pauper\n0-99=Peasant\n100-999=Prosperous\n1000+=Professional\n
"},{"location":"Code-Notes/#bad-example_1","title":"Bad Example","text":"Player 1 score\n
"},{"location":"Code-Notes/#bits","title":"Bits","text":"It's very common to run into games that need to store event or item flags. Often these will be stored as individual bits rather than taking up an entire byte per flag. It's assumed that a bit value of 0 is off/no/false, if this is not the case then that should be noted.
"},{"location":"Code-Notes/#good-examples_2","title":"Good Examples","text":"Good examples here will specify each bit as well as what they represent.
[Bitflags] Requests completed\nBit1 = No. 01 - Retrieve 1 Beetle Shell.\nBit2 = No. 02 - Retrieve the first old document.\nBit3 = No. 03 - I'd like to sip a Muscle Drink.\nBit4 = No. 04 - Retrieve 3 Old Lanterns.\nBit5 = No. 05 - Retrieve the second old document.\nBit6 = No. 06 - Create Jack Frost with Dia.\nBit7 = No. 07 - Retrieve 1 Lead Metal.\n
Bonuses Unlocked\nbit0 - All Replay Items\nbit1 - Unlimited Ammo (Mission 1)\nbit2 - Silver Bullets (Mission 3)\nbit3 - Bullet Shield (Mission 4)\nbit4 - Rubber Grenades\nbit5 - Men With Hats (Mission 5)\nbit6 - Always Sniper\nbit7 - Achilles Head (Mission 6)\n
[Treasure Flags 03]\nBit0=[Altair - Rebel Hideout] Potion\nBit1=[Fynn - Pub Basement] Scott's Ring\nBit2=[Castle Deist 1F - South Treasure Room] Stun Tome\nBit3=[Castle Deist 1F - South Treasure Room] Stop Tome\nBit4=[Castle Deist 1F - South Treasure Room] Curse Tome\nBit5=[Cave of Mysidia B4 - Treasure Room] Bell of Silence\nBit6=[Castle Deist 1F] Phoenix Down\nBit7=[Castle Deist 1F - NW Treasure Room] Gold Needle\n
"},{"location":"Code-Notes/#bad-example_2","title":"Bad Example","text":"The bits here represent the unlocked bonuses\n
"},{"location":"Code-Notes/#pointers","title":"Pointers","text":"Pointers are more commonly found in newer consoles and their notes typically include information for various addresses that the pointer can point to. The pointer notes will typically include numerous offset values to the important addresses used by the developer.
+
before the offset value.0x
to indicate a hexadecimal offset value; the memory inspector will treat it as a decimal offset if this is not present.Good examples here will include various address offsets, each of which including details and size of the address being pointed to.
Pointer to P1 Data [16-Bit]\n+0x68 P1 Character ID [8-Bit]\n+0xba P1 Health [8-Bit]\n+0xc4 P1 Move ID [16-Bit]\n
[32-bit] Data Pointer\n+0x638 | Pointer to pointer to smells pointer\n++0x6d0 | Pointer to woofs\n+++0xb8 | Total Woofs [32-bit]\n+++0x380 | Sniff Level [32-bit]\n0x00 = Sniff Apprentice\n0x01 = Sniff Artisan\n0x02 = Sniff Expert\n0x03 = Sniff Master\n0x04 = Grand Sniff Master\n+++0x3c8 | Pointer to Racing Data [32-bit]\n++++0x15a8 | Checkpoint Count [32-bit]\n++++0x15ac | Frame Timer [32-bit]\n++0x13d8 | Pointer to smells pointer\n+++0x04 | Total Smells [32-bit]\n
*US* Pointer [32-bits]\n\n--Player Kratos--\n+0x97898=Health [Float]\n+0x6f570=Combo [32-bits]\n+0x977a0=Coordinates Y [Float]\n+0x977a4=Coordinates Z [Float]\n+0x977a8=Coordinates X [Float]\n\n--Unlockables (Alternative)--\n+0x6f594=Poseidon's Trident [Bit0]\n+0x6f598=Poseidon's Rage [Bit0]\n+0x6f59c=Medusa's Gaze [Bit0]\n+0x6f5a0=Zeus' Fury [Bit0]\n+0x6f5a4=Army of Hades [Bit0]\n+0x6f5a8=Blade of Artemis [Bit0]\n
"},{"location":"Code-Notes/#bad-example_3","title":"Bad Example","text":"Pointer for player information. Includes player data and unlockables.\n
"},{"location":"Code-Notes/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-11 14:08] Andrew Comer:
Updated Code Notes (markdown)[2024-03-11 14:03] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:57] Andrew Comer:
Updated Code Notes (markdown)[2024-03-11 13:53] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:14] Andrew Comer:
Removed WIP header[2024-01-15 13:27] The Mystical One:
Updated Code Notes (markdown)[2024-01-10 07:05] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 16:36] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 16:33] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 15:29] The Mystical One:
Added another score example to replace the one that was removed.This is a list of things that code reviewers usually check when someone submits a set to be reviewed.
"},{"location":"Code-Review-Checklist/#code-notes","title":"Code Notes","text":"0xADDRESS = 1
and ResetIf 0xADDRESS != 1
).>= 100
rather than = 100
.Un ResetIf
y PauseIf
pueden ser aplicados al numero que sea de condiciones Add Hits
, Add Source
, y Sub Source
.
Volviendo al ejemplo del Add Source
de arriba, si un ResetIf
se aplicara a la condicion 2, el logro se reiniciar\u00eda porque 1 + 2 > 0
.
Last 10 changes on this page:
[2019-04-16 15:34] meleu:
fix broken link[2019-04-16 11:13] eldexterr:
ES title changed to esResetIf
and PauseIf
can be applied to a condition following any number of Add Hits
, Add Source
, or Sub Source
conditions.
Going back to the Add Source
example above, if ResetIf
were applied to condition 2, the achievement would reset because 1 + 2 > 0
.
0xM
0xM01234
Bit1 0xN
0xN01234
Bit2 0xO
0xO01234
Bit3 0xP
0xP01234
Bit4 0xQ
0xQ01234
Bit5 0xR
0xR01234
Bit6 0xS
0xS01234
Bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x 01234
24bit 0xW
0xW01234
32bit 0xX
0xX01234
16bit BE 0xI
0xI01234
24bit BE 0xJ
0xJ01234
32bit BE 0xG
0xG01234
BitCount 0xK
0xK01234
Float fF
fF01234
Float BE fB
fB01234
MBF32 fM
fM01234
MBF32 LE fL
fL01234
Double32 fH
fH01234
Double32 BE fI
fI01234
"},{"location":"Condition-Syntax/#prefixes","title":"Prefixes","text":"Modifier Prefix Example Delta d
d0xH1234
Prior p
p0xH1234
BCD b
b0xH1234
Invert ~
~0xH1234
"},{"location":"Condition-Syntax/#logical-flags","title":"Logical Flags","text":"Flag Prefix Example ResetIf R:
R:0xH1234=1
ResetNextIf Z:
Z:0xH1234=1
PauseIf P:
P:0xH1234=1
AndNext N:
N:0xH1234=1
OrNext O:
O:0xH1234=1
AddSource A:
A:0xH1234=1
SubSource B:
B:0xH1234=1
AddHits C:
C:0xH1234=1
SubHits D:
D:0xH1234=1
AddAddress I:
I:0xH1234=1
Measured M:
M:0xH1234=1
Measured% G:
G:0xH1234=1
MeasuredIf Q:
Q:0xH1234=1
Trigger T:
T:0xH1234=1
"},{"location":"Condition-Syntax/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-19 15:03] Jamiras:
add Float BE and Double32[2022-03-05 08:16] Jamiras:
Updated Condition Syntax (markdown)[2022-02-04 17:32] Jamiras:
Created Condition Syntax (markdown)Cuando escavamos en memoria en estas viejas consolas ayuda saber que los creadores originales de estos juegos trabajaron en ellos alguna vez. Si te familiarizas bien en la manera en la que trabaja tu consola favorita entonces hacer un set va a resultar mas sencillo y preciso.
"},{"location":"Console-Specific-Tips-es/#nes-ranes","title":"NES (RANes)","text":""},{"location":"Console-Specific-Tips-es/#duplicado-de-direcciones","title":"Duplicado de Direcciones","text":"Cuando utilices el inspector de memoria para encontrar variables en juegos de NES, va a ver 4 copias de todo lo que encuentres. Si te estas preguntando \"cual deber\u00eda de utilizar?\" o \"deberia probar cada una de ellas?\" no es tan complicado como parece.
Esta es una caracter\u00edstica que el NES le da a los desarrolladores para encontrar mas maneras para buscar en memoria. Porque el NES en si solo tiene 2KB de RAM, el primer resultado (el que va abajo de 0x800) tiene que ser usado para consistencia, y aplicar condiciones adicionales en los otros realmente no hace nada.
Esto tambi\u00e9n aplica para RPS y tablas clasificatorias tambi\u00e9n.
"},{"location":"Console-Specific-Tips-es/#game-boy-ravba","title":"Game Boy (RAVBA)","text":""},{"location":"Console-Specific-Tips-es/#mapa-de-memoria","title":"Mapa de Memoria","text":"Algunos rangos de valores significan diferentes cosas en el contexto del hardware del Game Boy, as\u00ed que tener un mapa de lo que te puede resultar \u00fatil puede ayudar a eliminar esos valores que no sirven. As\u00ed es como se desplaya:
Para mas informaci\u00f3n mira: http://gameboy.mongenel.com/dmg/asmmemmap.html
"},{"location":"Console-Specific-Tips-es/#echo-ram","title":"ECHO RAM","text":"Similar que el NES, algunas variables tal vez se muestren mas de una vez cuando te encuentres buscando en el inspector de memoria. El segundo resultado es lo que se le conoce como ECHO RAM, que es un espejo de la memoria actual. Aunque algunos emuladores tienden a ignorar esta \u00e1rea o a emularla incorrectamente, se recomienda NO utilizarla para nada y siempre utilizar el primer resultado.
El Game Boy tiene 8KB de RAM empezando en 0xC000. La ECHO RAM empieza en 0xE000, as\u00ed que si tus direcciones empiezan con una E vas a tener que remplazar el primer car\u00e1cter que no tenga un cero con una C. Recuerda: C es lo correcto, E es la echo!
"},{"location":"Console-Specific-Tips-es/#gbc","title":"GBC","text":"En el GBC, los 4KB de memoria de 0xD000-0xDFFF son un banco para un bloque de memoria mas grande de 32kb que no es directamente accesible por el procesador. Los Bits 0-2 de 0xFF70 indican cual banco esta cargado en el bloque de memoria 0xD000-0xDFFF. Es una \"funci\u00f3n\" utilizada para expandir el almacenamiento de los ROMs del GBC mientras aun se tiene el soporte para ROMs del GB original.
Cambiar de Banco (cambiar el valor de 0xFF70) provoca que la memoria en el rango 0xD000-0xDFFF se actualice. Esto aparece como un flickering/parpadeando en el Visor de Memoria y provoca que la b\u00fasqueda de memoria sea mas complicada. Si estas escribiendo condiciones dependiendo de la memoria que se encuentra en ese bloque, tambi\u00e9n vas a requerir que 0xFF70 tenga un valor en especifico para asegurarte que estas utilizando el banco correcto. Los 4KB de memoria de 0xC000-0xCFFF no se cambian como el banco y pueden ser utilizados sin preocupaciones sin condiciones adicionales.
No es muy recomendable que utilices estas direcciones en tus logros si es que cuentas con al menos una alternativa para no utilizarnos. Desde Enero del 2018, RALibretro solamente muestra el banco de 0x00 a 0xFF70. RetroArch a estado fluctuando los bancos de memoria, pero algunos valores no funcionan de la misma manera que en RAVisualBoyAdvance. Al menos asta que RetroArch reciba una inspector de memoria, logros que utilicen direcciones en 0xD000-0xDFFF solamente van a funcionar en RAVisualBoyAdvance.
"},{"location":"Console-Specific-Tips-es/#gbgbc-bios","title":"GB/GBC BIOS","text":"RALibRetro y RetroArch cuenta con soporte para el BIOS de GB/GBC, que muestra los logos de \"Nintendo\" y \"GameBoy\" antes de empezar el juego. Esto provee aproximadamente cuatro segundo donde la memoria principal ($C000-$DFFF) aun no a sido inicializada, y podr\u00eda provocar que algunos logros se disparen cuando se cargue el juego por algunos usuarios que tienen el BIOS habilitado.
Para habilitar esta caracter\u00edstica, pon el archivo del bios (de nombre gb_bios.bin
o gbc_bios.bin
) en el folder del directorio del sistema ya sea el de RALibRetro o RetroArch. Cuando empieces el juego, vas a ver los logos de \"Nintendo\" y \"GameBoy\" antes de proceder al juego actual.
Si esto te esta causando problemas, tal vez necesites agregar un poco de l\u00f3gica para prevenir que los logros salten cuando se encuentre el jugador en el BIOS, pero seria preferible que agregues l\u00f3gica del juego si es posible (ej. cuando se muestra una pantalla en especifico).
El c\u00f3digo del BIOS es cargado en $0000-$00FF, as\u00ed que identifica ese pedazo de memoria cuando est\u00e9s en el BIOS y haz que lo ignore tu logro. Por ejemplo, los \u00faltimos cuatro bytes del bloque del BIOS del GBC son 3E 11 E0 50
, asi que podr\u00edas agregar esta condici\u00f3n al logro para prevenir que el logro salte cuando el BIOS se encuentra corriendo.
32-bit 0x00FC != 0x50E0113E\n
Despu\u00e9s de que el BIOS se termina, el bloque es rellenado con puras FF's, y es re-asignado para vectores de interrupci\u00f3n. Para mas detalles, mira Un vistazo a la pantalla de inicio del GameBoy.
NOTA: Los \u00faltimos cuatro bytes del BIOS del GB son 3E 01 E0 50
. As\u00ed que la condici\u00f3n para el BIOS seria:
32-bit 0x00FC != 0x50E0013E\n
"},{"location":"Console-Specific-Tips-es/#nintendo-64-rap64","title":"Nintendo 64 (RAP64)","text":""},{"location":"Console-Specific-Tips-es/#utilizando-codigos-gameshark-para-direcciones","title":"Utilizando c\u00f3digos GameShark para Direcciones","text":"Los c\u00f3digos de GameShark pueden ser un valioso recurso para encontrar direcciones que no puedes o sientes que no las puedes encontrar. Estos cuentan con 12 caracteres por linea y son sencillamente f\u00e1ciles de compilar.
[AA][BBBBBB] [CCCC]
[AA] es el tipo de c\u00f3digo. Esta es una peque\u00f1a instrucci\u00f3n para el GameShark que define que hacer con el siguiente valor. Si entiendes que es lo que hace ese c\u00f3digo GameShark puedes utilizar como ayuda para crear una condici\u00f3n.
Aqu\u00ed est\u00e1n algunos ejemplos: * Paper Mario: HP Infinito:
[80][10F292] [0032]
Cambia el valor de 8-bit en 0x10F292 a 0x32 (50). Entonces esto significa que el HP de Mario es un valor de 8-bit en 0x10F292.
[80][74E77C] [0006]
Cambia el valor de 8-bit en 0x74E77C a 6. Entonces esto significa que el personaje el cual estas utilizando ahora es un valor de 8-bit en 0x74E77C.
[D0][18BAB5] [0020] <- Estamos revisando este
[81][18B9E0] [4200]
Checa si el valor de 8-bit en 0x18BAB5 es igual a 0x20. Esto significa que 0x18BAB5 contiene una variable de presionado de bot\u00f3n y el Bit5 (0x20) corresponde a la L.
Anti-GSC y GameHacking los dos son buenos recursos para encontrar c\u00f3digos de GameShark.
"},{"location":"Console-Specific-Tips-es/#neo-geo","title":"Neo Geo","text":""},{"location":"Console-Specific-Tips-es/#proteccion-obligatoria-del-unibios","title":"Protecci\u00f3n Obligatoria del UniBIOS","text":"UniBIOS permite severas opciones de desarrollador, y tambi\u00e9n accesa a la base de datos de cheats de cada juego. Por eso mismo todos los logros para Neo Geo necesitan estar protegidos de esto. La soluci\u00f3n mas simple para hacer esto es desabilitar el uso del UniBIOS completamente, directamente desde el c\u00f3digo de logro.
Afortunadamente la parte de la data del UniBIOS parece ser reflejada en dos cadenas de direcciones en la RAM: 0x00fe30
y 0x00fe50
. Mientras el UniBIOS este activo 0x00fe30
en 32-bit parece mostrar siempre el mismo valor (para cada uno de los juegos de Neo Geo game) que es 80025632
, y no parece que cambie despu\u00e9s que el ROM ya fue cargado. Para cualquier otro BIOS, el valor siempre es 0, (excepto en el momento en el que la RAM es cargada de nuevo en el programa de diagnostico, despu\u00e9s de haber cargado el ROM).
Para proteger tus logros del uso completo del UniBIOS lo \u00fanico que necesitamos hacer es incluir una simple protecci\u00f3n que se va resetear cuando el valor de 32-bit en 0x00fe30
no sea igual a 0
. Esto adicionalmente protege, al logro de que salte durante el proceso de diagnostico de RAM.
As\u00ed es como se deber\u00eda de ver la protecci\u00f3n (seleccionada en el Editor de Logros):
As\u00ed es como se ve la misma regi\u00f3n de la RAM cuando se utilizan otros BIOS (utilizando MSV):
"},{"location":"Console-Specific-Tips-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-23 10:07] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-23 09:59] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-23 09:59] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-22 14:57] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-22 11:42] eldexterr:
Created Console Specific Tips es (markdown)Link para texto em ingl\u00eas: Console Specific Tips
Ao escavar a mem\u00f3ria desses antigos consoles, ajuda saber em primeiro lugar com o que os criadores originais dos jogos estavam trabalhando. Se voc\u00ea se familiarizar com as peculiaridades do seu console favorito, a configura\u00e7\u00e3o ser\u00e1 mais f\u00e1cil e precisa.
"},{"location":"Console-Specific-Tips-pt_BR/#nes-ranes","title":"NES (RANes)","text":""},{"location":"Console-Specific-Tips-pt_BR/#game-boy-ravba","title":"Game Boy (RAVBA)","text":""},{"location":"Console-Specific-Tips-pt_BR/#mapa-de-memoria","title":"Mapa de mem\u00f3ria","text":"Determinadas variedades de valores significam coisas diferentes no contexto do hardware do Game Boy, portanto, ter um mapa pode ajud\u00e1-lo a eliminar endere\u00e7os in\u00fateis. Aqui est\u00e1 o resumo:
Para mais informa\u00e7\u00f5es, consulte: http://gameboy.mongenel.com/dmg/asmmemmap.html texto em ingl\u00eas
Similarmente ao NES, certas vari\u00e1veis podem aparecer duas vezes ao pesquisar no Memory Inspector. O segundo resultado est\u00e1 no que \u00e9 chamado de RAM ECHO, que \u00e9 um espelho da mem\u00f3ria real. Como alguns emuladores tendem a ignorar essa \u00e1rea ou emular incorretamente, recomenda-se N\u00c3O us\u00e1-la e sempre usar o primeiro resultado.
O Game Boy tem 4KB de RAM a partir de 0xC000. ECHO RAM come\u00e7a em 0xE000, ent\u00e3o se o seu endere\u00e7o come\u00e7ar com um E voc\u00ea vai querer substituir o primeiro caractere diferente de zero por um C. Lembre-se: C est\u00e1 correto, E \u00e9 echo!
"},{"location":"Console-Specific-Tips-pt_BR/#nintendo-64-rap64","title":"Nintendo 64 (RAP64)","text":""},{"location":"Console-Specific-Tips-pt_BR/#usando-codigos-gameshark-para-enderecos","title":"Usando c\u00f3digos GameShark para endere\u00e7os","text":"Os c\u00f3digos GameShark podem ser um recurso valioso para encontrar endere\u00e7os que voc\u00ea n\u00e3o pode ou n\u00e3o deseja encontrar. Eles t\u00eam 12 caracteres por linha e s\u00e3o f\u00e1ceis de analisar.
[AA] [BBBBBB] [CCCC]
[AA] \u00e9 o tipo de c\u00f3digo. Esta \u00e9 uma breve instru\u00e7\u00e3o para o GameShark que define o que fazer com o pr\u00f3ximo valor. Se voc\u00ea entende o c\u00f3digo do GameShark, voc\u00ea pode us\u00e1-lo para ajudar na cria\u00e7\u00e3o de condi\u00e7\u00f5es.
aqui est\u00e3o alguns exemplos:
[80] [10F292] [0032]
Define o valor de 8 bits em 0x10F292 para 0x32 (50). Ent\u00e3o, isso significa que o HP de Mario \u00e9 um valor de 8 bits em 0x10F292.
[80][74E77C] [0006]
Define o valor de 8 bits em 0x74E77C para 6. Portanto, isso significa que o caractere que voc\u00ea est\u00e1 jogando \u00e9 um valor de 8 bits em 0x74E77C.
[D0][18BAB5] [0020] <- Looking at this one
[81][18B9E0] [4200]
Verifica se o valor de 8 bits em 0x18BAB5 \u00e9 igual a 0x20. Isso significa que 0x18BAB5 cont\u00e9m uma vari\u00e1vel de pressionamento de bot\u00e3o e Bit5 (0x20) corresponde a L.
Anti-GSC e GameHacking ambos s\u00e3o bons recursos para encontrar c\u00f3digos de GameShark.
"},{"location":"Console-Specific-Tips-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-10-11 00:47] CoolCanuck:
https[2018-03-29 18:29] KingDice001:
Updated Console Specific Tips pt_BR (markdown)[2018-03-28 21:13] 7Mogami7:
Updated Console Specific Tips pt_BR (markdown)[2018-03-28 20:45] 7Mogami7:
Created Console Specific Tips pt_BR (markdown)When excavating the memory of these old consoles it helps to know what the original creators of the games were working with in the first place. If you familiarize yourself with the quirks of your favorite console then set making will be easier and more accurate.
When using the memory inspector to find variables for NES games, there will be 4 copies of everything you find. If you're wondering \"which one do I use?\" or \"should I check for all of them?\" it's not as complicated as it seems.
This is a feature of the NES that gave developers more ways of looking at memory. Because the NES itself only has 2KB of RAM, the first result (the one below 0x800) should be used for consistency, and applying additional conditions on the others will do nothing.
This applies to RPS and leaderboards as well.
"},{"location":"Console-Specific-Tips/#game-boy","title":"Game Boy","text":""},{"location":"Console-Specific-Tips/#memory-map","title":"Memory Map","text":"Certain ranges of values mean different things in the context of the Game Boy hardware, so having a map of what's where can help you with eliminating useless addresses. Here's the lowdown:
For more info see: http://gameboy.mongenel.com/dmg/asmmemmap.html
"},{"location":"Console-Specific-Tips/#echo-ram","title":"ECHO RAM","text":"Similarly to the NES, certain variables may show up twice when searching in the Memory Inspector. The second result is in what's called the ECHO RAM, which is a mirror of the actual memory. Since some emulators tend to ignore this area or emulate it incorrectly, it's recommended to NOT use it at all and always use the first result.
The Game Boy has 8KB of RAM starting at 0xC000. ECHO RAM starts at 0xE000, so if your address begins with an E you'll want to replace the first non-zero character with a C. Remember: C is correct, E is echo!
"},{"location":"Console-Specific-Tips/#gbc","title":"GBC","text":"On the GBC, the 4KB of memory from 0xD000-0xDFFF is a bank from a larger 32KB memory block not directly accessible by the processor. Bits 0-2 of 0xFF70 indicate which bank is loaded into the 0xD000-0xDFFF memory block. It's a \"feature\" used to expand the storage available to GBC ROMs while still supporting GB ROMs.
Bank switching (changing the value of 0xFF70) causes the memory in the 0xD000-0xDFFF range to update. This appears as flickering in the Memory Viewer and makes tracking down values in that memory range difficult. If you are writing conditions dependent on memory in that block, you should also require that 0xFF70 have a specific value to ensure you are looking at the correct bank. The 4KB of memory from 0xC000-0xCFFF is not bank-switched and can be used safely without additional conditions.
It is not advisable to use these addresses for achievements if there is any alternative to doing so. As of January 2018, RALibretro will only display bank 0x00 at 0xFF70. RetroArch has fluctuating memory banks, but the various addresses do not function in the same manner as RAVisualBoyAdvance. At least until RetroArch receives a memory inspector, achievements using addresses from 0xD000-0xDFFF will only work within RAVisualBoyAdvance.
"},{"location":"Console-Specific-Tips/#gb-and-gbc-bios","title":"GB and GBC BIOS","text":"RALibRetro and RetroArch support the GB/GBC BIOS, which shows the \"Nintendo\" and \"GameBoy\" logo before starting the game. This provides approximately four seconds where the main memory ($C000-$DFFF) hasn't been initialized and can't be trusted, and may cause achievements to trigger while loading the game for a subset of users who have the BIOS enabled.
To enable this feature, put the bios file (named gb_bios.bin
or gbc_bios.bin
) into the system directory of either RALibRetro or RetroArch. When you start the game, you will see the \"Nintendo\" and \"GameBoy\" logos before proceeding into the actual game.
If this is causing you problems, you may need to add logic to prevent the achievements from triggering while the BIOS is executing, but it would be preferable to use in-game logic if possible (i.e. a specific screen is being displayed).
The BIOS code is loaded from $0000-$00FF, so identify some chunk of that memory that's unique while the BIOS is running and ignore it. For example, the last four bytes of the GBC BIOS block are 3E 11 E0 50
, so you could add this condition to the achievement to prevent it from triggering while the BIOS is running.
32-bit 0x00FC != 0x50E0113E\n
After the BIOS completes, the block is blanked out with FF's, and repurposed for interrupt vectors. For more detail, see A Look at the GameBoy bootstrap.
NOTE: The last four bytes of the GB BIOS are 3E 01 E0 50
. So the GB condition would be:
32-bit 0x00FC != 0x50E0013E\n
"},{"location":"Console-Specific-Tips/#game-boy-advance","title":"Game Boy Advance","text":""},{"location":"Console-Specific-Tips/#gba-memory-map","title":"GBA Memory Map","text":"Name Physical Address Range Virtual Address Range Offset (Virtual to Physical) On-chip Working RAM (WRAMC) 0x00000000 - 0x00007fff 0x03000000 - 0x03007fff -0x03000000 On-board Working RAM (WRAMB) 0x00008000 - 0x00047fff 0x02000000 - 0x0203ffff -0x01ff8000 Game Pak SRAM (SRAM) 0x00048000 - 0x00057fff 0x0e000000 - 0x0e00ffff -0x0dfb8000"},{"location":"Console-Specific-Tips/#nintendo-64","title":"Nintendo 64","text":""},{"location":"Console-Specific-Tips/#using-gameshark-codes-for-addresses","title":"Using GameShark Codes for Addresses","text":"GameShark codes can be a valuable resource for finding addresses you can't or don't feel like finding. They have 12 characters per line and are fairly easy to parse.
[AA][BBBBBB] [CCCC]
[AA] is the codetype. This is a short instruction to the GameShark that defines what to do with the next value. If you understand what the GameShark code does you can use it to help with condition-making.
Here are some examples: * Paper Mario: Infinite HP:
[80][10F292] [0032]
Sets the 8-bit value at 0x10F292 to 0x32 (50). So this means Mario's HP is an 8-bit value at 0x10F292.
[80][74E77C] [0006]
Sets the 8-bit value at 0x74E77C to 6. So this means the character you're playing as is an 8-bit value at 0x74E77C.
[D0][18BAB5] [0020] <- Looking at this one
[81][18B9E0] [4200]
Checks if the 8-bit value at 0x18BAB5 is equal to 0x20. This means 0x18BAB5 contains a button press variable and Bit5 (0x20) corresponds to L.
Anti-GSC and GameHacking are both good resources for finding GameShark codes.
"},{"location":"Console-Specific-Tips/#nintendo-ds","title":"Nintendo DS","text":"Pointers always start with a 0x02
. For example, a pointer pointing directly to 0x13f944
will be 0x0213f944
.
UniBIOS allows several debugging options, and also access the database of individual cheats for every game. Therefore all achievements for Neo Geo need to be protected from abusing it. The simpliest solution here is disallowing UniBIOS usage completely, directly from the level of achievement code.
Fortunately part of UniBIOS data seems to be reflected in two address strings in the RAM: 0x00fe30
and 0x00fe50
. While UniBIOS is active 0x00fe30
in 32-bit size seems to always brings the same value (for every Neo Geo game) which is 80025632
, and it doesn't seem to change after the ROM was loaded. For any other BIOS, the value is always 0, (except for the moment the RAM is overloaded by the diagnostic program, after the ROM was loaded).
To protect achievements from using UniBIOS all we need to do is to include a simple protection which will reset when 0x00fe30
in 32-bit size is not equal to 0
. This additionally, eventually protect the achievement from unlocking during RAM diagnostic process.
Here is how the protection should look alike (selected in the Achievement Editor):
Here is how the same RAM region looks when other BIOS are used (here MSV):
"},{"location":"Console-Specific-Tips/#playstation","title":"PlayStation","text":"NOTE: If a core doesn't require a BIOS, this memory may not be initialized.
The RAM from $0000-$FFFF is reserved for the kernel. The boot executable name appears to reliably be placed at $9E18 AND $B8B0. The boot executable name almost always contains the disc serial, which is unique per region, so this can often be used to determine which version of a game the player is using.
Spyro the Dragon SCUS_942.28\n\n9E18 5C 53 43 55 53 5F 39 34 32 2E 32 38 3B 31\n \\ S C U S _ 9 4 2 . 2 8 ; 1\n\nB8B0 63 64 72 6F 6D 3A 5C 53 43 55 53 5F 39 34 32 2E 32 38 3B 31\n c d r o m : \\ S C U S _ 9 4 2 . 2 8 ; 1\n
"},{"location":"Console-Specific-Tips/#playstation-portable","title":"PlayStation Portable","text":"When working with PSP make sure to check if your game has any DLC as this form of content is able to be accessed by players without altered saves or patched versions of the game and will need to be accounted for and in some cases protected against if it provides advantages that you don't want players to exploit.
"},{"location":"Console-Specific-Tips/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-02-26 13:40] Biendeo:
Added a memory map reference for the GBA.[2023-06-06 10:58] televandalist:
Added ToC[2023-05-30 01:46] Riley Nielsen:
Add info about Nintendo DS pointers[2023-05-04 11:44] The Mystical One:
Added information about Nintendo DSi's DSi Mode String.[2023-04-14 11:24] The Mystical One:
Adjusted the miscellaneous GB section because the upper end of that range is okay to use (and some game devs put some data only there).[2023-03-24 20:29] LiquifiedSnow:
Updated Console Specific Tips (markdown)[2023-03-04 14:25] televandalist:
Updated Console Specific Tips (markdown)[2023-03-04 13:58] televandalist:
Added note about US BIOS for PSX Beetle[2020-04-25 09:30] Jamiras:
add note about disc serial for PSX games[2019-05-13 22:03] Jamiras:
small difference in gb vs gbc biosResumiendo las cosas:
La diferencia entre RAwiki y RAdocs es explicada en Como funciona la documentaci\u00f3n de RA.
"},{"location":"Contributing-with-the-docs-es/#markdown","title":"Markdown","text":"Markdown es un lenguaje de marcado extremadamente ligero y f\u00e1cil de aprender con una sintaxis de formateado de texto simple. Para contribuir en nuestro proyecto tienes que m\u00ednimo conocer los b\u00e1sicos de markdown. Aqui hay una buena pagina de referencia: http://commonmark.org/help/, y aqu\u00ed puedes probar 10 minutos del tutorial.
Ademas, esta wiki necesita ser escrita en cierto formato para que as\u00ed se puedan convertir en las bonitas paginas est\u00e1ticas de ya conoces. Esto es debido a que utilizamos mkdocs) y este utiliza el markdown de python y github utiliza el markdown de github, entonces hay algunos peque\u00f1os problemas de formato que se tienen que tomar en cuenta.
"},{"location":"Contributing-with-the-docs-es/#encabezados","title":"Encabezados","text":"Los t\u00edtulos (definidos por un #
) necesitan seguir una progresi\u00f3n natural de la jerarqu\u00eda del contenido de la pagina. Pero tu NO PUEDES dos encabezados de titulo (esos que tienen solamente un s\u00edmbolo de #
). De otra manera no se mostraran en la tabla de contenidos a la derecha de la pagina
Ej.
# Titulo\n## Encabezado principal uno\n### Sub Encabezado uno\n### Sub Encabezado dos\n## Encabezado Principal dos\n
etc.
"},{"location":"Contributing-with-the-docs-es/#enlaces","title":"Enlaces","text":"Los enlaces tienen que seguir la siguiente sintaxis
[Enlace](ruta del enlace.md)\n
Nota: Si este es un enlace a otra pagina de la wiki esto se hace con una ruta relativa:
[Tips y Trucos](Tips-and-Tricks-es.md)\n
NO utilices el URL completo cuando est\u00e9s linkeando a otra pagina de la wiki, como esto (si, este es un ejemplo de lo que NO tienes que llegar a hacer):
[Tips y Trucos](https://github.com/RetroAchievements/docs/wiki/Tips-and-Tricks-es)\n
"},{"location":"Contributing-with-the-docs-es/#imagenes","title":"Im\u00e1genes","text":"Enlaces para im\u00e1genes tienen que seguir la misma sintaxis que el ejemplo de abajo:
![Imagen](http://url/a.png) \n
Nota:: Si quieres llegar a almacenar im\u00e1genes para este proyecto de documentaci\u00f3n, puedes publicarlas en este tema de aqu\u00ed y utilizar el hack de almacenamiento de im\u00e1genes de github.
"},{"location":"Contributing-with-the-docs-es/#tablas","title":"Tablas","text":"Una tabla simple se mira de esta manera:
Primer Encabezado | Segundo Encabezado | Tercer Encabezado\n--------------------- | ---------------------- | ---------------------\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\n
Y se deber\u00eda de renderizar de esta manera:
Primer Encabezado Segundo Encabezado Tercer Encabezado Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la CeldaPuedes especificar una formaci\u00f3n en especifico por cada columna agregando dos puntos a las lineas del separador:
Primer Encabezado | Segundo Encabezado | Tercer Encabezado\n:--------------------- | :----------------------: | ---------------------:\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\n
Resultado:
Primer Encabezado Segundo Encabezado Tercer Encabezado Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda"},{"location":"Contributing-with-the-docs-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 13:43] eldexterr:
Created Contributing with the docs es (markdown)The RetroAchievements Documentation is divided into two parts:
The wiki is where these documents are created and edited. Anyone (with a github account) is able to edit the wiki's content. Then, if you have something to share, please edit the wiki!
The RetroAchievements docs website has (almost) the same content as the wiki, but with a more pleasant look. The content of this website is generated by its maintainers using the wiki's content as input.
When a change is made in the wiki this change is NOT instantaneously reflected in the docs. The conversion is performed by a maintainer from time to time.
"},{"location":"Contributing-with-the-docs/#markdown-caveats","title":"Markdown caveats","text":"Markdown is a lightweight and extremely easy to learn markup language with plain text formatting syntax. In order to contribute in our project you must know at least the basics of markdown. Here is a good one-page reference: http://commonmark.org/help/, and here you can try a 10 minutes tutorial.
Moreover, this wiki needs to be written in a certain format in order to convert cleanly to the pretty static pages. It's because we use mkdocs) and it uses python markdown and github uses github flavoured markdown, so there are some minor issues of formatting that will need to be addressed.
"},{"location":"Contributing-with-the-docs/#headings","title":"Headings","text":"The headings (defined by #
) should follow a natural progression of the hierarchy of the page contents. But you CANNOT have two title headings (those with only one #
symbol). Otherwise they won't show up on the table of contents on the right side of the page
E.G.
# Title\n## Main heading one\n### Sub Heading one\n### Sub heading two\n## Main heading two\n
etc.
"},{"location":"Contributing-with-the-docs/#links","title":"Links","text":"Links should follow this syntax
[Link](path to link)\n
Note: If it is a link to another wiki page it should be a relative path:
[Tips and Tricks](Tips-and-Tricks)\n
Do NOT use complete a full URL when linking to another wiki page, like this (yeah, this is an example of you should NOT do):
[Tips and Tricks](https://github.com/RetroAchievements/docs/wiki/Tips-and-Tricks)\n
"},{"location":"Contributing-with-the-docs/#images","title":"Images","text":"Links to images should follow the same syntax as the example below:
![Image](http://url/a.png) \n
Note:: In order to host images for this documentation project, you can post them in this issue thread here and use the github image hosting hack.
"},{"location":"Contributing-with-the-docs/#tables","title":"Tables","text":"A simple table looks like this:
First Header | Second Header | Third Header\n------------ | ------------- | ------------\nContent Cell | Content Cell | Content Cell\nContent Cell | Content Cell | Content Cell\nContent Cell | Content Cell | Content Cell\n
It should render like this:
First Header Second Header Third Header Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content CellYou can specify alignment for each column by adding colons to separator lines:
First Header | Second Header | Third Header\n:----------- |:-------------:| -----------:\nLeft | Center | Right\nLeft | Center | Right\nLeft | Center | Right\n
Results:
First Header Second Header Third Header Left Center Right Left Center Right Left Center Right"},{"location":"Contributing-with-the-docs/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-29 12:15] meleu:
merging \"How RA Documentation Works\" page here[2019-02-14 10:53] meleu:
fix broken link[2018-04-25 07:12] meleu:
new link for radocs[2018-04-04 15:55] meleu:
Updated Contributing with the docs (markdown)[2018-04-04 15:53] meleu:
Updated Contributing with the docs (markdown)[2018-04-03 15:20] meleu:
Updated Contributing with the docs (markdown)[2018-04-03 15:02] meleu:
Updated Contributing with the docs (markdown)[2018-04-02 18:52] meleu:
Updated Editing the Wiki (markdown)WIP Page
When both English and Japanese titles are used in an RA entry's title, the Japanese title should only be first when the game was never officially released in English, making whatever English title used an unofficial title. - Example: Trials of Mana | Seiken Densetu 3
, which is fine because an official English release came much later. Before that, everyone used Secret of Mana 2 as the English title, in which case the RA entry's title would have been Seiken Densetsu 3 | Secret of Mana 2
.
~Demo~
~Hack~
~Homebrew~
~Prototype~
~Test Kit~
~Unlicensed~
In cases where ~Demo~
or ~Prototype~
are used alongside ~Hack~
or ~Homebrew~
, they are to be listed after the latter. - Example: ~Homebrew~ ~Demo~ Bob's Game
instead of ~Demo~ ~Homebrew~ Bob's Game
. The reason for this is that no matter what stage the game is in, it will always be a homebrew or a hack; therefore, those tags should take priority.
In cases where a game is unlicensed and is actually just a hack of another game, then ~Hack~
would be used instead of ~Unlicensed~
- Example: Final Fantasy VII on NES, which is a bootleg/pirate release, but it's actually just a hack of Final Fantasy III that was put on a cartridge. So the RA entry would be Hack Final Fantasy VII.
Since the A/An/The articles are moved to the back of a title (but BEFORE a subtitle), then we should also do this when there is a pipe separator between regional titles. - Example: instead of Garfield Labyrinth | The Real Ghostbusters | Mickey Mouse IV
, which is what it is currently, we use Garfield Labyrinth | Real Ghostbusters, The | Mickey Mouse IV
. The reason for this is because we may eventually have a way to set which titles we view by default.
Bootleg/Pirate games are NOT to be linked to hubs for the series they're ripping off.
"},{"location":"Creating-Entries/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-04 20:34] televandalist:
Updated Creating Entries (markdown)[2023-06-04 20:24] televandalist:
Created Creating Entries (markdown)In this example you will learn how to create an ingame Timer based on the framerate speed of the game.
Every game has an address which is constantly increasing, it functions like a engine in a car which is constantly moving despite what you do and starts as soon you start the game, the game itself is your car and some cars are faster than others.
Please note that PAL Games (50hz) have a lower framerate than NTSC Games (60hz) and aren't compatible with this method. It is recommended to create every Timer based on the NTSC version of the game, unless PAL version is the only version existing and there is no NTSC Patch available.
Addresses
0x19
: Demo Mode: 01
=Active, 00
=Inactive0x1a
: Game Engine (speed based on framerate)0x25
: Game Paused: 01
=Yes. 00
=No0x2c
: Game Progression: 03
=Before Stage starts, 04
=Stage started, 08
=Stage finished0x30
: Stage ID (in this example, Stage 1)Link to Cheevo: Contra Speedrun
YouTube: ResetIfHits Demo: Contra Stage 1 60 seconds Speedrun
Conditions
Activates the Cheevo's 'Hit' when entering a Stage (03
only appears once in each Stage).
Triggers the Cheevo when a Stage has been finished.
Current Stage (in this example, Stage 1).
Paused the Cheevo if the Game is 'Paused' (Stops the Timer in the Cheevo).
Resets the Cheevo if 60
seconds 3600
Hits are reached. 1
second = 60Hits
(NTSC 60fps), 50Hits
(PAL 50fps).
Resets the Cheevo if Demo Mode
is active.
Resets the Cheevos Timer when entering a new Stage.
En este ejemplo vas a aprender como crear un temporizador dentro del juego en base a la velocidad del framerate speed del juego.
Cada juego tiene una variable que esta constantemente aumentando, esta funciona como el motor de un carro, se esta constantemente moviendo sin importar lo que est\u00e9s haciendo y empieza tan pronto como inicias el juego, el juego en si es tu carro y varios carros son mas r\u00e1pidos que otros.
Ten en cuenta que juegos PAL (50hz) tiene un framerate mas bajo a los juegos NTSC (60hz) y no son compatibles con este m\u00e9todo. Es recomendable crear cada temporizador utilizando la versi\u00f3n NTSC del juego, a menos que la versi\u00f3n PAL sea la uncia versi\u00f3n existente y no exista un parche NTSC disponible.
Variables (Addresses)
0x19
: Modo Demo: 01
=Activo, 00
=Inactivo0x1a
: Motor del Juego (velocidad basada en el framerate)0x25
: Juego Pausado: 01
=Si. 00
=No0x2c
: Progresion del Juego: 03
=Antes que empiece el Stage, 04
=Stage iniciado, 08
=Stage terminado0x30
: ID de Stage (en este ejemplo, Stage 1)Link al Logro: Contra Speedrun
YouTube: ResetIfHits Demo: Contra Stage 1 60 segundos Speedrun
Condiciones
Se activa el Hit del Logro cuando se entra al Stage (03
solo aparece una vez por cada Stage).
Salta el Logro cuando un Stage a sido terminado.
Stage Actual (en este ejemplo, Stage 1).
Pausa el logro si el juego esta Pausado' (Pausa el Temporizador en el Logro).
Resetea el logro si se alcanzan 60
segundos (3600
Hits). 1
segundo = 60Hits
(NTSC 60fps), 50Hits
PAL 50fps).
Resetea el logro si el Modo Demo
esta activo.
Resetea el Temporizador del Logro cuando se entra a un nuevo Stage.
Last 10 changes on this page:
[2019-04-16 11:16] eldexterr:
ES title changed to esUn valor Delta
es el valor del fotograma (frame) pasado. Nota: cuando utilizas Delta
es implicito que te refieras a una direccion y no a un valor.
Ejemplos de como puede ser utilizado:
nivel > nivel delta
. A lo que significas \"el nivel actual es mas grande que el nivel encontrado en el fotograma pasado\".salud < salud delta
. Que significa \"la salud actual es mas peque\u00f1a la salud encontrada en el fotograma pasado\". O simplemente puedes poner el antiguo valor del fotograma como un requisito. salud delta = 1
que significa \"el valor de salud tiene que ser 1 en el fotograma pasado para que salte el logro.\"En la seccion de Ejemplos Reales hay algunos buenos ejemplos:
Last 10 changes on this page:
[2019-04-16 15:38] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Delta Values ES (markdown)A Delta
value is the previous frame's value. Note: when you use Delta
it is implicit that you are referring to an address and not a value.
Examples of how it can be used:
level > delta level
. It means \"current level is greater than the previous frame's level\".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.\"In the Real Examples section there are some good examples:
Last 10 changes on this page:
[2023-06-06 10:37] televandalist:
Removed link to a page that doesn't exist[2019-02-18 16:53] meleu:
fix broken links[2019-02-12 09:22] meleu:
Created Delta Values (markdown)This page is intended to address questions asked about the Dev CoC, as well as expand on points made, usually to clarify guidelines concerning \"special cases.\" It's a brand new page, so give it some time!
"},{"location":"Dev-CoC---Frequently-Asked-Questions/#unwelcome-concepts","title":"Unwelcome Concepts","text":""},{"location":"Dev-CoC---Frequently-Asked-Questions/#regarding-unfinished-sets","title":"Regarding Unfinished Sets","text":"Max Earnable Points: 6
This table details earnable points for the SG-1000 DevJam:
Points Set Submission 2 Licensed Games 1 Collaboration\u2022 1 point per dev\u2022 Must be evenly split 1 Subsets, Homebrews, Unlicensed Games 1 Hacks, Prototypes, Demos 1 Late Submissions\u2022 Sets can still qualify up until the following DevJam's launch date!"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#quarterly-goals","title":"Quarterly Goals","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Current quarterly goals:
Point Value Quarterly Goal Details 2 Double the amount of existing sets 26 sets 1 Develop sets for all SG-1000 games with set requests \u2022 Bomb Jack\u2022 Elevator Action\u2022 Flicky\u2022 Q-Bert\u2022 Rock N' Bolt\u2022 Sinbad Mystery\u2022 Yie Ar Kung-Fu\u2022 Yie Ar Kung-Fu II 1 Develop sets for all SG-1000 games released in 1983 \u2022 Borderline\u2022 Champion Baseball\u2022 Champion Golf\u2022 Champion Tennis\u2022 ~Congo Bongo~\u2022 Exerion\u2022 Mahjong\u2022 Monaco GP\u2022 N-Sub\u2022 Pacar\u2022 Pachinko\u2022 Pop Flamer\u2022 Safari Hunting\u2022 ~Sega Flipper~\u2022 Sega-Galaga\u2022 ~Serizawa Hachidan no Tsume Shougi~\u2022 Sindbad Mystery\u2022 ~Space Slalom~\u2022 Star Jacker\u2022 Yamato\u2022 Zippy Race 1 Develop sets for all Othello Multivision Games \u2022 007 James Bond\u2022 Challenge Derby\u2022 Guzzler\u2022 Okamoto Ayako no Match Play Golf\u2022 Othello\u2022 Q-Bert\u2022 San-nin Mahjong\u2022 Space Armor\u2022 Space Mountain"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#stats","title":"Stats","text":"as of 2023-07-01 (start date) - Current number of sets: 26 - 18 licensed games, 4 homebrews, and 4 unlicensed games. - Current number of achievements: 660 worth 5912 points. - Current number of leaderboards: 168
as of 2023-09-30 (end date) - Current number of sets: 88 - 63 licensed games, 1 subset, 14 homebrews, and 10 unlicensed games. - Current number of achievements: 1,644 worth 14,511 points. - Current number of leaderboards: 272
"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#see-also","title":"See Also","text":"Max Earnable Points: 8
This table details earnable points for the Saturn DevJam:
Points Set Submission 4 Licensed RPGs 3 Other Licensed Games 2 Collaboration\u2022 2 points per dev\u2022 Must be evenly split 2 Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed Games 2 Late Submissions (Licensed Games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Collabs, Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed)"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#quarterly-goals","title":"Quarterly Goals","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the Sega Saturn goals here.
"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#stats","title":"Stats","text":"as of 2023-10-01 (start date) - Current number of sets: 65 - 61 licensed games, 1 subset, 2 homebrews, and 1 demo. - Current number of achievements: 3,505 worth 29,853 points - Current number of leaderboards: 348
as of 2024-01-31 (end date) - Current number of sets: 128 - 117 licensed games, 7 subsets, 2 homebrews, 1 prototype, and 1 demo. - Current number of achievements: 6,370 worth 53,047 points - Current number of leaderboards: 869
"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#see-also","title":"See Also","text":"Max Earnable Points: 6
This table details earnable points for the PC Engine | PC Engine CD DevJam:
Points Set Submission 3 Licensed Games 2 Collaboration\u2022 2 points per dev\u2022 Must be evenly split 2 Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed Games 2 Late Submissions (Licensed Games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Collabs, Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed)"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#quarterly-goals-wip","title":"Quarterly Goals (WIP)","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the PC Engine and PC Engine CD goals here.
"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#stats","title":"Stats","text":"as of 2024-02-01 (start date) - Current number of sets: - PC Engine: 94 (85 licensed games, 1 unlicensed game, 2 subsets, and 6 homebrews) - PC Engine CD: 38 (35 licensed games, 1 unlicensed game, and 2 homebrews) - Current number of achievements: - PC Engine: 3,222 achievements worth 33,103 points - PC Engine CD: 1,782 achievements worth 15,663 points - Current number of leaderboards: - PC Engine: 225 - PC Engine CD: 91
as of 2024-04-30 (end date) - Current number of sets: - PC Engine: 130 (116 licensed games, 2 unlicensed games, 4 subsets, and 8 homebrews) - PC Engine CD: 62 (57 licensed games, 2 unlicensed games, 1 subset, and 2 homebrews) - Current number of achievements: - PC Engine: 4,330 achievements worth 41,788 points - PC Engine CD: 2,808 achievements worth 23,347 points - Current number of leaderboards: - PC Engine: 439 - PC Engine CD: 163
"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#see-also","title":"See Also","text":"Max Earnable Points: 6
This table details earnable points for the Arcade DevJam:
Points Set Submission 3 Atomiswave and Sega NAOMI games 2 Everything else 2 Collaboration\u2022 1 point per dev\u2022 Must be evenly split 2 Late Submissions (Atomiswave and Sega NAOMI games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Everything else)"},{"location":"DevJam-IV-%E2%80%90-Arcade/#quarterly-goals-wip","title":"Quarterly Goals (WIP)","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the Arcade goals here.
"},{"location":"DevJam-IV-%E2%80%90-Arcade/#stats","title":"Stats","text":"as of 2024-02-01 (start date) - Current number of sets: 323 - Current number of achievements: 13,023 worth 133,339 points - Current number of leaderboards: 1,576
"},{"location":"DevJam-IV-%E2%80%90-Arcade/#see-also","title":"See Also","text":"DevJam is an ongoing developer event that is heavily inspired by our console rollouts: Developers sign up, get locked into developing sets for a specific console, get signed off once completed, and then we release all the sets at once on the launch date. However, with DevJam, the primary focus will be rollouts for supported consoles that did not get them. Some DevJams will focus on a single console. Others may focus on two consoles.
Once we \"break even\" and run out of consoles, the focus will shift to quarterly goals, completing sets for hubs, genre-specific crunch times, etc.
"},{"location":"DevJam/#time-and-duration","title":"Time and Duration","text":"A DevJam lasts three months. Some will go on longer if the situation calls for it (Saturn had an extra month due to site outages and multiple dev events going on at the time). Some may be shorter if all claims are signed off.
"},{"location":"DevJam/#guidelines","title":"Guidelines","text":"Are late submissions still eligible for bonus points from Quarterly Goals? - They wouldn't be quarterly goals then, would they? No.
Can I double-dip with DevQuest, CL100, and other events? - Yes.
Will there be a second badge? - If this goes well and there's enough demand for a 'Round Two' badge, sure.
Can Junior Devs participate? - The nature of the event goes against several aspects of the Junior Dev program so as of now, no. - Junior Devs may feel encouraged to rush a set. - The promotion of Junior Dev sets is a big part of the process so having a set be \"Release Scheduled\" would waste a lot of time. - Code Reviewers would need to work around the DevJam schedule. - The amount of Junior Devs that end up losing the role due to inactivity or do 1-2 sets and disappear far outnumber those who stick around to get full dev. This could result in locked claims!
"},{"location":"DevJam/#devjam-list","title":"DevJam List","text":"Check the links here for console-specific guidelines and info:
Number Time Console(s) Number of Participants Sets Promoted 01 2023-07-01 - 2023-09-30 Sega SG-1000 30 60 02 2023-10-01 - 2024-01-31 Sega Saturn 28 56 03 2024-02-01 - 2024-04-30 PC Engine/PC Engine CD 28 60 04 2024-05-01 - 2024-07-31 Arcade TBA TBA"},{"location":"DevJam/#planned-devjams","title":"Planned DevJams","text":"Solo Console DevJams: - 3DO - PC-8001/8801 - Apple II - MSX - Famicom Disk System
Multi-Console DevJams: - Sega CD | Sega 32X - Master System | Game Gear - Neo Geo Pocket | WonderSwan | Atari Lynx - Atari 2600 | Atari 7800 | Atari Jaguar - ColecoVision | Intellivision
End of the Line for Console-Specific DevJams: - \"Bottom of the Barrel\" (Pokemon Mini, Virtual Boy, Magnavox Odyssey2, PC-FX) - \"The Magnificent Seven\" (Mega Drive, Nintendo 64, SNES, Game Boy, Game Boy Advance, Game Boy Color, NES)
"},{"location":"DevJam/#see-also","title":"See Also","text":"They're achievement development-related quests that developers can take part in at any time. Each one has a specific goal and upon reaching that goal, the achievement developer will earn the badge.
"},{"location":"DevQuests/#general-rules","title":"General Rules","text":"#developer-news
on the RetroAchievements Discord and site news If you want to be an achievement developer, check here how to become a developer.
Every Developer must know and adhere the Developer's Code of Conduct.
Now a brief description some pages you'll see in this section.
How to Become an Achievement Developer: overview of the steps required in obtaining developer status
Getting Started as an Achievement Developer: it's for the very first contact with cheevos development tools (Memory Inspector and other Achievements dialogs). IF YOU ARE A COMPLETE NEWBIE, START HERE!
Achievement Scoring: a guide to deciding point totals for achievements
Memory Inspector Overview: detailed look at one of an achievement developer's most used tools.
Achievement Logic Features: describes the available tools a developer have in order to improve the logic behind the achievements, such as delta values, hit counts, ResetIf, PauseIf, Alt groups, etc.
Real Examples: showing real examples and breaking down the logic behind them. AWESOME LEARNING RESOURCE!
Achievement Templates: some generic templates to get inspiration.
Tips and Tricks: general tips and tricks about memory digging and achievement creation.
Difficulty Scale and Balance: guidelines/suggestions on how to balance the difficulty of your achievement set.
Achievement Design: a guide on how to think about and design good achievements, not the technical side but the conceptual.
Set Development Roadmap: suggestions of steps to take in order to create a really neat achievement set.
Achievement Set Revisions: information on revisions, rescores, and the icon gauntlet.
Subsets: an advanced topic on creating special challenge sets and how to release them.
Badge and Icon Creation: some guidelines and tips about badge/icon creation.
Leaderboards: instructions on how to create Leaderboards for a game.
Rich Presence: how to write Rich Presence Scripts.
Working with the Right ROM: information on using correct ROMs and hashes.
Game Identification: details on the hashing methods used for each system.
Emulator Support and Issues: details on both supported and unsupported cores, testing progress, etc.
Achievements for ROM Hacks: a detailed guide for developers on the proper inclusion (and approval) of ROM Hacks.
Console Specific Tips: knowing the peculiarities of your favorite console can help you with memory digging.
Last 10 changes on this page:
[2023-06-08 03:08] televandalist:
Updated Developer Docs (markdown)[2023-06-08 03:07] televandalist:
Updated Developer docs (markdown)[2017-11-28 08:41] meleu:
Destroyed Developer Docs (markdown)[2017-11-28 08:36] meleu:
Created Developer Docs (markdown)Dev Checked and Relinked MD5s list
Recently game linking has been restricted to developers only. (Something many of us have been requesting for some time.) This creates new solutions, problems and responsibilities for all of us developers.
What needs to happen over time is that every entry is checked that is only has supported ROMs linked to it. Many entries have unsupported ROMs and Trainers linked to them which cause bugs and allow for cheating.
This Shared document linked is how we will keep track of the entries that have been reviewed by a developer, unlinked and then relinked with the correctly entries, when necessary.
"},{"location":"Developer-Projects/#battery-savecode-protection","title":"Battery Save/Code Protection","text":"The goal is implement protections so that no one can unlock groups of achievements from a save file or by using passwords. A list of games that need save protection: Open gSheet master list
"},{"location":"Developer-Resources/","title":"Developer Resources","text":""},{"location":"Developer-Resources/#helpful-website-links","title":"Helpful Website Links","text":"Y \u2013 Address, X \u2013 Value 1-2 digit value will always be 8 bit \u2013 use 2 in front \u2013 22YYYYYY 000000XX 3-4 digit value will always be 16 bit \u2013 use 1 in front \u2013 12YYYYYY 0000XXXX 5-8 digit value will always be 32 bit \u2013 use 0 in front \u2013 02YYYYYY XXXXXXXX This will work for Action replay codes.
For getting addresses out of GameGenie codes use this: (outdated link, getting 404) http://www.d.umn.edu/~bold0070/projects/game_genie_codes/javascript_game_genie_encoders-decoders.html
Turns this:
Into this:
Or get a plugin for Notepad++: - http://jsminnpp.sourceforge.net/ to do similar
Speaking of Notepad++ - https://notepad-plus-plus.org/download/ - One of the best text editors and it's freeware (Windows only).
"},{"location":"Developer-Resources/#achievement-syntax","title":"Achievement Syntax","text":"This is a good reference sheet, it's especially useful for Rich Presence and Leaderboards, getting your deltas and bit labels right. For full size, right click an save image.
A 32bit requires the prefix \"X\" as in 0xX63
"},{"location":"Developer-docs-es/","title":"Intro","text":"Si estas interesado en ser desarrollador, deberias checar aqui, como convertirme en desarrollador.
Todo desarrollador tiene que conocer el codigo de conducta del desarrollador.
Ahora una breve descripcion de algunas de las paginas que encontraras en esta seccion
Empezando como un desarrollador de Logros: el primer contacto con las herramientas de desarrollo de logros (Inspector de Memoria y otros cuadros de dialogos). SI ERES COMPLETAMENTE UN NOVATO, EMPIEZA AQUI!
Caracteristicas en la Logica de Logros: describe las herramientas disponibles con las que un desarrollador cuenta para trabajar la logica detras de un logro, como valores deltas, hit counts, ResetIf, PauseIf, Alt groups, etc.
Ejemplos-Reales: mostrando resultados verdaderos y desglosando la logica detras de los logros. RECURSO INDISPENSABLE PARA APRENDER!
Tips y Trucos: tips generales y trucos sobre como navegar en la memoria y creacion de logros.
Tips especificos por Consola: conociendo las peculiaridades de tu consola favorita puede ayudar mientras nadas en la memoria.
Plantillas para Logros: algunas plantillas genericas para que te inspires.
Escala de Dificultad y Balance: guias/sugerencias en como balancear la dificultad de un set de logros.
Creacion de Medallas e Iconos: algunas guias y tips sobre creacion de medallones/iconos.
Tablas de Clasificaci\u00f3n: instrucciones en como crear tablas de clasificacion para un juego.
Rich Presence: como escribir Scripts para Rich Presence.
Mapa de desarrollo de un Set: pasos a considerar para crear realmente un gran set de logros.
Dise\u00f1o de logros: una guia en como pensar y dise\u00f1ar buenos logros, no el lado tecnico sino el conceptual.
Guia para Set Bonus: un tema avanzado para crear sets con retos especiales y como lanzarlos.
Logros para Hacks de ROMs: una guia detallada para desarrolladores en la inclusion apropiada (y el aprovamiento) para Hacks de ROMs.
Last 10 changes on this page:
[2019-03-12 14:54] meleu:
Updated Developer docs pt_ES (markdown)Estas s\u00e3o as p\u00e1ginas que todos os desenvolvedores novatos deveriam ler e entender primeiro:
Agora uma breve descri\u00e7\u00e3o de cada p\u00e1gina que voc\u00ea ver\u00e1 nesta se\u00e7\u00e3o:
Come\u00e7ando como um desenvolvedor de conquistas: Est\u00e1 aqui para todo primeiro contato com as ferramenta de desenvolvimento de conquistas (Memory Inspector e outros Di\u00e1logos de conquistas). SE VOCE \u00c9 UM COMPLETO INICIANTE, INICIE AQUI!
Recursos de L\u00f3gica para Achievements: Descreve as ferramentas dispon\u00edveis para um desenvolvedor tem em ordem para melhorar a l\u00f3gica por tr\u00e1s das conquistas como os valores desta, contador de Hits, ResetIf, PauseIf, Grupos Alt, etc.
Exemplos Reais: mostrando exemplos reais e quebrando a l\u00f3gica por tr\u00e1s delas. RECURSO DE APRENDIZAGEM INCR\u00cdVEL!
Dicas e Truques: Dicas e truques gerais sobre a escava\u00e7\u00e3o de mem\u00f3ria e cria\u00e7\u00e3o de conquistas.
Dicas espec\u00edficas do Console: sabendo as peculiariedades do seu console (video-game) favorito pode ajudar voc\u00ea com a escava\u00e7\u00e3o de mem\u00f3ria
Modelos de Conquistas: Alguns modelos gen\u00e9ricos para ganhar inspira\u00e7\u00e3o
Escala de Dificuldade e Equilibrio: Sugest\u00f5es de como balancear a dificuldade da conquista de seu set.
Cria\u00e7\u00e3o de \u00cdcone e Emblemas: Algumas sugest\u00f5es e dicas sobre a cria\u00e7\u00e3o de icone
Leaderboards: Instru\u00e7\u00f5es de como criar Leaderboards para um jogo.
Rich Presence: Como criar Scripts Rich Presence
Roteiro de Desenvolvimento do Set: Sugest\u00f5es de passos para conduzir em ordem como criar um set arrumado
Design de Conquistas: Um guia de como pensar e desenvolver boa conquistas, n\u00e3o a parte t\u00e9cnica, mas a parte conceitual.
Guia de Bonus Set: Um t\u00f3pico avan\u00e7ado em criar set especiais de desafios e como lan\u00e7ar eles.
Conquistas para Hack ROM: Um guia detalhado para desenvolvedores sobre a inclus\u00e3o apropriada (e aprova\u00e7\u00e3o) de Hack ROMs
Last 10 changes on this page:
[2018-05-14 14:12] meleu:
typo[2018-05-14 14:11] meleu:
fixed achievement design link[2018-03-28 20:01] meleu:
Revert 3fbd6b9a6ffb69506933a1b1ab0940463f76256c...dfa2f71466a52945a73853134bea13c0068224ad on Developer docs pt_BR[2018-03-28 20:00] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-28 11:08] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-28 11:08] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-24 23:39] meleu:
Created Developer docs pt_BR (markdown)Este documento expone los derechos, responsabilidades y reglas para desarrolladores.
Si tu no eres un desarrollador deberias checar aqui, como me convierto en un desarrollador.
Checa tambien: Codigo de conducta del usuario.
"},{"location":"Developers-Code-of-Conduct-es/#reglas-de-oro","title":"Reglas de Oro","text":"Antes que trabajes en nuevos juegos tienes que resolver todos los tickets con los que cuentes. Una vez que estes libre tickets, entonces adelante.
"},{"location":"Developers-Code-of-Conduct-es/#el-juego-esta-presente-en-la-base-de-datos","title":"El juego esta presente en la base de datos?","text":""},{"location":"Developers-Code-of-Conduct-es/#no","title":"No","text":"Entonces pregunta para que sea agregado por medio de Discord #help-me o en nuestros foros para que algun desarrollador lo agregue por ti. Es esencial que tu elijas el ROM(s) correcto para trabajar. Si quieres trabajar en un hack, checa logros para hacks de ROM doc first.
"},{"location":"Developers-Code-of-Conduct-es/#si","title":"Si","text":"Bien! adelante.
"},{"location":"Developers-Code-of-Conduct-es/#el-juego-ya-cuenta-con-un-set-de-logros","title":"El juego ya cuenta con un set de logros?","text":""},{"location":"Developers-Code-of-Conduct-es/#yes","title":"Yes","text":"Si existe un set, no te rindas. Aun lo puede mejorar, agregando/removiendo/re-trabajando logros, o haz cambios a titulos e imagenes, etc. Sin embargo tendras que pasar por el proceso de revision de tu set.
"},{"location":"Developers-Code-of-Conduct-es/#no_1","title":"No","text":"Busca delicadamente. Algunas veces hay multiples entradas en la base de datos para el mismo juego con diferente titulos. Una vez que este seguro, ahora necesitas checar si hay otro desarrollador trabajando en el juego.
Nota: Solo un set de logros es permitido por el mismo juego y consola. Para detalles mira trabajando con el ROM correcto.
"},{"location":"Developers-Code-of-Conduct-es/#hay-otros-desarrollor-trabajando-en-el-juego","title":"Hay otros desarrollor trabajando en el juego?","text":"Para estar seguro que no hay otro desarrollador trabajando en ese juego, checa el foro oficial del juego (esa es la manera oficial de reservar el juego en el que quieres trabajar). Esto es necesario para evadir conflictos entre multiples desarrolladores trabajando en el mismo juego.
"},{"location":"Developers-Code-of-Conduct-es/#si_1","title":"Si","text":"Podria ser posible que el desarrollor hubiera dejado de trabajar en ellos. Se espera que el desarrollador renueve su reservacion cada dos meses. Mira en las etiquetas de tiempo para ver cuando el desarrollador postio su reservacion de desarrollo. Si el desarrollador no a clarificado o renovado su reservacion despues de que hubieran pasado dos meses puedes asumir que fue abandonado y asi postear tus planes de trabajo.
"},{"location":"Developers-Code-of-Conduct-es/#no_2","title":"No","text":"Perfecto! Adelante! El siguiente paso es anunciar tus planes para desarrollar logros para el juego.
"},{"location":"Developers-Code-of-Conduct-es/#anunciando-tus-planes-para-trabajar-en-un-juego","title":"Anunciando tus planes para trabajar en un juego","text":"Anunciar tus planes para el set de logros se hace en el foro oficial del juego del que tienes en mente crear el set.
Postear tus planes es tu manera de reservar oficialmente un juego, sin embargo hay algunas reglas sobre el apartado sets que tienes que tener en cuenta.
"},{"location":"Developers-Code-of-Conduct-es/#notas-importantes","title":"Notas Importantes","text":"Las siguientes reglas existen para saber facilmente quien esta trabajando en que, definir que es aceptable, prevenir que el desarrollo de juegos no se estanque, proteger a los desarrolladores de indebida presion social.
La unica manera de reservar un juego es posteando tu plan en el foro oficial del juego en un nuevo post. - No otros planes o listas posteadas en cualquier otro luegar son consideradas en esto. - Notas de codigo no reservan un juego (si agregaste notas pero no reservaste el juego en el foro, cualquier desarrollador es libre de trabajar en el).
Numero maximo de juegos reservados a la vez: - Desarrollador Junior: 1. - Desarrollador: 4. - Desarrollador Veterano: 8 (un Desarrollador Veterano es alguien que a sido un desarrollador por minimo 18 meses y a publicado un minimo de 20 sets de logros). - Nota: Trabajar en una revision aprovada o unirte con otro desarrollador en un esfuerzo cooperativo no cuenta para este total.
Solo reserva un juego para desarrollo cuando realmente ya vaz a empezar a trabajar en el. En otras palabras, no reserves juegos simplemenete para blockear otros usuarios en trabajar en ellos.
Puedes renovar tu reservacion cada dos meses (+/- 2 semanas) si no haz terminado tu set aun. - Para renovar tu reservacion, postealo en el foro oficial del juego. - No edites tus antiguas declaraciones, haz un nuevo post hablando del progreso actual. - Evita ignorar un set indefinidamente. Si parece que un desarrollador continua retrasando el desarrollo de un set con poco o sin progreso el staff puede intervenir.
No pidas, presiones o desalentes a nadie en trabajar en cualquier juego, en publico o en privado (claramente, asumiendo que la persona esta siguiendo todos los otros estandartes de este Codigo de Conducta).
Una vez que hubieras posteado tu plan, espera un minimo de 72 hours antes de promover cualquier logro a Core. Esto le da tiempo a la comunidad de renovar tu plan y dar retro-alimentacion. Este periodo de espera empieza despues que tu plan este presente y esta en su forma completa (o mayormente completa).
Tu puedes (y deberias) se lo mas creativo que puedas, pero hay algunos conceptos que NO estan bienvenidos para logros, como: - Requirir el uso de glitches (aceptable en Sets Bonus). - Requieren dos jugadores. - Requiere perfeccion por todo el juego (talvez aceptable in Sets Bonus). - Morir (simplemente), o juega mal sin ningun proposito. - Contenido no apropiado (NSFW) en la imagen o texto. - Logros saltando frecuentemente con poco esfuerzo del jugador (incluyendo multiples logros por hacer la misma tarea, como vencer al jefe y otro por conseguir el item que dejo el jefe , etc.) - Logros obtenibles con zero esfuerzo sin razon alguna (ejemplo: empieza el juego con x personaje, colecciona una moneda). Es acceptable si hay algo divertido/historico/interesante que quieres tocar. - Se requiere grinding repetitivo y excesivo, asi como llega a level 99 en un RPG, sin razon alguna (talvez aceptable en Sets Bonus). - Se basa completamente en suerte, especialmente cuando hay probabilidades realmente bajas. Sin embargo, para juegos que el factor aleatorio es un aspecto importante, podria ser apropiado. - \"Logros Secretos\", cuando los jugadores no tiene indicacion de que es lo que tienen que hacer. Si quieres prevenir spoilers da minimo una pista en el titulo o descripcion. De otra manera los jugadores van a empezar a buscar en la web o van a moverle al editor de Logros/Inspector de Memoria, y en el proceso pueden incluso toparse con peores spoilers.
Con cada regla, hay un excepcion. Esta es especialmente verdad con conceptos no-bienvenidos. Todos los conceptos no-bienvenidos tienen un margen de aprovacion. cuando te encuentres en dudas puedes consultar con el equipo de administradores.
"},{"location":"Developers-Code-of-Conduct-es/#cada-set-de-logros-tiene-que-tener","title":"Cada Set de logros TIENE que tener","text":"Proteccion para situaciones donde los jugadores puedes conseguir logros sin esfuerzo, como:
Tambien mira: Plantillas para logros y Ejemplos reales para algunas tecnicas de proteccion bien conocidas.
"},{"location":"Developers-Code-of-Conduct-es/#cada-set-de-logros-deberia-tener","title":"Cada Set de logros DEBERIA tener","text":"Nota: Rich Presence, Tablas de clasificacion, y paginas del juego imagenes/informacion solo pueden ser agregadas por verdaderos desarrolladores
"},{"location":"Developers-Code-of-Conduct-es/#recomendado-pero-no-requerido-por-cada-set-de-logros","title":"Recomendado pero no requerido por cada Set de logros","text":"[m]
al final del titulo del logro para flaggearlo como perdidiso.Tenemos un We have a mapa que puedes utilizar como guia para crear un buen set de logros. Tambien tenemos una guia de dise\u00f1o de logros en como dise\u00f1ar buenos logros, no el lado tecnico pero si el conceptual. Crear un set balanceado es uno de los aspectos mas dificiles de desarrollo, tenemos una guia de balance de dificultad que te podria ayudar en pensar como crear un set que fluya.
Es preferible y recomendado trabajar en un set a la vez. Pero si tienes mas, ten abiertas posibilidades para trabajar en equipo o incluso delegar la creacion de un set si otro desarrollador te contacta.
"},{"location":"Developers-Code-of-Conduct-es/#revisiones-trabajando-en-sets-que-ya-cuentan-con-logros","title":"Revisiones - Trabajando en Sets que ya cuentan con logros","text":"Revisiones, si estas trabajando en un set que ya cuenta con logros tipicamente requiere aprovacion por la comunidad, presentando tu plan en el foro y en el canal de #revision-voting en Discord. No todos los cambios requieren aprovacion. Mira Revisiones de Sets de Logros para mas detalles.
"},{"location":"Developers-Code-of-Conduct-es/#notas-de-codigo","title":"Notas de Codigo","text":"Deja notas precisas para cada valor que utilizes en un logro. Esto te ayuda a ti y a otros de mantener el set libre de bugs.
Eres libre de agregar todos las notas que quieras en el juego sin incluso a ver declarado tus intenciones en trabajar en ese juego. Simplemente se cuidadoso en no borrar notas de codigo creadas por otros usuarios.
"},{"location":"Developers-Code-of-Conduct-es/#manejo-de-tickets","title":"Manejo de Tickets","text":"Despues que hubieras publicado tus logros preparate para reportes de bugs.
Se supone que tienes que dejar tu trabajo libre de bugs con el manejo de tickets y resolviendolos. Responde a todos los tickets lo mas pronto posible. Mientras mas pronto mejor, porque el problema esta fuera de la mente del jugador y puedes utilizarlo como ayuda para resolver el problema tambien.
Mientras resuelves tickets, deja un peque\u00f1o resumen de lo que hiciste. Si tienes una indicacion o un reporte falso deja un mensaje cuales fueron tus conclusiones, y entonces cierra el ticket. Cerrar/Resolver un ticket sin dejar ningun comentario es una actitud no-bienvenida.
No declares tus planes de trabajar en un juego si cuentas con tickets abiertos.
Si tienes planeado resolver tickets o arreglar bugs en logros hechos por otro desarrollador, siempre es una buena practica intentar contactarlo si aun se encuentra activo antes de modificar su trabajo. Un desarrollador inactivo es alguien que cuenta con 10 o mas tickets abiertos y tienen un minimo de dos meses de antiguedad (puedes ver sus tickets abiertos desde el Ticket Manager).
Si el desarrollador esta activo, puedes simplemente hecharle una ayuda con la solucion.
Si el desarrollador esta inactivo puedes libremente resolverle sus tickets. Sin embargo solamente tienes permitido arreglar el logro con lo que dice en su descripcion; no cambies la intencion de logro sin haber pasado por el proceso de revision.
"},{"location":"Developers-Code-of-Conduct-es/#propiedad-de-los-logros","title":"Propiedad de los logros","text":"Cuando tu publicas tu trabajo tu se lo estas dando a la comunidad para que sea rese\u00f1ado y re-trabajado con el paso del tiempo - mira Revisiones en un Set.
Aunque los logros publicados por un desarrollador no son propiedad de el, el aun es el encargado en terminos de arreglar y dar mantenimiento. Si otro jugador corrige el logro el es el nuevo encargado de ese logro.
"},{"location":"Developers-Code-of-Conduct-es/#retroalimentacion-sobre-el-codigo-de-conducta-del-desarrollador","title":"Retroalimentacion sobre el Codigo de Conducta del Desarrollador","text":"A pesar de que el Codigo de Conducta del Desarrollador es el resultado de un intenso debate, no es un documento absoluto. Si tiene sugerencias para nuevas mejoras, contactanos en nuestro servidor de Discord o manda un mensaje a RAdmin.
"},{"location":"Developers-Code-of-Conduct-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-03-12 14:58] meleu:
Updated Developers Code of Conduct ES (markdown)This document covers developers' rights, responsibilities, and rules for fair play.
If you are not a dev, check how to become a developer.
See Also: Users Code of Conduct.
Revisions, as in working on a set that has existing achievements typically requires community approval by presenting your plan in the forum and in the #revision-voting channel in Discord. Not all changes need approval. See Achievement Set Revisions for details.
"},{"location":"Developers-Code-of-Conduct/#expiration-of-developer-status","title":"Expiration of Developer Status","text":""},{"location":"Developers-Code-of-Conduct/#inactivity","title":"Inactivity","text":"The developer status will expire and account type will be set to [Registered]
if the following conditions are met:
It is important for developers to remember that this is NOT a punishment and is only done for security reasons!
Inactivity as a developer will be defined as: - Has not made or renewed a set claim. - Has not created new achievements. - Has not performed maintenance on existing sets (revisions, rescores, badge changes, etc.) - Has not resolved, closed, or otherwise addressed any open tickets, theirs or otherwise.
"},{"location":"Developers-Code-of-Conduct/#negligence","title":"Negligence","text":"Alternatively, developer status will be removed if the developer has 10 or more tickets that are at least 2 months old. If the developer has any active claims during this period, they will be given an additional 30 days or until the earliest claim renewal (whichever comes first) to resolve all 10 tickets. Not doing so will result in the developer falling into inactive status and the claim(s) being released.
"},{"location":"Developers-Code-of-Conduct/#reinstatement","title":"Reinstatement","text":"If a user's developer status was removed due to inactivity and they wish to have it reinstated, they must contact Dev-Compliance. However, before doing so, it is recommended to review any changes that were made to the Developer Code of Conduct, updates to the achievement creation tools, and have a plan to address open tickets for their achievements, if applicable.
The steps involved in reinstatement will vary from user to user depending on the following: - The amount of time elapsed since developer status was removed. - The amount of tickets that may have been opened on their achievements. - Other QA issues that may have come up since developer status was removed. - Moderation warnings or actions the user may have received.
A user may be required to submit work to code reviewers if more than a year has passed since their developer status was removed or if they initially obtained developer status before the junior developer program existed (July 2018) and did not retroactively obtain the Junior Developer badge.
Note: Achievements edited by other developers will not count against a user seeking reinstatement.
"},{"location":"Developers-Code-of-Conduct/#achievement-ownership","title":"Achievement Ownership","text":"When you publish your work you are giving it over to the community to be reviewed and reworked over time - see Achievement Set Revisions.
While the original developer does not own published achievements, they are still the caretaker in terms of bug fixing and maintenance. If another developer revises the achievement, they are the new caretaker of that achievement.
"},{"location":"Developers-Code-of-Conduct/#changing-accounts","title":"Changing Accounts","text":"If a user with either Developer or Jr. Developer status changes accounts, achievements and tickets under the old account will be re-authored and reassigned to the new account.
"},{"location":"Developers-Code-of-Conduct/#feedback-about-the-developer-code-of-conduct","title":"Feedback about the Developer Code of Conduct","text":"Although the Developer Code of Conduct is the result of an intense debate, it's not an immutable document. If you have suggestions for improvements, contact us on our Discord server or send a message to RAdmin.
"},{"location":"Developers-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-11-25 18:42] Hotscrock:
Adjust on Jr. Developers inactivity rule[2023-06-11 22:48] televandalist:
Updated Developers Code of Conduct (markdown)[2023-06-04 19:49] televandalist:
Removed Code Notes section in favor of the page under Content Guidelines[2023-06-04 19:38] televandalist:
Removed \"Reserving a game for achievement development\" section in favor of the \"Claims System\" page.[2023-06-04 19:11] televandalist:
Reverted the \"Developer and Content Guidelines\" change from the last edit.[2023-06-04 19:05] televandalist:
Golden Rules: \"Developer and Content Guidelines\" -> \"Content Guidelines\" | \"Do not ask, pressure or discourage\" -> \"Do not discourage\"[2023-06-04 18:53] televandalist:
Changed the Golden Rules based on a proposal and vote[2023-06-03 04:00] televandalist:
Removed \"Editing Leaderboards\" section since it has been moved to \"Content Guidelines\"[2023-06-02 20:36] televandalist:
Updated Developers Code of Conduct (markdown)[2023-06-02 20:30] televandalist:
Updated Developers Code of Conduct (markdown)Este documento tiene algunas sugerencias sobre dificultad, balance de un set y sobre mantener un set divertido, amigable, y retador. Lo que estas apunto de ver no son reglas, solamente sugerencias.
Nota: ten encenta el C\u00f3digo de Conducta del Desarrollador
"},{"location":"Difficulty-Scale-and-Balance-es/#escala-de-dificultad","title":"Escala de Dificultad:","text":"Mas detalles sobre estos al final.
En general tiene que a ver un balance de dificultad uniforme. Uno tiene que pensar en la dificultad en general del set mientras los construyes. Uno no tiene que hacer sets excesivamente dif\u00edciles.
Un buen balance en un set de 50 logros en promedio deber\u00eda de tener aproximadamente: 4 regalados, 6 logros f\u00e1ciles, 10 medianos, 10 med-dif\u00edcil, 14 dif\u00edciles, y 6 muy-dificiles, 0 kaizo (super-dif\u00edcil).
Una distribuci\u00f3n de dificultad balanceada recompensa a cada tipo de jugador. Le da a cada nivel de habilidad algo que completar hasta que lo dominas por completo.
Los logros no tienen que ser solamente una palomita por completar el juego, (muy f\u00e1cil) crea nuevas memorias divertidas con el juego (diversidad de logros).
Deja espacio para logros regalados que cuenten con cosas curiosas o divertidas del juego. Se espera la suficiente dificultad para que puedes dominar un set y as\u00ed decir que eres un maestro del juego. Pero tampoco necesita pedir demasiado para el jugador.
Tampoco no tienes que pedirle al jugador que haga tareas interminables y repetitivas solo para que un logro sea dificil. Hacer la misma tarea una y otro y otra vez no es dificil, es tipicamente aburrido. Tambi\u00e9n deber\u00edas de evitar hacer logros estilo marat\u00f3n con una colina hasta el final (aquellos que requiere un proceso largo con poca o repetitiva dificultad y entonces aparece un pico de dificultad enorme al final. No lo hagas!).
Los Sets tienen que ser masterizados por un jugador con habilidad, que puso la dedicaci\u00f3n y esfuerzo necesario.
Un Set tiene que reflejar el contenido del juego. Logros de \u00a8grindear\u00a8 en juegos que requieren grinding son razonables, que en otros cazos podr\u00edan ser inapropiados.
Un Set tambi\u00e9n deber\u00eda de romper lo que se espera de un juego, motivando al jugador a encontrar nuevas soluciones a problemas que ni un jugador veterano hubiera considerado.
"},{"location":"Difficulty-Scale-and-Balance-es/#cantidad-del-set","title":"Cantidad del Set:","text":"La cantidad de logros en un Set realmente no tiene reglas. La Calidad es un factor clave.
La cantidad de logros depende fuertemente en la diversi\u00f3n y retos que un juego puede otorgar. Es por eso que el desarrollador del set tiene que conocer al juego muy bien.
"},{"location":"Difficulty-Scale-and-Balance-es/#variedad-en-el-set","title":"Variedad en el Set:","text":"Mantenlo divertido, entrega variedad, reto al jugador, entrega al jugador nuevas cosas que hacer.
Algunos logros pueden pueden ser muy divertidos para el jugador cuando son como un meta-game. Cuando el jugador tiene que pensar el juego enteramente.
Algunos ejemplos notables:
Tienen casi no esfuerzo para b\u00e1sicamente todo tipo de jugador para conseguirlo OR el jugador lo consigue sin poner consientemente un esfuerzo. El jugador lo obtiene por accidente y salta en la pantalla. Algunas veces el jugador ni siquiera tiene idea de porque lo consigui\u00f3. Algunos logros regalados son buenos algunos son malos.
Ejemplos: Empezar el juego, seleccionar un personaje, coleccionar un \u00edtem facil de conseguir, vencer a tu primer enemigo.
"},{"location":"Difficulty-Scale-and-Balance-es/#1-facil","title":"1 - Facil","text":"La mayor\u00eda de jugadores lo pueden conseguir en su primer intento, Algunos en su segundo o tercero. Raramente los jugadores pueden arruinarlo.
Ejemplo: Progresa en stages f\u00e1ciles, consigue 100 monedas, colecciona una pluma, colecciona 20 anillos. Obt\u00e9n la primer mejora, llega a un mundo secreto bastante conocido. Pelea contra un jefe muy simples: la mayor\u00eda de los jefes en Super Mario World, completa los primeros mundos en Sonic.
"},{"location":"Difficulty-Scale-and-Balance-es/#2-medio","title":"2 - Medio","text":"Varios jugadores pueden conseguir este en su primer intento. Algunos despu\u00e9s de varios intentos. Algunos necesitan practicar. Muy pocos van a batallar mucho con ellos.
Ejemplos: Obt\u00e9n todos los switches de colores en Super Mario World, colecciona todos los items en un stage de Castlevania, obt\u00e9n un bonus en un \u00e1rea escondida, obt\u00e9n lunas en SMW. Vence Contra con el c\u00f3digo Konami.
"},{"location":"Difficulty-Scale-and-Balance-es/#3-medio-dificil","title":"3 - Medio-Dif\u00edcil","text":"Un porcentaje bajo de jugadores pueden conseguirlo en su primer intento. Algunos despu\u00e9s de varios intentos y la mayor\u00eda les va a tomar algo de esfuerzo y practica completar uno de estos. Algunos lo van a encontrar muy retador, y se rendir\u00e1n.
Ejemplos: Obt\u00e9n una de las emeraldas chaos en Sonic 2. Completa Super Mario World.
"},{"location":"Difficulty-Scale-and-Balance-es/#4-dificil","title":"4 - Dif\u00edcil","text":"Muy pocos jugadores pueden conseguir uno en su primer intento, incluso si ya conocen el juego (realmente no es su primer intento o si?) la mayor\u00eda pueden completar estos con un esfuerzo solido, algunos intentos y algo de practica, y algunos necesitan practicar con otros juegos primero.
Ejemplos: Obt\u00e9n todas las esmeraldas Chaos en Sonic 1,2,3. Pasa Contra sin el c\u00f3digo Konami.
"},{"location":"Difficulty-Scale-and-Balance-es/#5-muy-dificil","title":"5 - Muy Dif\u00edcil","text":"Solo los jugados mas extra\u00f1os pueden completar uno de estos en su primer intento. La mayor\u00eda puede completarlo despu\u00e9s de muchos intentos, Muchos jugadores lo van a dejar abandonado y no van a estar dispuestos a completar el set al menos que sean complecionistas o fan\u00e1ticos del juego. Muchos no son capases de completarlo despu\u00e9s de muchos intentos. Usualmente requiere practica significativa, altas habilidades, experiencia, b\u00fasqueda, o gu\u00edas para completarlo.
Ejemplos: Completa Contra en una sola vida. Escapa de Zebes (Super Metroid) en 2 minutos o menos. Vence a los jefes de Megaman sin recibir da\u00f1o. Muchos de completa niveles sin recibir da\u00f1o, depende del juego.
"},{"location":"Difficulty-Scale-and-Balance-es/#6-super-dificil","title":"6 - Super Dif\u00edcil","text":"La mayor\u00eda de los jugadores no son capases de completarlo despu\u00e9s de decenas de intentos. Algunos jugadores tal vez nunca sean capases de completarlo ya que puede requerir noci\u00f3n del mando y el tiempo mas all\u00e1 de lo normal. Los jugadores con mas habilidad inclusive lo consideran bastante dificil. Puede reiniciar esfuerzos de maratones.
Ejemplos: Completa un juego sin conseguir da\u00f1o especialmente si el jugador tiene una barra de vida, retos que restringen al jugador drasticamente y requieren precisi\u00f3n por frame perfecta. Completa Contra dos veces con una vida. Completa Mario Bros sin conseguir monedas. Completa Megaman sin recibir da\u00f1o.
"},{"location":"Difficulty-Scale-and-Balance-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-14 15:34] eldexterr:
Created Difficulty Scale and Balance es (markdown)Link para o texto em ingl\u00eas: Difficulty Scale and Balance
Este documento tem algumas sugest\u00f5es sobre dificuldade, balanceamento do set e manuten\u00e7\u00e3o de um set divertido, e desafiador. O que voc\u00ea ir\u00e1 ver aqui n\u00e3o s\u00e3o regras, apenas sugest\u00f5es.
Nota Seja conciente da C\u00f3digo de Conduta dos Desenvolvedores
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#escala-de-dificuldade","title":"Escala de Dificuldade","text":"Mais detalhes sobre estes no fundo
Em geral, deve haver um equil\u00edbrio est\u00e1vel de dificuldade. Deve-se pensar na dificuldade geral do set ao constru\u00ed-lo. N\u00e3o se deve tornar os set excessivamente dif\u00edceis.
Um bom equil\u00edbrio nas 50 conquistas em um set m\u00e9dio teria aproximadamente: 4 Brindes, 6 super f\u00e1ceis. 10 m\u00e9dios, 10 medianos, 14 dif\u00edceis, 6 Muito dif\u00edceis e 0 kaizo.
Uma distribui\u00e7\u00e3o de dificuldade bem balanceada tem recompensas para todos os tipos de jogadores. Isso se d\u00e1 a cada n\u00edvel de habilidade algo para realizar at\u00e9 a platina.
Conquistas n\u00e3o devem ser apenas uma marca de conclus\u00e3o de um jogo, (muito f\u00e1cil) mas crie divertidas novas mem\u00f3rias para o jogo (diversividade de desafios).
Isto deixa espa\u00e7o para os brindes que est\u00e3o apresentando elementos curiosos ou divertidos dos jogos. Isto lhe espera dificuldade suficiente que, uma vez que voc\u00ea platina o set, voc\u00ea \u00e9 o mestre do jogo. Mas isso n\u00e3o pede muito do jogador.
Tamb\u00e9m n\u00e3o deve ser pedir ao jogador para fazer coisas aparentemente sem fim e repetitivas para fazer um set parecer dif\u00edcil. Fazendo a mesma tarefa denovo e denovo, n\u00e3o \u00e9 dif\u00edcil, \u00e9 tipicamente tedioso. Deve quase sempre evitar fazer tipos de maratonas com uma \"colina\" no final (Aquelas que requer um longo tempo ou dificuldade repetitiva com e depois uma eleva\u00e7\u00e3o de alta dificuldade no final. N\u00e3o fa\u00e7a isso!)
Sets dever\u00e3o ser platin\u00e1veis por um jogador h\u00e1bil que d\u00e1 um esfor\u00e7o dedicado.
Sets dever\u00e3o refletir o conte\u00fado do jogo. Farmar conquistas em jogos que exigem Farm s\u00e3o razo\u00e1veis, em outros lugares eles seriam fequentemente inapropriados
Sets dever\u00e3o tambem quebrar o que \u00e9 esperado de um jogo, impulsionando o jogador a procurar encontrar novas solu\u00e7\u00f5es para problemas que um jogador veterano nunca considerou
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#quantidade-de-conquistas","title":"Quantidade de Conquistas:","text":"A quantidade de conquistas n\u00e3o tem regras t\u00e3o duras. Quantidade \u00e9 um fator chave
A quantidade de um set depende fortemente de o quanto divertido e desafiador o jogo pode oferecer. \u00c9 por isso que o desenvolvedor do set deve conhecer o jogo muito bem.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#variedade-de-conquistas","title":"Variedade de Conquistas:","text":"Mantenha divertido, d\u00ea variedade, desafie o jogador, d\u00ea ao jogador novas coisas para se fazer.
Algumas conquistas podem dar muito mais divers\u00e3o para o jogador do que um jogo de metas. Onde \u00e9 necessario que o jogador repense o jogo inteiramente.
Alguns Exemplos Not\u00e1veis:
N\u00e3o leva quase nenhum esfor\u00e7o para basicamente todos os jogadores para conquistar OU o jogador consegue sem nenhuma consci\u00eancia ou esfor\u00e7o. Al\u00e9m do jogador conseguir por acidente e aparecer na tela. Algumas vezes o jogador n\u00e3o tem nenhuma id\u00e9ia porque ganhou ele. Alguns conquistas brindes s\u00e3o boas e ruins.
Exemplos: Iniciando o jogo, escolhendo um personagem, coletando um item de acesso f\u00e1cil, matando seu primeiro inimigo. Trope\u00e7ando em uma conquista que n\u00e3o levou a premedita\u00e7\u00e3o, mas destaca elementos do jogo
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#1-facil","title":"1 - F\u00e1cil","text":"A maioria dos jogadores consegue estas na primeira tentativa, alguns na segunda ou terceira tentativa. Raramente os jogadores podem se confundir.
Exemplos: Progresso em fases f\u00e1ceis, pegando 100 moedas, coletando uma pena, coletando 20 an\u00e9is. Pegando o primeiro upgrade, indo para uma fase secreta muito conhecida. Lutando com um chefe facil: a maioria dos chefes em Super Mario World, completando fases iniciais em Sonic The Hedgehog.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#2-medio","title":"2 - M\u00e9dio","text":"A Maioria dos jogadores consegue pegar na primeira tentativa. Muitos poderiam depois de algumas tentativas. Alguns ir\u00e3o precisar praticar. Alguns poucos v\u00e3o lutar com eles.
Exemplos: Conseguindo todos os switches coloridos no Super Mario World, coletando todos os itens em uma fase de Castlevania, conseguindo um item b\u00f4nus em uma \u00e1rea mais escondida como as lua em SMW. Zerando Contra com o Konami code
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#3-medianos","title":"3 - Medianos","text":"Uma baixa quantidade de jogadores ir\u00e3o conseguir isso na primeira tentativa. Alguns depois de algumas tentativas e a maioria vai levar algum esfor\u00e7o e pr\u00e1tica para concluir. Alguns ir\u00e3o achar eles muito desafiantes e desistir.
Exemplos: Conseguindo algumas das esmeraldas do caos em Sonic The Hedgehog 2, Zerar Super Mario World
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#4-dificil","title":"4 - Dif\u00edcil","text":"Muitos poucos jogadores ir\u00e3o conseguir na primeira tentativa, possivelmente se ja conhece o jogo (n\u00e3o realmente a primeira tentativa?) Alguns podem completar com algum esfor\u00e7o solido, muitas tentativas e alguma pr\u00e1tica e precisa praticar outros jogos antes.
Exemplos: Conseguindo todas as Esmeraldas do Caos em Sonic 1,2,3. Zerando Contra sem o Komani Code.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#5-muito-dificil","title":"5 - Muito Dif\u00edcil","text":"Apenas o mais raro dos jogadores conseguem estas em uma primeira tentativa. A maioria consegue complet\u00e1-lo depois de muitas tentativas, Muitos jogadores ir\u00e3o desistir aqui e n\u00e3o estar\u00e1 disposto a completar o set a menos que eles s\u00e3o completistas ou f\u00e3s do jogo. Muitos n\u00e3o ser\u00e3o capazes depois de muitas tentativas. Geralmente pega uma pr\u00e1tica significante, altas habilidades, experi\u00eancia, pesquisas ou guias para completar
Exemplos: Zerando Contra com uma vida. Escapando de Zebes (Super Metroid) abaixo de dois minutos. Derrotando muitos chefes de Megaman sem tomar dano. Muitos est\u00e1gios sem danos, dependendo do jogo.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#6-super-dificil","title":"6 - Super Dif\u00edcil","text":"A Maioria dos jogadores n\u00e3o ser\u00e3o capaz de completar isto depois de d\u00fazias de tentativas. Muitos jogadores nunca ser\u00e3o capazes de complet\u00e1-lo, pois podem exigir velocidades de rea\u00e7\u00e3o al\u00e9m das normais. Os jogadores mais qualificados ainda consideram isso extremamente dif\u00edcil. Pode levar os esfor\u00e7os de maratonas para reiniciar
Exemplos: Completar um jogo sem tomar dano, especialmente se o jogador tiver uma barra de vida, desafios que restringem drasticamente o jogador e exigem precis\u00e3o quase perfeita para o sucesso. Zerar Contra duas vezes com uma vida. Zerando Megaman sem tomar dano. Zerar Super Mario Bros sem coletar power-ups, coletando apenas 2 moedas, e com a pontua\u00e7\u00e3o abaixo de 500
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-26 02:38] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:37] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:36] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:35] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:19] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-25 16:34] KingDice001:
Created Difficulty Scale and Balance pt_BR (markdown)This doc has some suggestions about difficulty, set balance and on keeping a set fun, approachable, and challenging. What you're going to see here are not rules, just suggestions.
Note: be aware of Developers Code of Conduct
"},{"location":"Difficulty-Scale-and-Balance/#difficulty-scale","title":"Difficulty Scale:","text":"More details on these at the bottom.
In general there should be an steady sloping balance of difficulty. One should think of the overall difficulty of a set while building it. One should not make sets excessively difficult.
A good set balance on a 50 cheeves in an average set would have roughly: 4 freebies, 6 easy cheeves, 10 medium, 10 med-hard, 14 hard, and 6 very-hard, 0 kaizo.
A well balanced difficulty distribution has rewards for every type of player. It gives each skill level something to accomplish until mastery.
Achievements should not just be a check-mark of completing a game, (too easy) but create fun new memories for the game (diversity of challenges).
It leaves space for freebies that are featuring curious or fun elements of the game. It expects enough difficulty that once you've mastered the set you are a master of the game. But it doesn't ask too much from the player either.
It also shouldn't ask the player to be doing seemingly endless repetitive grinding to make a set seem harder. Doing the same task over and over isn't hard, it's typically dull. It should almost always avoid making marathon types with a hill at the end (ones that require long setup times with low or repetitive difficulty and then a spike of high difficulty at the end. Don't do it!).
Sets should be mastereable by a skilled player who gives a dedicated effort.
Sets should reflect the content of the game. Grinding cheeves in games that require grinding are reasonable, where in other places they would often be inappropriate.
Sets should also break out of just what is expected from a game, pushing the player to need to find new solutions for problems a veteran player never considered.
"},{"location":"Difficulty-Scale-and-Balance/#set-quantity","title":"Set Quantity:","text":"Set quantity should not have such hard rules. Quality is the key factor.
The set quantity strongly depends on how much fun and challenges the game can give. That's why the set developer must know the game very well.
"},{"location":"Difficulty-Scale-and-Balance/#set-variety","title":"Set Variety:","text":"Keep it fun, give it variety, challenge the player, give the player new things to do.
Some achievements can give much fun to the player when they are like a meta-game. Where the player is required to rethink the game entirely.
Some notable examples:
Takes almost no effort for basically all players to achieve this OR the player gets it without any conscious effort. The player gets these on accident and they pop up on the screen. Sometimes the player will have no idea why they earned them. Some freebies are good some are bad.
Examples: Starting the game, picking a character, collecting an easily accessible item, killing your first enemy. Stumbling on a cheeve that took no forethought but highlights elements of the game.
"},{"location":"Difficulty-Scale-and-Balance/#1-easy","title":"1 - Easy","text":"Most players could get these on their first attempt, Some on their second or third attempt. Rarely players can mess it up.
Examples: Progress on easy stages, getting 100 coins, collecting a feather, collecting 20 rings. Getting the first upgrade, getting to a well known secret stage. Fighting a simple boss: most bosses in Super Mario World, completing early stages in Sonic.
"},{"location":"Difficulty-Scale-and-Balance/#2-medium","title":"2 - Medium","text":"Many players could get this on their first attempt. Many could after a few attempts. Some will need to practice. Very few will struggle with them.
Examples: Getting all the colored switches in Super Mario World, collecting all of the items in a Castlevania stage, getting a bonus item in a more hidden area, like moons in SMW. Beating Contra with the Konami code.
"},{"location":"Difficulty-Scale-and-Balance/#3-medium-hard","title":"3 - Medium-Hard","text":"A low amount of players could get this on their first attempt. Some after a few attempts and most will take some effort and practice to complete these. A few will find them very challenging, and give up.
Examples: Getting some of the chaos emeralds in Sonic 2. Beating Super Mario World.
"},{"location":"Difficulty-Scale-and-Balance/#4-hard","title":"4 - Hard","text":"Very few player can get these on their first attempt, perhaps if they already know the game (not really a first attempt is it?) Most can complete these with a solid effort, many attempts and some practice, and some need to practice other games first.
Examples: Getting all of the Chaos emeralds in Sonic 1,2,3. Beating Contra without the Konami code.
"},{"location":"Difficulty-Scale-and-Balance/#5-very-hard","title":"5 - Very Hard","text":"Only the rarest of players can complete these on a first attempt. Most can complete it after many attempts, Many players will drop off here and won't be willing to complete the set unless they are completionists or fans of the game. Many are not able to complete this after very many attempts. Usually takes significant practice, high skills, experience, research, or guides to complete.
Examples: Beating Contra in one life. Escaping Zebes (Super Metroid) in under two minutes. Beating many of the Megaman bosses without taking damage. Many damagless stages, depending on the game.
"},{"location":"Difficulty-Scale-and-Balance/#6-super-hard","title":"6 - Super Hard","text":"Most players are not able to complete this after dozens of attempts. Many players will never be able to complete it as it could require beyond normal reaction speeds. The top-most skilled players still consider these blisteringly hard. It may take marathon efforts to restart.
Examples: Completing a game without taking damage especially if the player has a lifebar, challenges that drastically restrict the player and require near frame perfect accuracy tor success. Beating contra twice in one life. Penniless plumber. Beating Megaman without taking damage.
"},{"location":"Difficulty-Scale-and-Balance/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-12-02 15:52] monkey-bug:
Fix typos and points in notable examples[2022-10-09 22:11] ScottFromDerby:
/achievement links need to be lowercase to work[2017-11-26 00:26] Kvon:
Changed title from \"Achievement Difficulty Scale and Difficulty Balance\"Last 10 changes on this page:
[2023-06-30 13:04] televandalist:
Updated Docs To Do List (markdown)[2023-06-30 13:01] televandalist:
Updated NEWTEST Overview (markdown)Estos no contienen temas para la Interfaz (Overlay), puedes descargar el est\u00e1ndar y los personalizados en los enlaces a continuaci\u00f3n. Estos enlaces se mantienen actualizados.
Galer\u00eda de vista previa
"},{"location":"Downloads-es/#simple","title":"Simple","text":"Last 10 changes on this page:
[2018-05-30 12:46] ShinyNinetalesTM:
createdA leaderboard's concept/design should not be changed once players have begun submitting entries. Exceptions are as follows:
A. If a leaderboard has a bug in which a correction would result in a discrepancy between between pre and post fix LB submissions, this would be considered a fundamental change and it may be most appropriate to \"retire\" the leaderboard and create a new corrected LB.
B. If a protection needs to be added to the cancel field in a leaderboard, for example to eliminate point farming/leaching (Areas where a game generates an endless number of things, such as items, money, or enemies), it may be preferable to either \u201cretire\u201d or create an additional leaderboard. \"Retiring\" a leaderboard means preventing future submissions.
If a developer wishes to create a new concept for a leaderboard, a new one should be added.
If a developer wants to implement a fundamental change to a leaderboard while keeping it intact, a revision vote is required. \u201cFundamental changes\u201d involve the following:
A. Changes to how players submit scores.
B. Changes to submission requirements that impact difficulty and or strategy.
A Jr. Developer may only change, add, or remove a leaderboard with a code-reviewer that goes through the revision process with them.
Last 10 changes on this page:
[2023-06-03 03:58] televandalist:
Updated WIP Editing Leaderboards (markdown)May be configured via the Config > Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
ESC
(Backspace
to close overlay)Pause
F
Tab
May be configured via the Settings > Hotkeys dialog
F1
(individual slots can be assigned via Hotkeys
> Save State to Slot X
)F3
(individual slots can be assigned via Hotkeys
> Save State to Slot X
)Shift+F2
(prev) / F2
(next)ESC
Space
Hotkeys
> Frame Advance
.
Tab
May be configured via the Settings > Input > Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
ESC
P
;
=
-
F5
F7
F6
(prev) / F8
(next)F12
Ctrl+F12
F2
May be configured via the Config > Map Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
Pause
\\
Tab
May be configured via the Options > Configuration dialog (Select Hotkeys > Game playing (windowed))
F5
F7
1
-0
Pause
F4
(Must enable advanced settings: Options
> Configuration
> General Settings
> uncheck Hide advanced settings
)F11
F12
Pause
Shift+Pause
ScrollLock
F12
> Misc > SaveF12
> Misc > LoadF12
> Key > Assign PAUSE
to a function keyF12
> Key > Assign NOWAIT
to a function keyShift+F1
- Shift+F10
F1
- F10
Pause
\\
Tab
Shift+F1
- Shift+F10
F1
- F10
Pause
Ctrl+N
Options
> Key Shortcuts
> Emulation
> Turbo Mode
Last 10 changes on this page:
[2024-01-14 08:20] Jamiras:
Created Emulator Hotkeys for Developers (markdown)More details on BizHawk cores can be found here.
"},{"location":"Emulator-Support-and-Issues/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-29 02:46] James Groom:
Copy BizHawk core names from readme[2024-01-27 11:17] televandalist:
Updated Emulator Support and Issues (markdown)[2024-01-12 16:54] Jamiras:
add mGBA to supported cores for GB/GBC[2023-12-29 03:19] televandalist:
Updated Emulator Support and Issues (markdown)[2023-12-29 03:15] televandalist:
Added Pizza Boy GBA+GBC and PPSSPP standalone. Hopefully fixed the line breaks for the deployed docs (it's not WYSIWYG)[2023-09-19 19:48] Jamiras:
Updated Emulator Support and Issues (markdown)[2023-07-23 17:59] Joe Pizzimenti:
Updated Emulator Support and Issues (markdown)[2023-06-24 07:11] televandalist:
Updated Emulator Support and Issues (markdown)[2023-06-04 16:16] Jamiras:
Updated Emulator Support and Issues (markdown)[2023-06-01 22:08] televandalist:
Updated DSiLast 10 changes on this page:
[2023-04-20 05:46] televandalist:
Fixed links[2022-03-13 21:23] televandalist:
Fix links[2022-02-08 22:56] televandalist:
Added links for DevQuest and Rollouts doc pages[2022-02-08 22:55] televandalist:
Updated Events (markdown)[2022-02-06 02:47] televandalist:
Start Event Page/Directory - will add more laterRetroAchievements.org es una comunidad que colabora y compite para ganar logros personalizados en juegos cl\u00e1sicos a trav\u00e9s de la emulaci\u00f3n. Los logros son hechos por y para la comunidad. Ofrecemos varios emuladores personalizados para su uso, que detectar\u00e1n cuando hayas completado varios desaf\u00edos. Una vez que hayas iniciado sesi\u00f3n, los emuladores publicar\u00e1n los logros que hayas completado en el sitio, para que puedas verificar y comparar tu progreso con el de tus amigos.
Aqu\u00ed hay un ejemplo de RAGens, jugando Streets of Rage 2. Ver\u00e1s dos contadores de intentos de tabla de clasificaci\u00f3n (abajo a la derecha), un logro desbloque\u00e1ndose y finalmente la interfaz (Overlay, presionando ESC):
"},{"location":"FAQ-es/#que-emulador-necesito-usar","title":"\u00bfQu\u00e9 emulador necesito usar?","text":"Los emuladores oficiales de RetroAchievements.org son todos basados en Windows. Para otros sistemas operativos, puedes usar RetroArch. M\u00e1s informaci\u00f3n a continuaci\u00f3n:
"},{"location":"FAQ-es/#emuladores-oficiales-de-retroachievementsorg","title":"Emuladores oficiales de RetroAchievements.org","text":"Descarga el emulador de tu elecci\u00f3n en la p\u00e1gina de descargas, inicia sesi\u00f3n con tu nombre de usuario y contrase\u00f1a (s\u00ed, primero debes crearte una cuenta), luego carga una ROM \u00a1y juega!
"},{"location":"FAQ-es/#como-accedo-a-la-interfaz-overlay-de-logros","title":"\u00bfC\u00f3mo accedo a la interfaz (Overlay) de logros?","text":"Normalmente, esto se configurar\u00e1 en la tecla de teclado 'ESC' o en la funci\u00f3n de pausa del juego. En la mayor\u00eda de los emuladores, un juego debe estar activo para que funcione.
Algunos de los emuladores ya deber\u00edan estar configurados asignando un bot\u00f3n de controlador para ver la interfaz de logros. Generalmente 'ESC' en el teclado debe activarlo, pero si deseas asignarlo a un control, aqu\u00ed hay algunos trucos para algunos de los emuladores oficiales:
Para sistemas operativos que no sean Windows, debes usar el emulador RetroArch.
Actualmente se pueden obtener logros a trav\u00e9s de RetroArch en las siguientes plataformas:
Se puede obtener RetroArch en los siguientes enlaces:
Una vez que lo hayas instalado y hecho la configuraci\u00f3n inicial, sigue esta gu\u00eda para configurar los logros: https://libretro.readthedocs.io/en/latest/guides/retroachievements/
"},{"location":"FAQ-es/#que-nucleo-core-retroarch-deberia-usar","title":"\u00bfQu\u00e9 n\u00facleo (Core) RetroArch deber\u00eda usar?","text":"Hay que tener en cuenta que no todos los n\u00facleos (Core) de RetroArch son compatibles con RetroAchievements. Consulta esta lista para ver cu\u00e1l elegir.
"},{"location":"FAQ-es/#como-puedo-ver-la-insignia-badge-cuando-gano-un-logro-en-retroarch","title":"\u00bfC\u00f3mo puedo ver la insignia (Badge) cuando gano un logro en RetroArch?","text":"Esta funci\u00f3n fue implementada en RetroArch 1.7.7 (May/2019), aunque aun hay algunas plataformas en las que aun no funciona (como en el PS Vita). Simplemente necesitas percatarte que la opci\u00f3n de Menu Widget este habilitada (que usualmente lo esta por default).
"},{"location":"FAQ-es/#retroarchralibretro-no-corre-mi-juego-de-arcade-que-tengo-que-hacer","title":"RetroArch/RALibretro no corre mi juego de arcade. \u00bfQue tengo que hacer?","text":"Primero lo primero: percatate de estar utilizando el n\u00facleo de RetroArch correcto. Checa aqui cual nucleo deberias de utilizar para poder utilizar la funci\u00f3n de RetroAchievements en juegos de arcade: https://libretro.readthedocs.io/en/latest/guides/retroachievements/#arcade
Segundo punto: Los ROMs de Arcade son mas complicados que los de consolas. Hay algunos conceptos y terminologias que necesitas entender y asi todo va a empezar a tener sentido. Aqu\u00ed hay un buen texto en ingles sobre este tema: Demystifying MAME ROMs.
Tip Pro: utiliza tu motor de b\u00fasqueda preferido para buscar un \"set de referencia\" (utilizar ROMs de manera aleatoria de diferentes fuentes es un m\u00e9todo de \"prueba y error\" y lo mas probable es que te frustres demasiado).
"},{"location":"FAQ-es/#sera-retroachievements-compatible-con-playstation","title":"\u00bfSer\u00e1 RetroAchievements compatible con PlayStation?","text":"Respuesta mem\u00e9tica: Cada vez que alguien pregunta sobre los logros de PSX, el desarrollo se retrasa un mes m\u00e1s. Asi que por favor, \u00a1DEJA DE PREGUNTAR!
Respuesta corta: Si, lo ser\u00e1, pero aun no hay una fecha estimada para su llegada.
Respuesta larga: El m\u00e9todo actual de creaci\u00f3n de logros tiene limitaciones que influyen directamente en la calidad de los logros. Los juegos de PlayStation son un poco m\u00e1s complejos que los de las consolas que ya son compatibles aqu\u00ed (excepto quiz\u00e1s, los de Nintendo 64). Y en consecuencia, los logros de los juegos de PS merecen una mayor elaboraci\u00f3n y cuidado. Todos tenemos un gran respeto por la consola de PlayStation, y esa es exactamente la raz\u00f3n por la que queremos implementar mejoras en el kit de herramientas utilizado para crear logros antes de agregar este soporte.
Nota: si encuentras cualquier otro sitio con logros para PlayStation, ten en cuenta que no esta asociado con RetroAchievements.
"},{"location":"FAQ-es/#mi-correo-electronico-de-bienvenida-se-ha-perdido","title":"\u00a1Mi correo electr\u00f3nico de bienvenida se ha perdido!","text":"Lamentablemente, es sabido que algunas veces se pierde el correo electr\u00f3nico de bienvenida. Si esto sucede, inicia sesi\u00f3n con tu nombre de usuario/contrase\u00f1a con el que te registraste, luego visita tu p\u00e1gina de configuraci\u00f3n. En la parte superior, encontrar\u00e1s la opci\u00f3n de volver a enviar tu correo electr\u00f3nico de registro.
"},{"location":"FAQ-es/#donde-puedo-encontrar-roms","title":"\u00bfDonde puedo encontrar ROMs?","text":"Aqu\u00ed no. Lamentablemente, es ilegal alojar o distribuir ROMs con derechos de autor.
"},{"location":"FAQ-es/#por-que-mi-juego-no-esta-cargando-sus-logros","title":"\u00bfPor qu\u00e9 mi juego no est\u00e1 cargando sus logros?","text":"Ya sea:
Una buena pr\u00e1ctica es verificar el tema oficial del foro del juego. Si a\u00fan no tienes una respuesta, consulta esta p\u00e1gina aqu\u00ed para m\u00e1s detalles: Mi juego no esta cargando los logros.
"},{"location":"FAQ-es/#que-es-el-modo-hardcore","title":"\u00bfQu\u00e9 es el modo \"Hardcore\"?","text":"El modo Hardcore es una caracter\u00edstica adicional para separar a los buenos jugadores de los grandes jugadores: el modo Hardcore desactiva toda forma de salvado y cargado (savestates) en el emulador: no podr\u00e1s guardar y volver a cargar en cualquier momento. Tendr\u00e1s que completar el juego y obtener los logros la primera vez, al igual que en la consola original. En recompensa por esto, ganar\u00e1s tanto el logro est\u00e1ndar como el logro en modo Hardcore, en efecto, \u00a1ganando el doble de puntos! \u00a1Un juego que normalmente vale 400 puntos, vale 800 puntos si lo completas exitosamente en el modo Hardcore! Por ejemplo: si completas el juego por completo con 400 puntos, entonces tienes la oportunidad de ganar otros 400 en el modo Hardcore.
Si quieres jugar con el modo Hardcore desactivado (tambi\u00e9n conocido como \"softcore\"), podr\u00e1s tener algunos problemas. M\u00e1s detalles aqu\u00ed: Why you shouldn't use the load state feature
"},{"location":"FAQ-es/#no-obtuve-este-logro-o-lo-obtuve-en-un-momento-equivocado","title":"\u00a1No obtuve este logro! (o lo obtuve en un momento equivocado)","text":"Hay una caracter\u00edstica incorporada solo en los emuladores oficiales (no en RetroArch) que permite informar sobre logros rotos que se obtienen en el momento equivocado, o que no se obtienen del todo. Ir a RetroAchievements -> Report Broken Achievements.
Ejemplo:
.
Tambi\u00e9n hay una forma de informar sobre logros rotos directamente a trav\u00e9s del sitio web. En la p\u00e1gina de cada logro, hay un enlace que dice Report an issue for this achievement
, como en la imagen a continuaci\u00f3n:
Agrega detalles del estado de tu juego, cu\u00e1ndo se activ\u00f3/no se activ\u00f3 el logro, en qu\u00e9 modo de juego ocurri\u00f3, d\u00f3nde estabas cuando sucedi\u00f3/no sucedi\u00f3, si reseteaste el juego recientemente, o cualquier otra cosa que creas que pueda ser relevante para el logro. Esto es necesario para nuestro sistema, para que los desarrolladores sepan d\u00f3nde esta el problema.
"},{"location":"FAQ-es/#complete-un-logro-dificil-pero-no-se-activo-se-me-puede-desbloquear-manualmente","title":"Complet\u00e9 un logro dif\u00edcil pero no se activ\u00f3, \u00bfse me puede desbloquear manualmente?","text":"S\u00ed. Pero debes seguir los siguientes pasos:
Mira la pregunta/respuesta anterior para saber c\u00f3mo enviar un ticket.
1. Si el logro no se registr\u00f3 en el sitio debido a un problema de red, no es necesario que envie un ticket.#help-me
de nuestro Servidor de Discord, mencionando a alg\u00fan @admin u otro usuario con el rol de admin, proporcionando la siguiente informaci\u00f3n: 1. En enlace a la p\u00e1gina del logro 2. En que modo estabas jugando (hardcore/softcore) 3. El enlace a la evidencia (captura de pantalla, video, etc.)\u00a1Es bueno escuchar eso! El mejor lugar para empezar es aqui: Getting Started as an Achievement Developer. Una vez que est\u00e9s familiarizado con el Memory Inspector y otros di\u00e1logos relacionados con los logros, puedes ir al resto de los Developer Docs.
Por favor, no dudes en preguntar si necesitas ayuda, \u00a1no luches! Lo m\u00e1s importante es asegurarte de que est\u00e1s disfrutando lo que sea que est\u00e9s haciendo. Si no te est\u00e1s divirtiendo, no lo hagas. Pero si te sientes frustrado y quieres persistir, simplemente deja caer un mensaje en los foros o en el Servidor de Discord y alguien se comunicar\u00e1 contigo en breve.
"},{"location":"FAQ-es/#que-son-los-puntos-blancos-white-points","title":"\u00bfQue son los Puntos Blancos (White points)?","text":"Los puntos blancos (White points) son secundarios seg\u00fan lo dif\u00edcil que sea un logro. Explicado en detalle aqu\u00ed.
"},{"location":"FAQ-es/#que-se-considera-hacer-trampa-para-el-hardcore-que-pasa-si-encuentro-evidencia-de-un-tramposo","title":"\u00bfQu\u00e9 se considera hacer trampa (para el Hardcore)? \u00bfQu\u00e9 pasa si encuentro evidencia de un tramposo?","text":"Explotaci\u00f3n de conjuntos de logros y alteraci\u00f3n o modificaci\u00f3n deliberada de juego, emulador, memoria, velocidad (avance r\u00e1pido) o conjunto. Cargar bater\u00edas grabadas para obtener logros fuera de lugar sin ganarlos durante el juego normal.
Se prohiben todas las trampas de los juegos, a menos que se especifique en la descripci\u00f3n o los comentarios del logro en la p\u00e1gina del logro.
Vivimos por un c\u00f3digo de honor m\u00e1s que nada. Si encuentras evidencia de un tramposo, env\u00eda la evidencia a RAdmin, o env\u00eda un correo electr\u00f3nico a RAmodmail@gmail.com.
"},{"location":"FAQ-es/#que-pasa-si-obtengo-un-logro-que-no-gane","title":"\u00bfQu\u00e9 pasa si obtengo un logro que no gan\u00e9?","text":"Lo mismo ocurre con no obtenerlo cuando deber\u00eda, en la mayor\u00eda de los casos, querr\u00e1s crear un informe de ticket (ver arriba), dejando una explicaci\u00f3n de lo que sali\u00f3 mal. Tambi\u00e9n querr\u00e1s eliminar estos logros de tu cuenta, para que puedas tener la satisfacci\u00f3n de realmente ganarlos por ti mismo.
Restableciendo logros no ganados.
"},{"location":"FAQ-es/#como-puedo-restablecer-mi-contrasena-si-no-la-recuerdo","title":"\u00bfC\u00f3mo puedo restablecer mi contrase\u00f1a? (Si no la recuerdo)","text":"Justo aqu\u00ed: https://retroachievements.org/resetPassword.php
En el sitio, p\u00e1gina principal, mientras no est\u00e9 conectado:
"},{"location":"FAQ-es/#porque-no-puedo-ver-mi-nueva-foto-de-perfil","title":"\u00bfPorque no puedo ver mi nueva foto de perfil?","text":"Presiona Ctrl + F5
(en la mayor\u00eda de navegadores). Algunas veces despu\u00e9s de haber cambiado tu foto de perfil (tambi\u00e9n conocido como avatar o foto de usuario) necesitas refrescar la cache de tu navegador; en la mayor\u00eda de los navegadores la manera mas r\u00e1pida de hacerlo es con Ctrl + F5
.
En el sitio web vas a obtener un badge que dice \"I helped fund RA!\". En el servidor de discord vas a tener acceso a un canal dedicado. Aunque estamos inmensamente agradecido por los aportes de nuestros Patreons, no hay otro bonus aparte de esos.
Gracias a las contribuciones de Patreon el proyecto de RetroAchievements puede pagar un servidor decente en el sitio web, correr el bot de discord y tambi\u00e9n realizar respaldos cada cierto tiempo (para recuperar informaci\u00f3n en caso de un desastre), y todo esto con una experiencia libre de anuncios. La comunidad entera le merece un gran gracias a los patreons.
"},{"location":"FAQ-es/#retroachievements-esta-haciendo-dinero-por-medio-de-la-emulacion","title":"\u00bfRetroAchievements esta haciendo dinero por medio de la emulaci\u00f3n?","text":"No. RetroAchievements es una comunidad de fans devotos que quieren rendirle homenaje a sus juegos favoritos creando y sacando logros! Aunque tambi\u00e9n aceptamos donaciones por medio de Patreon todo el dinero donado se utiliza para pagar los gastos de los servidores y mantener el sitio completamente libre de anuncios. Todos los programadores y desarrolladores entregan su tiempo a lo mejor para la comunidad a su propio costo.
"},{"location":"FAQ-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-04-21 03:38] luchaos:
update libretro docs links[2019-05-24 10:18] eldexterr:
Added missing information[2019-04-20 15:15] eldexterr:
Changed \"otorgar manualmente\" to \"desbloquear manualmente\"[2019-02-14 10:12] meleu:
fix broken link[2019-02-09 20:19] meleu:
fix broken link[2018-10-11 00:14] CoolCanuck:
https[2018-06-10 09:45] lilbud:
Updated Discord Link[2018-05-09 13:15] ShinyNinetalesTM:
edited the a link to https://github.com/RetroAchievements/docs/wiki/My-game-is-not-loading-achievements-es[2018-05-06 13:19] ShinyNinetalesTM:
fixed several words without accent mark (tilde) and some missing commas and parentheses[2018-05-04 10:33] meleu:
added a title to make it look better after mkdocs conversionRetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit, kt\u00f3ra wsp\u00f3\u0142pracuje i rywalizuje \u017ceby zyska\u0107 w\u0142asne osi\u0105gni\u0119cia do klasycznych gier poprzez emulacje, osi\u0105gni\u0119cia s\u0105 tworzone przez i dla spo\u0142eczno\u015bci. My dajemy specjalnie przystosowane emulatory dla was, kt\u00f3re wykrywaj\u0105 gdy wykonasz jakie\u015b wyzwanie. Gdy si\u0119 zalogujesz, emulator wy\u015ble osi\u0105gni\u0119cia jakie zdoby\u0142e\u015b na stron\u0119, aby\u015b m\u00f3g\u0142 zobaczy\u0107 i por\u00f3wna\u0107 post\u0119p z przyjaci\u00f3\u0142mi
Tutaj jest przyk\u0142ad RAGens, graj\u0105cy w \"Street of Rage 2\", wida\u0107 dwie Tablice Wynik\u00f3w (dolny prawy r\u00f3g), jedno osi\u0105gni\u0119cie wyskakuje, a na ko\u0144cu Nak\u0142adka Osi\u0105gni\u0119\u0107 (Naci\u015bnij Escape
):
Tryb HARDCORE jest dodatkow\u0105 funkcj\u0105 \u017ceby oddzieli\u0107 dobrych graczy od \u015bwietnych graczy: Tryb HARDCORE wy\u0142\u0105cza wszystkie funkcje stanu zapisu z emulatora: Nie b\u0119dziesz m\u00f3g\u0142 zapisywa\u0107 i wczytywa\u0107 kiedy chcesz. B\u0119dziesz musia\u0142 zdoby\u0107 osi\u0105gni\u0119cia za pierwszym razem, tak jak na oryginalnej konsoli. W nagrod\u0119 za to, dostanie standardowe punkty jak i punkty HARDCORE, skutkuj\u0105c w podwojeniu zyskanych punkt\u00f3w! Zwyk\u0142a gra warta 400 punkt\u00f3w, jest teraz warta 800, je\u015bli przejdziesz gr\u0119 ca\u0142kiem w trybie HARDCORE!
Notka: Je\u015bli chcesz gra\u0107 w wy\u0142\u0105czonym trybem HARDCORE (znany r\u00f3wnie\u017c jako SOFTCORE), oczekuj \u017ce mo\u017cesz mie\u0107 pewne problemy. Przeczytaj w tym linku czemu nie powiniene\u015b u\u017cywa\u0107 funkcji wczytania stanu.
"},{"location":"FAQ-pl/#ktorego-emulatora-musze-uzywac","title":"Kt\u00f3rego emulatora musz\u0119 u\u017cywa\u0107?","text":"Oficjalne emulatory RetroAchievements.org s\u0105 bazowane na Windowsie. Dla innych system\u00f3w operacyjnych mo\u017cesz u\u017cy\u0107 Retroarch'a. Wi\u0119cej informacji poni\u017cej:
"},{"location":"FAQ-pl/#oficjalne-emulatory-retroachievementsorg","title":"Oficjalne emulatory RetroAchievements.org","text":"Prosz\u0119 pobierz emulator twojego wyboru z strony pobierania, zalogowa\u0107 si\u0119 u\u017cywaj\u0105c swojego pseudonimu i has\u0142a (tak, musisz pierw stworzy\u0107 konto), potem za\u0142aduj ROM i zacznij gra\u0107!
Co to jest Nak\u0142adka Osi\u0105gni\u0119\u0107 i jak w ni\u0105 wej\u015b\u0107?
Nak\u0142adka Osi\u0105gni\u0119\u0107 jest wbudowanym ekranem RetroAchievements, kt\u00f3ry pokazuje osi\u0105gni\u0119cia kt\u00f3re mo\u017cesz zyska\u0107 i opisy tego co trzeba zrobi\u0107, kt\u00f3re osi\u0105gni\u0119cia zyska\u0142e\u015b, twoje punkty osi\u0105gni\u0119\u0107, szczeg\u00f3\u0142y o najlepszych wynikaj tablicy wynik\u00f3w i wi\u0119cej.
Normalnie, aby w ni\u0105 wej\u015b\u0107, domy\u015blnym przyciskiem jest przycisk Escape
, lub u\u017cywaj\u0105c funkcji pauzy. W wi\u0119kszo\u015bci emulator\u00f3w, gra musi by\u0107 aktywna \u017ceby nak\u0142adka dzia\u0142a\u0142a.
Niekt\u00f3re emulatory maj\u0105 przycisk ustawiony na kontrolerze \u017ceby zobaczy\u0107 nak\u0142adk\u0119 osi\u0105gni\u0119\u0107. Og\u00f3lnie Escape
na klawiaturze powinien j\u0105 w\u0142\u0105czy\u0107, lecz je\u015bli chcesz przywi\u0105za\u0107 przycisk z kontrolera, tutaj jest jak to ustawi\u0107 na paru oficialnych emulatorach:
Dla system\u00f3w nie-Windowsowych musisz u\u017cy\u0107 Retroarcha
aktualnie mo\u017cesz zdoby\u0107 osi\u0105gni\u0119cia za pomocy Retroarcha na podanych platformach:
Mo\u017cesz zdoby\u0107 RetroArch na podanych linkach:
Gdy ju\u017c zainstalowa\u0142\u0119\u015b zrobi\u0142e\u015b wst\u0119pn\u0105 konfiguracj\u0119, pod\u0105\u017caj za poradnikiem, aby ustawi\u0107 osi\u0105gni\u0119cia: https://docs.libretro.com/guides/retroachievements/
Jak mog\u0119 zobaczy\u0107 odznaki gdy zdob\u0119d\u0119 osi\u0105gni\u0119cie na RetroArch?
Ta funkcja zosta\u0142a dodana do RetroArch 1.7.7 (Maj/2019), lecz s\u0105 platformy na kt\u00f3rych to ci\u0105gle nie dzia\u0142a, musisz si\u0119 upewni\u0107 \u017ce opcja Menu Wid\u017ceta jest w\u0142\u0105czona (i jest zwykle w\u0142\u0105czona domy\u015blnie).
"},{"location":"FAQ-pl/#czym-sa-biae-punkty","title":"Czym s\u0105 bia\u0142e punkty?","text":"Bia\u0142e punkty, zwane r\u00f3wnie\u017c jako punkty \"Retro Ratio\", s\u0105 dodatkowymi punktami bazuj\u0105cymi na trudno\u015bci osi\u0105gni\u0119cia, lecz ta funkcja nie jest aktualnie do ko\u0144ca precyzyjna. Wyja\u015bniona jest tu w szczeg\u00f3\u0142ach
"},{"location":"FAQ-pl/#moj-email-powitalny-zagina","title":"M\u00f3j email powitalny zagin\u0105\u0142.","text":"Niestety czasami email powitalny mo\u017ce zagin\u0105\u0107. Je\u015bli tak si\u0119 sta\u0142o, to zaloguj si\u0119 na pseudonim/has\u0142o na kt\u00f3rym si\u0119 zarejestrowa\u0142e\u015b, potem wejd\u017a w ustawienia. Na g\u00f3rze znajdziesz opcj\u0119 aby wys\u0142a\u0107 tw\u00f3j email rejestracyjny ponownie.
"},{"location":"FAQ-pl/#czemu-nie-widze-nowego-zdjecia-profilowego","title":"Czemu nie widz\u0119 nowego zdj\u0119cia profilowego?","text":"Naci\u015bnij Ctrl + F5
(na wi\u0119kszo\u015bci przegl\u0105darek). Czasami po tym jak zmieni\u0142e\u015b zdj\u0119cie profilowe (znane r\u00f3wnie\u017c jako awatar lub zdj\u0119cie u\u017cytkownika) musisz od\u015bwie\u017cy\u0107 pami\u0119\u0107 cache; w wi\u0119kszo\u015bci przegl\u0105darek Ctrl + F5
jest najszybsz\u0105 metod\u0105.
Nie tutaj, jest nielegalne hostowanie lub udost\u0119pnianie ROM\u00f3w. Lecz mamy stron\u0119 o Darmowych Grach gdzie mo\u017cesz znale\u017a\u0107 par\u0119 fajny gier homebrew.
"},{"location":"FAQ-pl/#czemu-moja-gra-nie-wczytuje-osiagniec","title":"Czemu moja gra nie wczytuje osi\u0105gni\u0119\u0107?","text":"Mo\u017ce by\u0107 to:
Dobrym nawykiem mo\u017ce by\u0107 sprawdzenie oficjalnego tematu gry na forum. Je\u015bli ci\u0105gle nie masz odpowiedzi sprawd\u017a t\u0105 stron\u0119 po wi\u0119cej szczeg\u00f3\u0142\u00f3w: Moja gra nie \u0142aduje osi\u0105gni\u0119\u0107.
"},{"location":"FAQ-pl/#retroarchralibretro-nie-uruchamia-mojej-gry-automatowej-co-powinienem-zrobic","title":"RetroArch/RALibretro nie uruchamia mojej gry automatowej. Co powinienem zrobi\u0107?","text":"Najpierw: Upewnij si\u0119 \u017ce u\u017cywasz odpowiedniego rdzenia RetroArch. Kliknij tutaj aby dowiedzie\u0107 si\u0119 jaki rdze\u0144 obs\u0142uguje funkcje RetroAchievements dla gier automatowych.
Potem: ROMy automatowe s\u0105 bardziej skomplikowane ni\u017c ROMy consolowe. Jest pare termin\u00f3w i koncept\u00f3w kt\u00f3re musisz zrozumie\u0107 aby to nabra\u0142o sens. Tutaj jest dobry tekst na ten temat: Obja\u015bnienie ROM\u00f3w MAME.
Szybka rada: U\u017cyj swojej ulubionej przegl\u0105darki i znajd\u017a \"zestaw bazuj\u0105cy\" (u\u017cywanie ROM\u00f3w losowo wzi\u0119tych z r\u00f3\u017cnych \u017ar\u00f3de\u0142 polega na metodzie \"pr\u00f3b i b\u0142\u0119d\u00f3w\" i najprawdopodobniej prowadzi do sporej ilo\u015bci frustracji).
"},{"location":"FAQ-pl/#czy-retroachievements-bedzie-wspierac-ta-albo-tamta-konsole","title":"Czy RetroAchievements b\u0119dzie wspiera\u0107 t\u0105 albo tamt\u0105 konsol\u0119?","text":"Kr\u00f3tka odpowied\u017a: Tak, b\u0119dzie
D\u0142uga odpowied\u017a: Jedyn\u0105 poprawn\u0105 odpowiedzi\u0105 jest \"Kiedykolwiek kto\u015b z umiej\u0119tno\u015bci\u0105 i ch\u0119ci\u0105 kodowania wsparcia to zrobi.\" - Ka\u017cdy tutaj jest ochotnikiem wi\u0119c dodatkowe wsparcie b\u0119dzie si\u0119 dzia\u0142o, kiedy b\u0119dzie si\u0119 dzia\u0142o.
"},{"location":"FAQ-pl/#jak-poprosic-o-zestaw-osiagniec","title":"Jak poprosi\u0107 o zestaw osi\u0105gni\u0119\u0107?","text":"Na ka\u017cdej stronie jest link \"Request set\"
Klikni\u0119cie tego doda twoj\u0105 nazwe do listy os\u00f3b kt\u00f3re prosz\u0105 o zestaw (lub set) osi\u0105gni\u0119\u0107 do tej gry. Klikni\u0119cie ponownie spowoduje usuni\u0119cie pro\u015bby. \u017beby zobaczy\u0107 list\u0119 os\u00f3b prosz\u0105cych o zestaw osi\u0105gni\u0119\u0107 do tej gry, naci\u015bnij link \"Set Requestors for this game\" w sekcji \"More Info\" na dole strony.
Ca\u0142kowita lista pr\u00f3\u015bb jest podliczana i wy\u015bwietlana na stronie Najbardziej proszonych set\u00f3w, kt\u00f3ra mo\u017ce by\u0107 sortowana wed\u0142ug konsoli. Je\u015bli i kiedy set b\u0119dzie stworzony, pro\u015bby powr\u00f3c\u0105 do u\u017cytkownika, aby m\u00f3g\u0142 u\u017cy\u0107 je na innej grze.
Liczba pr\u00f3\u015bb jest ustalana wed\u0142ug nast\u0119puj\u0105cej formu\u0142y:
Notka: Wszyscy tw\u00f3rcy osi\u0105gni\u0119\u0107 s\u0105 ochotnikami, pro\u015bba o set nie gwarantuje powstanie osi\u0105gni\u0119\u0107 do tej gry. Cel tej funkcji jest pokazanie developerom tego, co gracze chc\u0105 najbardziej. Mo\u017cesz r\u00f3wnie\u017c zastanowi\u0107 si\u0119 nad zasugerowaniem osi\u0105gni\u0119\u0107 na temacie gry na forum, aby u\u0142atwi\u0107 zacz\u0119cie tworzenia nowego seta.
"},{"location":"FAQ-pl/#co-robic-gdy-osiagniecia-nie-dziaaja-prawidowo","title":"Co robi\u0107 gdy osi\u0105gni\u0119cia nie dzia\u0142aj\u0105 prawid\u0142owo?","text":"Kiedy pojawi si\u0119 problem z osi\u0105gni\u0119ciami, gdy nie zosta\u0142e\u015b nagrodzony osi\u0105gni\u0119ciem, lub zosta\u0142e\u015b nagrodzony w nieodpowiednim momencie, istnieje rozwi\u0105zanie tego problemu i mo\u017cliwo\u015b\u0107 zostania poprawnie nagrodzonym. Najpierw powiniene\u015b Zg\u0142osi\u0107 popsute osi\u0105gni\u0119cie (Jest to solidny spos\u00f3b aby wnie\u015b\u0107 wk\u0142ad w popraw\u0119 spo\u0142eczno\u015bci!) To stworzy zg\u0142oszenie dla dewelopera osi\u0105gni\u0119\u0107, kt\u00f3ry potem oceni problem i poszuka rozwi\u0105zania.
Je\u017celi nie zosta\u0142e\u015b nagrodzony osi\u0105gni\u0119ciem mo\u017cesz zosta\u0107 nagrodzony r\u0119cznie. B\u0119dziesz potrzebowa\u0142 Zg\u0142oszenie zepsutego osi\u0105gni\u0119cia i Dow\u00f3d jego wykonania
"},{"location":"FAQ-pt_BR/","title":"FAQ (Perguntas Frequentes)","text":"Link para o texto em ingl\u00eas: FAQ
"},{"location":"FAQ-pt_BR/#o-que-e-o-retroachievementsorg","title":"O que \u00e9 o RetroAchievements.org?","text":"RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos cujos membros colaboram para a sua manuten\u00e7\u00e3o e aperfei\u00e7oamento enquanto competem entre si para ganhar conquistas personalizadas em jogos cl\u00e1ssicos por meio da emula\u00e7\u00e3o. Todas as conquistas s\u00e3o criadas e mantidas pela pr\u00f3pria comunidade e s\u00e3o presenteadas para os usu\u00e1rios atrav\u00e9s de emuladores especialmente customizados e disponibilizados em nossa p\u00e1gina. Uma vez logado em nossos emuladores, os programas ir\u00e3o informar \u00e0 central todas as conquistas que voc\u00ea conquistou para que voc\u00ea possa checar e comparar o seu progresso com o de seus amigos atrav\u00e9s do site.
No exemplo a seguir, RAGens (nossa vers\u00e3o personalizada do emulador Gens do Mega Drive) est\u00e1 emulando o jogo Streets of Rage 2. Dois leaderboards especiais podem ser notados no canto inferior direito da tela (eles ir\u00e3o coletar informa\u00e7\u00f5es especiais como a pontua\u00e7\u00e3o, por exemplo). Ao completar uma s\u00e9rie de requisitos, uma conquista \u00e9 desbloqueada pelo jogador que \u00e9 informado sobre o evento atrav\u00e9s de um \"pop-up\" especial. Ao final do exemplo, um menu especial com v\u00e1rias informa\u00e7\u00f5es sobre o jogo (que pode ser ativado ao pressionar a tecla ESC) aparece na tela.
"},{"location":"FAQ-pt_BR/#o-que-e-o-modo-hardcore","title":"O que \u00e9 o modo HARDCORE?","text":"O modo HARDCORE \u00e9 um recurso adicional que separa os bons jogadores dos grandes jogadores! Ao habilitar esse modo, voc\u00ea ficar\u00e1 impossibilitado de carregar um arquivo de \"savestate\" previamente salvo, ou seja: o jogo n\u00e3o mais poder\u00e1 ser salvo e carregado a qualquer momento. Ao habilitar o modo HARDCORE, voc\u00ea dever\u00e1 completar o jogo assim como ele foi projetado em seu console original e ganhar as suas conquistas sem a ajuda de recursos extras. Como recompensa, toda vez que habilitar uma conquista nesse modo, duas vers\u00f5es da mesma conquista ser\u00e3o presenteadas: a sua vers\u00e3o normal (ou SOFTCORE) e a sua vers\u00e3o HARDCORE, cada uma delas somando a mesma quantidade de pontos ao seu placar totalizando o dobro de pontos que iriam ser ganhos com o modo HARDCORE desabilitado. Um jogo com um total de 400 pontos poder\u00e1 lhe conferir 800 pontos caso voc\u00ea ganhe todas as conquistas dispon\u00edveis no modo HARCORE!
Nota: Ao jogar no modo \"SOFTCORE\" e usar as op\u00e7\u00f5es de \"savestate\" para salvar e carregar o seu jogo a qualquer momento, comportamentos inesperados por parte das conquistas poder\u00e3o ser observados. Para mais informa\u00e7\u00f5es, leia o informe em: Why you shouldn't use the load state feature
"},{"location":"FAQ-pt_BR/#qual-emulador-eu-preciso-usar","title":"Qual emulador eu preciso usar?","text":"Os emuladores oficiais do RetroAchiements.org s\u00e3o todos baseados em Windows. Para outros sistemas operacionais, voc\u00ea pode usar o RetroArch. Mais informa\u00e7\u00f5es abaixo:
"},{"location":"FAQ-pt_BR/#emuladores-oficiais-do-retroachievementsorg","title":"Emuladores oficiais do RetroAchievements.org","text":"Por favor, fa\u00e7a o download do emulador da sua escolha na pagina de download, fa\u00e7a login usando o seu username e senha, ent\u00e3o carregue uma ROM e jogue! Veja o v\u00eddeo a seguir para uma demonstra\u00e7\u00e3o:
https://www.youtube.com/watch?v=rKY2mZjurJw
"},{"location":"FAQ-pt_BR/#como-eu-acesso-o-overlay-de-conquista","title":"Como eu acesso o Overlay de conquista?","text":"Normalmente, isso \u00e9 configurado na tecla do seu teclado'ESC', ou na fun\u00e7\u00e3o de pause no jogo. Na maioria dos emuladores, um jogo deve ser ativo para isso ser funcional.
Alguns dos emuladores j\u00e1 devem ser configurados atribuindo um bot\u00e3o do controle para ver o overlay de conquistas. Geralmente ESC no teclado deve ativ\u00e1-lo, mas se voc\u00ea quer associar isto para um controle, veja este link.
"},{"location":"FAQ-pt_BR/#emuladores-retroarch","title":"Emuladores Retroarch","text":"Para sistemas operacionais \"N\u00e3o-Windows\" voc\u00ea deve usar o RetroArch.
Atualmente voc\u00ea pode ganhar conquistas via RetroArch nessas seguintes plataformas:
Voc\u00ea pode conseguir o RetroArch aqui.
Uma vez voce instalado e feito a configura\u00e7\u00e3o inicial, seguindo este guia para configurar as Conquistas: https://libretro.readthedocs.io/en/latest/guides/retroachievements/
Mantenha em mente que nem todos os cores do RetroArch \u00e9 compativel com o RetroAchievements. Confira esta lista para ver qual escolher.
Nota do tradutor: Cores s\u00e3o arquivos que permitem que o RetroArch seja capaz de interpretar emuladores e posteriormente, ROMs.
O RetroArch n\u00e3o tem suporte para esse recurso. Quando voc\u00ea ganha uma conquista, voc\u00ea apenas v\u00ea um texto com o t\u00edtulo da conquista e ent\u00e3o a descri\u00e7\u00e3o. Aqui est\u00e1 um t\u00f3pico sobre isso no rastrador de quest\u00f5es do RetroArch, mas isso n\u00e3o parece ser uma prioridade para qualquer desenvolvedor ativo. Voc\u00ea \u00e9 um programador em C e quer tentar? Qualquer contribui\u00e7\u00e3o \u00e9 muito bem vinda!
"},{"location":"FAQ-pt_BR/#meu-email-de-boas-vindas-sumiu","title":"Meu email de boas-vindas sumiu!","text":"Infelizmente algumas vezes o email de boas-vindas \u00e9 conhecido por sumir. Se isso acontecer, por favor, fa\u00e7a login com o seu username e senha que voc\u00ea registrou, ent\u00e3o visite sua p\u00e1gina de configura\u00e7\u00f5es. No topo voce ir\u00e1 encontrar uma op\u00e7\u00e3o para reenviar o seu email de registra\u00e7\u00e3o.
"},{"location":"FAQ-pt_BR/#onde-eu-posso-encontrar-roms","title":"Onde eu posso encontrar ROMs","text":"Aqui n\u00e3o. Infelizmente \u00e9 ilegal hospedar ou distribuir ROMs com copyright. Para extrair o arquivo de ROM do seus cartuchos, voc\u00ea pode usar uma ferramenta como o Retrode ou algo similar, ent\u00e3o voc\u00ea pode usar o arquivo de ROM nos nossos emuladores. Outros sites hospedam arquivos ROM que voc\u00ea poderia usar com nossos emuladores, mas n\u00e3o aceitamos baixar ou jogar ROMs para jogos que voc\u00ea n\u00e3o possui.
"},{"location":"FAQ-pt_BR/#porque-o-meu-jogo-nao-esta-carregando-as-conquistas","title":"Porque o meu jogo n\u00e3o est\u00e1 carregando as conquistas?","text":"Motivos:
Para mais detalhes leia esta p\u00e1gina: Meu jogo n\u00e3o est\u00e1 carregando conquistas.
Se voc\u00ea \u00e9 um usu\u00e1rio Linux, voc\u00ea pode usar essa ferramenta para checar se sua ROM est\u00e1 OK para o RetroAchievements: https://github.com/meleu/hascheevos
"},{"location":"FAQ-pt_BR/#esta-conquista-nao-ativou-ou-ativou-em-um-momento-errado","title":"Esta conquista n\u00e3o ativou! (ou ativou em um momento errado)","text":"Esta \u00e9 uma fun\u00e7\u00e3o contruida para apenas emuladores oficiais (n\u00e3o no RetroArch) que permique que voc\u00ea reporte conquistas quebradas que ocorram no momento errado, ou nem ativar. V\u00e1 em RetroAchievements -> Report Broken Achievements.
Veja este exemplo:
.
Al\u00e9m disso, aqui est\u00e1 um video detalhado explicando como usar isto: https://www.youtube.com/watch?v=TTHbm700Y-Y V\u00eddeo em ingl\u00eas
Adicionando detalhes do seu estado do jogo quando ativou/n\u00e3o ativou, qual o modo de jogo, onde voc\u00ea estava quando aconteceu/n\u00e3o aconteceu, se voc\u00ea teve que resetar o jogo recentemente, tudo que voc\u00ea acha que pode ser relevante para a conquista. Isto \u00e9 necess\u00e1rio para o nosso sistema, ent\u00e3o os desenvolvedores sabem onde est\u00e1 o problema.
Se voc\u00ea tiver evid\u00eancias de conclus\u00e3o, voc\u00ea pode tambem contatar um administrador e a conquista pode ser premiada manualmente para voc\u00ea. Fa\u00e7a provas e poste em #help-me
no Discord com a tag @admin. ou envie um PM (Mensagem Pessoal) para um usu\u00e1rio com o nivel de administrador.
Provas Qualificadas Capturas de Tela que mostra que est\u00e1 jogando no hardcore e que completou a conquista. Tal como v\u00eddeo (melhor ainda). Exemplos de conquistas que voc\u00ea ganhou que substituem esta conquista, ex. Voc\u00ea conseguiu a conquista por 10 mil pontos mas de 5 mil pontos n\u00e3o ativou.
Aqui est\u00e1 um exemplo perfeito de prova fornecido pelo gr1nya.
"},{"location":"FAQ-pt_BR/#eu-quero-fazer-conquistas","title":"Eu quero fazer conquistas!","text":"Que bom!! O melhor lugar para se iniciar \u00e9 aqui Come\u00e7ando como um desenvolvedor de conquistas. Uma vez que voc\u00ea se familiarizar com o Memory Inspector e outros di\u00e1logos relacionados a conquistas, voc\u00ea pode ir em outros Documentos para Desenvolvedores
Por favor, n\u00e3o hesite em perguntar se voc\u00ea precisa de ajuda, n\u00e3o debata-se! A coisa mais importante \u00e9 ter certeza que est\u00e1 aproveitando qualquer coisa que voc\u00ea esteja fazendo, Se voc\u00ea n\u00e3o est\u00e1 se divertindo, n\u00e3o fa\u00e7a. Mas se voc\u00ea estiver frustrado e quer persistir, apenas mande uma mensagem nos foruns ou no Servidor do Discord e alguem ir\u00e1 lhe responder rapidamente.
"},{"location":"FAQ-pt_BR/#o-que-sao-os-pontos-brancos","title":"O que s\u00e3o os Pontos Brancos?","text":"Pontos brancos s\u00e3o secund\u00e1rios baseados em qu\u00e3o dificil uma conquista \u00e9. Explicado Aqui em detalhes.
"},{"location":"FAQ-pt_BR/#o-que-e-considerado-trapaca-para-o-hardcore-e-se-eu-encontrar-evidencas-de-um-trapaceiro","title":"O que \u00e9 considerado trapa\u00e7a (para o hardcore)? E se eu encontrar evid\u00eancas de um trapaceiro?","text":"A explora\u00e7\u00e3o de set de conquistas e a altera\u00e7\u00e3o ou modifica\u00e7\u00e3o deliberada de jogos, emuladores, mem\u00f3ria, velocidade (fast-forward \u00e9 permitido) ou set. Carregar saves para obter conquistas sem ganh\u00e1-los durante o jogo normal.
Todas as trapa\u00e7as dos jogos n\u00e3o s\u00e3o permitidas a menos que seja especificado na descri\u00e7\u00e3o da conquista ou coment\u00e1rios na p\u00e1gina da conquista.
Nos vivemos por um c\u00f3digo de honra acima de tudo. Se voc\u00ea encontar evid\u00eancias de um trapaceiro, envie a evid\u00eancia para o RAdmin ou para o email RAmodmail@gmail.com.
"},{"location":"FAQ-pt_BR/#e-se-eu-conseguir-uma-conquista-que-eu-nao-ganhei","title":"E se eu conseguir uma conquista que eu n\u00e3o ganhei?","text":"Mesmo que voc\u00ea n\u00e3o consiga, na maioria dos casos, voc\u00ea deve criar um ticket report (veja abaixo), deixando uma explica\u00e7\u00e3o do que foi errado. Voc\u00ea pode tambem remover essas conquistas de sua conta para voc\u00ea ter a satisfa\u00e7\u00e3o de ganhar realmente ganhar elas.
Resetando conquistas n\u00e3o ganhas
"},{"location":"FAQ-pt_BR/#como-eu-redefino-minha-senha-se-eu-nao-lembrar-minha-senha","title":"Como eu redefino minha senha? (Se eu n\u00e3o lembrar minha senha)","text":"Aqui: https://retroachievements.org/resetPassword.php
No site, na pagina frontal, enquanto n\u00e3o estiver logado
"},{"location":"FAQ-pt_BR/#porque-meu-jogo-nao-esta-carregando-as-conquistas","title":"Porque meu jogo n\u00e3o est\u00e1 carregando as conquistas?","text":"Veja: Porque meu jogo nao est\u00e1 carregando as conquistas
"},{"location":"FAQ-pt_BR/#retroachievements-tem-alguma-finalidade-lucrativa","title":"RetroAchievements tem alguma finalidade lucrativa?","text":"N\u00e3o. RetroAchievments \u00e9 uma comunidade de f\u00e3s devotados que dedicam tributos aos seus jogos favoritos criando conquistas e competindo entre si. Embora aceitemos doa\u00e7\u00f5es atrav\u00e9s do Patreon, todo o dinheiro arrecadado \u00e9 destinado \u00e0 manuten\u00e7\u00e3o do servidor e \u00e0s despesas originadas pelo nosso site que se mant\u00e9m inteiramente livre de propagandas. Todos os programadores e desenvolvedores dedicam o seu tempo \u00e0 melhora da comunidade sem nenhum retorno financeiro.
"},{"location":"FAQ-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-04-21 03:38] luchaos:
update libretro docs links[2019-03-24 23:58] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 23:42] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 23:41] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 22:06] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:50] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:49] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:48] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-02-10 16:05] meleu:
fix broken link[2018-10-11 00:17] CoolCanuck:
httpsFrequently asked questions regarding the RetroAchievements website and RetroAchievements in general: - What is HARDCORE mode? - What are the white points? - Will RetroAchievements support this or that console? - How are game entries added to the site? - How do I request an achievement set? - How do I make achievements? - How can I contribute? - Testing - Creating Tickets - Saves and Save States
Frequently asked questions regarding the emulators, earning achievements, etc.: - Where can I find ROMs? - Why do I get a message that some achievements are unsupported? - What do I do when the achievement isn't working right? - Manual Unlocks - Why are achievements not loading? - Which emulators and/or cores should I use?
Frequently asked questions regarding user accounts. - Why can't I see my new profile picture? - My welcome email has gone missing! - How do I reset my password? (If I don't remember my password) - Will I have any privilege if I become a patron? - How do I delete my account?
"},{"location":"FAQ/#retroachievements-faq","title":"RetroAchievements FAQ","text":""},{"location":"FAQ/#what-is-hardcore-mode","title":"What is HARDCORE mode?","text":"If you want to have a one-to-one replication of how you used to play retro games in the distant past, then HARDCORE mode is what you are looking for. This feature restricts the player from ever loading save states (creating them is allowed for practice/ticket purposes when not playing on HARDCORE), using cheats, and any speed-altering features like rewinding, slow-motion, and advancing the game one frame at a time by using the emulator's built-in functions. Note that the only exception to altering speed is fast-forward which IS allowed. Basically, you are playing the game without the game-altering enhancements emulators come with.
While you will still be able to get achievements in Softcore, playing on HARDCORE mode is the only way to earn a Mastery for a game, displaying your skill- and prowess to your fellow retro achievers and competitors by showing up on the game's page as a master of the game, as well as on the main leaderboard. Playing on HARDCORE will also allow you to set times, scores or participate in miscellaneous challenges on game-specific leaderboards.
Note: If you want to play with the HARDCORE mode disabled (also known as \"Softcore\"), expect to have some issues. Read in this link Why you shouldn't use the load state feature.
"},{"location":"FAQ/#what-are-the-white-points","title":"What are the white points?","text":"White points, known as Retro Ratio points, are secondary points based on how hard an achievement is, however this feature is not very accurate currently. Explained here in detail.
"},{"location":"FAQ/#will-retroachievements-support-this-or-that-console","title":"Will RetroAchievements support this or that console?","text":"Short answer: Yes, it will.
Long answer: The only correct answer to this question is \"Whenever someone with the skills and desire to code support, does just that.\" - Everyone here is a volunteer so additional support and features happen when they happen. In many cases support for a console is dictated by the emulator(core) developer and is outside of Retroachievement's control.
For more information on specific consoles you can check here: System X When?
"},{"location":"FAQ/#how-do-i-request-an-achievement-set","title":"How do I request an achievement set?","text":"On each game's page there is a link to \"Request Set\".
Clicking this will add your name to the list of users who have requested a set for the game. Clicking again will withdraw the request. To see other users who have requested the set, click on the \"Set Requestors\" link below the game's box art.
The total number of requests are tallied and displayed on the Most Requested Sets page which can also be sorted by console. If and when a set is created the user request will be automatically returned to use for another game.
The number of requests available to a user is determined as follows:
Note: All achievement developers are volunteers, requesting a set gives no guarantee that achievements will be made. The purpose of the request feature is to give developers visibility to what players want most. You might also consider making achievement suggestions on a game's forum page to help get a set off the ground.
"},{"location":"FAQ/#emulation-faq","title":"Emulation FAQ","text":""},{"location":"FAQ/#where-can-i-find-roms","title":"Where can I find ROMs?","text":"Not here. It is illegal to host or distribute copyrighted ROMs. However we have a page about Free Games where you can find some really cool homebrews.
"},{"location":"FAQ/#why-do-i-get-a-message-that-some-achievements-are-unsupported","title":"Why do I get a message that some achievements are unsupported?","text":"This message informs the user that some achievements cannot be activated either because their version of RetroArch and/or the core being used does not support some newer logic features, or because required areas of the RAM are not exposed for achievement processing.
In most cases updating to the latest version of RetroArch will correct the problem, alternately updating or using a different supported core will resolve the problem.
"},{"location":"FAQ/#what-do-i-do-when-the-achievement-isnt-working-right","title":"What do I do when the achievement isn't working right?","text":"When problems with achievements occur, either where the achievement wasn't awarded to you or it was awarded at the wrong time, there are solutions to get the problems fixed and for proper credit to be given to you! First you'll want to report the broken achievement. (This is an excellent way to contribute to the betterment of the community!) It creates a ticket report for the achievement developers who will then review the problem and look for a solution.
If the achievement wasn't awarded, you can request a manual-unlock. You'll need to report the broken achievement and provide proof of completion.
"},{"location":"FAQ/#how-do-i-report-a-broken-achievement","title":"How do I report a broken achievement?","text":"There are two ways to report broken achievements. In the emulator title bar go to RetroAchievements \u21d2 Report Broken Achievements:
.
Report an issue for this achievement
, like in the image below:If you use the Official RetroAchevement emulators you can also report problems from the website achievement page, but it is preferred that you use the method built into the emulators.
"},{"location":"FAQ/#what-details-i-have-to-add-to-a-broken-achievement-report","title":"What details I have to add to a broken achievement report?","text":"You have to add those information in order for a developer to recognize an issue:
If possible, in the broken achievement report Comment paste a link to a screenshot or video (even better) of where the problem occurred. It's recommended to post screenshots on imgur and videos on YouTube.
Also add details like:
This is necessary so the achievement developers know where the problem is.
"},{"location":"FAQ/#what-is-an-ra-hash","title":"What is an RA hash?","text":"RA hash is an unique string of 32 hexadecimal numbers, to distinguish different games and versions of them, all of them have one.
"},{"location":"FAQ/#how-do-i-check-the-ra-hash-of-the-game-im-playing","title":"How do I check the RA hash of the game I'm playing?","text":"@manual-unlock http://retroachievements.org/ticketmanager.php?i=9577 HARDCORE Proof: https://youtu.be/uqD-GTkZbLo
@manual-unlock http://retroachievements.org/ticketmanager.php?i=16705 softcore Proof: https://i.imgur.com/83bJE43.png
Hi. I'm requesting a manual unlock. http://retroachievements.org/ticketmanager.php?i=9577 HARDCORE Proof: https://youtu.be/uqD-GTkZbLo
#manual-unlock
channel tagging the @manual-unlock role; if you're not on Discord, send a private message message to the RAdmin user. Your message must have: 1. The link to the ticket url. You can find the ticket here: http://retroachievements.org/ticketmanager.php 2. What mode you were playing (HARDCORE/softcore) 3. Link to your qualified proof of completion. Include proof that the achievement was earned in HARDCORE, if you were playing in HARDCORE.Note: Manual unlocks are intended for players with proof of earning achievements that did not trigger on site due to a bug or network issue.
They are not indented for, and will not be awarded to players who have played the game prior to a set being available, or on an another inherently unsupported platform (original hardware for example).
"},{"location":"FAQ/#what-if-i-got-an-achievement-i-didnt-earn","title":"What if I got an achievement I didn't earn?","text":"Same with not getting it when you should in most cases you'll want to create a ticket report, leaving an explanation of what went wrong. You'll also want to reset these achievements from your earn history so you can get the satisfaction of truly earning them.
"},{"location":"FAQ/#how-do-i-reset-achievements","title":"How do I reset achievements?","text":"There are three ways to do this:
If an achievement doesn't work correctly for you, there is a very good chance it doesn't work for other people. You can check in the achievement's page and look for where it says 'The achievement has 'X' open tickets':
If the game has tickets, click on the 'open tickets' link. There will be a list to show any reports of broken achievements. You can comment on these to add helpful details or say you have a problem with this achievement too.
"},{"location":"FAQ/#account-faq","title":"Account FAQ","text":""},{"location":"FAQ/#why-cant-i-see-my-new-profile-picture","title":"Why can't I see my new profile picture?","text":"Press Ctrl + F5
(on most browsers). Sometimes after you've changed your profile picture (also known as avatar or user pic) and you need to refresh your browser cache; in most browsers Ctrl + F5
is the quickest way to do it.
Unfortunately sometimes the welcome email has been known to go missing. If this happens, please log in with your username/password you registered with, then visit your settings page. At the top you'll find the option to resend your registration email.
"},{"location":"FAQ/#how-do-i-reset-my-password-if-i-dont-remember-my-password","title":"How do I reset my password? (If I don't remember my password)","text":"Right Here: https://retroachievements.org/resetPassword.php
On Site, front page, while not logged in:
"},{"location":"FAQ/#will-i-have-any-privilege-if-i-become-a-patron","title":"Will I have any privilege if I become a patron?","text":"On the website you'll have a badge to mean \"I helped fund RA!\". On the discord server you'll have access to a dedicated channel. Although we are all immensely grateful for the contributions of the patrons, there is no other bonus besides those ones.
Thanks to the Patreon contributions the RetroAchievements project can pay for a decent server to run the website, run the discord bot and also have periodic backups (to recover data in the event of a disaster), and all this with an ad-free experience. The whole community owe a big thank you to the patrons.
"},{"location":"FAQ/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-28 18:47] RALordAndrew:
Softcore request limit was removed in https://github.com/RetroAchievements/RAWeb/pull/1803[2023-08-03 15:50] Nepiki:
Added that players can get a set request from every event badge[2023-06-30 12:53] televandalist:
Updated FAQ (markdown)[2023-06-05 22:04] televandalist:
Added a few placeholder questions[2023-04-20 05:39] televandalist:
Separated into categories (Account, Emulation, and RetroAchievements)[2023-04-20 05:30] televandalist:
Updated the set request images since they were out-of-date and gigantic.[2023-04-20 05:21] televandalist:
Got rid of out-of-date info and sections that have their own dedicated pages.[2023-04-19 23:43] televandalist:
Removed part about getting errors from using words like \"drop\" and \"select\" - it's no longer relevant. Removed part asking if RA profits off of emulation. It's covered in the RA Manifesto.[2023-01-11 22:48] pingus:
Change outdated cores list link from libretro to RADocs.[2022-09-09 12:37] Nepiki:
Updated Hardcore paragraph regarding leaderboards to account for scores/miscellaneous challengesIn this page you can find games that are completely and legally free download and play on your emulators. Many of them have an achievement set at RetroAchievements.org.
"},{"location":"Free-Games/#atari-2600","title":"Atari 2600","text":"AtariAge has plenty of Atari homebrew on their website that you can either purchase physical cartridges of or (most of the time) download from their forums for free with a quick google search.
Some examples of AtariAge Atari 2600 homebrew:
Esta pagina detalla los m\u00e9todos de hashing para cada consola soportada en RA:
"},{"location":"Game-Identification-es/#nes","title":"NES","text":"Si el ROM empieza con NES\\1a
($4E $45 $53 $1A), los primeros 16 bytes son ignorados y lo que queda del archivo es linkeado/hashed. Si el ROM no empieza con NES\\1a
($4E $45 $53 $1A), el archivo entero es linkeado/hashed.
El archivo entero es linkeado/hashed.
NOTA: Como salvar muta la data de los discos, copias locales de las im\u00e1genes cargadas son necesarias para asegurarte que los hashes no cambien entre cesiones de juego.
"},{"location":"Game-Identification-es/#snes","title":"SNES","text":"Si el tama\u00f1o del archivo es de 512 bytes mas que un multiplo de 8K, los primeros 512 bytes son ignorados y lo que queda del archivos es linkeado/hashed. Si el tama\u00f1o del archivo no es de 512 bytes mas que un multiplo de 8K, el archivo entero es linkeado/hashed.
"},{"location":"Game-Identification-es/#n64","title":"N64","text":"El archivo entero es es agregado al hash.
Esto talvez pueda resultar en tres diferentes hashes para cada juego. La extensi\u00f3n z64 es big endian (ABCD). La extensi\u00f3n n64 es little endian (DCBA). Y la extensi\u00f3n v64 es middle endian (BADC).
"},{"location":"Game-Identification-es/#gb","title":"GB","text":"El archivo entero es agregado al hash.
NOTA: Parece que RAVBA hace 0-pad la informaci\u00f3n si el tama\u00f1o especifico del ROM (address $148) es mas grande que el archivo. Aun tengo que encontrar un caso donde esto ocurra.
"},{"location":"Game-Identification-es/#gbc","title":"GBC","text":"El archivo entero es agregado al hash.
NOTA: Parece que RAVBA hace 0-pad la informaci\u00f3n si el tama\u00f1o especifico del ROM (address $148) es mas grande que el archivo. Aun tengo que encontrar un caso donde esto ocurra.
"},{"location":"Game-Identification-es/#gba","title":"GBA","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#virtualboy","title":"VirtualBoy","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#master-system","title":"Master System","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#megadrive-genesis","title":"MegaDrive (Genesis)","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#sega-32x","title":"Sega 32X","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#sega-cd","title":"Sega CD","text":"Cosas que hacer: Se necesita investigar esto mas a fondo. Este sistema es incluso soportado?
Un buffer de 1KB es agregado al hash. Lo primeros 512 bytes del buffer estan en los primeros 512 bytes del track 0. No estoy seguro de lo que se encuentra en los segundos 512 bytes.
"},{"location":"Game-Identification-es/#gamegear","title":"GameGear","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-2600","title":"Atari 2600","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-7800","title":"Atari 7800","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-lynx","title":"Atari Lynx","text":"Si el ROM empieza con LYNX\\0
, los primeros 64 bytes son ignorados y el contenido restante del archivo es agregado al hash. Si el ROM no empieza con LYNX\\0
, el archivo entero es agregado al hash.
El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#neogeo-pocket","title":"NeoGeo Pocket","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#pcengine-turbografx16","title":"PCEngine (TurboGrafx16)","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#pcengine-cd","title":"PCEngine CD","text":"Tareas que hacer: No estoy completamente seguro de ocmo trabaja este. RAPCE linkea/hashes la \"Placa Madre del ROM principal\", pero no puedo lograr que funcione. RALibRetro parece que no linkea nada, y no hay ningun codigo especial en RetroArch, as\u00ed que por lo que parece esta linkeando/hashing el archivo entero, pero cual archivo pero cual archivo? El zup es un bin/cue con m\u00faltiples archivos.
"},{"location":"Game-Identification-es/#fba-arcade","title":"FBA (Arcade)","text":"El string del nombre del archivo sin la extensi\u00f3n es linkeado/hashed (xxx.zip). Detecta min\u00fasculas y may\u00fasculas.
"},{"location":"Game-Identification-es/#pc-8001-pc-8801","title":"PC-8001 / PC-8801","text":"Im\u00e1genes de cintas y discos cargadas en el drive 1 (program disk data) son completamente linkeadas/hashed.
NOTA: Como salvar y otras manipulaciones pueden mutar la informaci\u00f3n del disco, copias locales del disco son requeridas para asegurar que los hashes no han cambiado entre cesiones de juego.
"},{"location":"Game-Identification-es/#apple-ii","title":"Apple II","text":"Im\u00e1genes de Disco (las dos, disquete y disco duro) cargadas en el drive 1 son completamente linkeadas/hashed.
NOTA: Como salvar y otras manipulaciones pueden mutar la informaci\u00f3n del disco, copias locales del disco son requeridas para asegurar que los hashes no han cambiado entre cesiones de juego.
"},{"location":"Game-Identification-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-20 10:49] eldexterr:
Created Game Identification es (markdown)This page details the hashing method used for each supported system.
"},{"location":"Game-Identification/#the-3do-company","title":"The 3DO Company","text":"path/galaga.zip
-> galaga
) is hashed. It is case-sensitive.\\1ATARI7800
, the first 128 bytes are ignored and the remaining file contents are hashed. If the ROM does not start with \\1ATARI7800
, the entire file is hashed.254487b59ab21bc005338e85cbf9fd2f
, it's a common bootloader for homebrew games and the actual game code is located in track 2. If a separate header block containing a new location and size is found in track 2, then that data is loaded and hashed.LYNX\\0
, the first 64 bytes are ignored and the remaining file contents are hashed. If the ROM does not start with LYNX\\0
, the entire file is hashed.\"PC Engine CD-ROM SYSTEM\"
does not exist at 32 bytes into the data, discard as invalid.\"PC-FX:Hu_CD-ROM\"
was not read, discard as invalid.FDS\\1a
, the first 16 bytes are ignored and the remaining file contents are hashed. FDS\\1a
, the entire file is hashed. .z64
) ROMs..v64
) and Little Endian (.n64
) use the MD5 checksum for its Big Endian counterpart.NES\\1a
, the first 16 bytes are ignored and the remaining file contents are hashed.NES\\1a
, the entire file is hashed.IPL.TXT
file is loaded and parsed.\"SEGA SEGAKATANA \"
. If not, discard as invalid.\"SEGADISCSYSTEM \"
for Sega CD or \"SEGA SEGASATURN \"
for Sega Saturn. If not, discard as invalid.\"SEGADISCSYSTEM \"
for Sega CD or \"SEGA SEGASATURN \"
for Sega Saturn. If not, discard as invalid.SYSTEM.CNF
file is loaded and parsed. The primary executable is identified by the BOOT= line within.SYSTEM.CNF
and written to a buffer.SYSTEM.CNF
file is loaded and parsed. The primary executable is identified by the BOOT2= line within.SYSTEM.CNF
and written to a buffer.PSP_GAME\\PARAMS.SFO
file are written to a buffer. This contains the game attributes displayed in the menu, including the name and serial.PSP_GAME\\SYSDIR\\EBOOT.BIN
) are appended to the buffer.Last 10 changes on this page:
[2023-06-04 21:00] televandalist:
Changed to a new format[2023-06-03 02:03] televandalist:
Removed the \"Pending Explanation\" section since it only contained Wii, which is a ways away.[2023-05-25 11:16] Jamiras:
add hash algorithms for Arduboy, GameCube, Jaguar CD and Neo Geo CD[2023-04-11 03:01] televandalist:
Added Amstrad CPC, Arduboy, Atari Jaguar CD, Fairchild Channel F, Game Cube, Intellivision, Magnavox Odyssey 2, Mega Duck, Neo Geo CD, SG-1000, and Wii. Added \"Pending Explanation\" section. Made some naming corrections and some formatting tweaks.[2021-12-16 13:02] Jamiras:
add dreamcast[2021-10-10 11:20] Jamiras:
add psp[2021-04-30 13:05] Jamiras:
Updated Game Identification (markdown)[2020-12-25 00:07] televandalist:
Corrected PC Engine CD name and fixed a minor grammatical error. :bomber:[2020-06-13 17:45] Jamiras:
add PC-FX[2020-06-07 11:41] Jamiras:
update for new systemse.g. beta, work in progress, stable, unstable, incomplete
e.g. Platformer, easy, difficult, long, rpg, jrpg, buggy, etc.
e.g. awards won, game of the month/week, leaderboard of the month
receive updates on changes
would show up on user page
Randomized, grouped, King of the hill (Latest winner goes on top) or are sortable to show all of these.
Possibly allow this video to be turned off from game page.
: possibly could even log how much time you are in a game on hardcore/softcore, and pause when you go to the overlay or are developing.
Strikethrough is for issues that are on RAweb
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/","title":"Primeros pasos como un Desarrollador de Logros","text":"Bienvenido al mundo de Creacion de Logros!
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#conceptos-basicos","title":"Conceptos Basicos","text":"Tecnicamente un logro es un grupo de condiciones que tienen que ser cumplidas en un punto particular en un video juego.
Cuando abres un juego en un emulador con las funciones de RetroAchievements, el emulador esta siempre checando si esas condiciones se cumplen en el punto exacto. Cuando todas las condiciones de un logro en particular son cumplidas, se dispara el logro y el emulador deja de checar las condiciones para ese logro.
El proceso de creaci\u00f3n de un logro basicamente se divide en 3 pasos:
Encontar un lugar en la Memoria RAM del juego donde se almacene la informacion que buscas (ejemplos: nivel, barra de vida, tiempo, monedas, sacar un arma, obtener un item, etc.).
Crear las condiciones que tienen que ser cumplidas para que se dispare el logro.
Probar si tu logro funciona como es debido.
La mayoria de las veces vaz a tener que volver al punto 2 y 3 muchisimas veces para refinar la logica de tu logro.
En este documento vamos a ver como lograr los pasos de arriba.
Una vez que estes seguro que tu logro esta saltando con las condiciones que tu quieres, puedes subirlo al servidor. Vamos a ver mas sobre eso en un momento.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#primeros-pasos","title":"Primeros Pasos","text":"Antes que nada necesitas estar seguro que tienes un emulador de RA de la pagina de descargas de RetroAchievements y tambien haberte creado una cuenta para poder iniciar seccion en el emulador.
En esta guia vamos a utilizar RAGens como demostracion, y el juego Sonic the Hedgehog. Estamos utilizando RAGens pero lo mismo aplica para cualquier otro emulador.
Para empezar abre el ejecutable de RAGens, e inicia seccion cuando salga la venta de inicio. Siguiente, ve a File -> Open y selecciona el ROM del que quieres trabajar los logros.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#inspector-de-memoria","title":"Inspector de Memoria","text":"Ahora deberias tener en tu ventana principal corriendo Sonic. Hay otras 3 ventanas que vamos a estar utilizando, que se pueden encontrar sobre la pesta\u00f1a de RetroAchievements en el menu. Vamos a trabajar con el Inspector de Memoria primero:
El inspector de memoria se puede utilizar para encontrar variables en la RAM que podamos utilizar. Esencialmente estas en una caseria de tesoros por encontrar los lugares en memoria - esta ventana te ayudara a examinar y filtrar la RAM del juego que se encuentra corriendo.
NOTA: Si deseas un video paso por paso explicando como encontra valores en la memoria, este viejo video puede llegar a ser util.
Tambien mira: Un vistaso al Inspector de Memoria y Tips en la busqueda de Memoria.
Para empezar o reiniciar una prueba, haz click en New 8-bit Test en la parte casi superior del medio.
Para manter las cosas simple, vamos a empezar a buscar el valor en memoria que guarda el numero de anillos que hemos recolectado. Nuestros pasos son los siguientes:
Carga el ROM y empieza una nueva partida.
Resetea la ventana de memoria: Haz click en New 8-bit Test.
Regresa al juego y cambia el numero de anillos en la memoria. Por ejemplo, colecciona un anillo
En la ventana de memoria, ahora vamos a filtrar los valores que son 'mas grandes que los antiguos valores' (simbolo >
). Seleccionamos esto y, entonces hacemos click en Filter.
Cuando ya estes haciendo esto por una 3ra y 4ta vez, el numero de posibilidades o 'candidatos' va a ir disminuyendo. Vamos a seguir haciendo esto asta que lleguemos a un numero muy peque\u00f1o (el mas peque\u00f1o que sea posible), puede llegar a tomar entre 4-5 intentos. Ahora podemos hacer click en la ventana de resultados, y monitoriar los valores en memoria, hasta abajo en el visor de memoria. Continua en el juego y deberias de ver como los valores en la memoria cambian cada vez que coleccionas anillos. Si no es asi, o si algo no se ve bien, intenta otro valor. Con el primer Sonic the Hedgehog, el valor en memoria para el numero de anillos deberia de ser 0xfe20
.
=
), o para valores que son diferentes (utiliza 'no igual', simbolo !=
).Cuando encuentres un valor del que te sientes feliz con el, puedes escriber una peque\u00f1a nota de lo que es haciendo click en Save Note, esto lo va a guardar en la base de datos, y va a ser automaticamente cargado la siguiente vez que cargues el visor de memoria para ese juego, donde sea que te encuentres! Nota despues que haces click en 'Save Note', la nota va a ser automaticamente guardada en la base de datos y compartida, la cual todos los desarrolladores tendran acceso a ella. Todos van a descargar esa nota cuando carguen su ROM. Si intentas sobre-escribir una nota, te va a salir una ventana de confirmacion antes de guardarla.
Puedes encontrar mas utiles Tips en Busqueda de Memoria aqui.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#sets-de-logros","title":"Sets de Logros","text":"Ok asi que el valor en memoria para el numero de anillos se encuentra almacenado en 0xfe20
- nota para un no-programador, estamos manejando numeros en el sistema numerico Hexadecimal que puede llegar a ser desalentador, pero no te preocupes, esencialmente simplemente son numeros y letras en vez de solo numeros, y no olvides 0x
al principio para mostrar que es un valor en memoria en hexadecimal. Hemos encontrado un valor en el que estamos interesado y lo hemos guardado con Save Note. Ahora queremos crear un nuevo logro.
Ve a la pesta\u00f1a de RetroAchievements en el menu de tu emulador, escoje Achievement Sets y vas a ver esta ventana:
Aqui agrupamos todos los logros disponibles en tres sets:
Logros Core (los principales, set publico de logros),
Unofficial/User Achievements (publicos, pero no otorgan puntos: para revision),
Local Achievements (personales, en tu PC).
En la venta de Logros, haz click en Local Achievements (superior izquierda), luego en Add New Achievement (superior derecha). Esto va a\u00f1adir una entrada vacia en la lista del centro. Haz doble click en ella: si aun no esta abierta, esto deberia de abrir la ventana del Achievement Editor (editor de logros).
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#editor-de-logros","title":"Editor de Logros","text":"A si es como se ve:
Esta es la ventana final en la que vamos a poner toda la informacion junta. La mayoria de los campos de arriba se explican solos, ejemplo: Titulo, Descripcion, Puntos. La principal seria la parte de 'Requisitos'
Vamos a decir que queremos agregar un logro por coleccionar cierto numero de anillos. Vamos a decir 15 por simplicidad. Despues de llenar los campos de arriba y a ver seleccionado un icono apropiado (en este ejemplo estamos utilizando la medalla del trofeo dorado (00136), pero tu puedes subir una nueva), ocupamos llenar los requisitos. Tenemos un requisito, ese numero de anillos tiene que ser minimo 15. El siguiente click seria en Add New Requirement.
Clickear este boton va a agregar algunos valores por default a la lista de requisitos. Los valores por defaults simplemente se percatan que algo relativamente sensible se agrego a la lista. Por ahora, ignorando el campo 'Special?'. Cuando clickeamos en crear, el valor default en memoria va a ser el ultimo valor que dejaste en la ventana de memoria.
Lo siguiente seria cambiar estos valores a los siguientes:
16-bit
0xfe20
>=
- esta es la comparacion que vamos a hacer. Podemos tener cualquier comparacion aqui, pero es sencible que tengas un \"mayor que e igual a\". Esto es importante porque si tenemos 10 anillos y despues obtenemos 10 anillos de una caja de 10 anillos vamos a tener 20, y vamos a perder el logro ya que tendriamos que tener exactamente 15 anillos.Value
- estamos comparando este valor en memoria con un valor fijo: 15Empty
- Esto es solamente relevante cuando estemos comparando valor en memoria con otro valor en memoria15
- el numero de anillos requirido: el valor del que estamos comparando la memoria0
- ignora esto por ahora, es util cuando necesitas que algo paso un cierto numero de vecesCon esto establecido, no necesitamos ninguna otra condicion que agregar, asi que podemos regresar a Achievements Dialog (Ventana de Logros). Para estar seguros, tenemos que guardar nuestro progreso presionando Save Local! Esto guarda todo localmente para asegurar que no perdamos ningun progreso.
Ahora podemos 'activar' este logro localmente presionando en Activate a mano derecha de la ventana. Esto va a empezar a monitoriar estos valores en memoria y va a entregar el logro una vez que todas las condiciones se hubieran cumplido de manera verdadera. Ahora podemos avanzar y probar si este logro sirve!
Si presionamos Esc
mientras jugamos, vas a ver como se miraria el logro desde la interfaz de RetroAchievements!
A pesar de que el logro funciono bien en nuestras pruebas, un logro con una logica como esa no esta listo para ser oficialmente lanzado. Primero que nada: tiene una sola condicion: \"anillos coleccionados >= 15\". El problema es que ese mismo valor es el mismo que se utiliza para almacenar el numero de anillos cuando el juego corre en \"modo demo\" (Cuando la computadora juega el juego automaticamente cuando duras mucho tiempo en la pantalla de titulo). A si que, si Sonic colecciona 15 anillos en modo demo el logro tambien saldria, que es algo que no queremos.
Checa los tips en la siguiente seccion de abajo para conocer como mejorar la logica de tu logro y hacerlo aceptable para que sea oficialmente lanzado.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#tips-importantes","title":"Tips Importantes","text":"Aqui estan algunos tips que tienes que tener en mente cuando te encuentres creando logros:
Puedes encontrar mas en la pagina de Tips y Trucos.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#siguientes-pasos","title":"Siguientes pasos","text":"Ahora que ya sabes como utilizar el Inspector de Memoria, y el Editor de Logros. Llego la hora de que aprendas nuevas tecnicas y practiques:
Que te diviertas!
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:36] meleu:
fix broken links[2019-03-12 14:58] meleu:
Updated Getting Started as an Achievement Developer ES (markdown)Link para o texto em ingl\u00eas: Getting Started as an Achievement Developer
Bem-vindo ao mundo do desenvolvimento de conquisttas!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#conceitos-basicos","title":"Conceitos b\u00e1sicos","text":"Tecnicamente, uma conquista (no contexto de RetroAchievements) \u00e9 um grupo de condi\u00e7\u00f5es que devem ser cumpridas em um determinado frame do jogo.
Quando voc\u00ea inicia um jogo em um emulador com o recurso RetroAchievements, o emulador sempre verifica se essas condi\u00e7\u00f5es s\u00e3o atendidas no frame atual. Quando todas as condi\u00e7\u00f5es para uma conquista particular s\u00e3o atendidas, esta conquista \u00e9 ativada e o emulador deixa de verificar as condi\u00e7\u00f5es para essa conquista.
O processo de cria\u00e7\u00e3o de uma conquista envolve basicamente 3 etapas:
Encontrar um lugar na RAM do jogo onde a informa\u00e7\u00e3o que voc\u00ea deseja \u00e9 armazenada (exemplos: n\u00edvel, barra de vida, tempo, moedas, segurando uma arma, obter um item, etc.).
Criar condi\u00e7\u00f5es que devem ser cumpridas para ativar uma conquista.
Testar se a sua conquista est\u00e1 funcionando como esperado.
Provavelmente voc\u00ea voltar\u00e1 para os passos 2 e 3 muitas vezes para refinar a l\u00f3gica de sua conquista.
Neste documento, veremos como realizar as etapas acima.
Depois de ter certeza de que sua conquista est\u00e1 funcionando nas condi\u00e7\u00f5es desejadas, voc\u00ea pode envi\u00e1-la para o servidor. Veremos mais sobre isso adiante.
Tutoriais em V\u00eddeo: o usu\u00e1rio Thoreau \u00e9 um criador de conquistas experiente e criou uma s\u00e9rie de v\u00eddeos mostrando todo o processo de cria\u00e7\u00e3o de conquistas em portugu\u00eas. Confira os v\u00eddeos no youtube.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#primeiros-passos","title":"Primeiros passos","text":"Antes de come\u00e7ar, certifique-se de ter um emulador RA da p\u00e1gina do RetroAchievements Download Page primeiro e crie uma conta para que voc\u00ea possa fazer login usando o emulador.
Neste guia, estaremos usando RAGens para demonstrar, e o jogo Sonic the Hedgehog. Estamos usando RAGens, mas o mesmo se aplica aos outros emuladores.
Para come\u00e7ar, execute o RAGens e fa\u00e7a o login quando solicitado. Em seguida, use File -> Open e selecione qualquer ROM que voc\u00ea deseja encontrar conquistas.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#memory-inspector","title":"Memory Inspector","text":"Agora voc\u00ea deve ter sua janela principal executando o Sonic. Existem 3 outros di\u00e1logos que usaremos, que podem ser encontrados em RetroAchievements no menu. Em primeiro lugar, tratamos primeiro o Memory Inspector:
O Memory Inspector pode ser usado para encontrar endere\u00e7os na RAM para que possamos usar. Essencialmente, voc\u00ea est\u00e1 em uma ca\u00e7ada ao tesouro para locais de mem\u00f3ria - este di\u00e1logo ir\u00e1 ajud\u00e1-lo a examinar e filtrar a RAM do jogo enquanto o jogo est\u00e1 sendo executado.
NOTA: Se voc\u00ea quer uma explica\u00e7\u00e3o passo a passo de v\u00eddeo para encontrar endere\u00e7os de mem\u00f3ria, este video esse v\u00eddeo pode ser muito \u00fatil. V\u00eddeo em ingl\u00eas
Para iniciar ou reiniciar um teste, clique em New 8-bit Test perto do meio na parte superior.
Para manter as coisas simples, come\u00e7aremos procurando pelo endere\u00e7o de mem\u00f3ria que contenha o n\u00famero de an\u00e9is que coletamos. Nossas etapas ser\u00e3o as seguintes:
Carregue a ROM e comece um novo jogo.
Redefinir a caixa de di\u00e1logo de mem\u00f3ria: clique em New 8-bit Test.
Retorne ao jogo e altere o n\u00famero de an\u00e9is na mem\u00f3ria. Por exemplo, colete um anel.
Na caixa de di\u00e1logo de mem\u00f3ria, agora queremos filtrar por valores que sejam \"maiores do que valores anteriores\" (s\u00edmbolo>). Selecionamos isso, ent\u00e3o, clique em Filter.
Cada vez que voc\u00ea executa 3 e 4, o n\u00famero de possibilidades ou 'candidatos' diminuir\u00e1. Continuaremos a faz\u00ea-lo at\u00e9 que o n\u00famero de candidatos alcance um n\u00famero muito pequeno (o menor poss\u00edvel), pode demorar 4-5 tentativas. Em seguida, podemos clicar na janela de resultados e monitorar o endere\u00e7o de mem\u00f3ria no visor de mem\u00f3ria na parte inferior. Continue usando o jogo e voc\u00ea deve ver os valores em mudan\u00e7a de mem\u00f3ria \u00e0 medida que voc\u00ea coleciona an\u00e9is. Se voc\u00ea n\u00e3o, ou se algo n\u00e3o parece direito, tente outro valor. Com o primeiro Sonic the Hedgehog, o endere\u00e7o da mem\u00f3ria para o n\u00famero de an\u00e9is deve ser 0xfe20.
Quando voc\u00ea encontrou um endere\u00e7o com o qual voc\u00ea est\u00e1 feliz, voc\u00ea pode escrever uma nota curta para o que \u00e9 e clicar em Salvar nota, isso ir\u00e1 armazen\u00e1-lo no banco de dados e ser\u00e1 restaurado automaticamente na pr\u00f3xima vez que voc\u00ea carregar o visor de mem\u00f3ria para isso jogo onde quer que esteja! Note que depois de clicar em \"Salvar nota\", a nota ser\u00e1 armazenada automaticamente no banco de dados, e compartilhada para que todos os desenvolvedores compartilhem o acesso a essas notas de mem\u00f3ria. Todos ser\u00e3o baixados de novo quando voc\u00ea carregar uma ROM. Se voc\u00ea tentar substituir uma nota, verificar\u00e1 com voc\u00ea primeiro antes de enviar.
Voc\u00ea pode encontrar Dicas de Escava\u00e7\u00e3o de Mem\u00f3ria aqui.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#achievement-sets","title":"Achievement Sets","text":"OK para que a localiza\u00e7\u00e3o da mem\u00f3ria para o n\u00famero de an\u00e9is seja armazenada em 0xfe20
- nota para um n\u00e3o programador, estamos lidando com um sistema de numera\u00e7\u00e3o hexadecimal que pode ser assustador, mas n\u00e3o se preocupe, essencialmente s\u00e3o apenas n\u00fameros e letras em vez de apenas n\u00fameros, e n\u00e3o esquecendo 0x
no in\u00edcio para mostrar que \u00e9 uma localiza\u00e7\u00e3o de mem\u00f3ria em hexadecimal. Encontramos um endere\u00e7o em que nos interessamos e armazenamos usando Save Note. Agora queremos criar uma nova conquista.
V\u00e1 para o RetroAchievements no menu, escolha Achievement Sets e voc\u00ea ver\u00e1 esta caixa de di\u00e1logo:
Aqui agrupamos todas as conquistas que conhecemos em tr\u00eas conjuntos:
Core Achievements (o principal, conjunto de conquistas p\u00fablico),
Unofficial/User Achievements (p\u00fablico, mas n\u00e3o ir\u00e1 premiar pontos, \u00e9 apenas para outros desenvolvedores revisarem),
Local Achievements (pessoais no seu PC).
Na caixa de di\u00e1logo Conquistas, clique em Local Achievements (canto superior esquerdo), depois em Add New Achievement (inferior esquerda). Isso ir\u00e1 adicionar uma entrada em branco \u00e0 lista no centro. Clique duas vezes nele: se ainda n\u00e3o est\u00e1 aberto, isso deve selecion\u00e1-lo e abrir a caixa de di\u00e1logo Editor de conquista (Achievement Editor).
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#achievement-editor","title":"Achievement Editor","text":"O Achievement Editor se parece com isso:
Esta \u00e9 a \u00faltima caixa de di\u00e1logo onde reunimos todos os dados juntos. A maioria dos principais campos s\u00e3o auto-explicativos, ou seja, Title, Description, Points. A principal \u00e9 a parte de 'Requirements' (Requisitos).
Digamos que queremos adicionar uma conquista para colecionar um certo n\u00famero de an\u00e9is. Digamos 15 an\u00e9is para simplificar. Depois de preencher os campos na parte superior e selecionar um \u00edcone adequado (neste exemplo, usamos o distintivo de trof\u00e9u de ouro (00136), mas voc\u00ea pode carregar um novo), precisamos preencher os Requisitos. Temos um requisito, que o n\u00famero de an\u00e9is \u00e9 pelo menos 15. O pr\u00f3ximo clique \u00e9 Add New Requirement.
Ao clicar neste bot\u00e3o, ser\u00e3o adicionados v\u00e1rios valores padr\u00e3o \u00e0 lista Requisitos. Esses padr\u00f5es apenas garantem que algo relativamente sens\u00edvel seja adicionado \u00e0 lista. Por enquanto, ignorando o campo 'Special?'. Quando clicamos em criar, o valor de mem\u00f3ria padr\u00e3o ser\u00e1 o valor que voc\u00ea deixou pela \u00faltima vez na caixa de di\u00e1logo de mem\u00f3ria.
Em seguida, alteraremos esses valores para o seguinte:
16 bits
.0xfe20
.>=
- esta \u00e9 a compara\u00e7\u00e3o a fazer. Podemos ter alguma compara\u00e7\u00e3o aqui, mas \u00e9 sensato ter \"maior ou igual\". Isso \u00e9 importante porque, se conseguimos 10 an\u00e9is, ent\u00e3o uma caixa de super anel para ter 20, perder\u00edamos exatamente 15 an\u00e9is.Value
- estamos comparando esse valor de mem\u00f3ria com um valor fixo: 15.Empty
- isso s\u00f3 \u00e9 relevante ao comparar a mem\u00f3ria com a mem\u00f3ria.15
- o n\u00famero de an\u00e9is necess\u00e1rios: o valor com o qual estamos comparando a mem\u00f3ria0
- ignore isso por enquanto, \u00e9 \u00fatil para quando algo precisa acontecer um certo n\u00famero de vezes.Com esse conjunto, n\u00e3o temos mais condi\u00e7\u00f5es para adicionar, ent\u00e3o retornamos \u00e0 caixa de di\u00e1logo Achievements. Para estar seguro, devemos salvar nosso progresso ao clicar em Save Local! Isso salva tudo para arquivar localmente para garantir que n\u00e3o perderemos nenhum progresso.
Agora podemos \"ativar\" essa conquista localmente ao clicar Activate no lado direito. Isso come\u00e7ar\u00e1 a monitorar esses locais de mem\u00f3ria e atribuir\u00e1 a conquista uma vez que todas as condi\u00e7\u00f5es s\u00e3o verdadeiras. Agora, podemos prosseguir e testar para ver se essa conquista funciona!
Se pressionarmos no jogo Esc, voc\u00ea ver\u00e1 a conquista aparecer como uma demonstra\u00e7\u00e3o do que seria semelhante \u00e0 sobreposi\u00e7\u00e3o no jogo!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#evitando-bugs","title":"Evitando bugs","text":"O cheevo (achievement) que criamos neste tutorial \u00e9 muito simples, tem apenas uma condi\u00e7\u00e3o: \"an\u00e9is coletados\" >= 15 \". Mas o endere\u00e7o para gravar o n\u00famero de an\u00e9is coletados tamb\u00e9m \u00e9 usado quando o jogo \u00e9 executado em \"modo de demonstra\u00e7\u00e3o\" (AI jogando o jogo depois de esperar um pouco na tela de t\u00edtulo). Ent\u00e3o, se Sonic coletar 15 an\u00e9is no modo de demonstra\u00e7\u00e3o, essa conquista ir\u00e1 desencadear, o que \u00e9 indesej\u00e1vel.
Ent\u00e3o, aqui est\u00e3o algumas dicas que voc\u00ea sempre deve ter em mente ao criar suas conquistas:
PauseIf
demo mode (modo demonstra\u00e7\u00e3o): Se o jogo tiver um modo de demonstra\u00e7\u00e3o, certifique-se de encontrar o endere\u00e7o para ele e adicionar o modo! = Demo ou algo semelhante em suas conquistas. Mais informa\u00e7\u00f5es sobre PauseIf na p\u00e1gina Caracter\u00edsticas da l\u00f3gica de conquista.PauseIf
usando macetes (cheat codes): se o jogo tiver um c\u00f3digo secreto de macete para aumentar vidas, selecionar fases, etc. Certifique-se de encontrar os endere\u00e7os para isso e adicionar algum tipo de prote\u00e7\u00e3o em suas conquistas. OK, talvez n\u00e3o seja um t\u00f3pico muito b\u00e1sico, mas voc\u00ea deve ter em mente ao criar um conjunto de conquistas real.Depois de testarmos que a conquista funciona localmente, h\u00e1 um processo de confirma\u00e7\u00e3o em duas etapas:
Primeiro, na caixa de di\u00e1logo Conquistas, selecionamos nossa conquista e pressione Commit Selected e concordamos com a caixa de di\u00e1logo. Isso ir\u00e1 empurrar nossa conquista para o servidor e armazen\u00e1-lo em Unofficial User-submitted Achievements
Para que a conquista seja apreciada por muitos, ela deve ser empurrada para o conjunto Core Achievement (Core Achievement set). Para as suas poucas primeiras conquistas, ele deve ser revisado por um membro da equipe antes que possa ser empurrado para o Core. Depois de ter carregado um conjunto de conquistas para o Unofficial, voc\u00ea precisa entrar em contato com um administrador que, usando seu julgamento e padr\u00f5es pessoais de qualidade, aprovar\u00e1 o conjunto e lhe dar\u00e1 um status de desenvolvedor no site (Developer status). Nesse caso, voc\u00ea pode empurrar qualquer conquista para o Core voc\u00ea mesmo.
Naturalmente, \u00e9 melhor enviar apenas conquistas \u00fanicas e interessantes no grupo de conquistas principais. Se houver duplicatas no grupo Core, as duplicatas adicionadas mais recentemente ser\u00e3o manualmente moderadas e exclu\u00eddas. Se voc\u00ea n\u00e3o quer sua conquista no grupo Core, ou voc\u00ea acha que pode n\u00e3o ser apropriado para o grupo Core (ou seja, se est\u00e1 incompleto, ou se \u00e0s vezes ele parece se desencadear quando n\u00e3o \u00e9 suposto, como quando o jogo est\u00e1 mostrando um demo), deixe-o na se\u00e7\u00e3o N\u00e3o oficial / Se\u00e7\u00e3o submetida pelo usu\u00e1rio.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#proximos-passos","title":"Pr\u00f3ximos passos","text":"Agora que voc\u00ea sabe como usar o Memory Inspector e o Editor de Conquistas. \u00c9 hora de aprender novas t\u00e9cnicas e pr\u00e1ticas:
Diverta-se! Obrigado pela leitura!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:27] meleu:
fix links[2020-06-20 18:15] meleu:
adicionado link para a playlist do Thoreau[2018-06-10 10:51] lilbud:
Updated Discord Link[2018-03-28 20:09] meleu:
Updated Getting Started as an Achievement Developer pt_BR (markdown)[2018-03-25 01:09] meleu:
Updated Getting Started as an Achievement Developer pt_BR (markdown)[2018-03-23 01:19] meleu:
Updated Getting Started as an Achievement Developer.pt_BR (markdown)Welcome to the world of Achievement Creation!
"},{"location":"Getting-Started-as-an-Achievement-Developer/#basic-concepts","title":"Basic Concepts","text":"Technically an achievement is a group of conditions that must be met in a particular frame of the video game.
When you launch a game on an emulator with the RetroAchievements feature, the emulator is always checking if those conditions are met in the current frame. When all conditions for a particular achievement are met, it is awarded and the emulator stops checking the conditions for that achievement.
The process of creating an achievement basically involves 3 steps:
Finding a place in the game's RAM where the information you want is stored (examples: level, life bar, time, coins, holding a weapon, get an item, etc.).
Create conditions that must be met in order to award an Achievement.
Test if your achievement is working as expected.
Most likely you'll go back to step 2 and 3 many times to refine the logic of your Achievement.
In this doc we'll see how to accomplish the steps above.
After you're sure your achievement is triggering at the conditions you want, you can submit it to the server. We'll see more about it later.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#first-steps","title":"First Steps","text":"Before start ensure you have an RA emulator from the RetroAchievements Download Page first and create an account so you can log in using the emulator.
In this guide we'll be using RALibRetro with the Genesis Plus GX core to demonstrate, and the game Sonic the Hedgehog. We are using RALibRetro but the same applies for the standalone emulators.
To begin, run the RALibRetro executable and login when prompted. If you have not used the Genesis Plus GX core before, you can install it by going to Settings -> Manage Cores -> selecting Sega Genesis in the drop down menu -> clicking Download to the right of the core name. Once the core is installed, go to File -> Select Core -> Sega Genesis -> Genesis Plus GX. Now that you have the core selected, you'll need to load the game. Go to File -> Load Game and select the Sonic the Hedgehog ROM (we recommend using No Intro ROMs by default).
"},{"location":"Getting-Started-as-an-Achievement-Developer/#memory-inspector","title":"Memory Inspector","text":"You should now have your main window running Sonic. There are 3 other dialogs we'll be using, which can be found under RetroAchievements in the menu. We'll be dealing with the Memory Inspector first:
The Memory Inspector can be used to find addresses in RAM for us to use. Essentially you are on a treasure hunt for memory locations - this dialog will help you examine and filter the game's RAM while the game is running.
NOTE: If you want a step-by-step video explanation on finding memory addresses, you can view this updated video. For another video resource, you can view this older video.
See also: Memory Inspector Overview and Memory Digging Tips.
To start or restart a test, click Reset near the top left.
To keep things simple, we'll start by looking for the memory address which holds the number of rings we have collected. Our steps will be the following:
Load the ROM and start a new game.
Reset the memory dialog: click Reset.
Run the first filter: click Filter Once.
Return to the game and change the number of rings in memory. For example, collect a ring.
In the memory dialog, we now want to filter for values that are 'greater than previous values' (symbol >
). We select this, then hit Filter again.
Each time you perform 4 then 5, the number of possibilities or 'candidates' will get smaller. We will continue doing this until the number of candidates reaches a very small number (as few as possible), it can take several attempts. Next we can click in the results window, and monitor the memory address in the memory viewer at the bottom. Continue using the game and you should see the values in memory change as you collect rings. If you don't, or if something doesn't look right, try another value. With the first Sonic the Hedgehog, the memory address for the number of rings should be 0xfe20
.
=
), or values that are different (use 'not equal', symbol !=
). Using the example above, you can collect a ring then use the \">\" filter, take a few steps then use the \"=\" filter (since the number of rings did not change), collect more rings and use the \">\" filter again, etc.When you've found an address you're happy with, you can write a short note for what it is and hit Save Note, this will store it on database, and will be automatically restored next time you load up the memory viewer for this game, wherever you are! Note that after clicking 'Save Note', the note will be automatically stored on the database, and shared so all developers will share access to these memory notes. They will all be downloaded afresh when you load a ROM. If you try to overwrite a note, it will check with you first before submitting.
You can find more useful Memory Digging Tips here.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#achievement-sets","title":"Achievement Sets","text":"So the memory location for the number of rings is stored at 0xfe20
- note to a non-programmer, we're dealing in hexadecimal numeral system which can be daunting, but don't worry, essentially it's just numbers and letters instead of only numbers, and not forgetting 0x
at the start to show that it's a memory location in hex. We've found an address we're interested in and stored it using Save Note. We now want to create a new achievement.
Go to the RetroAchievements in the menu, choose Achievement Sets and you'll see this dialog:
Here we group all the achievements we know about into three sets:
Core Achievements (the main, public Achievement set),
Unofficial/User Achievements (public, but will not award you points: for peer review),
Local Achievements (exclusive to your PC).
In the Achievements dialog, click Local Achievements (top left), then Add New Achievement (top right). This will add a blank entry to the list in the center. Double click on it: if it's not already open, this should select it and open the Achievement Editor dialog.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#achievement-editor","title":"Achievement Editor","text":"This is how it looks:
This is the final dialog where we bring all the data together. Most of the top fields are self explanatory, I.e. Title, Description, Points. The main one is the 'Requirements' part.
Let's say we want to add an achievement for collecting a certain number of rings. Let's say 15 rings for simplicity. After filling out the fields at the top and selecting a suitable icon (in this example we used the gold trophy badge (00136), but you can upload a new one), we need to fill out Requirements. We have one requirement, that the number of rings is at least 15. Next click is Add New Requirement.
Clicking this button will add several default values to the Requirements list. These defaults just ensure that something relatively sensible is added to the list. For now, ignoring the field 'Special?'. When we clicked create, the default memory value will be whatever value you last left in the memory dialog.
Next we will change these values to the following:
16-bit
- we're using 16-bit because the value can exceed 255 (which is 0xff in hex)0xfe20
>=
- this is the comparison to make. We could have any comparison here, but it's sensible to have \"greater than or equal to\". This is important because if we get 10 rings then a super ring box to have 20, we would miss out having exactly 15 rings.Value
- we're comparing this memory value to a fixed value: 15Empty
- this is only relevant when comparing memory to memory15
- the number of rings required: the value we are comparing the memory to0
- ignore this for now, its useful for when something needs to happen a certain number of timesWith that set, we don't have any more conditions to add, so we return to the Achievements Dialog. To be safe, we should save our progress by hitting Save Local! This saves everything to file locally to ensure that we won't lose any progress.
We can now 'activate' this achievement locally by checking the box next to Active on the right-hand side in the Achievement Editor or by selecting the achievement in Achievement Sets and clicking Activate Selected. This will start monitoring these memory locations and will award the achievement once all the conditions are true. Now we can go ahead and test to see if this achievement works!
If we press Esc
in-game, you will see the achievement show up as a demonstration of what it would look like in the in-game overlay!
Although the achievement worked fine in our tests, an achievement with logic like that is not ready to be officially released. First of all, it has only one condition: \"collected rings >= 15\". The problem is that the memory address used to record the number of collected rings is also used when the game runs in \"demo mode\" (AI playing the game after you wait a while on the title screen). So, if Sonic collects 15 rings in demo mode this achievement will trigger, which is unwanted.
Check the tips in the next section below to know how to improve the logic of your achievement and then make it acceptable to be officially released.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#important-tips","title":"Important Tips","text":"Here are some tips you have to keep in mind when creating your achievements:
You can find more in the Tips and Tricks page.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#next-steps","title":"Next Steps","text":"Now that you know how to use the Memory Inspector, and the Achievement Editor. It's time to learn new techniques and practice:
Have fun!
"},{"location":"Getting-Started-as-an-Achievement-Developer/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-01-28 22:59] OvenOverlord:
Added Fridge's video link to the step-by-step video explanation links[2021-07-08 09:31] televandalist:
Fix image links[2020-05-15 02:15] televandalist:
Changed the Save/Load State method to match that of RALib rather than RAGens.[2020-05-15 02:13] televandalist:
Quick typo fix.[2020-05-15 02:04] televandalist:
Reworded instructions to apply to RALibRetro instead of RAGens. Added note about why the 16-bit address was selected in the editor. Fixed multiple typos, grammatical errors, and reworded some 'casual' speak.[2020-05-15 00:05] televandalist:
Recreated the old images with RALib. Old ones were using RAGens and had the old overlay.[2019-02-09 20:44] meleu:
mentioning PauseIf with hitcounts on this doc can lead to confusion (if we had a template/example for this technique it would be OK)[2019-02-08 10:53] meleu:
cosmetic[2019-02-08 02:12] Kvon:
pauseif link, added critical line for adding cheat protection, typically[2019-02-08 02:07] Kvon:
added a link to the demo mode tipsParticipantes de las Tablas de Clasificaci\u00f3n Globales necesitan conseguir sus logros de manera justa y legitima.
En general, un jugador tiene que desbloquear logro de la siguiente manera:
Esta reglas son dise\u00f1adas para mantener a los jugadores honestos en sus partidas y que sean honestos con todos los demas jugadores en la competencia de Tablas Globales.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#tabla-de-contenidos","title":"Tabla de Contenidos","text":"Las tablas globales de RetroAchievements es la competencia principal y oficial. Este incluye un rango \u00fanico del sitio basado en tu suma de puntos de logros en comparaci\u00f3n con todos los dem\u00e1s jugadores rankeados. Cualquier cuenta con puntos mayor a 0 es rankeada autom\u00e1ticamente.
Lo que es considerado como una partida justa y legitima contra lo que se considera que no es justo (cheating) en las tablas globales a ido tomando forma por la comunidad desde sus or\u00edgenes. La reglas de abajo son lo que se espera de cada jugador que participa en en el rankeado global. Cualquier indicaci\u00f3n de que un jugador no este siguiendo las reglas este puede llegar a perder el uso de las tablas globales, tambi\u00e9n conocido como el estatus No Trackeado/Untracked.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#modo-hardcore","title":"Modo Hardcore","text":"El modo Hardcore es una funci\u00f3n donde el emulador desactiva completamente la habilidad de estados de guardado (savestate), rebobinar (rewind) y c\u00e1mara lenta (slow motion). La funci\u00f3n de fast-forward es la \u00fanica excepci\u00f3n aceptada.
Cuando juegas en modo hardcore los puntos que consigas valen el doble. Entonces si el set de logros tiene un valor de 400 puntos y lo terminas en modo hardcore vas a obtener 800 puntos.
Los usuarios que se toman en serio las tablas de clasificaci\u00f3n son mas probables que consigan puntos en modo hardcore.
NOTA: cuando se juega con el modo hardcore desactivado (tambi\u00e9n conocido como \"softcore\"), espera tener algunos problemas. Lee en este enlace porque no deber\u00edas de utilizar la funci\u00f3n de cargado de estado.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#no-trackeadountracked","title":"No Trackeado/Untracked","text":"Una cuenta no trackeada no aparece en el ranking global, sus actividades no aparecen en el feed, no se muestra con todos los dem\u00e1s usuarios que consiguieron alg\u00fan logro (en la pagina del logro) y sus entradas en las tablas de clasificaciones no son publicamente visible.
Sin embargo una cuenta No Trackeada aun puede disfrutar de RetroAchievements y conseguir los emblemas por completar juegos.
Este estatus fue creado para que la gente puede hacer lo que quiera con sus cuentas (como hacer trampa o compartir contenido en sus amigos/familia) sin meterse con el aspecto justo y competitivo de las tablas globales. As\u00ed que, si quieres disfrutar de RetroAchievements pero no quieres competir en las tablas globales puedes solicitar que tu cuenta se deje de trackear. Simplemente manda un mensaje a RAdmin solicitandolo.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#no-permitido","title":"No Permitido","text":"Incluso si \"tu tuviste\" que haber conseguido ese logro. Incluso si el juego estaba buggeado. Incluso si el logro esta completamente roto o removido. Cuando esto es detectado es muy probable que tu cuenta se pase a Untracked.
En los casos en que el logro tuvo que haberse desbloqueado pero no paso o no se registro en el sitio debido a un problema de red, deber\u00e1s de seguir los pasos descritos en el FAQ para solicitar un desbloqueo manual.
NOTA: percatate de utilizar la ultima versi\u00f3n disponible para ese emulador.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#2-no-consigas-logros-en-una-manera-en-la-que-no-fueron-las-intenciones-del-desarrollador-del-logro","title":"2. No consigas logros en una manera en la que no fueron las intenciones del desarrollador del logro.","text":"Si descubres un atajo a un logro esto es un bug. Por favor reporta este bug creando un ticket de reporte.
Tambien mira la regla permitida 2.
Ejemplos:
Incluso si tu archivo esta perdido/corrupto o necesitas un archivo de guardado de cierta parte en el juego por que se te paso algo.
Ejemplos:
Ejemplos:
Programas que pueden potenciar tus poderes en juegos, desbloquear modo de desarrollador, aumentar la velocidad del juego, modificar el c\u00f3digo del juego, etc.
Ejemplos:
Estos ya es scripting avanzado que va mas alla de tareas simples (algunas veces incluso sincronizado con la velocidad de reloj del procesador) para permitir que secciones del juegos que sean jugadas de una manera compleja/\u00fanica/o no-monotona/no-repetitiva y sin interacci\u00f3n humana alguna.
Ejemplos:
Incluyendo tu \"hermano peque\u00f1o\" o tu \"primo\". Tu tienes que conseguir logros por ti mismo. Permitir que otra gente consiga logros en tu cuenta no esta permitido en general y si alguien hace trampa o rompe las reglas en tu cuenta tu vas a ser el responsable por sus acciones.
Ejemplos:
Por medio del foro, Mensajes Privados, Discord, email, etc. Tienes permitido quejarte, solicitar cambios, dejar comentarios/rese\u00f1as negativas y otras criticas de manera respetuosa, pero tu das un nombre muy mal en la comunidad de cazadores de logros cuando hostigas/atacas a desarrolladores debido a lo que hicieron con los logros de su juego.
Ejemplos: Mandar amenazas o insultos a desarrolladores porque agregaron logros a su juego que a ti no te gusta; utilizando una agresividad extrema/excesiva mientras exiges al desarrollador que remueva cambie los logros; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#9-no-crees-o-compartas-metodos-para-hacer-trampa","title":"9. No crees o compartas m\u00e9todos para hacer trampa.","text":"Ejemplos:
El otro lado de la moneda para permitido 2. Cheat codes y modos debug no est\u00e1n permitidos mientras el desarrollador a hecho una nota en la que dice donde y cuando es permitido. Incluso si los logros son conseguibles con cheat codes este usualmente es un comportamiento no permitido, considerando que utilizaste cheats de una manera intencional, deber\u00edas de reportarlo como un bug con el sistema de tickets.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#permitido","title":"Permitido","text":"Incluso en modo hardcore el fast-forward esta permitido, como una conveniencia de la actualidad. Es casi un hecho de que el fast-forward ofrece una partida justa y por eso esta disponible para que todos lo utilicen.
NOTA:en modo softcore savestates, rewind y camara-lenta tambi\u00e9n est\u00e1n permitidos, pero ten en cuenta que podrias llegar a tener algunos problemas. Checa este link de Porque no deber\u00edas de utilizar la funci\u00f3n de cargado de estado.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#2-cuando-dice-explicitamente-en-la-descripcion-de-logro-cheat-codesmodo-dentro-del-juego-estan-permitidos-y-herramientas-de-desarrollodebug-estan-permitidas","title":"2. Cuando dice explicitamente en la descripci\u00f3n de logro, cheat codes/modo dentro del juego est\u00e1n permitidos y herramientas de desarrollo/debug est\u00e1n permitidas.","text":"Este es un complemento a la regla no permitida numero 2.
El desarrollador de logros deber\u00eda de estar capacitado en proteger su trabajo para que estos no se desbloqueen f\u00e1cilmente simplemente ingresando cheat codes. Sin embargo, algunos retos muy cool y divertidos puedes ser creados si tomamos ventaja de los cheats. En estos casos en especifico, utilizar cheats del juego esta permitido.
NOTA: si encuentras logros desbloqueables con uso de cheats y que en estos no este descrito que se puedan utilizar, considera abrir un ticket y reportarlo.
Ejemplos:
Glitches/exploits/tacticas-mon\u00f3tonas esta permitido, aunque los desarrolladores pueden programar sus logros para desactivarlos. Esto es usualmente mencionado en la descripci\u00f3n del logro.
Esto no incluye cuando hay fallas en el c\u00f3digo del logro del desarrollador. En esos casos, por favor crea un ticket de reporte, y consigue el logro como se supone que el desarrollador quer\u00eda que se obtuviera. Tambi\u00e9n mira regla no permitida 2.
Ejemplos:
Ejemplos cuando los desarrolladores lo desabilitan: Megaman (NES) - vence a los jefes sin recibir da\u00f1o sin utilizar el glitch de pausa.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#4-utilizar-guiaswalkthroughs-en-linea-es-permitido","title":"4. Utilizar gu\u00edas/walkthroughs en linea es permitido.","text":"Ejemplos: v\u00eddeo gu\u00edas de youtube; GameFAQs; soluciones de puzzles; lista de coleccionables; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#5-jugar-juegos-en-co-opcompetitivo-con-otro-jugador-o-jugadores-es-permitido","title":"5. Jugar juegos en co-op/competitivo con otro jugador o jugadores es permitido.","text":"Jugar co-op esta permitido, sin embargo los desarrolladores pueden codificar sus logros para desactivarlo. Esto es usualmente mencionado en la descripci\u00f3n del logro.
Tambi\u00e9n mira regla no permitida 2.
Ejemplos: un amigo con experiencia jugando Streets of Rage o Goof Troop contigo; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#6-turbo-esta-permitido","title":"6. Turbo esta permitido.","text":"Turbo es cuando dejas presionado solamente un bot\u00f3n y el bot\u00f3n es autom\u00e1ticamente presionado una y otra vez. Esta funci\u00f3n ya sea que esta integrada en el control, o en el emulador. En los dos de los casos esta permitido.
En casos en los que hay un scripting mas complejo aparte de solamente presionar un bot\u00f3n repetidamente, esto ya no esta permitido. Mira regla No Permitida 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#sanciones-por-hacer-trampa","title":"Sanciones por hacer trampa","text":"Cuando se detecte que se hace trampa, la cuenta va a ser puesta como Untracked. Hay algunos casos en donde la cuenta puede llegar a ser banneada.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#como-limpiar-tu-nombre-y-apelar-el-hacer-trampa","title":"Como limpiar tu nombre y apelar el hacer trampa","text":"La manera mas r\u00e1pida: Resetea todos tus puntos. Si fuiste previamente puesto como untracked y te gustar\u00eda que se te regresara al estado normal por favor informalo con RAdmin para que tomen la acci\u00f3n necesaria.
Si tienes maneras de demostrar que jugabas sin hacer trampa, manda un mensaje a RAdmin, pero ten en cuenta que todo el staff de RA son voluntarios y puede llegar a tomar un tiempo para que revisen tu caso.
Si deseas tener la iniciativa de admitir que hac\u00edas trampa, esto es realmente apreciado y se toma en consideraci\u00f3n durante tu caso.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#si-necesitas-ayuda","title":"Si necesitas ayuda","text":"Si alguna vez tuviste una pregunta, comentario, o sugerencias - si\u00e9ntete libre de contactar a RAdmin o al staff de RA (@mods y @admins) en el servidor de discord.
Estas reglas ser\u00e1n corregidas cada cierto tiempo si esto es requerido.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#agradecimientos-especiales","title":"Agradecimientos Especiales","text":"Este documento esta fuertemente basado en las reglas de caser\u00eda de logros de 100Pals. Aunque esta versi\u00f3n esta un poco mas resumida y modificada con temas relevantes en cuanto al contexto de RetroAchievements.
100Pals es una comunidad con cazadores de logros experimentados que existe desde que los logros fueron implementados en Steam por primera vez en 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:28] meleu:
fix link[2019-06-03 10:27] meleu:
fix broken link[2019-05-31 10:09] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-31 10:08] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-31 10:05] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-30 10:50] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-29 11:34] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-27 11:41] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-26 15:27] eldexterr:
Created Global Leaderboard and Achievement Hunting Rules es (markdown)Les participants du Classement global doivent gagner leurs succ\u00e8s de mani\u00e8re l\u00e9gitime et dans les r\u00e8gles.
De mani\u00e8re g\u00e9n\u00e9rale, un joueur doit d\u00e9bloquer des succ\u00e8s :
Ces r\u00e8gles ont \u00e9t\u00e9 con\u00e7ues pour maintenir une comp\u00e9tition dans le Classement global dont l'objectif est de maintenir une honn\u00eatet\u00e9 envers soi-m\u00eame et ses capacit\u00e9s de jeu et envers tous les autres joueurs.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#table-des-matieres","title":"Table des mati\u00e8res","text":"Le classement global de RetroAchievements est la comp\u00e9tition officielle \u00e0 laquelle participe toute la communaut\u00e9. Cela se traduit sur le site par un unique rang au sein de la communaut\u00e9 bas\u00e9 sur la somme des points des succ\u00e8s acquis. Chaque compte dont les points sont sup\u00e9rieurs \u00e0 500 est concern\u00e9.
Au sein du classement global, ce qui est consid\u00e9r\u00e9 comme l\u00e9gitime et dans les r\u00e8gles par opposition \u00e0 ill\u00e9gitime (tricherie) a \u00e9t\u00e9 fa\u00e7onn\u00e9 continuellement par la communaut\u00e9 depuis les origines. Il est attendu que les r\u00e8gles ci-dessous doivent \u00eatre respect\u00e9es par tous les joueurs souhaitant participer au syst\u00e8me de classement global. Tout indice menant \u00e0 la conclusion qu'un joueur n'aurait pas respect\u00e9 ces r\u00e8gles entra\u00eenera la bascule du compte parmi les Non class\u00e9s.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#mode-hardcore","title":"Mode Hardcore","text":"Le mode Hardcore est une fonctionnalit\u00e9 qui permet \u00e0 l'\u00e9mulateur de d\u00e9sactiver TOUS les retours en arri\u00e8res, ralentissements et sauvegardes d'\u00e9tat. La fonctionnalit\u00e9 d'acc\u00e9l\u00e9ration est la seule exception accept\u00e9e.
Lorsque vous jouez en mode Hardcore, vous gagnez le double des points initialement pr\u00e9vus pour le succ\u00e8s. Donc si une s\u00e9rie de succ\u00e8s vaut 400 points et que vous la compl\u00e9tez en mode Hardcore, vous gagnerez 800 points.
Les joueurs qui prennent le classement global au s\u00e9rieux compl\u00e8teront sans aucun doute les s\u00e9ries de succ\u00e8s en mode Hardcore pour obtenir plus de points.
NOTE : si vous d\u00e9sactivez le mode Hardcore (ce qu'on appelle le mode \"softcore\"), attendez-vous \u00e0 avoir des probl\u00e8mes. Consultez le lien : Pourquoi il ne faut pas utiliser le chargement d'\u00e9tat.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#non-classes","title":"Non class\u00e9s","text":"Un compte non class\u00e9 n'appara\u00eet plus dans le classement global, son activit\u00e9 dispara\u00eet du fil et il n'est plus list\u00e9 parmi les joueurs ayant acquis chaque succ\u00e8s (sur la page du succ\u00e8s). Tout ce qui le concerne n'est plus public.
Cependant, un compte non class\u00e9 peut encore profiter de RetroAchievements et gagner des badges pour avoir compl\u00e9t\u00e9 des jeux.
Ce statut a \u00e9t\u00e9 cr\u00e9\u00e9 pour que chacun puisse faire ce qu'il veut avec son compte (comme tricher, partager son compte avec des amis ou de la famille) sans pour autant fausser l'aspect comp\u00e9titif du classement global. Donc, si vous appr\u00e9ciez RetroAchievements mais ne souhaitez pas participer \u00e0 la comp\u00e9tition du classement global, vous pouvez demander \u00e0 basculer votre compte en non class\u00e9. Il suffit d'envoyer un message \u00e0 RAdmin.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#interdit","title":"Interdit","text":"M\u00eame si vous \"auriez d\u00fb\" le d\u00e9bloquer. M\u00eame si le jeu est bogu\u00e9. M\u00eame si le succ\u00e8s est retir\u00e9 ou qu'il ne fonctionne plus. Lorsque c'est d\u00e9tect\u00e9, le compte incrimin\u00e9 bascule dans les comptes Non class\u00e9s.
Si vous deviez d\u00e9bloquer un succ\u00e8s, mais que \u00e7a n'a pas \u00e9t\u00e9 le cas, ou que l'enregistrement sur le site Internet n'a pas eu lieu \u00e0 cause de probl\u00e8me r\u00e9seau, vous devez suivre la proc\u00e9dure d\u00e9crite dans la FAQ pour d\u00e9bloquer un succ\u00e8s manuellement.
NOTE : Assurez-vous de bien utiliser la derni\u00e8re version en date de l'\u00e9mulateur approuv\u00e9.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#2-ne-pas-gagner-le-succes-dune-maniere-qui-na-pas-ete-prevue-par-le-developpeur-de-succes","title":"2. Ne pas gagner le succ\u00e8s d'une mani\u00e8re qui n'a pas \u00e9t\u00e9 pr\u00e9vue par le d\u00e9veloppeur de succ\u00e8s.","text":"Si vous d\u00e9couvrez une porte d\u00e9rob\u00e9e pour accomplir un succ\u00e8s, signalez-la en envoyant un rapport.
Consultez aussi Ce qui est permis 2.
Exemples :
\u00c0 l'occasion, un d\u00e9veloppeur peut \u00e9ventuellement fournir une sauvegarde ou un mot de passe afin de d\u00e9bloquer un succ\u00e8s. C'est appropri\u00e9 dans le sens o\u00f9 c'est le d\u00e9veloppeur qui l'a d\u00e9cid\u00e9 ainsi.
Exemples :
Exemples :
Les logiciels qui peuvent augmenter votre puissance en jeu, d\u00e9bloquer les modes d\u00e9bogage, acc\u00e9l\u00e9rer le jeu, modifier le code du jeu, etc.
Exemples :
Il s'agit de scripts avanc\u00e9s pour le jeu qui vont bien au-del\u00e0 de la simple fonction (parfois li\u00e9e \u00e0 l'horloge interne) qui permettent de maintenir une activit\u00e9 complexe et unique en jeu sans interaction humaine et qui ne suivent pas un sch\u00e9ma r\u00e9current.
Exemples :
M\u00eame votre \"petit fr\u00e8re\" ou votre \"cousin\". Vous devez d\u00e9bloquer les succ\u00e8s par vous-m\u00eame. Laisser d'autres personnes d\u00e9bloquer des succ\u00e8s sur votre compte n'est pas permis et si quelqu'un d'autre que vous triche ou enfreint les r\u00e8gles sur votre compte, c'est vous qui serez tenu pour responsable.
Exemples :
Via forums, MPs, discord, courriel, etc. Vous n'\u00eates pas autoris\u00e9 \u00e0 vous plaindre, solliciter des changements, poster des analyses ou commentaires n\u00e9gatifs ou tout autre critique irrespectueuse. En attaquant, harcelant les d\u00e9veloppeurs au sujet de leur travail sur les succ\u00e8s, c'est notre image au sein de la communaut\u00e9 des chasseurs de succ\u00e8s que vous salissez.
Exemples : Poster des menaces ou des insultes flagrante envers un d\u00e9veloppeur pour avoir ajouter \u00e0 un jeu un succ\u00e8s que vous n'aimez pas. Faire preuve d'incivilit\u00e9 en demandant \u00e0 un d\u00e9veloppeur de retirer ou modifier un succ\u00e8s, etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#9-ne-creez-et-partagez-aucune-methode-de-tricherie","title":"9. Ne cr\u00e9ez et partagez aucune m\u00e9thode de tricherie.","text":"Exemples :
Le c\u00f4t\u00e9 face de Ce qui est permis 2. Les codes de tricherie et les modes de d\u00e9bogage ne sont pas permis \u00e0 moins que le d\u00e9veloppeur n'ait indiqu\u00e9 le contraire et dans quelles conditions. M\u00eame si les succ\u00e8s sont d\u00e9blocables via un code de tricherie, il ne s'agit pas d'un comportement attendu et consid\u00e9r\u00e9 comme de la tricherie si intentionnel. Cela doit \u00eatre signal\u00e9 en tant que bogue via le syst\u00e8me de signalement.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#ce-qui-est-permis","title":"Ce qui est permis","text":"M\u00eame en mode hardcore, l'acc\u00e9l\u00e9ration du jeu est autoris\u00e9e en tant que commodit\u00e9 moderne. Il est commun\u00e9ment admis que l'acc\u00e9l\u00e9ration ne pr\u00e9sente pas de risque de fausser le classement. Elle est donc disponible pour tous.
NOTE : en mode softcore les sauvegardes d'\u00e9tat, les retours en arri\u00e8re et les ralentissements sont autoris\u00e9s, mais attendez vous \u00e0 des probl\u00e8mes. Read in this link Why you shouldn't use the load state feature.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#2-lorsque-la-description-du-succes-lindique-explicitement-les-codesmodes-de-tricherie-et-les-outils-de-debogage-sont-autorises","title":"2. Lorsque la description du succ\u00e8s l'indique explicitement, les codes/modes de tricherie et les outils de d\u00e9bogage sont autoris\u00e9s.","text":"Vient en compl\u00e9ment de Interdit 2.
Les d\u00e9veloppeurs de succ\u00e8s ont pour instruction de prot\u00e9ger leur travail de telle sorte que le succ\u00e8s ne puisse \u00eatre simplement d\u00e9bloqu\u00e9 par un code de tricherie. Toutefois, quelques challenges cools et funs peuvent \u00eatre cr\u00e9\u00e9s en exploitant des m\u00e9thodes de tricherie. Dans ce cas particulier, les m\u00e9thodes de tricherie sont autoris\u00e9es.
NOTE: si vous d\u00e9couvrez qu'un succ\u00e8s est d\u00e9blocable en trichant sans que ce soit indiqu\u00e9 dans son descriptif, proc\u00e9dez \u00e0 un signalement.
Examples :
Utiliser des glitchs, exploits ou des strat\u00e9gies non pr\u00e9vues mais efficaces est permis, cependant les d\u00e9veloppeurs peuvent l'emp\u00eacher dans le code. C'est g\u00e9n\u00e9ralement indiqu\u00e9 dans la description du succ\u00e8s.
Cette r\u00e8gle n'est pas valable dans le cas de pr\u00e9sence de failles dans le code du d\u00e9veloppeur. Dans ce cas pr\u00e9cis, proc\u00e9dez \u00e0 un signalement et d\u00e9bloquez le succ\u00e8s comme pr\u00e9vu initialement par le d\u00e9veloppeur. Consultez aussi Interdit 2.
Exemples :
Exemple pour lequel les d\u00e9veloppeurs l'emp\u00eachent: Megaman (NES) - battre les boss sans prendre de d\u00e9g\u00e2ts sans utiliser le glitch de la pause.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#4-utiliser-un-guide-en-ligne-est-permis","title":"4. Utiliser un guide en ligne est permis..","text":"Exemples: guides vid\u00e9o sur Youtube; GameFAQs; solutions d'enigmes; listes d'objets \u00e0 collectionner.
Pr\u00e9cision d'honn\u00eatet\u00e9: Utiliser un r\u00e9solveur pour sudoku/picross est consid\u00e9r\u00e9 comme de la tricherie. De la tricherie qu'on ne peut punir et donc tol\u00e9r\u00e9e mais de la tricherie tout de m\u00eame.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#5-jouer-a-un-jeu-competitifco-op-avec-un-ou-plusieurs-joueurs-est-autorise","title":"5. Jouer \u00e0 un jeu comp\u00e9titif/co-op avec un ou plusieurs joueurs est autoris\u00e9.","text":"Jouer \u00e0 un jeu en co-op est autoris\u00e9. Cependant, les d\u00e9veloppeurs peuvent l'emp\u00eacher dans le code du succ\u00e8s. C'est g\u00e9n\u00e9ralement indiqu\u00e9 dans la description du succ\u00e8s.
Consultez aussi Interdit 2.
Exemples : un ami talentueux qui joue \u00e0 Streets of Rage ou Goof Troop avec vous; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#6-le-turbo-est-autorise","title":"6. Le Turbo est autoris\u00e9.","text":"Le Turbo, c'est quand vous pressez un bouton et qu'il est automatiquement press\u00e9 de nouveau de mani\u00e8re r\u00e9p\u00e9titive et rapide. Le Turbo est soit inclus avec une manette soit logiciel avec l'\u00e9mulateur. Dans les deux cas, c'est autoris\u00e9.
Dans le cas o\u00f9 un script plus complexe (plus qu'un bouton) est r\u00e9p\u00e9t\u00e9, ce n'est pas autoris\u00e9. Consultez Interdit 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#sanctions-pour-tricherie","title":"Sanctions pour tricherie","text":"Aussit\u00f4t qu'une tricherie aura \u00e9t\u00e9 d\u00e9tect\u00e9e, le compte sera bascul\u00e9 dans la cat\u00e9gorie Non class\u00e9. Dans certains cas, le compte sera banni.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#comment-effacer-lardoise-ou-faire-appel-de-tricherie","title":"Comment effacer l'ardoise ou faire appel de tricherie","text":"Le moyen le plus rapide : remise \u00e0 0 de tous vos points. Si votre compte a \u00e9t\u00e9 bascul\u00e9 dans les non class\u00e9s et que vous souhhaitez l'annuler, merci d'informer Radmin de votre action.
ATTENTION : d\u00e9bloquer des succ\u00e8s en utilisant des m\u00e9thodes non support\u00e9es par l'\u00e9mulateur entra\u00eene le basculement du compte dans les non class\u00e9s. Quand cela arrive, la seule solution pour revenir dans le classement global est de supprimer l'int\u00e9gralit\u00e9 des succ\u00e8s de votre compte. Il n'y aura pas ni recours ni exceptions.
Si vous avez des preuves que vous avez jou\u00e9 sans tricher, envoyez un message \u00e0 RAdmin, mais gardez \u00e0 l'esprit que l'\u00e9quipe RA sont tous volontaires et que cela peut prendre du temps pour que votre situation soit \u00e9tudi\u00e9e.
Si vous voulez aller de l'avant et admettre d'avoir trich\u00e9, un tel comportement sera grandement appr\u00e9ci\u00e9 et nous en tiendrons compte pour la d\u00e9cision.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#besoin-daide","title":"Besoin d'aide","text":"Si vous avez des questions, un commentaire, des suggestions n'h\u00e9sitez pas \u00e0 contacter RAdmin ou l'\u00e9quipe RA (@mods and @admins) sur notre serveur Discord.
Ces r\u00e8gles seront modifi\u00e9es \u00e0 l'occasion quand le besoin s'en fera sentir.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#remerciements-speciaux","title":"Remerciements sp\u00e9ciaux","text":"Ce document est fortement inspir\u00e9 de 100Pals Unified Achievement Hunting Rules. Cette version a \u00e9t\u00e9 adapt\u00e9e au contenu de RetroAchievements.
100Pals est une communaut\u00e9 de chasseurs de succ\u00e8s exp\u00e9riment\u00e9s qui existe depuis la sortie des premiers succ\u00e8s sur Steam en 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/","title":"Global Leaderboard and Achievement Hunting Rules","text":""},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#tldr-golden-rules","title":"TL;DR - Golden Rules","text":"Participants of the Global Leaderboard are required to earn their achievements fairly and legitimately.
In general, a player must unlock achievements: - Uusing the latest release version of an approved supported emulator; - Inside of a game by in-game actions; - By their own control; - Without outside-modifying game files or game code; - Without using another player\u2019s save files or passwords, and; - Without using outside cheat programs.
These rules are designed to keep players honest in their gameplay and honest towards each other in Global Leaderboard competition.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#table-of-contents","title":"Table of Contents","text":"The RetroAchievements global leaderboard is the main official community competition. This includes a unique site rank based on the sum of achievement points earned in comparison with every other ranked player. Each account with points greater than 0 is ranked by default.
What is considered fair and legitimate play versus unfair (cheating) on the global leaderboard has been shaped continually by the community since it's inception. The rules below are what we expect from every player who would like to participate in the ranking system. Any indication of a player's failure to follow the rules herein may lose use of the global leaderboard, also known as Untracked status.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#hardcore-vs-softcore","title":"Hardcore vs Softcore","text":"There are two modes of play: Hardcore and Softcore. - Hardcore mode is a feature where the emulator disables save state loading, rewind and slow motion. The fast-forward feature is the only accepted exception. Users who take the global leaderboard seriously will most likely earn achievements in hardcore. Also, events will almost always require achievements to be earned in Hardcore. - Note: Creating save states is allowed in hardcore and can be done to help practice an area later on in softcore, or help developers resolve tickets. - Softcore mode allows for emulator features such as save states, rewind, slow motion, emulator cheats, etc. This mode is much less competitive and is geared toward players who just want to do their own thing. This mode can be somewhat problematic when it comes to achievement processing; therefore, error reports are often taken with a grain of salt.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#untracked","title":"Untracked","text":"Users who have the Untracked status are omitted from all rankings. Their activity is hidden from view outside of their user page and their unlocks do not affect achievement statistics. This status is for users who share their accounts, have zero interest in hardcore and softcore rankings, are suspected of cheating, or actually are cheating. Untracked users can still earn achievements how they normally would, obtain mastery badges, etc.
Voluntary untracks can be reversed by resetting all progress and contacting RAdmin.
Involuntary untracks are generally the result of being flagged for suspicious timestamps. If your account becomes untracked, you can contact RAdmin to find out the cause and how to get it reversed.
If you notice a player has become untracked: do not harass them, accuse them of cheating, make a public scene, etc. Do not ask moderators or admin why a user was untracked. It is none of your business.
WARNING: Unlocking achievements using methods outside supported emulators results in having your account set as untracked. When this happens, the only way to be on the global leaderboard again is by doing a full reset of all achievements on your profile. There are no exceptions and no appeals. Severe cases of this can also result in a ban.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#not-allowed","title":"Not Allowed","text":"Even if you \"should have\" unlocked the achievement. Even if the game is bugged. Even if the achievement is removed or broken entirely. When it's detected, it will lead the account to be Untracked.
In the cases where you should have unlocked the achievement but it didn't trigger or it didn't get registered in the site due to a network problem, you should follow the steps described in FAQ to request a manual unlock.
NOTE: make sure you are using the latest release version of an approved supported emulator.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#2-do-not-earn-achievements-in-a-way-that-contradicts-what-the-description-asks","title":"2. Do not earn achievements in a way that contradicts what the description asks.","text":"If you discover a back-door to an achievement, it is a bug. Please report this bug using a ticket report.
See also the allowed rule 2.
Examples:
Occasionally a developer might provide a save file or password for you to use to earn certain achievements. This is appropriate according to the judgement of the set developer.
Examples:
Examples:
Programs which can boost your powers in games, unlock debug modes, speed the game up, modify game code, etc.
Examples:
These are all advanced scripting of a game far beyond simple tasks (sometimes even synced to clockspeed) to allow complex, unique, and/or non-monotonous/non-repetitive sections of a game to be played without human interaction.
Examples:
Including your \"little brother\" or your \"cousin\". You must earn your achievements yourself. Letting people earn achievements on your account is not allowed in general and if anyone cheats or breaks the rules on your account, you will still be held accountable.
Examples:
Via forums, PMs, discord, email, etc. You\u2019re allowed to complain, ask for changes, leave negative reviews/comments and other such respectful criticisms, but you give all of us in the achievement hunting community a really bad name when you harass/attack developers because of what they did to their game\u2019s achievements.
Examples: Issuing threats or flagrant insults to devs because they added achievements to their game that you do not like; using extreme/excessive rudeness while demanding a developer remove or change achievements; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#9-do-not-create-or-share-cheating-methods","title":"9. Do not create or share cheating methods.","text":"Examples:
The other side of the coin for allowed 2. Cheat codes and debug modes are not allowed unless the developer has made note of which and when it is allowed. Even if the achievements are earnable with cheat codes, this is usually unintended behavior, considered cheating if done intentionally, and should be reported as a bug via the ticket system.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#allowed","title":"Allowed","text":"Even in hardcore mode fast-forward is allowed, as a modern convenience. It's almost a consensus that fast-forward offers no risk to the fairplay and then it's available for everyone to use it.
NOTE: in softcore mode savestates, rewind and slow motion are also allowed, but expect to have some issues. Read in this link Why you shouldn't use the load state feature.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#2-when-explicitly-said-in-achievements-description-in-game-cheat-codesmodes-and-in-game-debug-tools-are-allowed","title":"2. When explicitly said in achievement's description, in-game cheat codes/modes and in-game debug tools are allowed.","text":"This is a complement to the not allowed rule 2.
The achievement developers are instructed to protect their work so the achievements can't be unlocked easily by simply using a cheat code. However, some cool and fun challenges can be created taking advantage of some cheats. In these specific cases, using in-game cheats are allowed.
NOTE: if you find achievements unlockable by using in-game cheats with no pertinent description, consider opening a ticket and reporting it.
Examples:
In-game glitches/exploits/cheesy tactics are allowed, however developers can code their achievements to disallow them programatically. It's usually mentioned in the achievement's description.
This does not include when there are flaws in the achievement developer's code. In such cases, please create a ticket report, and earn the achievement as intended by the developer. See also not allowed rule 2.
Examples:
Examples where developers disallow it: Megaman (NES) - beat bosses damageless without using the pause glitch.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#4-using-online-guideswalkthroughs-is-allowed","title":"4. Using online guides/walkthroughs is allowed.","text":"Examples: youtube video guides; GameFAQs; puzzle solutions; collectible lists; etc.
A note on honesty: Using solvers for sudoku/picross is considered cheating. Unenforceable tolerated cheating but cheating nonetheless.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#5-playing-co-opcompetitive-games-with-another-player-or-players-is-allowed","title":"5. Playing co-op/competitive games with another player or players is allowed.","text":"Playing co-op is allowed, however developers can code their achievements to disallow it programatically. It's usually mentioned in the achievement's description.
See also not allowed rule 2.
Examples: a skilled friend playing Streets of Rage or Goof Troop with you; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#6-turbo-is-allowed","title":"6. Turbo is allowed.","text":"Turbo is where you hold a single button down and the button is automatically re-pressed again and again quickly. Turbo is either built into controllers, or into emulation software. In either case it is allowed.
In cases where there is any more complex scripting than repeating the same button in quick succession, this is not allowed. See Not allowed 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#special-thanks","title":"Special Thanks","text":"This document is heavily based on the 100Pals Unified Achievement Hunting Rules. This version is trimmed down and tailored with topics that are relevant to the RetroAchievements context.
The 100Pals is a community with experienced achievement hunters that exist since achievements were first released on Steam in 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-11 21:04] The Mystical One:
Updated notes about save states in hardcore to clarify that creating save states is allowed.[2023-06-30 12:55] televandalist:
Updated Global Leaderboard and Achievement Hunting Rules (markdown)[2023-04-20 02:01] televandalist:
Removed \"high-ranking\" from \"If you notice a high-ranking player has become untracked:\" - doesn't matter what their rank is.[2023-04-20 01:39] televandalist:
Added \"Severe cases of this can also result in a ban.\" in the last paragraph of the Untracked section.[2023-04-20 01:37] televandalist:
Removed info about Hardcore being worth double. Replaced with a brief explanation of Hardcore vs Softcore. Expanded on info about Untracked users.[2022-05-14 23:42] Jendrej:
grammar[2022-03-09 15:34] StingX2:
\"Do not earn achievements in a way that is unintended by the achievement developer.\" into something along the lines of \"Do not earn achievements in a way that is opposite of what the description asks\" suggested by DanielARP[2021-05-15 23:11] meleu:
do not unlock achievements outside supported emulators[2021-04-26 13:29] meleu:
fix link[2020-02-07 00:49] televandalist:
Added an example to point 3 of \"Not Allowed\" to include loading saves in Hardcore that were created in Softcore.This page is for terms used around RetroAchievements. Some of these are technical terms encountered when developing a set, and others are slang and jargon among users and players, like \"set\" and \"cheevo\".
This page is still a work-in-progress. Please add definitions and fix errors as you see fit.
"},{"location":"Glossary-of-Developer-Terms/#16-bit","title":"16-bit","text":"Processors that work on two byte word lengths. More bits usually mean more addressable memory for more complex games. Also used to describe the fourth generation of consoles, when 16-bit processors were common. A typical 16-bit processor includes the Motorola 68k series (Sega Genesis, Atari Jaguar (as one of its processors), early Macintosh).
"},{"location":"Glossary-of-Developer-Terms/#32-bit","title":"32-bit","text":"Processors that work on four byte word lengths. More bits usually mean more addressable memory for more complex games. Also used to describe the fifth generation of consoles, where 32-bit processors were common. Processors this complex tend to be custom designed; 32-bit consoles include the PlayStation and the Sega Saturn.
"},{"location":"Glossary-of-Developer-Terms/#8-bit","title":"8-bit","text":"Processors that work on one byte word lengths. Can also be used to describe the second or third generations of consoles, where 8-bit processors were common. Common 8-bit processors include the Z80 (many golden age arcade games, the Sega Master System and Game Gear, and the Game Boy) and the 6502 (Atari 2600, Apple II, NES).
"},{"location":"Glossary-of-Developer-Terms/#achievement","title":"achievement","text":"A defined challenge in a game that rewards an RA user with points and an achievement badge when completed.
"},{"location":"Glossary-of-Developer-Terms/#achievement-id","title":"achievement ID","text":"A unique number associated with an achievement. This can be seen in various places, most notably the end of the URL for the achievement page. The \"100% all goals, stats, and decks with Tony Hawk\" achievement for Tony Hawk's Pro Skater 3 on the PS2 has an achievement ID of 261676.
"},{"location":"Glossary-of-Developer-Terms/#achievement-editor","title":"achievement editor","text":""},{"location":"Glossary-of-Developer-Terms/#achievement-of-the-week-aotw","title":"Achievement of the Week (\"AOTW\")","text":"A site event where a new achievement is selected weekly for an entire year, and users attempt to unlock ones for as many weeks as they can. Awards and a leaderboard for most unlocks are presented at the end of the year.
"},{"location":"Glossary-of-Developer-Terms/#achievement-of-the-month-aotm","title":"Achievement of the Month (\"AOTM\")","text":"An addition to the Achievement of the Week event, featuring larger achievements that are presented once a month instead of once a week. AOTM points count towards the final AOTW leaderboard.
"},{"location":"Glossary-of-Developer-Terms/#achievement-page","title":"achievement page","text":"A page on the site for a specific achievement, showing a list of people who have unlocked it, and a history of any tweaks in logic or status, and a wall for discussing the achievement.
"},{"location":"Glossary-of-Developer-Terms/#achievement-processing-or-simply-processing","title":"achievement processing (or simply \"processing\")","text":""},{"location":"Glossary-of-Developer-Terms/#achievement-sets","title":"achievement sets","text":"A collection of achievements that pertain to a specific game.
"},{"location":"Glossary-of-Developer-Terms/#addhits","title":"AddHits","text":""},{"location":"Glossary-of-Developer-Terms/#address","title":"address","text":""},{"location":"Glossary-of-Developer-Terms/#addsource","title":"AddSource","text":""},{"location":"Glossary-of-Developer-Terms/#admin","title":"admin","text":""},{"location":"Glossary-of-Developer-Terms/#alt-group","title":"alt group","text":""},{"location":"Glossary-of-Developer-Terms/#api","title":"API","text":""},{"location":"Glossary-of-Developer-Terms/#api-key","title":"API key","text":""},{"location":"Glossary-of-Developer-Terms/#author","title":"author","text":"The original developer who published an achievement.
"},{"location":"Glossary-of-Developer-Terms/#badge","title":"badge","text":"The image associated with an achievement. It's square and is 64x64 at full size.
"},{"location":"Glossary-of-Developer-Terms/#binary","title":"binary","text":"A way to notate numbers using entirely two states, on or off (colloquially 1's and 0's). While computers use binary, more commonly developers use hexadecimal to read the same information.
"},{"location":"Glossary-of-Developer-Terms/#big-endian-be","title":"big endian (\"BE\")","text":"A type of endianness where the most significant digit in a word is stored in memory first. In other words, big endian stores the word forwards, as you'd read it on its own. Big endian consoles include the Sega Genesis and the Neo Geo.
"},{"location":"Glossary-of-Developer-Terms/#bit","title":"bit","text":"The smallest discrete memory unit. Represented in binary. Rarely addressed directly on consoles.
"},{"location":"Glossary-of-Developer-Terms/#bonus-set","title":"\"bonus\" set","text":"A subset for a game featuring additional, more difficult or more esoteric challenges.
"},{"location":"Glossary-of-Developer-Terms/#byte","title":"byte","text":"A unit of memory with a length of eight bits. Often the smallest addressable unit of memory.
"},{"location":"Glossary-of-Developer-Terms/#cancel-leaderboard","title":"cancel (leaderboard)","text":""},{"location":"Glossary-of-Developer-Terms/#checksum","title":"checksum","text":""},{"location":"Glossary-of-Developer-Terms/#cheevo","title":"cheevo","text":"Colloquial shorthand for \"achievement\".
"},{"location":"Glossary-of-Developer-Terms/#claim","title":"claim","text":"When a developer declares their intent to work on a set for a game. Developers can only make a limited number of claims at a time. Unless it's a collaborative set, no other developer can work on that game while the claim is active.
"},{"location":"Glossary-of-Developer-Terms/#code-note","title":"code note","text":"A chunk of memory annotated with its purpose for use in achievement developing, a memory location \"bookmark\" of sorts. Each game has a freely-accessible page of code notes associated with it.
"},{"location":"Glossary-of-Developer-Terms/#code-reviewer","title":"code reviewer","text":""},{"location":"Glossary-of-Developer-Terms/#commit-selected","title":"commit selected","text":""},{"location":"Glossary-of-Developer-Terms/#completion-trophy","title":"completion trophy","text":"The award given to a user who has finished every achievement in a set in Softcore mode.
"},{"location":"Glossary-of-Developer-Terms/#core-achievement","title":"core achievement","text":"An achievement that's part of the main set for a game and is able to be unlocked by most players.
"},{"location":"Glossary-of-Developer-Terms/#crc-32","title":"CRC-32","text":""},{"location":"Glossary-of-Developer-Terms/#the-cutting-room-floor-tcrf","title":"The Cutting Room Floor (\"TCRF\")","text":"A website dedicated to unused content in games. This can be disabled features, hidden assets, localization changes, or materials in prototypes or prerelease media that changed by the time of the final release.
"},{"location":"Glossary-of-Developer-Terms/#demotion","title":"demotion","text":""},{"location":"Glossary-of-Developer-Terms/#decimal-dec","title":"decimal (\"dec\")","text":"A way to notate numbers, using only 0-9 for ten possible values. Prevalent in everyday use, though less so in computing.
"},{"location":"Glossary-of-Developer-Terms/#developer-dev","title":"developer (\"dev\")","text":"A user on RetroAchievements who digs into a game's behavior with the intent of creating achievements for it. Developers are also responsible for the upkeep of their sets, in case bugs are found.
"},{"location":"Glossary-of-Developer-Terms/#developing-achievements","title":"developing achievements","text":"A process of setting various checks on memory locations that fire when a player completes a task in a game. Achievement logic can be very complex and achievements are reviewed and tested rigorously before sets are released.
"},{"location":"Glossary-of-Developer-Terms/#discord","title":"Discord","text":"A chat platform commonly used by gaming communities, including RetroAchievements. Discord servers (or simply \"Discords\") often feature one or many text channels where users can post messages, images, and videos, and voice channels where users can stream video and audio.
"},{"location":"Glossary-of-Developer-Terms/#dynamic-link-library-dll","title":"dynamic link library (\"DLL\")","text":"A file type common on Windows computers for sharing code and resources between programs. DLLs are used in the standalone RetroAchievements emulators for all the site-specific functionality, like logging in and listening for achievement logic.
"},{"location":"Glossary-of-Developer-Terms/#dynamic-memory","title":"dynamic memory","text":""},{"location":"Glossary-of-Developer-Terms/#endianness","title":"endianness","text":"The order in which a series of bytes are stored in memory. Generally comes in two flavors, little endian and big endian. See those entries elsewhere in this document.
"},{"location":"Glossary-of-Developer-Terms/#event-set","title":"\"event\" set","text":""},{"location":"Glossary-of-Developer-Terms/#flag-achievement-field","title":"flag (achievement field)","text":""},{"location":"Glossary-of-Developer-Terms/#flag-memory","title":"flag (memory)","text":""},{"location":"Glossary-of-Developer-Terms/#forum","title":"forum","text":"RetroAchievements has a forum that facilitates development of sets and communication between users and admins, as well as general banter.
"},{"location":"Glossary-of-Developer-Terms/#game-icon","title":"game icon","text":""},{"location":"Glossary-of-Developer-Terms/#game-entry-or-simply-entry","title":"game entry (or simply \"entry\")","text":""},{"location":"Glossary-of-Developer-Terms/#game-id","title":"game ID","text":"A unique number associated with a game. This can be seen in various places, most notably the end of the URL for the game page. Vib-Ribbon for the PlayStation has a game ID of 8953.
"},{"location":"Glossary-of-Developer-Terms/#game-page","title":"game page","text":"A page on the site for a specific game, listing the achievements for it, completion percentages, users who have mastered the game, leaderboards, and a wall for discussing the game and set, among other things.
"},{"location":"Glossary-of-Developer-Terms/#github","title":"GitHub","text":"A website for publishing repositories of code for programs and websites. RetroAchievements uses GitHub to maintain its emulator projects, the website, and the site documentation.
"},{"location":"Glossary-of-Developer-Terms/#global-leaderboard","title":"global leaderboard","text":"The ranking of all players on the site based on the number of Hardcore and Softcore points they have.
"},{"location":"Glossary-of-Developer-Terms/#hack-set","title":"\"hack\" set","text":"A set developed for a ROM hack of a game.
"},{"location":"Glossary-of-Developer-Terms/#hardcore-mode","title":"Hardcore mode","text":"A setting in RA-equipped emulators that disables save states and speed controls, effectively forcing the player to play like they would on the real console. When a player unlocks an achievement in Hardcore, they get double the points for it, and mastery trophies are awarded for unlocking all achievements in that set in Hardcore.
"},{"location":"Glossary-of-Developer-Terms/#hash","title":"hash","text":"A string of data used to identify a specific version of a game. Hashes are used to ensure all players are using the same version, as differently-localized or earlier/later editions of a game can have differing memory locations that break achievement sets. For some consoles, the entire game image is hashed; for others, only a chunk of the image is hashed.
"},{"location":"Glossary-of-Developer-Terms/#hash-links-log","title":"#hash-links-log","text":""},{"location":"Glossary-of-Developer-Terms/#hexadecimal-hex","title":"hexadecimal (\"hex\")","text":"A way to notate numbers using 0-9 and the letters A-F, providing 16 possible values. Universal in computing thanks to its compactness and 16 being a power of two (decimal notation only has 10 possible values, 10 not being a power of two).
"},{"location":"Glossary-of-Developer-Terms/#hits","title":"hits","text":""},{"location":"Glossary-of-Developer-Terms/#homebrew","title":"homebrew","text":"Games and software developed for a console by hobbyists, as opposed to traditional game companies. Homebrew games tend to be adaptations of games for other platforms, though original homebrew certainly exists.
"},{"location":"Glossary-of-Developer-Terms/#homebrew-set","title":"\"homebrew\" set","text":""},{"location":"Glossary-of-Developer-Terms/#issue","title":"issue","text":""},{"location":"Glossary-of-Developer-Terms/#junior-developer","title":"junior developer","text":"A new developer with certain extra restrictions on their account, like the number of games they can claim at once.
"},{"location":"Glossary-of-Developer-Terms/#json","title":"JSON","text":""},{"location":"Glossary-of-Developer-Terms/#leaderboard","title":"leaderboard","text":"A ranking of players based on their scores, times, or another count (like the Tarzan leaderboard on Pitfall!, for the most vine swings without changing direction) on a game or on a particular stage of a game. Set developers have the option of creating as many leaderboards as they want for their game.
"},{"location":"Glossary-of-Developer-Terms/#little-endian-le","title":"little endian (\"LE\")","text":"A type of endianness where the least significant digit in a word is stored in memory first. In other words, little endian stores the word backwards from how you'd read it on its own. Little endian consoles include the NES and the PlayStation.
"},{"location":"Glossary-of-Developer-Terms/#local-achievements","title":"local achievements","text":"Achievements that only exist on the developer's computer and have not been pushed to unofficial or core achievement status.
"},{"location":"Glossary-of-Developer-Terms/#localization","title":"localization","text":"The act of translating a game from one language to another. Localization is common as many games originate in Japan, and are played in Western countries where Japanese isn't often spoken.
"},{"location":"Glossary-of-Developer-Terms/#logic-comparison-or-simply-comparison","title":"logic comparison (or simply \"comparison\")","text":""},{"location":"Glossary-of-Developer-Terms/#lower4","title":"lower4","text":""},{"location":"Glossary-of-Developer-Terms/#md5","title":"MD5","text":"A hashing algorithm. RetroAchievements uses this on its game hashes.
"},{"location":"Glossary-of-Developer-Terms/#mastery-trophy","title":"mastery trophy","text":"The award given to a user who has finished every achievement in a set in Hardcore mode.
"},{"location":"Glossary-of-Developer-Terms/#memory","title":"memory","text":"Usually refers to RAM, an address space that can be written to by the software at will and gets erased when the console is powered off. Most achievement development works by checking values in memory.
"},{"location":"Glossary-of-Developer-Terms/#memory-achievement-editor","title":"memory (achievement editor)","text":""},{"location":"Glossary-of-Developer-Terms/#memory-bookmarker","title":"memory bookmarker","text":""},{"location":"Glossary-of-Developer-Terms/#memory-inspector","title":"memory inspector","text":""},{"location":"Glossary-of-Developer-Terms/#memval","title":"mem/val","text":""},{"location":"Glossary-of-Developer-Terms/#multi-set","title":"\"multi\" set","text":""},{"location":"Glossary-of-Developer-Terms/#pauseif","title":"PauseIf","text":""},{"location":"Glossary-of-Developer-Terms/#pointers","title":"pointers","text":""},{"location":"Glossary-of-Developer-Terms/#points","title":"points","text":""},{"location":"Glossary-of-Developer-Terms/#prototype-set","title":"\"prototype\" set","text":"A set for a game that was never finished or published, or theoretically, a set for a prototype of a game that's massively different from its final version, enough to make another set not redundant.
"},{"location":"Glossary-of-Developer-Terms/#promote-to-core","title":"promote to core","text":"Making an achievement an official part of a set after development so players can attempt it.
"},{"location":"Glossary-of-Developer-Terms/#retroachievements-ra","title":"RetroAchievements (\"RA\")","text":"A site for creating and unlocking achievements in older games, generally the mid-2000s and before. Players are ranked based on the number of points they accumulate for unlocking achievements.
"},{"location":"Glossary-of-Developer-Terms/#radocs","title":"RADocs","text":"A set of documentation and instructions associated with the RetroAchievements platform.
"},{"location":"Glossary-of-Developer-Terms/#raemus","title":"RAEmus","text":"Short for \"RetroAchievements emulators\", or standalone emulators equipped with RA functionality. This generally only applies to emulators that have been unofficially forked to add RA functionality, and not to all-in-one emulation frontends like RetroArch or BizHawk, or emulators where RA support is official like DuckStation and PCSX2.
"},{"location":"Glossary-of-Developer-Terms/#requirement","title":"requirement","text":""},{"location":"Glossary-of-Developer-Terms/#resetif","title":"ResetIf","text":"flag
"},{"location":"Glossary-of-Developer-Terms/#reservation","title":"reservation","text":""},{"location":"Glossary-of-Developer-Terms/#retro-ratio","title":"retro ratio","text":"A metric to gauge the relative difficulty of the achievements a player has unlocked. A higher retro ratio means the player has unlocked more uncommon (and presumably difficult) achievements. As of yet, the retro ratio is still not well-defined.
"},{"location":"Glossary-of-Developer-Terms/#retroarch","title":"RetroArch","text":"An all-in-one emulator frontend for the Libretro project. RetroArch users install cores that each emulate a specific piece of hardware, allowing for the one program to run games from many systems. Has been ported to many, many consoles and operating systems. RetroArch is one of the main ways of playing RetroAchievements sets, due to many of the cores implementing RA functionality.
"},{"location":"Glossary-of-Developer-Terms/#revision","title":"revision","text":"When a set is updated after its initial release to add, remove, or edit achievements, or to update point values.
"},{"location":"Glossary-of-Developer-Terms/#revision-voting","title":"revision voting","text":""},{"location":"Glossary-of-Developer-Terms/#rich-presence-script-rps","title":"rich presence script (\"RPS\")","text":"A script that gives detailed information on-site about where a player is in a game, what items they've collected, who they're playing as, and other such data that updates while the player is playing.
"},{"location":"Glossary-of-Developer-Terms/#random-number-generator-rng","title":"random number generator (\"RNG\")","text":"Code that generates a seemingly random number, used to make gameplay less predictable and more interesting (though occasionally more frustrating as well). RNG is very rarely truly random, usually taking a number like the game clock and using it as a \"seed\". Poorly implemented seeds can have their \"randomness\" manipulated by players who know how to.
"},{"location":"Glossary-of-Developer-Terms/#read-only-memory-rom","title":"read-only memory (\"ROM\")","text":"Refers to an address space that can't be written to. This is usually where the game instructions and assets are stored. \"ROM\" also refers to a copy of the information on a game's ROM chips stored in a file, usually called an \"image\", for play on emulators or for use in hacking or datamining.
"},{"location":"Glossary-of-Developer-Terms/#rom-hack-or-simply-hack","title":"ROM hack (or simply \"hack\")","text":"A fanmade modification of a game to add new content and features, often totally converting the game in the process. Usually applies to simpler games that were stored on ROM cartridges; more complex and newer games are simply \"modded\" instead.
"},{"location":"Glossary-of-Developer-Terms/#romhackingnet","title":"romhacking.net","text":"A website that hosts guides and utilities for ROM hacking and game modding, as well as the ROM hacks themselves.
"},{"location":"Glossary-of-Developer-Terms/#set","title":"set","text":"A group of achievements associated with a game. Sets are usually developed and maintained by one or two people each who inspect the game's memory, define achievements and what points they're worth, and respond to tickets on achievements not working as intended. Completing all achievements in a set awards a trophy, depending on if the achievements were unlocked in Hardcore or Softcore mode.
"},{"location":"Glossary-of-Developer-Terms/#set-cap","title":"set cap","text":"The former limit on how many points are allowed in a set of achievements. This used to be 400, but there is currently no cap on points in sets.
"},{"location":"Glossary-of-Developer-Terms/#size-achievement-editor","title":"size (achievement editor)","text":""},{"location":"Glossary-of-Developer-Terms/#softcore-mode","title":"Softcore mode","text":"Playing with Hardcore mode disabled, allowing for save states and speed controls. Softcore does not give the player double points for unlocking achievements like Hardcore does, and does not award mastery trophies (instead awarding completion trophies).
"},{"location":"Glossary-of-Developer-Terms/#stage-id","title":"stage ID","text":""},{"location":"Glossary-of-Developer-Terms/#start-leaderboard","title":"start (leaderboard)","text":"To begin a run that's eligible for leaderboard ranking. A run will fail if it's not completed correctly (player death, restart, pause, or other developer-definable criteria).
"},{"location":"Glossary-of-Developer-Terms/#static-memory","title":"static memory","text":""},{"location":"Glossary-of-Developer-Terms/#submit-leaderboard","title":"submit (leaderboard)","text":"To have a score or a time ranked on one of the leaderboards.
"},{"location":"Glossary-of-Developer-Terms/#subsource","title":"SubSource","text":""},{"location":"Glossary-of-Developer-Terms/#ticket","title":"ticket","text":""},{"location":"Glossary-of-Developer-Terms/#ticket-manager","title":"ticket manager","text":""},{"location":"Glossary-of-Developer-Terms/#trigger","title":"trigger","text":""},{"location":"Glossary-of-Developer-Terms/#trophy","title":"trophy","text":"An award given to a player for completing a set or participating in a site event.
"},{"location":"Glossary-of-Developer-Terms/#type-memdeltavalue","title":"type (mem/delta/value)","text":""},{"location":"Glossary-of-Developer-Terms/#unofficial-achievement","title":"unofficial achievement","text":"An achievement published on-site, but not part of the main set. This usually needs additional testing before it can become a core achievement.
"},{"location":"Glossary-of-Developer-Terms/#unlicensed-set","title":"\"unlicensed\" set","text":""},{"location":"Glossary-of-Developer-Terms/#unlock-in-reference-to-achievements-also-called-earning-achievements","title":"unlock (in reference to achievements, also called \"earning\" achievements)","text":"Completing the steps needed to make an achievement fire. The achievement is then displayed on the user's page and elsewhere and they earn the points for having done so.
"},{"location":"Glossary-of-Developer-Terms/#upper4","title":"upper4","text":""},{"location":"Glossary-of-Developer-Terms/#user-motto","title":"user motto","text":"A short, user-definable snippet of text on a user page. This is usually silly and in-jokey.
"},{"location":"Glossary-of-Developer-Terms/#user-page","title":"user page","text":"The profile associated with a user on-site. This contains their account status (registered/junior developer/developer/moderator/etc), points accrued, completion percentage, trophies, the last five games the user was seen playing, and a wall for others to leave comments on, among other widgets.
"},{"location":"Glossary-of-Developer-Terms/#value","title":"value","text":""},{"location":"Glossary-of-Developer-Terms/#value-field-leaderboardrps","title":"value field (leaderboard/rps)","text":""},{"location":"Handling-Tickets/","title":"Handling Tickets","text":""},{"location":"Handling-Tickets/#handling-your-own-tickets","title":"Handling Your Own Tickets","text":"After you've published your achievements, be prepared for bug reports. You're expected to keep your work bug free by appropriately resolving tickets. Respond to all tickets as soon as possible. The sooner you respond the better, because the problem is fresh in the player's mind and you can use them to help you to resolve the problem.
"},{"location":"Handling-Tickets/#can-i-claim-a-set-if-i-have-an-open-ticket","title":"Can I Claim a Set If I Have an Open Ticket?","text":"To be allowed to make a primary or collaboration claim on a set, you must not have any unaddressed tickets.
cores.json
in RALibretro to remove the \"platforms\": \"none\"
line from a core\u2019s definition in order to download and use the core.You may resolve tickets for another developer under the following guidelines:
"},{"location":"Handling-Tickets/#if-the-developer-is-active","title":"If the Developer is Active","text":"You may assist them in the resolution. The developer should still implement any code changes needed, but you are allowed to suggest logic and help find the causes.
Tickets belonging to active Junior Developers should only be handled by members of the Code Reviewer team. If you are asked by a Junior Developer to close or resolve their ticket, please refer them to a Code Reviewer.
"},{"location":"Handling-Tickets/#if-the-developer-is-inactive","title":"If the Developer is Inactive","text":"You can work on their tickets on your own.
You may place a soft claim on ticket investigation and resolution by commenting your intent in a ticket comment.
Who handles tickets for achievements edited while the developer is Inactive?
If an inactive developer becomes active again, they are still responsible for their achievements that have been fixed by other developers.
Last 10 changes on this page:
[2024-03-12 17:03] Andrew Comer:
Added handling of Jr. Dev tickets.[2024-03-11 14:11] Andrew Comer:
Updated Handling Tickets (markdown)[2024-03-11 14:08] Andrew Comer:
Updated Handling Tickets (markdown)[2024-03-11 14:03] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:57] Andrew Comer:
Bullet formatting fixes.[2024-01-14 10:07] The Mystical One:
Cleaned up the \"Handling Tickets for Other Developers\" section so it flows better.[2024-01-14 08:31] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-14 08:27] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-13 23:04] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-13 23:03] The Mystical One:
Updated Handling Tickets (markdown)Every ROM that is linked to an achievement set should be clearly identified and labeled. These labels help players know which versions of a game are compatible as well as if there are any translation patches, bug fixes, cosmetic hacks, quality of life hacks, etc. that they can use.
"},{"location":"Hash-Labels/#info-for-linked-hashes","title":"Info for Linked Hashes","text":"Manage Hashes
automatically.main
Sometimes used to show the primary ROM used by the set developer(s) rapatches
Used when the hash requires a patch hosted on RAPatches nointro
The most common for cartridge-based games redump
The most common for disc-based games wozaday
Apple II preservation group tosec
fbneo
Mostly used for Arcade cleancpc
Amstrad preservation project 4amcrack
Used for Apple II neokobe
Mostly for PC-8001 and PC-8801 homebrew
Used for, you guessed it: Homebrews! atariage
Popular site for Homebrews itchio
Popular site for Homebrews msu1
Used to mark SNES ROMs with MSU-1 patches snesmini
egg
ROMs purchased from Project Egg, typically Japanese PC games. steam
ROMs purchased from Steam. mamesl
MAME Software List smwcentral
Popular repository for Super Mario World hacks. rhdn
Popular repository for ROM hacks goodtools
nongood
offlinelist
"},{"location":"Hash-Labels/#examples","title":"Examples","text":""},{"location":"Hash-Labels/#deja-vu-nes","title":"Deja Vu (NES)","text":"Deja Vu (USA) (Uncensored) (v1.0) (usertheloset).nes
, which follows the RAPatches naming scheme. The labels used are nointro
and rapatches
.To see how this will look for the majority of users, go to the game entry page and click on \"Linked Hashes.\"
As you can see below, nointro
became and rapatches
became .
We'll skip the manage hashes example for this one. Let's go straight to \"Linked Hashes\" on the game entry page:
The hashes labeled with redump
, rhdn
, and rapatches
require patches that are available on both romhacking.net and in the RAPatches repository.
Input Text:
[b]Suikoden (Europe) (De) (v1.01) (Twisted Phoenix Game Translation)[/b]\n[b]Suikoden (Europe) + [url=https://www.romhacking.net/translations/5736/]German Patch[/url][/b] [img=Images/labels/rhdn.png]\nor\n[b]Suikoden (Europe) + [url=https://github.com/RetroAchievements/RAPatches/raw/main/PS1/Translation/German/11255-Suikoden-GermanTranslation.7z]German Patch[/url][/b] [img=Images/labels/rapatches.png]\n[i]RA Checksum: [/i]f0c5ec0696aa2ec2d6e5b731fbe07491\n
[img=Images/labels/rapatches.png] [img=Images/labels/rhdn.png]\nDownload the patch from RHDN [url=https://www.romhacking.net/translations/5736/]here[/url].\nRAPatches Mirror [url=https://github.com/RetroAchievements/RAPatches/raw/main/PS1/Translation/German/11255-Suikoden-GermanTranslation.7z]here[/url].\n
"},{"location":"Hash-Labels/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-01 22:23] televandalist:
Updated Hash Labels (markdown)[2023-12-14 12:59] televandalist:
Updated Hash Labels (markdown)[2023-07-05 23:08] televandalist:
rndn -> rhdn[2023-06-03 02:30] televandalist:
Updated WIP Hash Labels (markdown)En el Editor de Logros (Achievement Editor), el campo de hasta la derecha es el Contador de Golpes (Hit Count).
Por default es Cero, que significa que la condicion tiene que ser verdadera para qeu el logro se dispare.
Si agregas un contador de golpes (hit count), por ejemplo 5, significa que la condicion tiene va a ser verdadera hasta que se cumplan esos fotogramas (frames), y no se necesitan volver a cumplir de nuevo en cualquier otro momento.
PORFAVOR, NOTA: si una condicion tiene cero hit count, y llega al numero requirido, esta condicion ya no esta siendo buscada. Sigue permaneciendo como verdadera, ALMENOS que tengas un ResetIf
, que discutiremos mas abajo.
Condiciones con Reset If
y PauseIf
tambien pueden tener hits. Sigue los links para mas informacion.
En la seccion de Ejemplos de Verdad hay dos buenos ejemplos:
Last 10 changes on this page:
[2019-04-16 15:39] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Hit Counts ES (markdown)In the Achievement Editor, the field on the far right side is Hit Count.
The default is Zero, which means the condition must be true for the achievement to trigger.
If you set a target hit count, like 5, it means the condition must be true for at least that many frames, and once that hit count target is met, it doesn't need to be met again at any other time.
PLEASE NOTE: if a condition has a non-zero hit count, and reaches the number required, this condition is no longer tested. It remains true, UNLESS you have a ResetIf
, which we will discuss below.
Conditions with Reset If
and PauseIf
flags can also have hits. Follow the links for details.
In the Real Examples section there are two examples good examples:
When the emulator is reset, all hits are immediately zeroed out and the achievement is set back to Waiting. However, an emulator reset does not clear out memory, so it's possible for the hits to reaccumulate before the game reinitializes the memory. As such, you should not rely on the hits being cleared out by the emulator reset.
Similarly, when the emulator first \"powers on\", the state of memory is not guaranteed to be consistent as true hardware does not initialize its memory. Instead, the software sets some initial state when it claims portions of memory. Some games actually rely on the random nature of the uninitialized memory to seed their random number generators.
For both cases, you should have an explicit reset for some piece of knowable logic, like the player being on the title screen.
"},{"location":"Hit-Counts/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-07-27 19:31] Searo:
Page doesn't exist and we don't care what softcore users do anymore[2021-07-17 07:27] Jamiras:
Updated Hit Counts (markdown)[2021-07-17 07:27] Jamiras:
add section detailing behavior at reset/power on[2019-02-18 17:01] meleu:
fix broken links[2019-02-12 13:10] meleu:
fix broken links[2019-02-12 09:23] meleu:
Updated Hit Counts (markdown)[2019-02-12 09:21] meleu:
Created Hit Counts (markdown)Bienvenido a la Documentaci\u00f3n de RetroAchievements!
Lo primero que tienes que conocer es el manifiesto de RetroAchievements y seguir el c\u00f3digo de conducta de usuario.
Si est\u00e1s buscando documentos sobre creaci\u00f3n de logros, comprueba nuestra secci\u00f3n de documentos para desarrolladores.
Animamos a todos los miembros de la comunidad a unirse a nuestro servidor de Discord, lo usamos para la mayor\u00eda de las comunicaciones.
La lista completa de p\u00e1ginas se encuentran en la barra lateral, pero aqu\u00ed hay una breve descripci\u00f3n de algunas de ellas:
Puedes ayudar a mejorar los documentos editando/creando p\u00e1ginas en la wiki de RetroAchievements.
"},{"location":"Home-es/#traducciones","title":"Traducciones","text":"Last 10 changes on this page:
[2024-04-08 15:46] Germ\u00e1n Boquizo S\u00e1nchez:
Removed the RA logo from the top since the link was broken and minor fixes[2020-09-18 08:01] meleu:
enlace para el Manifiesto[2019-04-17 13:49] meleu:
using partial URI[2019-04-17 09:04] ShinyNinetalesTM:
fixed punctuation in several words, fixed some typos and rewrited some phrases to emphatize context[2019-04-17 08:48] ShinyNinetalesTM:
fixed link to Download-es[2019-04-16 12:07] eldexterr:
fixed typos[2019-04-16 12:05] eldexterr:
Updated Home es (markdown)[2019-04-16 15:48] meleu:
original versionBienvenue sur la documentation de RetroAchievements!
Dans un premier temps, vous devez lire et adh\u00e9rer au Code de conduite des utilisateurs. (en cours de traduction)
Si vous cherchez de la documentation sur la cr\u00e9ation d'achievements, jetez un oeil \u00e0 la documentation pour d\u00e9veloppeurs. (en cours de traduction)
Nous vous encourageons \u00e0 rejoindre notre serveur Discord, nous l'utilisons pour communiquer la plupart des informations.
La liste compl\u00e8te des pages est disponible dans la barre lat\u00e9rale mais voici une rapide description : - FAQ: les questions fr\u00e9quemment pos\u00e9es (comme quelle version de RetroArch je devrais utiliser?). (en cours de traduction)
Vous pouvez \u00e9diter/ajouter de la documentation sur le wiki de RetroAchievements.
"},{"location":"Home-fr/#translations","title":"Translations","text":"Bem-vindo ao Projeto de documenta\u00e7\u00e3o do Retroachievements!
Rec\u00e9m chegados, por favor iniciem pelo Manifesto RetroAchievements e com o FAQ.
N\u00f3s encorajamos todos os membros da comunidade a se juntar ao nosso Servidor do Discord, n\u00f3s usamos isto para maior comunica\u00e7\u00e3o.
Voc\u00ea pode aprender como criar suas pr\u00f3prias conquistas lendo nossos Documentos para Desenvolvedores.
Voc\u00ea pode ajudar a melhorar esses documentos editando/criando as p\u00e1ginas no RetroAchievements wiki.
"},{"location":"Home-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-08 15:46] Germ\u00e1n Boquizo S\u00e1nchez:
Removed the RA logo from the top since the link was broken[2021-04-22 07:52] meleu:
https[2020-09-10 01:43] meleu:
Updated Home pt_BR (markdown)[2020-09-10 01:04] meleu:
Updated Home pt_BR (markdown)[2019-02-10 16:01] meleu:
remove broken link[2018-06-10 10:44] lilbud:
Updated Discord Link[2018-03-25 10:14] meleu:
Updated Home pt_BR (markdown)[2018-03-25 11:56] KingDice001:
Updated Home pt_BR (markdown)[2018-03-25 11:42] KingDice001:
Updated Home pt_BR (markdown)[2018-03-24 23:38] meleu:
Updated Home pt_BR (markdown)RetroAchievements belgelerine ho\u015f geldiniz!
Her \u015feyden \u00f6nce, Kullan\u0131c\u0131 Davran\u0131\u015f Kurallar\u0131n\u0131 bilmeli ve bunlara uymal\u0131s\u0131n\u0131z.
Ba\u015far\u0131 olu\u015fturma hakk\u0131nda dok\u00fcmanlar ar\u0131yorsan\u0131z, Geli\u015ftirici dok\u00fcmanlar\u0131 b\u00f6l\u00fcm\u00fcm\u00fcz\u00fc inceleyin.
T\u00fcm topluluk \u00fcyelerini Discord Sunucumuza kat\u0131lmaya te\u015fvik ediyoruz, bunu \u00e7o\u011fu ileti\u015fim i\u00e7in kullan\u0131yoruz.
Sayfalar\u0131n tam listesi kenar \u00e7ubu\u011fundad\u0131r, ancak bunlardan baz\u0131lar\u0131n\u0131n k\u0131sa bir a\u00e7\u0131klamas\u0131:
Bu dok\u00fcmanlar\u0131 RetroAchievements wiki'de sayfalar\u0131 d\u00fczenleyerek / olu\u015ftururken daha iyi hale getirebilirsiniz.
"},{"location":"Home-tr_TR/#ceviriler","title":"\u00c7EV\u0130R\u0130LER","text":"Welcome to the RetroAchievements documentation!
The docs are currently under heavy construction so be sure to check back often! Each section appears in the sidebar, but here is a brief explanation of the categories:
We encourage all community members to join our Discord Server; we use this for most communication.
Translations
Last 10 changes on this page:
[2023-11-28 14:29] televandalist:
Removed the RA logo from the top since the link was broken[2023-06-30 12:36] televandalist:
Updated Home (markdown)[2023-06-30 12:14] televandalist:
Updated Home (markdown)[2023-06-06 10:35] televandalist:
Fix broken link[2023-04-13 15:08] televandalist:
Removed the links to pages that deal with specific support questions. They should/will be merged with a support section or the FAQ to declutter the home page.[2023-04-13 14:51] televandalist:
Removed link to \"Free Games\" section. While they are free homebrews, the downloads are typically on site if they actually have a set. If they aren't, they should be.[2022-08-23 20:22] Jazerus:
grammar fixes[2022-02-18 21:24] televandalist:
Add Event page link[2021-04-21 10:23] meleu:
french docs are yet incomplete[2020-09-07 09:06] meleu:
add ManifestoEste proyecto de documentaci\u00f3n de RetroAchievements junta las gu\u00edas, tutoriales, tips y trucos sobre el desarrollo de RetroAchievements y cualquier otra informaci\u00f3n interesante para la comunidad.
Antes de que se empezara este proyecto la informaci\u00f3n sobre el desarrollo de logros estaba esparcida en varios posts del foro en RetroAchievements.org, haciendo la experiencia de aprendizaje mas complicada para el desarrollador novato. Este proyecto comenz\u00f3 trayendo el material de los posts del foro hacia aqu\u00ed, pero en un orden mas ordenado y coherente.
La Documentaci\u00f3n de RetroAchievements se divide en dos partes:
La wiki es donde los documentos son creados y editados. Cualquiera (con una cuenta de github) es capaz de editar el contenido de la wiki. As\u00ed que, si tienes algo que compartir, por favor edita la wiki!
El sitio web de los documentos de RetroAchievements tiene (la mayor\u00eda) el mismo contenido que la wiki, pero con un look mas placentero. El contenido de este sitio web es generado por sus moderadores utilizando el contenido de la wiki como su m\u00e9todo de entrada.
Cuando un cambio es hecho en la wiki este cambio NO es instant\u00e1neamente reflejado en los documentos. La conversi\u00f3n es realizada por un moderador cada cierto tiempo.
"},{"location":"How-RA-Documentation-Works-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 14:02] eldexterr:
Created How RA Documentation Works es (markdown)Este documento describe todos los pasos que cualquier aspirante a desarrollador de logros tiene que seguir antes de conseguir estatus de Desarrollador. Estos requisitos tambi\u00e9n son una lista para los Rese\u00f1adores de C\u00f3digo (desarrolladores que inspeccionan el c\u00f3digo de nuevos desarrolladores).
Cualquiera puede convertirse en un desarrollador en RetroAchievements si pone el suficiente esfuerzo.
Opcional pero fuertemente recomendado: \u00fanete a nuestro servidor de Discord y pregunta a un moderador darte el rol de jr-dev
. Utiliza los canales #help-me y #devs cada vez que cuentes con alguna pregunta.
Cada desarrollador tiene que m\u00ednimo conocer los conceptos b\u00e1sicos y t\u00e9cnicas mostradas en estos dos documentos:
Cualquier aspirante a desarrollador tiene que demostrar seguir y entender los siguientes conceptos:
=
, por ejemplo >
, <
, !=
Nota: Tu no necesitas el dominio total de todos estos conceptos para tener un set publicado, pero si los necesitas para obtener un rol como desarrollador completo.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#conceptos-avanzados","title":"Conceptos Avanzados","text":"Aqu\u00ed hay una lista de algunos conceptos/t\u00e9cnicas. No son requisito para convertirte en un Desarrollador, pero est\u00e1n en listadas aqu\u00ed para mostrar al desarrollador jr. (jr-dev) las posibilidades de la l\u00f3gica de los logros.
Valor en Memoria > Valor Delta
Contador)Los Ejemplos Reales y las Plantillas de Logros son paginas \u00fatiles para ver como estas t\u00e9cnicas funcionan.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#practicando","title":"Practicando","text":"En orden para que se te conviertan familiares todas estas t\u00e9cnicas b\u00e1sicamente tienes que practicar. Puedes utilizar cualquier juego para practicar, incluso esos que ya cuentan con logros. Simplemente ten estas reglas en mente:
Sigue los Reglamentos en el C\u00f3digo de Conducta del Desarrollador para as\u00ed encontrar un juego en el cual trabajar. B\u00e1sicamente lo que primero necesitas es declarar tus planes de trabajo sobre el juego en el que quieras trabajar en el foro del mismo, y mientras vallas trabajando en el juegos a\u00f1adir tus planes mas detallados en el mismo foro.
Tip: para tu primer set de logros es recomendable que escojas un juego que aun no tiene logros y que no es muy popular.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#planeando-tu-set-de-logros","title":"Planeando tu Set de Logros","text":"Una vez que encuentras un juego el cual trabajar necesitas planificar tu Set de Logros.
Ten en cuenta conocer lo suficientemente bien el juego para as\u00ed hacer un buen set. Checa su pagina de GameFAQs o algo parecido, intenta aprender mas sobre el videojuego, sus secretos y detalles. Aqu\u00ed hay una buena gu\u00eda que te podr\u00eda servir de ayuda con esto: Mapa de Desarrollo del Set.
Postea tus planes en el foro oficial del juego, para que as\u00ed la comunidad pueda dejar sugerencias y retroalimentacion. Esta actitud es requerida para todo tipo de desarrolladores y desarrolladores jr. (jr-dev).
IMPORTANTE!: estate abierto en recibir retroalimentacion y sugerencias.
Tambi\u00e9n mira: Dise\u00f1o de Logros, es una gu\u00eda extensiva en como dise\u00f1ar buenos e interesantes logros. No sobre el lado t\u00e9cnico sino el conceptual.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#publica-tus-logros-en-unofficial-para-revision","title":"Publica tus logros en Unofficial para revisi\u00f3n","text":"Despues de haber creado varios logros, promuebelos a Unofficial y despu\u00e9s contacta a un @mod o aun @code-reviewer en nuestro servidor de Discord (si no utilizas Discord, manda un mensaje a RAdmin) y pregunta por alguien que pueda rese\u00f1ar tu trabajo.
Otra vez, es extremadamente importante que est\u00e9s abierto a recibir critica constructiva y ayuda de parte de la comunidad en cualquier momento.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#estoy-listo-para-conseguir-estatus-de-desarrollador","title":"Estoy listo para conseguir estatus de Desarrollador?","text":"Una vez que los Rese\u00f1adores de C\u00f3digo han inspeccionado el c\u00f3digo de tus logros y conceptos, ellos y el administrador van a utilizar el \"Conocimiento Requerido\" en la lista de requisitos de arriba para determinar si estas listo. Si no estas completamente calificado para ser un desarrollador pero tu set esta completo y estable el set va a ser publicado. Puedes preguntar que conceptos aun necesitas para demostrar tu capacidad para obtener tu estatus como desarrollador.
Los m\u00e9ritos para que un desarrollador jr. (jr-dev) reciba un estatus de desarrollador dependen en:
Una vez que hubieras conseguido tu estatus como desarrollador, tu TIENES que adherirte a el C\u00f3digo de Conducta del Desarrollador. Eso es extremadamente importante para crear un ambiente justo entre los Desarrolladores de Logros.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:30] meleu:
fix links[2019-04-17 17:26] eldexterr:
Find some typos[2019-04-16 14:50] meleu:
page title en espa\u00f1ol[2019-04-16 14:42] meleu:
fix broken links[2019-03-12 14:58] meleu:
Updated How to Become an Achievement Developer ES (markdown)This document describes all the steps that any aspiring achievement developer must follow before getting Developer status. These requirement are also a checklist for Code Reviewers (developers who inspect the code of new developers).
Anyone can become a RetroAchievements developer if they put in the effort.
Strongly recommended: join our Discord server so you can get in contact with other achievement developers who can show you the ropes and help you along. If you already know what game you want to work on, go ahead and ask for the Jr-Dev
role in #role-request
forum by creating a post tagged as Jr-Dev
, posting your set plan for the game (you can use one of these templates), and pinging @QA-Maintainer
(Make sure to first get your account verified by following instructions in #welcome
if you haven't already). This gives you access to the #jr-devs
channel, where you can talk to code reviewers and ask any development related questions.
Follow the guidelines on the Developer's Code of Conduct to find a game to work on achievements for it. To claim a game, it must have a forum topic. If it doesn't have one already, you can ask a Code Reviewer to make one in the #jr-dev-forum
in our Discord server. Feel free to declare your plans to work on the game in the topic, and post updates as you proceed.
Tip: for your first achievement set it's recommended to choose a game that doesn't yet have achievements and is not very popular.
"},{"location":"How-to-Become-an-Achievement-Developer/#planning-your-achievement-set","title":"Planning your Achievement Set","text":"Once you find a game to work on you need to plan your Achievement Set.
Be sure you know enough about the game to make a good set. Check the GameFAQs or something, try to learn more about the game, its secrets and details. Here is a good guide to help you with this: Set Development Roadmap.
It's recommended that you post your plans on the official game's forum topic, so the community can leave suggestions and provide feedback.
IMPORTANT!: be open to receive feedback and suggestions.
See also: Achievement Design, it's an extensive guide on how to design good and interesting achievements. It's not about the technical side but the conceptual.
"},{"location":"How-to-Become-an-Achievement-Developer/#required-knowledge","title":"Required Knowledge","text":"Every developer must know at least the basic concepts and techniques shown in these two docs:
Any aspiring dev must demonstrate understanding of the following concepts:
=
, such as >
, <
, !=
Note: You do not need mastery of all these concepts to have a set published, but you do need them to have the full Developer role.
"},{"location":"How-to-Become-an-Achievement-Developer/#advanced-concepts","title":"Advanced Concepts","text":"Here is a list of some advanced concepts/techniques. They are not required to become a Developer, but are listed here to let the jr-dev know the possibilities of the Achievement's logic.
Mem > Delta
Counter)The Real Examples and Achievement Templates pages are useful resources to see how those techniques work.
"},{"location":"How-to-Become-an-Achievement-Developer/#code-notes","title":"Code Notes","text":"Junior developers can create and delete code notes that they have created, but they cannot delete or edit any notes created by others. Developers CAN edit and remove notes by other users, and these changes are site-wide.
"},{"location":"How-to-Become-an-Achievement-Developer/#practicing","title":"Practicing","text":"In order to become familiar to those techniques you must practice. You can use any game to practice, even those that already have achievements. Just be aware about these rules:
After creating some achievements, upload them to Unofficial and then create a post in #jr-dev-forum
on our Discord server (if you don't use Discord, send a message to RAdmin) and ask them to find someone to review your work.
Do NOT ask another developer to promote your achievements to the Core without a proper review.
Again, it's extremely important that you are open to receive constructive criticism and helpful advice from the community at any time.
"},{"location":"How-to-Become-an-Achievement-Developer/#am-i-ready-to-get-the-developer-status","title":"Am I ready to get the Developer status?","text":"Once the Code Reviewers have inspected your achievement's code and concepts, they and the admin will use the \"Required Knowledge\" checklist above to determine if you're ready. If you're not fully qualified to be a developer yet, but your set is complete and stable, the set will get published. You can then ask which concepts you still need to demonstrate proficiency in to be given developer status.
The merit of a jr-dev receiving developer status depends on:
Once you get your Developer status, you MUST adhere to the Developer's Code of Conduct. That is extremely important to create a fair environment between the Achievement Developers.
"},{"location":"How-to-Become-an-Achievement-Developer/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-05-01 13:08] tomojira:
Updated instructions for Jr. Dev applicants[2023-06-06 10:41] televandalist:
Fix broken link[2023-03-29 21:18] Searo:
Typo[2023-03-29 20:56] Searo:
Update jr request wording after #help-me channel changed to #tech-support[2023-02-15 13:25] Riley Nielsen:
Updated How to Become an Achievement Developer (markdown)[2022-05-14 21:53] Searo:
Update QA-Team to QA-Maintainer[2022-05-02 17:52] RALordAndrew:
Updated How to Become an Achievement Developer (markdown)[2021-11-28 14:47] Searo:
Clarification on channel and team to ask for jr-dev role on Discord[2021-05-01 07:27] meleu:
fix link to AddHits page[2021-04-26 13:33] meleu:
fix linksIn \"Window Capture\" mode, OBS Studio will not capture the popups. The popups are rendered using a \"Layered Window\", and OBS Studio removed support for capturing layered windows
If you want to include the popups in your stream, you have two options: change to \"Display Capture\" mode, or add a second \"Window Capture\" for the \"TransparentOverlayWindow\". This page will attempt to walk you through doing the second.
Add a second \"Window Capture\" source to the Scene. In the popup dialog, select the \"TransparentOverlayWindow\".
You'll probably notice the window is pink.
Add a filter to the second \"Window Capture\"
Add a \"Color Key\" filter, set the Key Color Type to \"Custom Color\", then use the Select Color dialog to enter #FF01FE
as the color. Decrease the similarity to 1 and the opacity to 90.
Finally, if you still have a bit of a pink border showing up, enable a Scale Filter. They all seem to eliminate the remnant, so choose whichever you like best.
"},{"location":"How-to-configure-OBS-Studio-to-see-the-popups/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-06-30 17:06] Jamiras:
Created How to configure OBS Studio to see the popups (markdown)Incluso si tu no sabes como crear logros aun hay varias maneras para contribuir con la comunidad de RetroAchievements. Aqu\u00ed se encuentran algunos ejemplos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportar-logros-rotos","title":"Reportar logros rotos","text":"Si tu logro se disparo en el momento equivocado o no se disparo del todo, por favor reportalo. Sabemos que a muchos usuarios le gustan los puntos gratis, pero por favor, incluso si un logro se disparo en el momento equivocado, reportalo!
Otra situaci\u00f3n que tambi\u00e9n merece ser reportada es cuando un logro se dispara por medio del uso de un cheat en el juego (ej. c\u00f3digo de selecci\u00f3n de stages), o cargando un archivo de guardado.
Hay dos maneras para reportar un logro roto: directamente desde el emulador o por medio de la pagina web. En los dos casos, agrega detalles del estado de tu juego, cuando se disparo/no se disparo, cual modo de juego, donde estabas cuando paso/no paso, si reseteaste el juego recientemente, cualquier cosa que pienses que podr\u00eda resultar relevante para el logro. Esto es necesario para que los desarrolladores encuentren donde esta el problema.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportando-por-medio-del-emulador","title":"Reportando por medio del emulador","text":"Ve a RetroAchievements -> Report Broken Achievements, esta funci\u00f3n solamente esta disponible en emuladores oficiales (no en RetroArch).
Mira este ejemplo:
.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportar-por-medio-del-sitio-web","title":"Reportar por medio del sitio web","text":"En la pagina de cada logro podr\u00e1s ver un link que dice Report an issue for this achievement
, como en la imagen de abajo:
Si conoces un juego bastante bien, probablemente tal vez tengas algunas ideas muy cool sobre retos para el juego. Postea tus ideas en el foro del juego.
Tenemos una gu\u00eda en como pensar y dise\u00f1ar buenos logros, no el lado t\u00e9cnico sino el conceptual. Que incluso los que no son desarrolladores pueden llegar a conseguir un poco de inspiraci\u00f3n de ese documento.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#la-retro-alimentacion-es-siempre-bienvenida","title":"La retro-alimentaci\u00f3n es siempre bienvenida","text":"Deja retro-alimentaci\u00f3n en los foros sobre que te gusta o que te disgusta sobre un set de logros. Se especifico y deja cada detalle.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#haz-iconosemblemas-para-logros","title":"Haz iconos/emblemas para logros","text":"Si te gusta jugar con gr\u00e1ficos puedes crear alg\u00fan arte para los emblemas o iconos de juegos. Utilizando la opci\u00f3n de captura de pantalla del emulador puede llegar a ser \u00fatil para esto, y entonces puedes editarlo para hacer llegar a hacer algo muy cool.
Puedes encontrar mas informaci\u00f3n en la pagina de creaci\u00f3n de Badges e Iconos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#ayuda-con-la-documentacion","title":"Ayuda con la documentaci\u00f3n","text":"Si cuentas con una cuenta de github y conoces lo b\u00e1sico del Markdown, puedes ayudar con la documentaci\u00f3n. Corregir errores ortogr\u00e1ficos, gramaticales o informaci\u00f3n err\u00f3nea.
Hecha un vistazo a esta pagina para conocer los detalles: Contribuyendo con los documentos
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#participa-en-los-eventos-de-la-comunidad","title":"Participa en los eventos de la comunidad","text":"Como Logro de la Semana, Tabla Clasificatoria de la Semana u otros eventos que suceden en nuestro servidor de discord.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 13:00] eldexterr:
Created How to contribute if you are not a developer es (markdown)Link para o texto em ingl\u00eas: How to contribute if you're not a developer
Mesmo que voc\u00ea n\u00e3o saiba como criar conquistas existem muitas formas de contribuir com a comunidade RetroAchievements. Aqui est\u00e3o alguns exemplos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#reportar-conquistas-quebradas","title":"Reportar conquistas quebradas","text":"Se uma conquista ativar em um tempo errado ou n\u00e3o ativar, por favor reporte.
Outra importante situa\u00e7\u00e3o que precisa ser reportada \u00e9 uma conquista ativando por usar algum tipo de trapa\u00e7a no jogo (ex. c\u00f3digo de sele\u00e7\u00e3o de fase), ou por carregar um jogo salvo (arquivos de save)
Para reportar uma conquista quebrada, v\u00e1 em RetroAchievements -> Report Broken Achievements, esse recurso s\u00f3 est\u00e1 dispon\u00edvel em emuladores oficiais (n\u00e3o no RetroArch).
Veja este exemplo:
.
Detalhes adicionais do estado do seu jogo, quando ativa/n\u00e3o ativa, que modo de jogo, onde voc\u00ea est\u00e1 quando aconteceu/n\u00e3o aconteceu, se voc\u00ea teve que resetar o jogo recentemente, qualquer outra coisa que voc\u00ea acha que pode ser relevante para a conquista. Isso \u00e9 necess\u00e1rio para o nosso sistema, para que os desenvolvedores saibam onde est\u00e1 o problema.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#sugerir-conquistas-legaisdesafios","title":"Sugerir conquistas legais/desafios","text":"Se voce conhece um jogo muito bem, voc\u00ea provavelmente pode ter algumas ideias interessantes de desafios para o jogo. Poste suas ideias no forum relacionado ao jogo.
Nos temos um guia sobre como pensar e projetar boas conquistas, n\u00e3o o lado t\u00e9cnico, mas o conceitual. Entao at\u00e9 os n\u00e3o-desenvolvedores podem ter alguma inspira\u00e7\u00e3o a partir daquela informa\u00e7\u00e3o.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#feedback-e-sempre-bem-vindo","title":"Feedback \u00e9 sempre bem-vindo","text":"Dar Feedback (coment\u00e1rios) nos foruns sobre qual voc\u00ea gosta ou n\u00e3o gosta sobre a lista de conquista. Seja espec\u00edfico e deixe detalhes
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#faca-icones-para-as-conquistas","title":"Fa\u00e7a \u00edcones para as conquistas","text":"Se voc\u00ea gosta de brincar com gr\u00e1ficos, voc\u00ea pode criar algumas artes para os \u00edcones das conquistas ou os \u00edcones para os jogos. Usando o recurso de screenshot (captura de tela) do emulador em si pode ajudar com isso, e entao voc\u00ea pode editar para fazer algo legal.
Voc\u00ea pode ver mais informa\u00e7\u00f5es sobre a P\u00e1gina de Cria\u00e7\u00e3o de Icones.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#participe-em-eventos-da-comunidade","title":"Participe em eventos da comunidade","text":"Como a \"Conquista da Semana\" (Achievement of the Week), Ranking da semana (Leaderboard of the Week) ou outros eventos que acontecem no nosso servidor do Discord.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-06-10 10:56] lilbud:
Uploaded new gif showing reporting broken achievements[2018-06-10 10:43] lilbud:
Updated Discord Link[2018-04-02 19:02] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-28 20:11] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-25 12:00] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-25 11:45] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 22:15] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 21:02] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 21:02] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 20:53] KingDice001:
Created How to contribute if you are not a developer-pt_BR (markdown)To be done...
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/","title":"HowTo Scrape Achievement List to CSV for Rescore and Revision Updates","text":"This is a fast and easy method to scrape all Achievements, Descriptions or other useful information from RetroAchievements into a CSV format which can be posted in Forums and Discord for sharing Rescore and Revision Update plans.
(!) you can change the scraping content manually in the appearing box below 'propertyName1'.
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/#for-rescoring-updates-scrape-achievements-only","title":"For Rescoring Updates - scrape Achievements only","text":"div.achievemententry div.achievementdata a
.achievementdata a
div.achievemententry div.achievementdata
.achievementdata
(!) Scraped Achievements with Descriptions can be seperated by splitting the columns with '\\n'.
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/#upload-and-split-into-columns-in-google-sheets","title":"Upload and split into columns in Google Sheets","text":"A
(must be marked) and choose 'Data' then 'Split text to columns', 'custom' and insert \\n
.Please check Achievement-Set-Revisions for more information regards Recore and Revision Updates.
"},{"location":"Leaderboard-bug-list-and-improvement-ideas/","title":"Leaderboard bug list and improvement ideas","text":""},{"location":"Leaderboard-bug-list-and-improvement-ideas/#bugs","title":"Bugs","text":"Idea for on screen notification and an expansion on the idea: \"Add an option to display popup text that's not for any leaderboard. Allow for control of how long the popup will stay\"
The point is to help the player track their progress on certain types of achievements.
Using something similar to the leaderboard, when selected by the developer, allow hits to be displayed on screen. It could perhaps show hits, or the sum of hits from multiple conditions.
Also, maybe with a similar text info as rich presence, where on screen it would display 4/9 Goomba's stomped. or 20/100 seconds survived or 9 items collected, etc.
Beyond that, achievements with this type OSD info built in, they could either be turned on and off individually from the overlay. )Where they would always be off if the achievement was complete.) OR have a manual start and stop similar to leaderboards.
This could be used to display failed attempts. For example a ResetIf could be marked as a failstate, when the reset happens OSD would show Escaping the cave without being seen: failed.
"},{"location":"Leaderboards-es/","title":"Tablas de Clasificaci\u00f3n","text":"Actualmente las Tablas de Clasificaci\u00f3n pueden ser editadas por desarrolladores desde el sitio web. Es una interfaz bastante tosca y un trabajo algo complicado hacer que una tabla funcione de manera correcta. As\u00ed que en este documento vamos a intentar a entender como funciona.
"},{"location":"Leaderboards-es/#visiones-generales","title":"Visiones Generales","text":"Asi es como se ve una lista de Tablas de Clasificaci\u00f3n de un juego en el sitio web:
En el centro puedes llegar a ver cada Tabla que a sido creada, y en la columna de la derecha puedes llegar a ver las Notas de C\u00f3digo del Juego. Las Notas est\u00e1n all\u00ed para ayudar en algunas de las condiciones que se encuentran aqu\u00ed abajo.
Aqu\u00ed hay una breve explicaci\u00f3n de cada campo que se encuentra en una Tabla de Clasificacion:
Puntuaci\u00f3n
, Tiempo (Frames)
, Tiempo (Milisegundos)
o Valor
. Se utiliza para distinguir que tipo de tabla es (vamos a ver mas sobre esto mas abajo).Nota: Una tabla valida TIENE que tener todas estas cuatro condiciones.
Esos \u00faltimos 4 campos son realmente importantes y se tiene que tomar MUCHO cuidado de acuerdo a los datos que vas a introducir en ellas. Es por eso que requieren una explicaci\u00f3n a continuaci\u00f3n:
La condici\u00f3n STA o Start son una serie de valores, como un logro, que tienen que llegar a ser verdad en orden para que la tabla empieza a buscar una entrada para la tabla. Una vez que STA es verdadero, el juego va a activar las otras tres constantemente.
Si la condici\u00f3n Cancel (CAN) es verdadera, entonces esta va a cancelar la tabla y no se va a subir la entrada a la misma.
Si la condici\u00f3n Submit (SUB) es verdadera, entonces la puntuaci\u00f3n entrara en las tablas. NOTA: Cancel tiene mas prioridad que Submit. Si las dos se convierten verdaderas en el mismo frame, la puntuaci\u00f3n no sera ingresada.
Finalmente, Value (VAL) es un caso especial, y va a ser tomado de la memoria utilizando la formula que se ingreso en la entrada de Value. Esta es la puntuaci\u00f3n que se muestra cuando la Tabla esta activa, y el valor que es ingresado en las tablas si SUB es verdadero.
NOTA: Una vez que una tabla activa es cancelada o ingresada, esta no puede ser re-activada asta que la condici\u00f3n Start se convierta en falsa, y verdadera de nuevo. Esto previene a la tabla de ser re-activada inmediatamente que se ingreso un valor o se cancelo.
"},{"location":"Leaderboards-es/#formato-de-direcciones","title":"Formato de Direcciones","text":"Las direcciones de memoria para STA/CAN/SUB/VAL tienen el siguiente formato:
localizaci\u00f3n/tama\u00f1o prefijo (las letras pueden ser en min\u00fasculas) ejemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Leaderboards-es/#ejemplo","title":"Ejemplo","text":"La mejor manera de empezar es hecharle un vistazo a una de las tablas ya existentes https://retroachievements.org/leaderboardList.php y abrirla para ver como funciona. Vamos a utilizar la tabla de Green Hill Act 1 (Sonic the Hedgehog) para este ejemplo. Entonces veamos como funciona:
El Titulo/Descripci\u00f3n son algo obios.
El Type es \"Time (Frames)\". En Sonic cada 60 frames es un 1 segundo, entonces vamos a monitoriar los segundo utilizando frames.
La caja de Lower Is Better esta marcada, entonces aquel que consiga el tiempo mas corto sera el #1.
Ahora vamos a desglosar las partes mas importantes.
"},{"location":"Leaderboards-es/#condiciones-de-start","title":"Condiciones de Start","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: Si la direcci\u00f3n de 16-bit 0xfe10 en la RAM es equivalente a 0000 en hex,_
: Y,0xhf601=h0c
: Si la direcci\u00f3n de 8-bit 0xf601 en la RAM es equivalente a 0c en hex,_
: Y,d0xhf601!=h0c
: Si la misma direcci\u00f3n anterior (0xf601) NO es equivalente a 0c en hex,_
: Y,0xfff0=0
Si la direcci\u00f3n de 16-bit 0xfff0 en la RAM es equivalente a 0.Esto puede parecer desalentador, porque no sabes que significan esta direcciones. Es por eso que las Notas de C\u00f3digo en la columna de la derecha son bastante \u00fatiles! Tu puedes llegar a ver como estas direcciones son mostradas en memoria. En nuestro ejemplo tenemos:
0xfe10
es el nivel, y se espera que sea 0
(el primer nivel).0xf601
es una direccion en memoria de 8-bit, y utilizamos el prefijo 0xh
en vez de 0x
. 0xf601
es el modo de la pantalla. La segunda y terceras partes de las condiciones para empezar estan diciendo \"el modo actual tiene que ser ingame (0c
), y el modo en el frame anterior NO tiene que ser ingame\". Nota: ese prefijo d
en la direcci\u00f3n representa delta, o \"el valor en el frame anterior\". Sum\u00e1ndole a esto: ejecuta STA si ACABAMOS de llegar a un nivel, (para empezar a checar el tiempo).0xfff0
sea equivalente a 0
, ya que esta direcci\u00f3n se utiliza para demo mode, y no queremos que la tabla se active cuando esta el modo demo activado!Tip: el error mas com\u00fan cuando creamos tablas de clasificaci\u00f3n es olvidarnos de la h
cuando tratamos de hacer referencia a un valor en memoria de 8-bit.
Pro-tip: STA, CAN, y SUB soportan toda la logica que se encuentra disponible en el editor de logros. La manera mas facil es asegurarte que escribiste todo correctamente es crear logros locales que capturen estos eventos, y entonces extraer los valores ingresados en el archivo \"XXX-User.txt\" asociado al juego en el cual te encuentras trabajando.
"},{"location":"Leaderboards-es/#condiciones-para-cancelar","title":"Condiciones para Cancelar","text":"CAN: 0xhfe13<d0xhfe13
La condici\u00f3n de cancelaci\u00f3n checa si el contador de VIDAS alguna vez se decrementa. Literalmente dice \"Cancela si el valor ACTUAL en 0xfe13 es menor al valor ANTERIOR en 0xfe13\". Queremos hacer esto porque puedes llegar al ultimo checkpoint, morir y resetear tu tiempo a 0:00. Y no queremos que se pueda hacer esto, ya que no es la manera correcta de completar el nivel. As\u00ed que si el jugador muere, se va a resetear el progreso de la tabla. Finalmente, si conectas dos condiciones de cancelaci\u00f3n con una s
, la tabla se va a cancelar si cualquiera de las condiciones es verdadera.
SUB: 0xf7cc!=0_d0xf7cc=0
La secci\u00f3n de submit checa si en el frame actual se encuentra la bandera de 'endlevel' como verdadera (o !=0
, 'no es un cero'), y el frame anterior (delta) lo tiene como falso (o =0
, 'cero'). Esto sugiere que el jugador a llegado al final del nivel.
Tip: puede llegar a ser \u00fatil observar como trabajan estos valores en memoria, y conocer que tipo de valor se utilizan en diferente circunstancias.
"},{"location":"Leaderboards-es/#interpretador-de-valores","title":"Interpretador de Valores","text":"Tambi\u00e9n mira: C\u00f3digo Binario Formateado en Decimal
VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Finalmente, valor. Una vez que el jugador a llegado a la condici\u00f3n de inicio, se mostrara una notificaci\u00f3n en pantalla, mostrando el progreso del jugador en tiempo real. Si es una una tabla sobre tiempo, va a ver un reloj, y si es una puntuaci\u00f3n se mostrara simplemente el valor. Si ellos llegan a cumplir la condici\u00f3n de cancelaci\u00f3n, se mostrara un mensaje diciendo que fallaron, y la notificaci\u00f3n sera removida. Si ellos cumplen la condici\u00f3n de submit exitosamente, el valor actual se va a tomar y se va a subir una entrada, aparecer\u00e1 una notificaci\u00f3n informando al jugador sobre su posici\u00f3n en las tablas.
La condiciones en value son especiales en cierto aspectos. Es evaluada constantemente y se muestra en pantalla en tiempo real cuando una tabla esta activada. No trabaja como otras condiciones, interpreta las direcciones de la siguiente manera:
direcci\u00f3n*modificador
(direcci\u00f3n veces modificador)
y usa al _
operador guion bajo como 'mas'. El asterisco *
significa 'multiplicar', entonces en el valor
0xhfe24*1_0xhfe25*60_0xhfe22*3600
representa:
8-bit 0xfe24 1 vez, MAS 8-bit 0xfe25 60 veces, MAS 8-bit 0xfe22 3600 veces
La raz\u00f3n de esto es que los valores de cada una de estas direcciones significan frames, segundos, y minutos respectivamente. Cuando agregamos estos valor juntos, obtenemos un total de frames que ingresamos a la base de datos.
Recuerdas que el campo de 'Formato' pod\u00eda ya ser Puntuaci\u00f3n, Tiempo (Frames), Tiempo (Milisegundos) o Valor? Tiempo (Frames) es el mas com\u00fan de todos, y representa 'frames'. Time (Milisegundos) espera un valor que pueda convertir en milisegundos (Super Mario Kart utiliza esto). Sin embargo para convertir un valor en frames a un formato que sea humanamente entendible tenemos que dividir el valor por 60 para conseguir una interpretaci\u00f3n certera de los segundos, y un valor en milisegundos deber\u00eda estar dividido por 100 para conseguir el numero de milisegundos. Esto se utiliza ya sea en el sitio web y en los programas para mostrar el valor apropiadamente, y es importante que se distinga ya que podemos estar seguros que estamos consiguiendo el valor mas acertado del emulador, utilizando el formato que sea necesario para capturar el tiempo.
Tambi\u00e9n hay un s\u00edmbolo que solamente funciona en este campo. Conecta dos valores condicionales con un $
y esto va a provocar que solamente se utilice el valor con tenga el valor mas alto.
NOTA: Tiempo (Milisegundos) son actualmente centenas de segundo, no mil\u00e9simas de segundo. por ejemplo: un valor de 6234 deber\u00eda de ser 62.34 segundos, no 6.234 segundos.
Tip: el modificador usa valores decimales, entonces si por ejemplo quieres divir entre dos, puedes multiplicar por 0.5: 0xhfe24*0.5
Desafortunadamente hay MUCHAS maneras de llegar a hacer este proceso de la manera equivocada, entonces si llegas a tener alg\u00fan problema si\u00e9ntete libre de pedir ayuda en nuestro Servidor de Discord.
Si quieres practicar, es bastante recomendable que crees tu tabla e intentes algo en un juego nuevo, en vez de utilizar una tabla ya existente.
Por favor ten en cuenta que estos archivos son arrastrados directamente a la partida de alguien cuando abra el juego, y un valor de memoria mal ingresado o un comando puede causar que el emulador se crashee, as\u00ed que por favor testea el c\u00f3digo de tu tabla!
"},{"location":"Leaderboards-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:35] meleu:
fix link[2019-05-17 10:24] eldexterr:
Updated Leaderboards es (markdown)[2019-05-16 11:31] eldexterr:
Updated Leaderboards es (markdown)[2019-05-16 10:56] eldexterr:
Updated Leaderboards es (markdown)[2019-05-15 10:21] eldexterr:
Updated Leaderboards (markdown)Link para o texto em ingl\u00eas: Leaderboards
Atualmente Leaderboards podem ser editadas por desenvolvedores no site. \u00c9 uma interface bastante confusa e um trabalho dif\u00edcil para fazer com que uma leaderboard funcione corretamente. \u00c9 realmente necess\u00e1rio cuidado e aten\u00e7\u00e3o para obter uma boa leaderboard, ent\u00e3o, neste documento n\u00f3s vamos tentar entender como isto funciona.
"},{"location":"Leaderboards-pt_BR/#visao-geral","title":"Vis\u00e3o Geral","text":"Isto \u00e9 como uma lista de Leaderboard de um jogo aparece no site
No centro voc\u00ea pode ver todas as Leaderboard feitas, e na coluna direita voc\u00ea pode ver as Code Notes (Notas de C\u00f3digo). As Code Notes est\u00e3o aqui para ajudar com algumas condi\u00e7\u00f5es que veremos abaixo.
Aqui est\u00e1 uma breve explica\u00e7\u00e3o de cada campo de uma Leaderboard:
Score
, Time (Frames)
, Time (Milliseconds)
ou Value
. \u00c9 usado para distinguir que tipo de leaderboard \u00e9 (j\u00e1 vamos falar disso abaixo)Nota: Uma leaderboard v\u00e1lida NECESSITA ter todas as quatro condi\u00e7\u00f5es.
Esses 4 \u00faltimos campos s\u00e3o realmente importantes e MUITOS cuidados devem ser tomados na entrada de qualquer caracter dentro dessas linhas. \u00c9 por isso que eles merecem uma explica\u00e7\u00e3o mais na frente:
A condi\u00e7\u00e3o STA ou Start \u00e9 uma s\u00e9rie de condi\u00e7\u00f5es, como uma conquista, que devem ser verdadeiras para come\u00e7ar a a Leaderboard. Uma vez que o STA for verdadeiro, o jogo ir\u00e1 come\u00e7ar a monitorar as condi\u00e7\u00f5es CAN, SUB e VAL.
Se a condi\u00e7\u00e3o Cancel (CAN) for verdadeira, ela ir\u00e1 cancelar todo o progresso relativo ao envio da leaderboard. Se no entanto a condi\u00e7\u00e3o Submit (SUB) for verdadeira, ent\u00e3o, o placar gerado na leaderboard ser\u00e1 enviado
Finalmente, o Valor (VAL) \u00e9 um caso especial, e ir\u00e1 ser obtido da mem\u00f3ria usando a f\u00f3rmula iniciada na caixa de mem\u00f3ria (memory box)
"},{"location":"Leaderboards-pt_BR/#formato-do-endereco","title":"Formato do Endere\u00e7o","text":"O Endere\u00e7o de mem\u00f3ria para STA/CAN/SUB/VAL tem o segunte formato:
localiza\u00e7\u00e3o/tamanho prefixo (pode ser min\u00fasculo) exemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Leaderboards-pt_BR/#exemplo","title":"Exemplo","text":"O melhor lugar para iniciar \u00e9 olhando uma das leaderboards existentes http://retroachievements.org/leaderboardList.php e desmontar para ver como funciona. N\u00f3s iremos usar o Green Hill Act 1 (Sonic the Hedgehog) Leaderboard para este prop\u00f3sito. Vamos ver como fica:
Os campos Title e Description s\u00e3o um pouco \u00f3bvios.
O Type \u00e9 \"Time (Frame)\". Em Sonic cada 60 frames equivale a 1 segundo, ent\u00e3o vamos monitorar o tempo usando os frames.
A checkbox Lower Is Better est\u00e1 marcada, entao aquele que fizer o tempo mais curto ser\u00e1 o #1.
Agora nos vamos explicar as partes mais importantes.
"},{"location":"Leaderboards-pt_BR/#condicoes-de-inicio","title":"Condi\u00e7\u00f5es de In\u00edcio","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: Se o endere\u00e7o da RAM 0xfe10 \u00e9 equivalente hex 0000,_
: E,0xhf601=h0c
: Se o endere\u00e7o da RAM 8-bits 0xf601 \u00e9 equivalente para hex 0c,_
: E,d0xhf601!=h0c
: Se o endere\u00e7o da RAM 8-bits anterior 0xf601 N\u00c3O \u00e9 equivalente ao 0c,_
: E,0xfff0=0
Se o endere\u00e7o da RAM 0xfff0 \u00e9 equivalente ao 0.Esto parece ser intimidador, porque nos n\u00e3o sabemos o que esse endere\u00e7o diz. \u00c9 por isso que o Code Note na coluna direita \u00e9 de bastante ajuda! Voc\u00ea pode ser como esses endere\u00e7os est\u00e3o classificados na mem\u00f3ria. Em nosso exemplo nos temos:
0xfe10
\u00e9 o nivel, e espera-se que seja 0
(o primeiro nivel).0xf601
\u00e9 um endere\u00e7o de mem\u00f3ria de 8 bits, e nos usamos o prefixo 0xh
em vez de 0x
para significar isso. 0xf601
\u00e9 o modo de tela. A segunda e a terceira parte desta Condi\u00e7\u00e3o de In\u00edcio est\u00e1 dizendo \"o modo atual deve ser ingame (0c
), e o modo no frame anterior N\u00c3O deve ser ingame\". Nota: O prefixo \"d\" no endere\u00e7o representa delta, ou \"o valor do frame anterior\". Resumindo: ative o leaderboard imediatamente ap\u00f3s iniciar uma fase (a partir da\u00ed vamos come\u00e7ar a medir o tempo).0xfff0
seja aquivalente a 0
, porque 0xfff0
\u00e9 o modo de demonstra\u00e7\u00e3o e n\u00f3s n\u00e3o queremos enviar pontua\u00e7\u00f5es para a leaderboard quando a demo estiver ativa!CAN: 0xhfe13<d0xhfe13
0xfe13
\u00e9 o numero de vidas.A se\u00e7\u00e3o de cancelamento checa se o contador de VIDAS do jogador se tormar menor. Literalmente, isto diz \"Cancela se o ATUAL valor em 0xfe13 \u00e9 menor que o valor ANTERIOR em 0xfe13. N\u00f3s queremos que fa\u00e7a isso porque voce pode alcan\u00e7ar o checkpoint final e correr fora do tempo, resetando seu contador para 0:00. Nos n\u00e3o queremos permitir isso, porque isto n\u00e3o \u00e9 a forma correta de completar o nivel. Ent\u00e3o, se o jogardor morrer, n\u00f3s resetamos o progresso do leaderboard dele.
"},{"location":"Leaderboards-pt_BR/#condicoes-de-envio","title":"Condi\u00e7\u00f5es de envio","text":"SUB: 0xf7cc!=0_d0xf7cc=0
0xf7cc
isto \u00e9 a bandeira de final de fase, n\u00e3o-interativo.A se\u00e7\u00e3o de envio checa se o frame atual tem o marcador de 'endlevel' (fim de fase) for para verdadeiro (ou !=0
, 'naozero'), e o frame anterior (delta) tem isto para ser falso (ou =0
, 'zero'). Isto sugere que o jogador chegou ao fim do nivel, e provou ser um benchmark bastante robusto
Dica: isto pode ser \u00fatil para observar estes valores na mem\u00f3ria para ver como eles executam, e que tipo de valores eles terminam em diferentes circunst\u00e2ncias.
"},{"location":"Leaderboards-pt_BR/#interpretador-de-valores","title":"Interpretador de Valores","text":"VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Finalmente, valores. Uma vez que o jogador chegou ao inicio da condi\u00e7\u00e3o, eles ir\u00e3o ser mostrados em uma caixa quue permanece na tela, aparecendo o progresso deles at\u00e9 agora. Se \u00e9 uma leaderboard de tempo, ser\u00e1 um rel\u00f3gio, e se for uma pontua\u00e7\u00e3o, ser\u00e1 apenas o valor. Se eles cumprirem a condi\u00e7\u00e3o de cancelamento, eles ser\u00e3o informados de que eles falharam, e o pop-up ser\u00e1 removido. Se caso o jogador chegar com sucesso \u00e0 condi\u00e7\u00e3o de envio, o valor atual ser\u00e1 pego e submetido como pontua\u00e7\u00e3o. o pop-up ingame ir\u00e1 informar o jogador o t\u00e3o longe da leaderboard, e a posi\u00e7\u00e3o deles na leaderboard.
A condi\u00e7\u00e3o de valor \u00e9 especial em poucas maneiras. Ele \u00e9 avaliado constantemente e exibido na tela o tempo todo quando a leaderboard est\u00e1 ativa. Isto n\u00e3o funciona como as outras condi\u00e7\u00f5es. Isto espera endere\u00e7os da seguinte maneira:
endere\u00e7o*modificador
(endere\u00e7o tempo modificador)
e usa o _
sublinhado como um 'plus'. O *
asterisco significa 'm\u00faltiplo', ent\u00e3o no valor
0xhfe24*1_0xhfe25*60_0xhfe22*3600
representa:
8-bit 0xfe24
vezes 1, MAIS 8-bit 0xfe25
vezes 60, MAIS 8-bit 0xfe22
vezes 3600
A raz\u00e3o para isso \u00e9 que os valores em cada um desses endere\u00e7os significam frames, segundos e minutos respectivamentes. Quando nos adicionamos esses valores juntos, n\u00f3s conseguimos um grande total em frames que vamos enviar para o \"Banco de dados\".
Lembre que o campo 'Formato' pode ser Pontua\u00e7\u00e3o, Tempo (Frames), Tempo (Milisegundos) ou Valor. Tempo(Frames) \u00e9 o mais comum, e representa 'frames'. Tempo (Milisegundos) espera um valor que nos podemos converter diretamente para milisegundos. (Super Mario Kart usa isso). No entanto, para converter um valor em frame dentro de um formato \"para ser lidos por humanos\", nos devemos dividiu o valor por 60 para uma representa\u00e7\u00e3o de segundos correta, e um valor em milisegundos deve ser dividido por 100 para conseguir o numero de segundos. Isso \u00e9 usado no site e no aplicativo para exibir o valor apropriadamente, e \u00e9 importante para distinguir, para que possamos ter certeza de obter o valor mais preciso do emulador, usando qualquer formato que eles usem para registrar o tempo.
"},{"location":"Leaderboards-pt_BR/#ajuda-adicional","title":"Ajuda Adicional","text":"Infelizmente h\u00e1 MUITAS maneiras de este processo dar errado, ent\u00e3o, se voce tiver algum problema, sinta-se livre pra pedir ajuda em nosso servidor do Discord.
Se voc\u00ea quer praticar, \u00e9 altamente recomendado criar sua pr\u00f3pria leaderboard e tentar alguma coisa em um novo jogo, melhor que usar uma leaderboard existente
Por favor, lembre-se que esses arquivos s\u00e3o puxados diretamente para o jogo de algu\u00e9m se eles decidirem jog\u00e1-lo, e uma m\u00e1 forma\u00e7\u00e3o de endere\u00e7o de mem\u00f3ria ou linha pode causar um crash no emulador, ent\u00e3o por favor, teste seu c\u00f3digo da leaderboard!
"},{"location":"Leaderboards-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-28 11:35] meleu:
Updated Leaderboards pt_BR (markdown)[2018-03-28 03:15] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:56] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:55] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:49] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:44] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:38] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:37] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:36] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:35] KingDice001:
Updated Leaderboards pt_BR (markdown)This is how a game's Leaderboard List looks like on the website:
In the center you can see every already made Leaderboard, and in the right column you can see the Code Notes for the game. The Code Notes are here to help with some conditions we'll see below.
And now you can also create and edit Leaderboards through the GUI just like achievements by selecting Leaderboards from the Assets List:
Here's a brief explanation of each field of a single Leaderboard:
Note: A valid leaderboard MUST have all four of these conditions, even if they're set to always be true (1=1
) or always be false (0=1
).
Those last 4 fields are really important and LOTS of care must be taken over the entry of any characters into these strings. That's why they deserve a further explanation:
The Start (STA) condition is a series of values, like an achievement, that must be true in order to start looking for a leaderboard submission.
If a Cancel (CAN) condition is true, then it will cancel the leaderboard and no score will be submitted. NOTE: Cancel is given priority over Start. If both become true in the same frame, the leaderboard will not start.
If the Submit (SUB) condition is true, then the leaderboard score will be submitted. NOTE: Cancel is given priority over Submit. If both become true in the same frame, the score will not be submitted.
Finally, the Value (VAL) is a special case, and will be taken from memory using the formula stated in the memory box. This is the score that gets displayed while the leaderboard is active, and the value that's submitted if SUB is true.
Memory addresses for STA/CAN/SUB/VAL have the format defined here.
NOTE: Once an active leaderboard is cancelled or submitted, it cannot be reactivated until the Start condition becomes false, then true again. This prevents the leaderboard from immediately reactivating after submission/cancel.
"},{"location":"Leaderboards/#example","title":"Example","text":"The best place to start is to look at existing leaderboards and break it down to see how it works. We're going to use the Green Hill Act 1 (Sonic the Hedgehog) Leaderboard for this purpose. Then let's see how it looks:
The Title/Description fields are quite obvious.
The Type is \"Time (Frames)\". The value we're tracking updates once a frame, and the Genesis runs at 60 frames per second. (see not below for systems that run at other speeds)
The Lower Is Better flag is checked, then the one who makes the shortest time will be the #1.
Now we're going to break down the most important parts.
"},{"location":"Leaderboards/#start-conditions","title":"Start Conditions","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: If 16-bit RAM address 0xfe10 is equivalent to hex 0000,_
: AND,0xhf601=h0c
: If 8-bit RAM address 0xf601 is equivalent to hex 0c,_
: AND,d0xhf601!=h0c
: If the previous 8-bit RAM address 0xf601 is NOT equivalent to hex 0c,_
: AND,0xfff0=0
If 16-bit RAM address 0xfff0 is equivalent to 0.This might seem daunting, because we don't know what these addresses mean. That's why the Code Notes in the right column are pretty handy! You can see how these addresses are labeled in memory. In our example we have:
0xfe10
is the level, and is expected to be 0
(the first level).0xf601
is an 8-bit memory address, and we use the prefix 0xh
instead of 0x
to signify this. The 0xf601
is the screen mode. The second and third parts of the start statement are saying \"the current mode should be ingame (0c
), and the mode on the previous frame should NOT be ingame\". Note: that d
prefix on the address represents delta, or \"the previous frame's value\". Summing up: trigger this if we've JUST arrived in a level (the start of the level, when we want to start testing their time).0xfff0
to be equivalent to 0
, because this address is used for demo mode, and we don't want to award a leaderboard entry when the demo is active!Tip: the most common mistake when creating leaderboards through the site editor is forgetting the h
when trying to reference an 8-bit memory address.
Note: You can use HitCounts in the Start/Submit/Cancel triggers, but you are responsible for resetting them. These triggers are evaluated every frame, and the state of the leaderboard is dependent on which ones are true. As such, the HitCount will increment even when the leaderboard is not active unless you have an explicit ResetIf condition.
"},{"location":"Leaderboards/#cancel-conditions","title":"Cancel Conditions","text":"CAN: 0xhfe13<d0xhfe13
The cancel section checks if the player's LIVES counter ever becomes lower. Literally, it says \"Cancel if the CURRENT value at 0xfe13 is less than the PREVIOUS value at 0xfe13\". We want to do this because you could reach the final checkpoint and run out of time, resetting your timer to 0:00. We don't want to allow this, because it's not the correct way of completing the level. So if the player dies, we reset their leaderboard progress. Finally, if you connect two cancel conditions with s
, the leaderboard will cancel when either one of them are true.
SUB: 0xf7cc!=0_d0xf7cc=0
The submit section checks if the current frame has the 'endlevel' flag set to true (or !=0
, 'nonzero'), and the previous frame (delta) has it set to false (or =0
, 'zero'). This suggests that the player has reached the end of the level, and has proven to be a fairly sturdy benchmark.
Tip: it can be useful to watch these values in memory to see how they perform, and what sort of values they end up at in different circumstances.
"},{"location":"Leaderboards/#value","title":"Value","text":"Finally, value. Once the player has reached the start condition, they will be shown a popup which remains on-screen, showing their progress so far. If it's a time leaderboard, it will be a clock, and if it's a score, it will just be the value. If they fulfill the cancel condition, they will be told that they have failed, and the popup will be removed. If they successfully reach the submit condition, the current value will be taken and submitted as their score, and on successful submission, an in game popup will inform the player of the leaderboard so far, and their position in the leaderboard.
For more information on the value format, see Value Definition.
NOTE: The value calculation is performed using 32-bit signed integers. As such, the maximum value is 2147483647 and the minimum value is -2147483648. Values above the maximum will wrap around and register as very negative numbers.
"},{"location":"Leaderboards/#value-format","title":"Value Format","text":"'Format' can be any of the available formats, but the editor currently only provides Score, Time (Frames), Time (Milliseconds) and Value. Time (Frames) is the most common one, and represents a time derived from a value that increments every frame. It does this by multiplying by 100 (to convert to hundredths of a second) and dividing by 60 (the number of frames per second).
NOTE: If you're using a system that doesn't run at 60Hz, you have to use \"Time (millisecs)\" and multiply by some value to do the conversion yourself (50Hz = *2
[100/50], 60Hz = *1.666666
[100/60], 75Hz =*1.333333
[100/75]).
NOTE: Time (Milliseconds) is actually hundredths of a second, not thousandths of a second. i.e. a Value of 6234 would be 62.34 seconds, not 6.234 seconds.
"},{"location":"Leaderboards/#design-tips","title":"Design Tips","text":"Leaderboards can sometimes get pretty spammy and take up a lot of screen space when starting or depending on how many are active at once. It is generally good practice to try and eliminate this as much as possible when you can. You can do this by taking advantage of the fact that you can start and submit a leaderboard on the same frame by setting the start condition to what you would normally use as the submit and then setting the submit condition so something that is always true like 1=1.
If a game tracks a score or time that you are using to directly call for your value then consider starting and submitting the leaderboard on the same frame so that only one popup is called (for the submission) and the screen won't have extra clutter. There are still cases where it can be useful for players to have the values up on display if they are hidden in menus so use your best judgement.
In games where levels are short and retries are quick you really don't want to have it start/cancel/submit repeatedly after each start/retry when you can help it as the popups can start stacking together and clutter the screen well past the actual attempts are over. These are a prime candidate for starting and submitting on the same frame when possible.
"},{"location":"Leaderboards/#score-wrapping","title":"Score Wrapping","text":"In games where the high score wraps around back to 0 it is actually possible to account for this and keep your leaderboard tracking the score! You can do this by using Alt Groups combined with MeasuredIf to track which loop you are on and will use one Alt per loop.
As an example lets take a look at Balloon Fight on NES where the score wraps around after 999,990. Here is the original leaderboard:
And an updated version which will continue tracking after each loop: Core needs to have a Measured statement in it so just put something that is never true and also a ResetIf for resetting the MeasuredIf statements in the Alt Groups when needed (in this case on the title screen)
The first Alt will contain the normal logic for high score
The next Alt will contain a MeasuredIf that is true after the first loop which will allow this value to be used. You will also add an extra condition to AddSource in the total score from the first loop which will be 1,000,000 in this case. This value will now be used since MeasuredIf is true and the value is the highest of the Alt Groups
For the next Alt we increment the number of hits used in the loop detection as well as the value we multiply the total score added by for each loop
"},{"location":"Leaderboards/#further-help","title":"Further Help","text":"There are unfortunately MANY ways to get this process wrong, so if you are having any trouble feel free to ask for help in our Discord server.
If you want to practice, it's highly recommended to create your own leaderboard and attempting something on a new game, rather than using an existing leaderboard. Just remember to clean up any test leaderboards that you push to the site afterwards.
Please remember that these files are pulled directly into someone's game if they decide to play it, and a badly formed memory address or string could cause their emulator to crash, so please test your leaderboard code!
"},{"location":"Leaderboards/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-06 11:08] televandalist:
Added ToC[2022-05-30 18:49] Searo:
Cleanup[2022-05-30 18:45] Searo:
Typos[2022-05-30 18:35] Searo:
Misc updates[2022-02-04 17:36] Jamiras:
extract memory sizes[2022-02-04 16:47] Jamiras:
extract Value Definition to separate page[2021-10-23 12:28] Jamiras:
Updated Leaderboards (markdown)[2021-06-08 10:07] Jamiras:
Updated Leaderboards (markdown)[2021-04-26 13:35] meleu:
fix link[2020-11-13 16:36] Jamiras:
Updated Leaderboards (markdown)Measured
marks a condition for tracking progress. It adds a progress bar to the achievement overlay to inform the user how close they are to completing an achievement. As the user expects an achievement to trigger when the progress bar is full, it is expected that any other conditions in the achievement should be true most of the time.
Measured
should not be used to track things that are clearly visible to the user. If you have an achievement for getting 500,000 points, you don't need to Measure it if the score is displayed on the screen. Similarly, there's no need to use Measured
in an achievement for having 100 of something in the inventory if the player can see a count of how many they have just by opening the inventory.
If placed on a condition with a required HitCount, the target value is the required HitCount and the current value is the current HitCount. AddHits
can be used.
If placed on a condition without a HitCount, the target value is the constant on the right side of the condition and the current value is the evaluation of the left side of the condition. AddSource
and SubSource
can be used.
If multiple conditions are marked as Measured
and have the same target value, the current value will be the maximum of all the Measured
conditions.
If multiple conditions are marked as Measured
and have different target values, a Parse Error -22 will occur.
Note that progress for Measured
values is reported at the time of examination and may actually go down depending on the current value (Hit Count could be reset, or comparison value decreases).
To limit the scope of a Measured
condition, you can add a MeasuredIf
condition. A MeasuredIf
condition must be true for the Measured
value to be non-zero (and for the achievement to trigger). You can use MeasuredIf
to create achievements that require playing as a certain character, or just to prevent bogus data from showing up if the player is in the wrong part of the game. If any MeasuredIf
condition in a group is false, the Measured
value for the group is automatically 0.
Since PauseIf
has precedence over Measured
, the Measured
value will be captured when a group becomes paused, and the captured value will be returned until the group is unpaused and Measured
can be evaluated again. If another Measured
exists in a non-paused group, its value will be returned even if it is lower than the captured value.
Last 10 changes on this page:
[2022-09-10 11:56] Jamiras:
Updated Measured Flag (markdown)[2022-09-10 11:56] Jamiras:
Updated Measured Flag (markdown)[2022-03-19 07:21] Jamiras:
add note about behavior when Paused[2021-05-01 07:28] meleu:
fix link to AddHits page[2020-05-17 14:14] Jamiras:
add MeasuredIf[2019-11-14 19:42] Jamiras:
Created Measured Flag (markdown)Aqui un vistazo del Inspector de Memoria y sus caracteristicas. Esta herramienta se puede encontrar en la pesta\u00f1a de \"RetroAchievements\" en cualquier emulador integrado con RA.
Tambien mira: Tips en la Busqueda de Memoria.
"},{"location":"Memory-Inspector-Overview-es/#ventana-del-inspector-de-memoria","title":"Ventana del Inspector de Memoria","text":""},{"location":"Memory-Inspector-Overview-es/#1-reset-to-resetear-en","title":"1. Reset to (Resetear en)","text":"Haz click en uno de los botones para empezar una nueva pruba. Por lo general pruebas en 8-bit es lo mas apropiado.
"},{"location":"Memory-Inspector-Overview-es/#2-filter-values-filtrar-valores","title":"2. Filter Values (Filtrar Valores)","text":"Usualmente vas a filtrar ya sea en =
(igual a) el ultimo valor conseguido o !=
(diferente que) el ultimo valor conseguido. Si conoces el valor exacto que deseas buscar, puedes utilizar Given Value
(Valor entregado), o si estas convencido que el valor tuvo que haber incrementado, puedes intentar >
(mayor que) o <
(menor que).
Cada vez que presiones este boton, estas filtrando los valores que no concuerdan en memoria entre el ultimo testeo y el de ahora.
"},{"location":"Memory-Inspector-Overview-es/#4-ventana-de-resultados","title":"4. Ventana de Resultados","text":"Despues de haber filtrado los resultados miraras en la ventana exactamente que es lo que paso, cuantos valores has conseguido y cuantos estan fuera. Algunos puntos a tener en cuenta:
Highlights
, si asi lo prefieres.<<
) o hacia adelante (>>
) por medio de las busquedas anteriores. Ten en cuenta que si empiezas una nueva busqueda (una New 8-bit Test
), tu historial va a ser borrado.Cualquier valor que se encuentre aqui va a ser observado en el Visor de Memoria y se mostraran sus notas de codigo a la derecha. La direccion tiene que ser 0x
(Un cero, y despues una letra x), seguido de digitos hexadecimales.
Cualquier variable que se este observando y las variables que tiene alrededor se muestran en esta ventana. Puedes ver mas informacion a continuacion, en la seccion de Leyendo informacion en el Visor de Memoria.
"},{"location":"Memory-Inspector-Overview-es/#7-notas-de-codigo","title":"7. Notas de Codigo","text":"Una vez que hubieras encontrado un valor en memoria del que quieras hacer una nota, serciorate que el valor este introducido en la caja que dice 'Watching' (Observando). Ahora puedes escribir una peque\u00f1a descripcion en la caja de texto, y hacer click en Save Note
(Salvar Nota). Esto va a mandar el valor en memoria y su descripcion a la base de datos, para que puede ser compartida con todos los desarrolladores que trabajen con este juego.
Haz click en la fleca hacia abajo para ver cuales valores en memoria han sido encontrados hasta ahora, junto con su descripcion, la cual te dice para que sirve esa variable.
Intenta mantener tus descripciones limpias y simples, para que sean facil de entender. Para re-escribir una nota, seleccionala en la lista desglozable, actualiza la descripcion, y haz click en Save Note
(Salvar Nota). Una ventana va a salir confirmando sobre-escribir la nota existente - checa si esta bien el cambio, y haz click en OK.
Si deseas remover una nota, seleccionala en el menu desglozable, y haz click en Remove
(Remover).
Cuando haces click en el boton Open Memory Bookmarker
(Abrir Marcadores de Memoria) vas a ver esta ventana:
Con esto, puedes ver multiples variables designadas al mismo tiempo en vez de estar moviendote por todo el Inspector.
Los marcadores pueden ser renombrados haciendo doble-click en su descripcion. Si haces doble click en la variable, te puedes mover directamente a ella en el Inspector de Memoria.
Valores agregados al marcador se van a mostrar en el inspector de memoria de color verde. Desde aqui tambien puedes Freezear (Congelar) cualquier marcador.
Esto es util para cosas como vida o consumibles. Congelar variables puede ser manipulado directamente desde el inspector. Ten en mente que, el congelamiento ocurre 1 frame despues del gameplay. Esto significa que incluso cuando este congelada, el valor no va a cambiar al menos que pase un frame para que pueda congelarse la variable. Esto siempre se va a mostrar como amarillo.
"},{"location":"Memory-Inspector-Overview-es/#leyendo-informacion-en-el-visor-de-memoria","title":"Leyendo informacion en el Visor de Memoria","text":""},{"location":"Memory-Inspector-Overview-es/#notaciones-decimales-binarias-y-hexadecimales","title":"Notaciones Decimales, Binarias y Hexadecimales","text":"Para trabajar bien con el Visor de Memoria, es importante entender minimo lo basico de los numeros binarios y hexadecimal. Aqui hay algunos recursos de informacion sobre este tema sin irnos a detalles muy extremos:
Los digitos utilizados en el sistema binario son 0
y 1
. Un digito binario tambien es conocido como un bit. Ocho bits tambien se le conocen como un byte.
Los digitos utilizados en el sistema hexadecimal son 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, A
, B
, C
, D
, E
y F
. La notacion hexadecimal tambien se le conoce como hex.
La razon principal para estas 2 notaciones, mas alla del sistema decimal tradicional, son:
La siguiente table muestra las direntes notacion para sus valores equivalentes.
Decimal Hexadecimal Binario0
0x0
0000
1
0x1
0001
2
0x2
0010
3
0x3
0011
4
0x4
0100
5
0x5
0101
6
0x6
0110
7
0x7
0111
8
0x8
1000
9
0x9
1001
10
0xA
1010
11
0xB
1011
12
0xC
1100
13
0xD
1101
14
0xE
1110
15
0xF
1111
Mas datos sobre las diferentes notaciones:
0x
: 0x10 = 16
, 10 = 10
.0
y 255
. 0
y 65535
.0
y 4294967295
.La parte de hasta abajo del Inspector de Memoria es lo que llamamos visor de Memoria:
Puedes ver la informacion en el Visor de Memoria utilizando los modos 8, 16 y 32-bit.
"},{"location":"Memory-Inspector-Overview-es/#modo-8-bit","title":"Modo 8-bit","text":"Por defecto, el Visor de Memoria muestra la informacion en modo de 8-bit. Esto muestra cada byte de memoria como un valor de dos-caracteres hexadecimales por separado. Cada byte tiene su propia direccion.
Dieciseis bytes son mostrados por linea. La direccion de un byte se puede determinar a\u00f1adiendo la posicion de la fila (mostrada a la izquierda del vizor) a la posicion de la columna (mostrada arriba del visor). Usando la imagen de arriba como un ejemplo, el cursor esta en 0x002a7
(0x002a0
+ 7
).
Antes de que hables del modo de 16-bit mode y 32-bit, es importante saber sobre el endianness (extremidad):
Valores que necesitan mas de 8-bits (en otras palabras: mas grandes que 255) necesitan estar almacenado en multiples bytes. Inclusive, los sistemas emulados que utilizamos almacenan valores de multiples-bytes en orden little-endian.
En la imagen del Visor de Memoria de arriba puedes ver que en la direccion 0x0002c0
tenemos el valor hexadecimal ce
y en 0x0002c1
el valor es 39
. Cuando cambias el visor a modo de 16-bit, los valores ce
y 39
se agrupan en 0x0002c0
y son mostrados como 39ce
. Esto pasa porque automaticamente agrupa cada dos bytes y los muestra como valos hexadecimales de 16-bit.
NOTA: Mientras que los valores de 16-bits se alinean generalmente a direcciones pares, este no siempre es el caso. De hecho hay un valor de 16-bit que no se muestra en 0x0002c1
. Ya que el valor en 0x0002c1
es 39
y el valor en 0x0002c2
es 29
, el valor de 16-bit value en la direccion 0x0002c1
es 0x2939
.
Similarmente en, el modo de 32-bit, los cuatro bytes de 0x0002c0
a 0x0002c3
se muestran como un solo valor de 32-bit 0x252939ce
en la direccion 0x0002c0
, pero tambien hay valores de 32-bit en 0x0002c1
, 0x0002c2
, and 0x0002c3
.
Se describe como Endianness el orden en el que una secuencia de bytes se encuentra almacenada en memoria de una computadora. Los dos tipos mas comunes son: Big-Endian (tambien conocido como BE) y Little-Endian (tambien conocido como LE).
En el orden Big-Endian la \"big end\" (extremidad) de un numero (el valor mas significativo en secuencia) es almacenado primero (posicionado en la direccion mas peque\u00f1a). En la imagen de abajo puedes ver el numero 0x12345678
almacenado en la direccion 0x100
en el sistema big-endian. Ten en cuenta que el byte mas significativo 0x12
se encunetra en la direccion 0x100
:
En el orden Little-Endian el \"little end\" (extremidad) de un numero (el valor menos significativo en secuencia) es almacenado primero (posicionado en la direccion mas grande). En la imagen de abajo puedes ver el numero 0x12345678
almacenado en la direccion 0x100
en orden little-endian. Ten en cuenta que el byte menos significativo 0x78
se encuentra en la direccion 0x100
:
En addicion al 8-bit, 16-bit y 32-bit los tama\u00f1os descritos arriba, existen tama\u00f1os adicionales que pueden ser utilizados al momentos que estemos creando logros (en el editor de Logros (Achievement Editor)).
"},{"location":"Memory-Inspector-Overview-es/#single-bits","title":"Single bits","text":"En el visor de memoria cuando un valor de 8-bit es seleccionado vas a ver algo como la imagen de abajo (en la imagen: un byte con valor 6f
es seleccionado; los bits estan resaltados con un circulo naranja):
Es muy comun almacenar informacion importante en un solo bit. Ya que un bit solo puede tener dos posibles valores (1
o 0
), algunas veces se utiliza para significarn \"si\" o \"no\", \"encendido\" o \"apagado\", \"tiene un item\" o \"no item\", etc. Algunos juegos, especialmente aquellos que tienen espacio muy limitado en memoria, utilizan bit como botones bastante.
Importante: Puedes referirte a cada uno de esos bits indidualmente en el Editor de Logros (Achievement Editor).
Significados mas comunes de botones de bit en la memoria de un juego:
En el visor de memoria solo puedes ingresar valores hex, entonces es importante conocer la importancia entre valores con notacion hexadecimal y binaria. Puedes ver en la tabla de \"Notaciones Decimales, Binarias y Hexadecimales\" , pero lo usual es usar una calculadora (la calculadora default de MS Windows en modo programador puede hacer el trabajo)
"},{"location":"Memory-Inspector-Overview-es/#upper4-y-lower4","title":"Upper4 y Lower4","text":"Upper4 son los cuatro bits superiores de un byte (bit: 7, 6, 5, 4), mostrados como un solo caracter hexadecimal. Lower4 son los cuatro bits inferiores de un byte (bit: 3, 2, 1, 0), mostrados como un solo caracter hexadecimal.
Observando el diagrama de tama\u00f1o de memoria de abajo, un byte en la direccion 0x00a274
es seleccionado (valor 0x23
). El primer caracter, 2
es el valor Upper4. El segundo characterr 3
es el valor Lower4.
Ocasionalmente solo vas a estar interesado en trabajar con solo un digito hexadecimal. Utilizando el diagrama de tama\u00f1o de memoria como un ejemplo, como una condicion de un logro donde Upper4 0x00a274 = 0x2
seria verdadera. Una condicion dondeLower4 0x00a274 = 0x3
seria verdadera.
Last 10 changes on this page:
[2019-05-24 20:18] meleu:
add link to spanish doc[2019-03-12 14:59] meleu:
Updated Memory Inspector Overview ES (markdown)Here is an overview of the Memory Inspector and its features. This tool can be found on \"RetroAchievements\" menu on any emulator integrated with RA.
See also: Memory Digging Tips.
This is the first thing you must do when you're looking for something in memory.
The first drop down allows you to quick select All memory, System RAM, or Cartridge RAM. The field below the first drop down lets you type in a custom range (i.e. 0x10000-0x100FF).
The second drop down specifies the size of the data you're interested in finding.
The Reset
button clears out any previously captured results (part 3 of the dialog) and captures the current memory state.
Filters the memory state in an attempt to locate a specific memory address.
The first drop down allows you to specify the comparison to use. The second drop down is what you're comparing against. Most of the time you're going to be filtering on != Last Value
, which eliminates any results where the memory has not changed.
The available comparisons are:
Constant
- comparison is made against the value entered in the field below the drop down.Last Value
- comparison is made against the value captured by the last applied filter, or the initial value if no filter has been appliedLast Value Plus
- comparison is made against the Last Value plus the value entered in the field below the drop down. If the value were 3, the comparison would me made against a number which is three higher than the Last Value for each value captured by the last applied filter.Last Value Minus
- the same as Last Value Plus, except the value entered in the field below the drop down is subtracted from each value captured by the last applied filter.Initial Value
- comparison is made against the value captured when the New Search was begun.The Filter Once
button immediately applies the selected filter and updates the Results.
The Continuous Filter
button applies the selected filter repeatedly until stopped. The fewer the results, the more frequently the filter is applied. The filter is only applied once every N ms, where N is the number of results / 1000. If there are less than 1000 results, it's applied every frame. If there are 50000 results, it's applied every 500ms (twice a second). If there are 1000000 results, it's only applied every 10 seconds.
As filtering is applied, the list of potential matches will appear here.
On the left side is information about the results, including the number of matches, the filter applied, and how many filters have been applied. If you believe you have applied a filter incorrectly, or the filter results in no matches, you can use the <<
button to return to the previous set of results. You can do this all the way back to the initial results. Similarly, you can use the >>
button to return to results you have backed out of. Once you apply a new filter, the forward filters are discarded and the >>
button is disabled.
Below the result information are two buttons. The first allows you to manually remove the selected items from the result set. You can use Ctrl and Shift to select multiple items. The second lets you create a bookmark for an item in the result set. It will appear in the Bookmarks dialog.
The items in the result set show the address of the match, the current value, and a brief description of the memory at the address. If a code note exists for the address, it will be shown. Otherwise, a general classification of the address will be shown.
Additionally, items in the result set can be colored.
Clicking on a row will set the selected address to the associated item.
"},{"location":"Memory-Inspector-Overview/#4-code-notes","title":"4. Code Notes","text":"Provides detailed information about the selected address, and allows the user to annotate addresses found by the search process. Try to keep your descriptions simple and clear, so they can be easily understood. Clear notes are important for debugging if a problem with an achievement occurs.
The text field shows the currently selected address from the memory view (part 5 of the dialog). You can manually type in any address, or use the up and down arrows to jump to the next or previous address that have a code note.
Just to the right of the text field is a button that opens the Code Notes dialog, which allows you to browse and search through the code notes.
Below the text field is a button that will create a bookmark from the selected address.
The large text area is where you can modify the code note for the selected address. NOTE: the changes are not saved unless you press the Save Note button. If you change the selected address without saving, the changes will be lost.
Save Note
and Delete
immediately attempt to update the server - either with the modified note text, or by clearing out the note text.
Allows direct browsing of the memory. The memory updates once per frame as the emulator runs.
The currently selected address appears in red. Addresses with code notes show up blue, and addresses associated to bookmarks show up green.
You can click on any piece of data in the memory viewer to jump to the associated address. You can also use the keyboard to navigation around in memory (up/down/left/right/pgup/pgdn/home/end).
When the memory viewer is focused, a cursor will be visible. You can type any hexadecimal character to change the character at the cursor to another value. This immediately changes the value for the emulator, and may cause unexpected behavior, so use at your own risk. Additionally, modifying memory (through any of the tools) prevents achievements from being unlocked on the server as an anti-cheat mechanism.
"},{"location":"Memory-Inspector-Overview/#memory-bookmarks","title":"Memory Bookmarks","text":"You can open the Memory Bookmarks dialog from the RetroAchievements menu. It will also automatically open when adding a bookmark from either of the buttons on the Memory Inspector dialog.
With this, you can view multiple designated addresses at once instead of having to shuffle around in the Inspector. Bookmarked addresses will show in the Memory Inspector as green.
If you double-click on an address, you can move straight to that address in the Memory Inspector.
The bookmarks can be renamed by clicking their description. This does not update the code note for the associated address.
You can change the size or format of a bookmark by clicking on the field and selecting a new value from the dropdown. Clicking on the value field will allow you to enter a new value for the bookmark. It will automatically be written to the memory.
From here you can also Freeze any bookmarks. This is helpful for things like health or consumables. Keep in mind, freezing occurs 1 frame after gameplay. This means that even when frozen, the value will change for at least one frame before returning to the frozen value. Frozen bookmarks will be displayed as yellow.
"},{"location":"Memory-Inspector-Overview/#reading-data-in-the-memory-viewer","title":"Reading Data in the Memory Viewer","text":""},{"location":"Memory-Inspector-Overview/#decimal-binary-and-hexadecimal-notations","title":"Decimal, Binary, and Hexadecimal Notations","text":"To work well with the Memory Viewer, it's important to understand at least the basics of binary and hexadecimal numeral notations. Here are good sources of information about this matter without going into extreme details:
The digits used in binary system are 0
and 1
. A binary digit is also known as bit. Eight bits is also known as one byte.
The digits used in hexadecimal system are 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, A
, B
, C
, D
, E
and F
. The hexadecimal notation is also known as hex.
The main reasons for the existence of these 2 notations, besides the traditional decimal notation, are:
The table below shows the different notations for equivalent values.
Decimal Hexadecimal Binary0
0x0
0000
1
0x1
0001
2
0x2
0010
3
0x3
0011
4
0x4
0100
5
0x5
0101
6
0x6
0110
7
0x7
0111
8
0x8
1000
9
0x9
1001
10
0xA
1010
11
0xB
1011
12
0xC
1100
13
0xD
1101
14
0xE
1110
15
0xF
1111
More facts about the different number notations:
0x
is used: 0x10 = 16
, 10 = 10
.0
to 255
. 0
to 65535
.0
to 4294967295
.The bottom part of the Memory Inspector is what we call the Memory Viewer:
You can see data in Memory Viewer using 8, 16 or 32-bit modes.
"},{"location":"Memory-Inspector-Overview/#8-bit-mode","title":"8-Bit Mode","text":"By default, the Memory Viewer shows data in 8-bit mode. This displays each byte of memory as a separate two-character hexadecimal value. And each byte has its own address.
Sixteen bytes are shown per line. The address of a byte can be determined by adding the row index (displayed to the left of the viewer) to the column index (displayed above the viewer). Using the image above as an example, the cursor is at 0x002a7
(0x002a0
+ 7
).
Before we talk about 16-bit mode and 32-bit mode, it's important to know about endianness:
Values that need more than 8-bits (in other words: larger than 255) have to be stored in multiple bytes. However, the emulated systems we use store multi-byte values in little-endian order.
In the image of the Memory Viewer above you can see that at address 0x0002c0
we have the hex value ce
and in 0x0002c1
the value is 39
. When you switch the viewer to 16-bit mode, the ce
and 39
values are grouped at 0x0002c0
and get displayed as 39ce
. This happens because it automatically groups every two bytes and displays them as 16-bit hex values.
NOTE: While 16-bit values are usually aligned to even addresses, that's not always the case. There's actually a non-displayed 16-bit value at 0x0002c1
. Since the value at 0x0002c1
is 39
and the value at 0x0002c2
is 29
, the 16-bit value at 0x0002c1
address is 0x2939
.
Similarly, in 32-bit mode, the four bytes from 0x0002c0
to 0x0002c3
are displayed as a single 32-bit value 0x252939ce
at address 0x0002c0
, but there are also 32-bit values at 0x0002c1
, 0x0002c2
, and 0x0002c3
.
Endianness describes the order in which a sequence of bytes are stored in computer systems memory. The two most common types are: Big-Endian (also known as BE) and Little-Endian (also known as LE).
In the Big-Endian order the \"big end\" of the number (most significant value in the sequence) is stored first (placed at the lowest address). In the image below you see the number 0x12345678
stored at the address 0x100
in the big-endian order. Notice that the most significant byte 0x12
is at the address 0x100
:
In the Little-Endian order the \"little end\" of the number (least significant value in the sequence) is stored first. In the image below you see the number 0x12345678
stored at the address 0x100
in the little-endian order. Notice that the least significant byte 0x78
is at the address 0x100
:
In addition to the 8-bit, 16-bit and 32-bit sizes described above, there are additional sizes that can be used when writing achievements (in the Achievement Editor).
"},{"location":"Memory-Inspector-Overview/#single-bits","title":"Single Bits","text":"In the memory viewer when an 8-bit address is selected you will see something like the image below (in the image: a byte with the value 6f
is selected; the bits are highlighted with an orange circle):
It is very common in games to store important information as a single bit. As a bit can only have two possible values (1
or 0
), sometimes it's used to mean \"yes\" or \"no\", \"on\" or \"off\", \"have item\" or \"no item\", etc. Some games, specially those with limited memory space, use bit switches a lot.
Important: You can refer to each one of those bits individually in the Achievement Editor.
Common meaning of bit switches in a game memory:
In the memory viewer you can only input hex values, then it's important to know equivalence of values between hex and binary notations. You can see the table in the \"Decimal, Binary and Hexadecimal notations\" section, but the usual is to use a calculator (the default calculator on MS Windows on the programmer view can do the job).
"},{"location":"Memory-Inspector-Overview/#upper4-and-lower4","title":"Upper4 and Lower4","text":"Upper4 is the upper four bits of a byte (bit: 7, 6, 5, 4), displayed as a single hexadecimal character. Lower4 is the lower four bits of a byte (bit: 3, 2, 1, 0), displayed as a single hexadecimal character.
Looking at the memory size diagram below, a byte at address 0x00a274
is selected (value 0x23
). The first character, 2
is the Upper4 value. The second character 3
is the Lower4 value.
Occasionally you will only be interested working with a single hexadecimal digit. Using the memory size diagram as an example, an achievement condition where Upper4 0x00a274 = 0x2
would be true. A condition where Lower4 0x00a274 = 0x3
would be true.
Last 10 changes on this page:
[2024-04-10 12:20] Alex Gabriel:
Fix typo in 16 and 32-bit Mode section.[2023-06-06 11:27] televandalist:
Added ToC[2022-07-11 16:49] timenoe:
Small typo corrected concerning != Last Value
filter[2021-08-25 19:10] meleu:
fix markdown format[2020-06-11 07:34] Jamiras:
add details about Continuous Filter backoff algorithm[2020-05-17 21:48] Jamiras:
update for new memory inspector dialog[2019-03-14 00:37] Keltron3030:
Updated Memory Inspector Overview (markdown)[2019-03-14 00:35] Keltron3030:
Added some additional info to memory viewer features as requested by Jr developer.[2019-02-14 21:56] meleu:
bitfields image[2019-02-14 21:45] meleu:
test2Know good techniques? Add to this page.
"},{"location":"Minimum-Required-Versions-for-Logic-Features-es/","title":"Versiones M\u00ednimas Requeridas para Funciones en la L\u00f3gica","text":"A veces es \u00fatil saber cuando una funci\u00f3n fue agregada/modificada y las implicaciones de esos cambios, especialmente si estas trabajando en un ticket. Compara la etiqueta de tiempo del ticket con los lanzamientos del toolkit para determinar con que comportamiento el jugador se ve\u00eda afectado.
Funci\u00f3n RA_Integration RetroArch ResetIf/PauseIf HitCount 0.073(31-Ago-2018) 1.7.4(30-Ago-2018) Tablas de Clasificaci\u00f3n Cancelar Y (Leaderboard Cancel AND) 0.073(31-Ago-2018) 1.7.0(25-Dic-2017) Tablas de Clasificaci\u00f3n \u00d3 (Leaderboard OR) 0.073(31-Ago-2018) 1.7.4(30-Ago-2018) Soporte para valores Completos de 32-bit 0.073(31-Ago-2018) 1.7.0(25-Dic-2017) Retrasar procesamiento de logros por los primeros 100 frames de cargar el ROM 0.073(31-Ago-2018) (ver la linea de abajo) Remplazar el retraso de 100 frames con la l\u00f3gica de activaci\u00f3n de retraso (delayed activation logic) 0.075(04-Feb-2019) 1.6.3(28-Jul-2017)"},{"location":"Minimum-Required-Versions-for-Logic-Features-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 11:13] eldexterr:
ES title changed to esSometimes it's useful to know when a feature was added/changed and the implications of these changes, specially if you are working on a ticket. Compare the ticket timestamp to the toolkit releases to determine which behavior the player would have been subject to.
Feature RA_Integration RetroArch rcheevos Leaderboard Cancel AND 0.073(31 Aug 2018) 1.7.0(25 Dec 2017) n/a Full 32-bit value support 0.073(31 Aug 2018) 1.7.0(25 Dec 2017) n/a ResetIf/PauseIf HitCount 0.073(31 Aug 2018) 1.7.4(30 Aug 2018) n/a Leaderboard OR 0.073(31 Aug 2018) 1.7.4(30 Aug 2018) n/a Delay achievement processing for 100 frames on load 0.073(31 Aug 2018) n/a n/a Replace 100 frame delay with delayed activation logic 0.075(04 Feb 2019) 1.6.3(28 Jul 2017) n/a AndNext 0.76(21 Jun 2019) 1.7.7(7 May 2019) 8.0(4 May 2019) Prior 0.76(21 Jun 2019) 1.7.7(7 May 2019) 8.0(4 May 2019) 24-bit read 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.0.1(18 Jun 2019) AddAddress 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Measured 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Measured syntax for leaderboard values 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Detect and report Unsupported achievements 0.79(22 May 2021) 1.8.2(25 Dec 2019) n/a OrNext 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) BitCount 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) MeasuredIf 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) Trigger 0.79(22 May 2021) 1.8.7(17 May 2020) 9.0(9 May 2020) Include hits in save states 0.073(31 Aug 2018) 1.9.1(28-Mar 2021) 9.0(9 May 2020) SubHits 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) ResetNextIf 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Ranges in rich presence lookups 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Maxof($) for Measured leaderboard values 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) ResetIf/PauseIf support for Measured leaderboard values 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Big Endian memory reads 1.0(29 Jan 2022) 1.9.9(5 Sep 2021) 10.2(27 Aug 2021) Measured raw/percent flag 1.0(29 Jan 2022) 1.9.9(5 Sep 2021) 10.2(27 Aug 2021) Floating point memory reads 1.0(29 Jan 2022) 1.10.1(6 Mar 2022) 10.3(14 Jan 2022) Built-in macros for rich presence 1.0(29 Jan 2022) 1.10.1(6 Mar 2022) 10.3(14 Jan 2022) MBF32 LE memory read 1.1(15 Nov 2022) 1.13.0(19 Nov 2022) 10.5(12 Nov 2022) XOR modifier 1.1(15 Nov 2022) 1.13.0(19 Nov 2022) 10.5(12 Nov 2022) Float BE memory reads 1.3(TBD) 1.17.0(3 Feb 2024) 11.0(2 Nov 2023) FixedN leaderboard/RP sizes 1.3(TBD) 1.17.0(3 Feb 2024) 11.1(21 Jan 2024) Double32 memory reads 1.3(TBD) TBD 11.2(31 Mar 2024)"},{"location":"Minimum-Required-Versions-for-Logic-Features/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-31 12:08] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2024-02-27 14:12] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2023-11-29 18:27] Jamiras:
stub for Float BE[2023-07-19 09:37] Jamiras:
update RetroArch versions for rcheevos 10.5 features[2022-11-15 14:46] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-11-12 07:15] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-03-06 10:44] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-29 11:05] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-13 09:14] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-08 09:59] Jamiras:
add 0.80 DLL featuresAlterar os discos no Playstation exige que voc\u00ea crie um arquivo playlist (.m3u) para seus discos. Isso pode soar intimidador, mas na verdade \u00e9 bem simples.
Passo 1: Coloque seus arquivos .bin e .cue na localiza\u00e7\u00e3o desejada.
Passo 2: Abra o Bloco de notas.
Passo 3: Digite no bloco de notas o nome dos arquivos .cue da mesma forma que eles est\u00e3o no arquivo original. Quando voc\u00ea terminar, seu documento de texto vai estar parecido com algo mais ou menos assim:
Quando terminar, salve o documento de texto, na mesma localiza\u00e7\u00e3o que o disco do jogo, com o nome que voc\u00ea quiser.
Passo 4: Renomeie o documento, mudando sua extens\u00e3o de .txt para .m3u
ATEN\u00c7\u00c3O: Se voc\u00ea n\u00e3o consegue ver a extens\u00e3o .txt no final do t\u00edtulo do seu documento de texto voc\u00ea precisar\u00e1 alterar as configura\u00e7\u00f5es para que extens\u00f5es sejam vis\u00edveis. No Windows 10 isso \u00e9 muito simples, voc\u00ea consegue encontrar essa op\u00e7\u00e3o na sua pasta em \"View\" e marcar a caixa \"File name extensions\".
E... pronto! Simples, n\u00e3o? A partir de agora, quando voc\u00ea for iniciar o jogo, abra ele pelo arquivo .m3u que voc\u00ea acabou de criar.
ATEN\u00c7\u00c3O: Se voc\u00ea j\u00e1 jogou o primeiro disco do jogo e seus saves n\u00e3o est\u00e3o mais l\u00e1, voc\u00ea pode resgatar eles indo at\u00e9 a pasta \"saves\" do seu emulador, encontrando os arquivos de save e renomeando eles para igualar com o arquivo .m3u que voc\u00ea criou. Por exemplo:
'Metal Gear Solid (v1.1) (Disc 1).mcr' > 'Metal Gear Solid (v1.1).mcr'
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#alterando-discos-no-ralibretro","title":"Alterando discos no RAlibretro","text":"Para alterar os discos no RAlibretro, quando o jogo solicitar a troca, v\u00e1 para o menu \"File\" e siga esses passos
Passo 1: File > CD-ROM > Open Tray
Passo 2: File > CD-ROM > Desired Disc
Passo 3: File > CD-ROM > Close Tray
E \u00e9 isso!
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#alterando-discos-no-retroarch","title":"Alterando discos no Retroarch","text":"Voc\u00ea ir\u00e1 encontrar a op\u00e7\u00e3o em \"Quick Menu > Disk Control\"
Passo 1: Selecione \"Disk Cycle Tray Status\" (ATEN\u00c7\u00c3O: Se voc\u00ea tem a op\u00e7\u00e3o \"Pause when menu activated\" ativada, voc\u00ea precisar\u00e1 sair e entrar no menu novamente para que o jogo saiba que a tampa do disco foi aberta)
Passo 2: Selecione \"Disk Index\" (Esquerda e direita para alterar os discos)
Passo 3: Selecione \"Disk Cycle Tray Status\" novamente
E pronto!
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-01-10 11:36] Hyze01:
Updated Multi Disc Games Tutorial pt_BR (markdown)[2020-01-10 11:35] Hyze01:
Updated Multi Disc Games Tutorial pt_BR (markdown)[2020-01-10 11:23] Hyze01:
Ajudado com a tradu\u00e7\u00e3o.[2020-01-10 10:31] meleu:
Created Multi-Disc Games Tutorial-pt_BR (markdown)Changing discs on Playstation requires creating a playlist file (.m3u) for your discs. This may sound intimidating but it's actually very simple.
Step 1: Place your .bin and .cue files in the desired location.
Step 2: Open Notepad
Step 3: Type the names of your .cue files exactly as they're named on your files. When you're finished your text document should look something like this:
When you're finished save the text document in the same location as your game discs with whatever name you like.
Step 4: Rename the document, changing the extension from .txt to .m3u
NOTE: If you can't see the .txt extension at the end of your text document title you need to change your settings to show known file extensions. In Windows 10 it's very simple, you can find that on your folder under 'View' and a checkbox reading 'File name extensions'
Now you're done! Simple, huh? From here on out, when you start the game, load it using the .m3u file you've just created.
NOTE: If you have already played the first disc of a game and find your saves no longer there, you can retrieve them by navigating to your emulators 'saves' folder, finding the save for your first disc and renaming it to match the .m3u you've created. for example:
'Metal Gear Solid (v1.1) (Disc 1).mcr' > 'Metal Gear Solid (v1.1).mcr'
"},{"location":"Multi-Disc-Games-Tutorial/#changing-discs-in-ralibretro","title":"Changing Discs in RAlibretro","text":"To change discs on RAlibretro, when the game prompts you, go to the file menu and follow these steps
Step 1: File > CD-ROM > Open Tray
Step 2: File > CD-ROM > Desired Disc
Step 3: File > CD-ROM > Close Tray
And that's it!
"},{"location":"Multi-Disc-Games-Tutorial/#changing-discs-in-retroarch","title":"Changing Discs in Retroarch","text":"You'll find the option in Retroarch under 'Quick Menu > Disk Control'
Step 1: Select 'Disk Cycle Tray Status' (Note: If you have the 'Pause when menu activated' option on, you'll need to turn the menu off and on again so that the game knows the disc tray has been opened)
Step 2: Select 'Disk Index' (Left and right to change discs)
Step 3: Select 'Disk Cycle Tray Status' again
And you're done!
"},{"location":"Multi-Disc-Games-Tutorial/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-31 09:42] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-31 11:01] meleu:
add proper headings and other cosmetics[2019-12-29 12:26] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 12:22] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:58] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:57] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:56] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:53] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:52] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:51] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)Quiz\u00e1s cargaste tu juego, pero ves una ventana emergente: Luego miras la interfaz (usualmente con 'ESC') y ves:
O tal vez obtuviste estos mensajes:
y
Cuando ocurre cualquiera de estas situaciones es por que, ya sea el juego a\u00fan no tiene logros, o es probable que tengas la ROM incorrecta.
Solo para estar seguro, busca el nombre del juego y verifica los resultados que coincidan.
Si el juego tiene logros pero tu ROM no est\u00e1 en nuestro sistema, necesitar\u00e1s encontrar la ROM correcta, u obtener soporte para tu ROM.
Verifica el primer post del hilo oficial del juego en el foro. El enlace para ello se encuentra en la parte inferior de la lista de logros, en las respectivas p\u00e1ginas de los juegos. Ejemplo para Super Mario Bros.:
Probablemente el primer post del hilo oficial del juego en el foro tenga una lista de ROM v\u00e1lidas para el juego, y tambi\u00e9n el \"checksum\" de las ROM.
Nota: el \"checksum\" es un n\u00famero usado para confirmar si dos copias de un archivo son id\u00e9nticas. En RA, lo usamos para asegurar que el jugador est\u00e9 usando la misma ROM que el desarrollador de los logros.
Tambi\u00e9n verifica los \u00faltimos posts del hilo oficial del juego en el foro y los comentarios en la p\u00e1gina del juego en busca de pistas sobre qu\u00e9 ROM necesitas. Si el nombre correcto de la ROM y el \"checksum\" a\u00fan no se encuentran en la lista, deber\u00e1s solicitarlo (por favor, NO PIDAS ENLACES PARA DESCARGAR EL ROM, solo el nombre del archivo y el \"checksum\"). Puedes solicitarlo en la p\u00e1gina del juego en el foro, o pedir ayuda en Discord o en el chat del sitio en la p\u00e1gina principal.
Tambi\u00e9n puedes contribuir a la comunidad obteniendo soporte para tu ROM, si es que es compatible. Publica el \"checksum\" de tu ROM existente en el foro de ese juego y tambi\u00e9n el nombre exacto que tienes para el ROM, y un desarrollador lo revisar\u00e1 contigo para ver si es compatible.
Como encontrar el \"checksum\" de tu ROM.
Para obtener m\u00e1s informaci\u00f3n sobre el \"checksum\" y los hashes, puedes leer este articulo (en Ingl\u00e9s): https://datacrystal.romhacking.net/wiki/Hashes
"},{"location":"My-game-is-not-loading-achievements-es/#listas-completas-de-la-mayoria-de-los-juegos-en-la-base-de-datos-de-retroachievements","title":"Listas completas de la mayor\u00eda de los juegos en la base de datos de RetroAchievements","text":"El usuario caricatur hizo un gran trabajo al compilar algunas listas de ROM vinculadas a los juegos que tenemos en la base de datos en RetroAchievements. Aqu\u00ed est\u00e1n los enlaces a las publicaciones del foro respectivas:
Last 10 changes on this page:
[2019-04-16 15:56] meleu:
fix markdown format[2018-10-11 00:26] CoolCanuck:
https[2018-06-10 09:47] lilbud:
Updated Discord Link[2018-05-30 12:27] ShinyNinetalesTM:
added link to \"comprehensive list\" for NES, as well as done for the english version[2018-05-09 13:13] ShinyNinetalesTM:
Created My game is not loading achievements-es (markdown)Maybe you loaded up your game but you see a popup: Then you check the overlay (typically ESC) and see:
Or maybe you got these messages:
and
When any of these situations happens, either your game doesn't have achievements yet or more likely you have the incorrect ROM.
Just to be sure, search for the game name and check matching results.
If your game has achievements but your ROM isn't in our system either you'll need to find the correct ROM or get support for your ROM.
"},{"location":"My-game-is-not-loading-achievements/#how-do-i-know-if-my-rom-is-compatible","title":"How do I know if my ROM is compatible?","text":"If your ROM has the same checksum/hash as those linked to the website, then it is compatible.
Note: a \"checksum\" or \"hash\" is a number used to confirm if two copies of a file are identical. On RA we use it to assure the player is using the same ROM as the achievement developer.
There are two ways of checking what checksums/hashes are linked to a game:
"},{"location":"My-game-is-not-loading-achievements/#check-the-linked-hashes-page-associated-with-the-game","title":"Check the Linked Hashes page associated with the game","text":"Example for Super Mario Bros. NOTE: You must be logged in to view linked hashes.
You can access this page by clicking the \"Hashes linked to this game\" button in the \"More Info\" section on the game page.
It takes you to a page like this:
"},{"location":"My-game-is-not-loading-achievements/#check-the-top-post-of-the-official-games-forum-thread","title":"Check the top post of the official game's forum thread","text":"The link for it can be found at the bottom of the achievement list on game pages OR in the More Info section. Example for Super Mario Bros.:
The first post of the official game's forum thread usually has a list of valid ROMs for the respective game and also the checksum of the ROMs.
If your ROMs name and checksum aren't listed yet, then you'll need to ask for it (please, do NOT ask for links to download the ROM, only the filename and the checksum). You can request it in the game's forum page or ask for help in Discord or on the site chat on the front page.
Once you make a request, a developer will review it and make sure it works. Then they will add the hash to the 'compatible hashes page.'
"},{"location":"My-game-is-not-loading-achievements/#how-to-find-the-checksum-of-your-rom","title":"How to find the checksum of your ROM:","text":"In the menu bar RetroAchievements
> Get ROM Checksum
For more details about checksum and hashes, read here: https://datacrystal.romhacking.net/wiki/Hashes
"},{"location":"Naming-Conventions/","title":"Naming Conventions","text":""},{"location":"Naming-Conventions/#naming-conventions","title":"Naming Conventions","text":"\u00e9
in Pokemon, as they currently break a few things (like feed). They are also not visible in search without the special character. Same for UTF-8 Universal Emoji codes. Allowed exception: Rich Presence Scripts.Last 10 changes on this page:
[2023-11-28 15:27] televandalist:
Created Naming Conventions (markdown)Before working on new games you must address all open tickets you have. Once you're free of tickets, then go ahead. Tickets are addressed when they are either resolved/closed for a valid reason with a comment on the ticket, or when transferred to reporter and awaiting further information (such as more details, reproduction steps, or save states).
"},{"location":"New-Achievement-Set-Checklist/#2-is-the-game-present-on-the-database","title":"2. Is the game present on the database?","text":""},{"location":"New-Achievement-Set-Checklist/#no","title":"No","text":"Then ask for it to be added on Discord #help-me or on our forums and some dev will add it for you. It's essential you choose the right ROM(s) to work with. If you want to work on a ROM hack, check the achievements for ROM hacks doc first.
"},{"location":"New-Achievement-Set-Checklist/#yes","title":"Yes","text":"Good! Go ahead.
"},{"location":"New-Achievement-Set-Checklist/#3-does-the-game-already-have-an-achievement-set","title":"3. Does the game already have an achievement set?","text":""},{"location":"New-Achievement-Set-Checklist/#yes_1","title":"Yes","text":"If there is an existing set, don't give up. You can still improve it, by adding/removing/reworking achievements, or make changes to titles and images, etc. However you'll need to go through the set revision process.
"},{"location":"New-Achievement-Set-Checklist/#no_1","title":"No","text":"Look deeper. Often there are multiple entries in the database for the same game under different titles. Once you're sure, you'll need to check if there's another dev working on the game.
Note: Only one achievement set is allowed per game per console. For details see working with the right ROM.
"},{"location":"New-Achievement-Set-Checklist/#4-is-another-developer-working-on-the-game","title":"4. Is another developer working on the game?","text":"To be sure if there's another dev working on a game, check the game's claims on the game page. This is needed to avoid conflicts between multiple developers working on the same game.
"},{"location":"New-Achievement-Set-Checklist/#yes_2","title":"Yes","text":"If this is the case, you may not work on the game unless the developer(s) with the claim agree to a collaboration. Do not make a collaboration claim without approval the developer(s) working on the set.
Developers are expected to renew their reservation every three months. Look at the time stamps on the claims history to see when the developer posted a reservation for development. If the developer has not stated or renewed their reservation on the game after three months the claim will expire and then you can make a claim and post your plans to work.
"},{"location":"New-Achievement-Set-Checklist/#no_2","title":"No","text":"Great! You're free to go ahead! The next step is to announce your plans to develop achievements for the game.
"},{"location":"Overlay-Themes/","title":"Overlay Themes","text":"Preview gallery
Default theme file showing all available settings. Must be named theme.json
when placed in overlay
subdirectory.
Last 10 changes on this page:
[2023-04-13 14:56] televandalist:
Renamed \"Downloads\" page to \"Overlay Themes\" since that's all that was left - :lel:Un PauseIf
(PausarSi) puede ser seleccionado en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Mientras sea verdadero, el PauseIf
pausa la actividad de todas las condiciones en el mismo grupo. No pausa condiciones en otros grupos (mas sobre Grupos Alternos (Alt Groups) abajo).
Nota: ten en menta que todas las condiciones en la oracion anterior incluye condiciones ResetIf
! En otras palabras Un ResetIf
no va a funcionar si un PauseIf
esta activo.
Un PauseIf
es usualmente para prevenir hit counts en una situacion especifica (como pausar el juego). Tambien se utiliza cuando quieres mantener los contadores de hits (hit counts) capturados anteriormente, pero no se quiere incrementar o reseatear mientras este sucediendo algo.
PauseIf
con hit counts","text":"Una condicion PauseIf
con un contador de hits (hit count) especifico solo se va a disparar cuando el numero de hits se cumplan. Una vez que el contador de hits (Hit Counts) se cumpla, el grupo se mantiene pausado asta que un ResetIf
en otro grupo sea verdadera o hasta que se reinicie el juego. Un PauseIf
sin un contador de hits (Hit Count) se va a terminar de pausar cuando la condicion ya no sea verdadera.
Last 10 changes on this page:
[2019-03-12 15:00] meleu:
Updated PauseIf Flag ES (markdown)The PauseIf
flag can be chosen in the Flag column of the Achievement Editor.
PauseIf
is usually used to prevent hit counts from going up during a specific situation (like when the game is paused). It's used when you want to keep previously earned hit count, but don't want to increment it or reset it while something else is going on.
When a group is processed, first all PauseIf
are evaluated in order. As soon as any PauseIf
is true, the group stops processing. This means that any PauseIf
s after the true PauseIf
will not be evaluated. This allows one PauseIf
to prevent another PauseIf
from collecting hits, but it's usually better to write the second PauseIf
with an AndNext
to limit when it collects hits.
This also means that any ResetIf
s in the group will not be processed while the group is paused. To reset the hit count on a PauseIf
, you must place the ResetIf
in an alt group or attach a ResetNextIf
to the PauseIf
.
Delta values are not affected by paused groups. The value returned by a delta read will still be from the previous frame, not from the frame just before the group was paused.
"},{"location":"PauseIf-Flag/#pauseif-with-hit-counts","title":"PauseIf
with hit counts","text":"A PauseIf
condition with a hit count target will only trigger when the hit count target is met. Once the hit count target is met, the group remains paused until the hit count is reset by a ResetIf
in another group or a ResetNextIf
attached to the PauseIf
. You may hear this referred to as a PauseLock.
A PauseIf
without a hit count will automatically unpause when the condition is no longer true.
Last 10 changes on this page:
[2022-05-24 18:58] Jamiras:
Updated PauseIf Flag (markdown)[2021-08-07 17:00] Dimedime:
updated interaction with ResetNextIf[2019-02-12 13:13] meleu:
typo[2019-02-12 13:13] meleu:
fix broken link[2019-02-12 09:36] meleu:
Updated PauseIf (markdown)A Prior
value is the previous value at an address. It is similar to Delta, except it's only updated when the current values changes, whereas Delta is updated every frame. Note: when you use Prior
it is implicit that you are referring to an address and not a value.
Examples of how it can be used:
prior level = 6
would only be true if the player isn't currently on level 6, but hasn't been anywhere except the current level since being on level 6. If they came straight from the menu prior level
would likely be 0.Delta is always one frame behind Mem. Prior is only updated when Mem changes.
"},{"location":"Prior-Values/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-01-10 16:03] meleu:
fix markdown link[2021-01-05 10:53] tofof:
fix busted link[2019-06-21 19:03] Jamiras:
Updated Prior Values (markdown)[2019-06-21 19:03] Jamiras:
initial documentationProgression and Win Type conditions are assigned to achievements in a set and used to designate when a game has been beaten. A game is considered when all the following statements are true:
Typing core sets is required for set release. Subsets should not be typed.
"},{"location":"Progression-and-Win-Condition-Guidelines/#how-to-add-types-to-achievements","title":"How To Add Types to Achievements","text":"The following types of achievements are not considered for progression type marking:
These genres often lack standard progression, so have additional guidelines here. They may also feature multiple game modes; see the guidelines above for how to mark Progression for these.
"},{"location":"Progression-and-Win-Condition-Guidelines/#arcade","title":"Arcade","text":"Use the first of the following that is applicable:
Last 10 changes on this page:
[2023-11-17 08:43] Andrew Comer:
Updated Progression and Win Condition Guidelines (markdown)[2023-11-17 08:19] The Mystical One:
Added details on how to apply types to the achievements.[2023-11-06 17:25] Andrew Comer:
More formatting fixes[2023-11-06 17:20] Andrew Comer:
Formatting fixes[2023-11-05 16:36] Andrew Comer:
Remove duplicate bullet points[2023-11-03 14:34] Etron:
Added game links to each example[2023-11-03 08:05] The Mystical One:
Initial Creation based on Progression Typing DraftLast 10 changes on this page:
[2023-11-17 08:43] Andrew Comer:
Updated Progression and Win Condition Guidelines (markdown)[2023-11-17 08:19] The Mystical One:
Added details on how to apply types to the achievements.[2023-11-06 17:25] Andrew Comer:
More formatting fixes[2023-11-06 17:20] Andrew Comer:
Formatting fixes[2023-11-05 16:36] Andrew Comer:
Remove duplicate bullet points[2023-11-03 14:34] Etron:
Added game links to each example[2023-11-03 08:05] The Mystical One:
Initial Creation based on Progression Typing DraftLogging things to be mentioned in the next \"year in review\" article.
"},{"location":"RA-In-Review/#2021","title":"2021","text":""},{"location":"RA-In-Review/#january","title":"January","text":"Developer: RetroS3xual \ud83d\udce5 Download \ud83c\udfa5 Tutorial
Custom Layout: YES Game Information: YES User Information: YES Maintained: YES
"},{"location":"RA-Trackers/#retreon","title":"Retreon","text":"Developer: glacia \ud83d\udce5 Download
Custom Layout: YES Game Information: YES User Information: NO Maintained: NO
"},{"location":"RA-Trackers/#missing-tracker","title":"Missing Tracker","text":"If you have made or use a tracker which is not listed here you can contact the moderation team on the RetroAchievements Discord Server or send a private message to RAdmin including the name of the tracker and the creator of it.
"},{"location":"RABot%2C-the-RA-Discord-Robot/","title":"RABot, the RA Discord Robot","text":"RABot is the the official RetroAchievements Discord robot. Therefore, to interact with him, you need to be a member of the RA Discord server.
RABot has many cool and useful commands and in this page you'll see some examples of how some of them can be used.
RABot is powered by JavaScript, Node.js, discord.js and Commando.
Special thanks: the DragonFire's Xiao bot is a great source of inspiration for many of the cool commands we have in RABot, like !bulbapedia
, !manga
, !translate
, !define
and others.
!help
","text":"This command makes the RABot send a DM with the list of commands available.
If you need help about a specific command use !help command_name
.
!docs
","text":"Provide links to RetroAchievements documentation.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#rarch","title":"!rarch
","text":"Provide basic info about RetroArch.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#rules","title":"!rules
","text":"Show the rules, or a specific one.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#about","title":"!about
","text":"Show info about the RABot.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#panic","title":"!panic
","text":"What to do when the site is down.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#creating-polls","title":"Creating polls","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#poll","title":"!poll
","text":"Creates a simple poll. People can vote adding reactions, but they can also vote with unlisted reactions. See !tpoll
if you are interested in a more advanced and serious poll.
!tpoll
","text":"Creates a timed poll. In this kind of poll only the first reaction is considered a vote, and if people react with an unlisted reaction then the vote is voided.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#dealing-with-numbers","title":"Dealing with numbers","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#hex","title":"!hex
","text":"Converts a non-negative integer from decimal (or binary) to hexadecimal (or vice-versa).
"},{"location":"RABot%2C-the-RA-Discord-Robot/#bin","title":"!bin
","text":"Converts a non-negative integer from decimal (or hexadecimal) to binary (or vice-versa).
"},{"location":"RABot%2C-the-RA-Discord-Robot/#calculator","title":"!calculator
","text":"Alias: !calc
Evaluates the given math expression and responds with the result.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#getting-retroachievementsorg-infolinks","title":"Getting RetroAchievements.org info/links","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#ragame","title":"!ragame
","text":"Alias: !game
Google for a game at RetroAchievements.org and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#tickets","title":"!tickets
","text":"Return the URL for the open tickets page of the given game name.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#whatgame","title":"!whatgame
","text":"Alias: !wg
Responds with a random game that has achievements.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#whatcheevo","title":"!whatcheevo
","text":"Responds with a random achievement.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#random-facts","title":"Random facts","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#funfact","title":"!funfact
","text":"Responds with a retrogaming fun fact.
Note: you can suggest more fun fact entries here.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#memefact","title":"!memefact
","text":"Alias: !meme
Responds with a RetroAchievements meme fact.
Note: you can suggest more meme fact entries here, but keep these 2 simple rules in mind 1) you can't suggest your own quote; and 2) when suggesting a quote, be sure to get an approval from the author and/or the person being mentioned.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#getting-gaming-related-info","title":"Getting gaming related info","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#gamefaqs","title":"!gamefaqs
","text":"Aliases: !gamefaq
, !gfaq
Google for a game at GameFAQs and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#longplay","title":"!longplay
","text":"Aliases: !lplay
, !lp
Search for a longplay video on youtube and post the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#vgmaps","title":"!vgmaps
","text":"Alias: !vgmap
Searches vgmaps.com for a video game's map.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#howlongtobeat","title":"!howlongtobeat
","text":"Alias: !hltb
Google for a game at howlongtobeat.com and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#miscellaneous","title":"Miscellaneous","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#define","title":"!define
","text":"Aliases: !dictionary
, !dict
Defines a word.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#translate","title":"!translate
","text":"Alias: !tr
Translates text to a specific language. Powered by https://translate.yandex.com/
"},{"location":"RABot%2C-the-RA-Discord-Robot/#urban","title":"!urban
","text":"Defines a word, but with Urban Dictionary.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#wikipedia","title":"!wikipedia
","text":"Alias: !wp
Searches Wikipedia for your query.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#youtube","title":"!youtube
","text":"Alias: !yt
Search for a video on youtube and post the first one found.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#bulbapedia","title":"!bulbapedia
","text":"Searches Bulbapedia for your query.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#movie","title":"!movie
","text":"Searches TMDB for your query, getting movie results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#manga","title":"!manga
","text":"Searches AniList for your query, getting manga results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#anime","title":"!anime
","text":"Searches AniList for your query, getting anime results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-01-16 03:48] meleu:
Akinator is :ded:[2019-11-17 22:11] meleu:
akinator command is ded[2019-02-16 13:12] meleu:
remove faq[2019-02-14 11:15] meleu:
typo[2019-01-17 22:36] meleu:
added some aliases[2019-01-17 11:11] meleu:
fixed caps in the page's title!! This page is wildly out-of-date
RALibretro is a multi-emulator that can be used to develop RetroAchievements.
The \"multi-emulation\" feature is only possible because it uses libretro cores to do the actual emulation. What RALibretro does is to connect the emulation to the tools used to create RetroAchievements.
"},{"location":"RALibretro/#warning","title":"WARNING","text":"RALibretro is a Work-in-Progress!!!
Currently the development is going on this repo: https://github.com/RetroAchievements/RALibretro
Here's a list of known issues (feel free to report new issues if you find one): https://github.com/RetroAchievements/RALibretro/issues
"},{"location":"RALibretro/#installation-instructions","title":"Installation Instructions","text":"Just download RALibretro from the Downloads page and unzip it.
"},{"location":"RALibretro/#basic-usage","title":"Basic Usage","text":"File
> Load System
, and click on the system you want to emulateFile
> Load Game
and choose your ROM. Note: RALibretro currently doesn't accept zipped files!NOTE: some systems may require system (BIOS) files in the System
directory in order to load games correctly.
Here is a list of the systems supported currently:
neogeo.zip
BIOS file on the same directory as the ROMs.Note: the buttons for CPS1/2/3 games vary for each game.
"},{"location":"RALibretro/#keyboard-shortcuts","title":"Keyboard Shortcuts","text":"Esc
p
;
(automatically pauses emulation)=
-
(minus signal)PrintScreen
Backspace
F11
F1
, F2
, ..., F9
, F10
shift
+F1
, shift
+F2
, ..., shift
+F9
, shift
+F10
shift
+-
shift
++
0
, 1
, 2
,..., 9
To make AES BIOS emulation mode work in your emulator:
Make sure your emulator works correctly.
Put neogeo.zip
to System
directory (RALibretro), or a folder you keep your NeoGeo ROMs (RetroArch).
Make sure the neogeo.zip
consist of at least files you can see here:
If you keep only those files, AES mode will be automatically forced for any NeoGeo game (recommended).
Important! The files which are highlighted on this picture (neo-epo.bin
and neo-po.bin
) are the only one actually related to AES mode, and you probably will need to include them in your archive to make AES mode work for you. neo-po.bin
is necessary for japanese-only titles or to make the japanese versions to work, but due to emulation issue it also forces japanese language as default, that's why you will need to remove it to display english in some games.
In RaLibretro: Settings->Emulation->Force Neo Geo Mode->AES
In RetroArch: Command->Menu Toggle->Options->Force Neo Geo Mode->AES
"},{"location":"RATools/","title":"RATools","text":""},{"location":"RATools/#about-ratools","title":"About RATools","text":"RATools is a standalone executable designed to assist developers of the retroachievements.org community. It's primary purpose is to provide a scripting language for achievement development.
The user Etron writes an ongoing series of RATools tutorials, which appear in RANews each month.
Many achievement developers' RAScripts are publicly available and are a great resource in becoming more familiar with it: - AlmightyXor - AuburnRDM - Bartis1989 - BenGhazi - Bilalscape12 - Bryan1150 - Etron - FRAN269 - gde - Guinea - Jamiras - lordpsycho - meleu - pinguupinguu - Searo - Sines - SlashTangent - Snow - soopercool101 - suXin - televandalist - theanxietybuster - tomojin - WCopeland - wolfman2000 - zxmega
"},{"location":"RATools/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-09 07:03] televandalist:
Updated RATools (markdown)[2023-06-05 22:55] televandalist:
Created RATools (markdown)Uno de los mejores m\u00e9todos para aprender es ver ejemplos reales. En esta secci\u00f3n vamos a ver profundamente varios logros y vamos a desglosar la l\u00f3gica detr\u00e1s de cada uno de ellos.
- Utilizar Hit Counts como un Temporizador - Utilizando Valores Delta y Hit Counts para detectar un Incremento - Simple Ejemplo de Como Evadir el Abuso de Estados de Guardado (Load State) - Evitar el Problema de que un Contador Incremente Dos Veces en el mismo Frame - Creando un Temporizador con Hits de un ResetIf en base a la velocidad de un Juego
"},{"location":"Real-Examples-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:37] meleu:
fix broken links[2019-04-16 11:13] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Real Examples
Um dos melhores recursos de aprendizagem est\u00e1 em analisar alguns exemplos reais. Nesta se\u00e7\u00e3o, analisaremos profundamente alguns achievements e quebraremos a l\u00f3gica por tr\u00e1s deles.
- Usando Hit Counts e ResetIf - Usando Delta Values e ResetIf - Exemplo Simples de Como Evitar o abuso de Load State
"},{"location":"Real-Examples-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-25 12:04] KingDice001:
Updated Real Examples pt_BR (markdown)[2018-03-25 11:47] KingDice001:
Updated Real Examples pt_BR (markdown)[2018-03-23 22:16] meleu:
Updated Real Examples pt_BR (markdown)[2018-03-23 01:20] meleu:
Updated Real Examples.pt_BR (markdown)One of the best learning resource is looking at some real examples. In this section we will look deep into some achievements and break down the logic behind them. - Using Hit Counts as a Timer - Using Delta Values and Hit Counts to Detect an Increment - Circumvent the Problem of a Counter Incrementing Twice in the Same Frame - Creating a Timer with Reset If Hits based on the Speed of the Game - Using Add Source and Deltas for Collectibles and Similar Achievements
"},{"location":"Real-Examples/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-09-27 15:42] televandalist:
Updated Real Examples (markdown)[2022-02-07 09:42] televandalist:
Corrected typo (wil -> will) - Removed link to the save state abuse example since it doesn't exist[2021-04-27 01:34] televandalist:
ToC fix[2021-01-10 08:33] televandalist:
Added link to Add Source/Delta example[2019-02-18 16:51] meleu:
fix broken links[2018-08-31 21:36] meleu:
Updated Real Examples (markdown)[2018-09-01 01:26] magusLOGS:
Updated Real Examples (markdown)[2018-01-29 10:20] meleu:
added links to the examples[2018-01-29 10:17] meleu:
this page is just a disclaimer, the real examples now have each one its own page[2017-12-11 10:23] meleu:
Updated Real Examples (markdown)If you would like to add support for another region (e.g. adding support for a European ROM when the set was made with the USA ROM) to a set, please note the following: * For the majority of consoles, PAL-region games run at 50hz whereas NTSC runs at 60hz. Without a 60Hz patch, some achievements could be easier to obtain due to the decreased frame-rate. This is especially important for achievements that use frames-as-time in their logic and for leaderboards in general. * Some regions have different cheats. There are many cases where cheat codes were altered or removed upon localization. These should be accounted for. * If there are enough differences between versions, an entirely separate set might be the best option. For more information on this, please see localization differences.
"},{"location":"Reporting-a-Broken-Achievement/","title":"Reporting Broken Achievements","text":"To report a broken achievement, go to the achievement's page. Directly under the players won statistic, you'll see a link reading \"Report an issue for this achievement.\" Click that link to take you to the \"Report Broken Achievement\" form
"},{"location":"Reporting-a-Broken-Achievement/#report-broken-achievement-form","title":"Report Broken Achievement Form","text":"When reporting a broken achievement, please fill out all the fields to the best of your ability. The more information we have on the issue, the better our chances of figuring out what went wrong.
"},{"location":"Reporting-a-Broken-Achievement/#issue","title":"Issue","text":"Select either \"Triggered at wrong time\" or \"Doesn't trigger.\" These are the only two valid reasons for submitting a ticket. If you have criticisms about an achievement, you can post those in the comments. Please Note: If you're submitting a manual unlock request for a network error, there's no need to file a ticket at all. Message RAdmin or post your request in the #Manual-Unlocks channel of our discord, specify that it was a network error and no actual problem with the achievement and we will take care of it for you.
Triggered at wrong time: Select this option if an achievement popped at a time when it shouldn't have.
Doesn't trigger: Select this option if you completed the requirements listed in the description but the achievement didn't trigger.
"},{"location":"Reporting-a-Broken-Achievement/#emulator","title":"Emulator","text":"Select the emulator used in this drop-down menu. If using RetroArch or RALibRetro please also include information about the core used while playing. Checksum: Select your game's checksum here. \"But I don know dis.\" It's very simple. The checksum is like your game's signature. It's how the emulator determines what game and what version of the game you're using. When you have it, you should find it on this drop-down menu. This can be extremely important when looking into a problem so please always try to include this information.
To find your Checksum in RetroArch: Go to the Quick Menu, and scroll down to \"Information.\" Under Information, you should see a line reading \"RetroAchievements Hash.\" That long list of numbers and letters you see is your Checksum.
To find your Checksum in RALibRetro or other RA standalone emulators: Under the \"RetroAchievements\" menu, the very last item on the list is \"Get ROM Checksum.\" Simply click that and it will spit it out at you clear as day.
"},{"location":"Reporting-a-Broken-Achievement/#description","title":"Description","text":"This is the most important field of all. Tell us what happened in as much detail as you possibly can. The less information provided here, the more difficult it is for us to figure out what went wrong. Even details that might seem insignificant to you could be very significant to us. The more you can tell us, the better our chances of being able to figure out why it happened. In other words, \"Dis no werk!\" isn't much help to us in figuring out what the problem was.
"},{"location":"ResetIf-Flag-es/","title":"Bandera ResetIf","text":"Un ResetIf
(ResetearSi) puede ser elegido en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Si la condicion asociada es verdad, todos los hit counts en el logro se van a resetear a 0. Esto incluye hit counts en otros grupos (mas sobre eso en Alt Groups (Grupos Alternos) mas abajo).
El logro no se va a disparar si uno o mas condiciones ResetIf
son verdaderas, incluse si no hay condiciones que necesitan hit counts (contadores de golpes).
Puedes encontrar muchos ejemplos de ResetIf
en la pagina de Ejemplos Reales.
ResetIf
con hit counts","text":"Una condicion Reset If
con un contador de golpes (hit count) solo se va a cumplir cuando el numero de hits necesarios se cumpla.
Nota: Si otra condicion ResetIf
se cumple, todas las condiciones, incluido el ResetIf
con su hit count se van a reinisiar sus contadores de golpes (hit count) a 0.
Es muy comun utilizar una condicion con un hit count de 1 como proceso para empezar a hacer un logro, y utilizar un ResetIf
para cancel el logro antes de la condicion se cumpla. Un ejemplo comun es un logro sin recivir da\u00f1o: \"Desde el principio de el (nivel/combate), resetear si sea recivido da\u00f1o, que salte el logro al final de el (nivel/combate)\". Cuando la condicion para empezar el nivel es verdadera, un hit count es capturado. Si aun sigue capturado cuando la condicion del final es verdadera, el logro va a saltar. Si la condicion del ResetIf
se dispara, el hit count en la condicion de empezar se va a regresar a zero, lo cual hace la condicion falsa cuando quiera evaluar si ya se cumplio la condicion final, y el logro no va a saltar.
Last 10 changes on this page:
[2019-04-16 15:29] meleu:
fix broken links[2019-03-12 15:00] meleu:
Updated ResetIf Flag ES (markdown)The ResetIf
can be chosen in the Flag column of the Achievement Editor
If the associated condition is true, all hit counts in the achievement will be reset to 0. This includes hit counts in other groups (more about it in Alt Groups below).
The achievement will not trigger if one or more ResetIf
conditions is true, even if there are no conditions with hit count targets.
You can see many examples of ResetIf
in the Real Examples page.
ResetIf
with hit counts","text":"A Reset If
condition with a hit count will only trigger when the hit count target is met.
Note: If another ResetIf
condition is met, all conditions, including the ResetIf
with the hit count will have their hit counts reset to 0.
It is very common to use a condition with a hit count of 1 as a start marker for an achievement, and use a ResetIf
to cancel the achievement before the end condition is met. A common example is a damageless achievement: \"From start of (level/battle), reset if damage taken, trigger at end of (level/battle)\". When the start condition is true, a hit count is captured. If it's still set when the end condition is true, the achievement triggers. If the ResetIf
condition triggers, the hit count on the start condition is set back to zero, which makes the condition false when evaluating the state when the end condition is true, and the achievement will not trigger.
Last 10 changes on this page:
[2019-02-12 13:11] meleu:
fix broken links[2019-02-12 09:36] meleu:
Updated ResetIf (markdown)The ResetNextIf
Flag is a special version of the [[ResetIf Flag]] that only resets the hit count of the following condition.
ResetNextIf
has the same priority as the condition that it's attached to. If followed by a PauseIf
, it can be used to reset that specific PauseIf
without needing an alt. If attached to a standard condition, it will not be processed if the achievement is paused.
AddAddress
, AddSource
, and SubSource
are combining modifier conditions and are not considered as the following condition. The ResetNextIf
will apply to the next non-modified condition.
AndNext
and OrNext
are combining logical conditions and will have their hit counts reset, as well as whatever condition follows them.
All other condition flags, including AddHits
and SubHits
, will cause processing of the ResetNextIf
behavior to stop.
Last 10 changes on this page:
[2021-08-12 10:28] Jamiras:
Updated ResetNextIf Flag (markdown)[2021-04-30 12:21] Jamiras:
Created ResetNextIf Flag (markdown)Este es el Manifiesto de RetroAchievements del cual todo miembro de la comunidad deber\u00eda ser consciente
Desde los primeros d\u00edas de RetroAchievements, esto es lo que tenemos en nuestro FAQ como la respuesta de \u00bfQue es RetroAchievements.org?
RetroAchievements.org es una comunidad sin animo de lucros que colabora y compite para ganar logros personalizados en juegos cl\u00e1sicos a trav\u00e9s de la emulaci\u00f3n. Los logros son hechos por y para la comunidad. (...)
En este manifiesto exploraremos esa respuesta de manera mas profunda.
"},{"location":"RetroAchievements-Manifesto-es/#retroachievements-es-una-comunidad-sin-animo-de-lucro","title":"RetroAchievements es una comunidad sin animo de lucro.","text":"Tenemos un enlace de donaciones en la pagina principal pero aun seguimos siendo una una comunidad sin animo de lucro.
Nuestros patrocinadores contribuyen con literalmente un dolar al mes, y afortunadamente tenemos suficiente para pagar el servidor sin necesitar anuncios molestos
Sin embargo, queremos dejar bien claro que obtener donaciones no es nuestro modelo de negocios, exactamente debido a que \u00a1RetroAchievements no es un negocio!
Organizaciones de negocios esperan ansiosamente la llegada de nuevos clientes. Siempre hacen todo lo posible por complacer a la clientela para seguir obteniendo mas y mas. Pero ac\u00e1, en RetroAchievements, no somos un negocio, Somos una comunidad.
No tenemos clientes, tenemos miembros de la comunidad.
Somos un grupo de personas apasionadas a los juegos retro. Y si compartes nuestra misma pasi\u00f3n, eres bienvenido a un\u00edrtenos.
E incluso aunque recibamos a todos, no estamos rogando desesperadamente por la llegada de mas y mas usuarios. La decisi\u00f3n es tuya: Si te gusta lo que ofrecemos \u00a1Toma tu control y juguemos algunos cl\u00e1sicos!
"},{"location":"RetroAchievements-Manifesto-es/#los-logros-son-hechos-por-y-para-la-comunidad","title":"Los logros son hechos por y para la comunidad.","text":"Esta relacionado con lo que dijimos mas arriba. No ofrecemos servicios a forasteros. Las cosas que creamos en esta comunidad son hechas para la misma. Eres bienvenido a permanecer con nosotros, pero va de tu parte decidir si quieres ser parte de ella.
Mientras seas parte de esta comunidad, siempre ten en mente las siguientes declaraciones:
1. Lo mas importante que tenemos son los logros.
2. Las personas mas importantes que tenemos son los creadores de logros.
\u00bfQue significa esto?
"},{"location":"RetroAchievements-Manifesto-es/#lo-mas-importante-que-tenemos-son-los-logros","title":"Lo mas importante que tenemos son los logros.","text":"A todos nos encantan las medallas en nuestro perfil, \u00bfno? Tanto as\u00ed que causa frustraci\u00f3n cuando el set de respectiva medalla obtiene una revisi\u00f3n. Pero es importante tener en mente que este proyecto siempre esta evolucionando.
Hacemos revisiones de sets de logros con la calidad en mente, y para demostrar que respetamos el juego. Tambi\u00e9n respetamos los premios que has obtenido, pero mejorar la calidad general del proyecto toma precedencia sobre perfiles individuales y/o la cantidad de puntos.
Otra cosa, sino eres capaz de hacerle \"mastered\" a un set de logros, eso no autom\u00e1ticamente significa que el set necesita ser hecho mas f\u00e1cil/degradado/convertirse en bonus. Si otros jugadores lo han obtenido, es muy probable que tu tambi\u00e9n puedas. Pero incluso si no puedes, no pasa nada. No necesitas desbloquear todos los logros para divertirte con juegos antiguos
Si aun as\u00ed piensas que alg\u00fan logro en el set tiene conceptos no bienvenidos, puedes hacer un post de tus argumentos en el foro del juego en cuesti\u00f3n. Simplemente aseg\u00farate de ser respetuoso. Lo que nos lleva al siguiente punto...
"},{"location":"RetroAchievements-Manifesto-es/#las-personas-mas-importantes-que-tenemos-son-los-creadores-de-logros","title":"Las personas mas importantes que tenemos son los creadores de logros.","text":"\u00a1No se malentienda! En el ecosistema de RetroAchievements hay muchas personas cumpliendo una buena cantidad de roles diferentes a crear logros, y todos son importantes. Pero los creadores de logros son el pilar de este proyecto. Sin ellos, este seria solamente un sitio web jugando a ser anticuado con un manojo de \"bugs\".
Crear logros es un proceso que toma mucho tiempo. Las personas que lo hacen dedican una muy buena parte de su tiempo libre para producir contenido beneficioso para toda la comunidad
A todas estas, incluso si no eres capaz/estas interesado en crear logros y solamente quieres jugar, tambi\u00e9n eres importante para nosotros. De hecho tenemos una cantidad incontable de jugadores que son miembros invaluables
Mientras mas involucrado est\u00e9s, mas valioso eres para la comunidad.
Por ultimo pero no menos importante, si tienes criticas hacia el trabajo de un creador de logros, se respetuoso. Demostrar amargura hacia ellos esta muy mal visto. Ser irrespetuoso hacia ellos har\u00e1 que definitivamente no seas bienvenido aqu\u00ed.
"},{"location":"RetroAchievements-Manifesto-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-09-20 18:35] meleu:
estan -> son[2020-09-16 12:36] meleu:
cambiando un poquito[2020-09-11 02:49] Pelouch:
Updated RetroAchievements Manifesto es (markdown)[2020-09-11 02:43] Pelouch:
Updated RetroAchievements Manifesto es (markdown)[2020-09-10 04:24] meleu:
Created RetroAchievements Manifesto es (markdown)Ceci est le manifeste de Retroachievements. Chaque membre de cette communaut\u00e9 devrait en prendre connaissance.
Depuis les premiers jours de RetroAchievements, la r\u00e9ponse \u00e0 la question de ce qu\u2019est Retroachievements.org se trouve dans notre FAQ.
RetroAchievements.org est une communaut\u00e9 \u00e0 but non lucratif qui promeut le travail collaboratif et l\u2019esprit de comp\u00e9tition dans le but d\u2019obtenir des succ\u00e8s faits soi-m\u00eame via la sc\u00e8ne de l\u2019\u00e9mulation. Les succ\u00e8s sont cr\u00e9\u00e9s pour et par la communaut\u00e9. (\u2026)
\u00c0 travers ce manifeste, nous allons r\u00e9pondre de mani\u00e8re plus pr\u00e9cise \u00e0 cette question.
"},{"location":"RetroAchievements-Manifesto-fr/#retroachievementsorg-est-une-communaute-a-but-non-lucratif","title":"RetroAchievements.org est une communaut\u00e9 \u00e0 but non lucratif.","text":"Nous disposons d'un syst\u00e8me de donations sur la page principal du site, mais nous restons avant tout une communaut\u00e9 \u00e0 but non lucratif.
Les m\u00e9c\u00e8nes participent \u00e0 hauteur d\u2019un seul et unique dollar par mois et heureusement, nous en avons suffisamment pour payer les serveurs sans avoir besoin de mettre en place un syst\u00e8me p\u00e9nible de publicit\u00e9s.
Cependant, nous voulons \u00eatre clair sur un point. Recevoir des donations n\u2019est pas notre business model, justement car RetroAchievements n\u2019est pas un business !
Une entreprise commerciale est toujours d\u00e9sireuse de capter toujours plus de clients. Elle fait le maximum pour les satisfaire pour en ramener toujours plus. Mais ici, chez RetroAchievements, nous ne sommes pas une entreprise, nous sommes une communaut\u00e9.
Nous n\u2019avons pas de clients, nous sommes les membres d\u2019une communaut\u00e9.
Nous sommes tout un tas de passionn\u00e9s de jeux vid\u00e9o r\u00e9tro. Et si vous partagez cette m\u00eame passion, alors vous \u00eates plus que le bienvenu pour nous rejoindre.
Bien que nous accueillions quiconque le souhaite, nous ne courrons pas d\u00e9sesp\u00e9r\u00e9ment apr\u00e8s de nouveaux membres. C\u2019est \u00e0 votre demande : si vous aimez ce que nous avons \u00e0 offrir, attrapez votre manette et jouez \u00e0 des classiques !
"},{"location":"RetroAchievements-Manifesto-fr/#les-succes-sont-faits-par-et-pour-la-communaute","title":"Les succ\u00e8s sont faits par et pour la communaut\u00e9.","text":"Tout ceci pour dire que nous ne sommes pas l\u00e0 pour offrir un service \u00e0 des tiers. Les choses que nous cr\u00e9ons au sein de cette communaut\u00e9 ne concernent que cette communaut\u00e9. Vous \u00eates le bienvenu, mais c\u2019est \u00e0 vous de d\u00e9cider d\u2019en faire partie.
Et tant que nous parlons de communaut\u00e9, gardez \u00e0 l\u2019esprit ces quelques points :
La chose la plus importante ici sont les succ\u00e8s.
Les personnes les plus importantes sont les cr\u00e9ateurs de succ\u00e8s.
Qu\u2019est-ce que cela signifie ?
"},{"location":"RetroAchievements-Manifesto-fr/#la-chose-la-plus-importante-ici-sont-les-succes","title":"La chose la plus importante ici sont les succ\u00e8s.","text":"Nous adorons tous ces badges sur notre profil, non ? Un tel attachement peut engendrer parfois de la frustration lorsqu\u2019une modification est apport\u00e9e \u00e0 une s\u00e9rie de succ\u00e8s. Mais il est important de garder \u00e0 l\u2019esprit que ce projet est en constante \u00e9volution.
Nous apportons des modifications aux s\u00e9ries de succ\u00e8s avec un objectif de qualit\u00e9 et pour faire preuve de respect envers le jeu. Nous respectons \u00e9galement les r\u00e9compenses que vous avez obtenues, mais am\u00e9liorer la qualit\u00e9 globale du projet prend le pas sur les profils individuels et ou le total de points de chacun.
\u00c9galement, si vous ne ma\u00eetrisez pas une s\u00e9rie de succ\u00e8s, cela ne veut pas forc\u00e9ment dire que le niveau de difficult\u00e9 doit \u00eatre abaiss\u00e9 ou les succ\u00e8s retir\u00e9s ou bascul\u00e9s dans une s\u00e9rie bonus. Si d\u2019autres joueurs sont capables de les avoir, il est probable que vous le puissiez aussi. Mais si ce n\u2019est pas le cas, ce n\u2019est pas grave non plus. Il n\u2019est pas n\u00e9cessaire de d\u00e9bloquer tous les succ\u00e8s existants pour prendre du plaisir avec les jeux r\u00e9tro.
Si vous pensez tout de m\u00eame qu\u2019un succ\u00e8s rel\u00e8ve d\u2019un concept qui n\u2019est pas le bienvenu, vous pouvez poster vos arguments sur le forum d\u00e9di\u00e9 \u00e0 ce jeu. Faites simplement preuve de respect dans votre formulation. Ce qui nous am\u00e8ne au prochain point\u2026
"},{"location":"RetroAchievements-Manifesto-fr/#les-personnes-les-plus-importantes-sont-les-createurs-de-succes","title":"Les personnes les plus importantes sont les cr\u00e9ateurs de succ\u00e8s.","text":"Ne vous trompez pas ! L\u2019\u00e9cosyst\u00e8me Retroachievements dispose de beaucoup de gens, jouant chacun des r\u00f4les diff\u00e9rents du cr\u00e9ateur de succ\u00e8s, et ils sont tous aussi importants. Mais le cr\u00e9ateur de succ\u00e8s est l\u2019\u00e9pine dorsale du projet. Sans lui, il s\u2019agit juste d\u2019un site Internet archa\u00efque et plein de bugs.
Cr\u00e9er des succ\u00e8s est une activit\u00e9 extr\u00eamement chronophage. Les personnes qui s\u2019en occupent, consacrent une part non n\u00e9gligeable de leur temps libre \u00e0 produire du contenu au b\u00e9n\u00e9fice de la communaut\u00e9 tout enti\u00e8re.
Quoi qu\u2019il en soit, m\u00eame si vous n\u2019\u00eates pas capable/int\u00e9ress\u00e9 par la cr\u00e9ation de succ\u00e8s et souhaitez juste jouer, vous \u00eates tout aussi important \u00e0 nos yeux. En fait, de nombreux simples joueurs sont de pr\u00e9cieux membres de notre communaut\u00e9. Le point important ici \u00e9tant d\u2019\u00eatre impliqu\u00e9 et agr\u00e9able.
Plus vous vous impliquerez, plus vous serez pr\u00e9cieux aux yeux de la communaut\u00e9.
Enfin et surtout, si vous deviez \u00e9mettre des critiques \u00e0 l\u2019\u00e9gard du travail d\u2019un cr\u00e9ateur, faites-le dans le respect. \u00catre acerbe avec eux est tr\u00e8s mal vu. Manquez-leur de respect et vous ne serez d\u00e9finitivement plus le bienvenu.
"},{"location":"RetroAchievements-Manifesto-pl/","title":"RetroAchievements Manifesto pl","text":"To jest Or\u0119dzie RetroAchievements, kt\u00f3re ka\u017cdy cz\u0142onek spo\u0142eczno\u015bci powinien zna\u0107
Od pocz\u0105tku istnienia RetroAchievements to jest nasza odpowied\u017a z FAQ na temat Czym jest RetroAchievements.org?
RetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit, kt\u00f3ra wsp\u00f3\u0142pracuje i rywalizuje \u017ceby zyska\u0107 w\u0142asne osi\u0105gni\u0119cia do klasycznych gier poprzez emulacje, osi\u0105gni\u0119cia s\u0105 tworzone przez i dla spo\u0142eczno\u015bci. (...)
W tym Or\u0119dziu zobaczymy w g\u0142\u0105b tej odpowiedzi
"},{"location":"RetroAchievements-Manifesto-pl/#retroachievementsorg-jest-spoecznoscia-non-profit","title":"RetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit","text":"Mamy link do dotacji na stronie g\u0142\u00f3wnej, lecz ci\u0105gle jeste\u015bmy spo\u0142eczno\u015bci\u0105 non-profit
Patroni daj\u0105 dos\u0142ownie jednego dolara miesi\u0119cznie, a na szcz\u0119\u015bcie mamy wystarczaj\u0105co patron\u00f3w aby op\u0142aci\u0107 serwer bez polegania na irytuj\u0105cych reklamach
Lecz, chcemy aby to by\u0142o oczywiste, \u017ce zdobywanie dotacji to nie nasz model biznesowy, poniewa\u017c RetroAchievements.org to nie jest biznes!
Organizacje s\u0105 zawsze ch\u0119tne zyska\u0107 nowych klient\u00f3w. Robi\u0105 co chc\u0105 aby zadowoli\u0107 klienta, aby zyskiwa\u0107 ich wi\u0119cej i wi\u0119cej, lecz tu na RetroAchievements nie jeste\u015bmy organizacj\u0105, My jeste\u015bmy spo\u0142eczno\u015bci\u0105.
My nie mamy klient\u00f3w, my mamy cz\u0142onk\u00f3w spo\u0142eczno\u015bci.
Jeste\u015bmy grupk\u0105 ludzi z pasj\u0105 to gier retro. Je\u015bli masz tak\u0105 sam\u0105 pasj\u0119, ciep\u0142o cie przywitamy.
Mimo i\u017c przyjmujemy wszystkich, nie b\u0142agamy desperacko o nowych u\u017cytkownik\u00f3w. To tw\u00f3j wyb\u00f3r, je\u017celi podoba ci si\u0119 oferta kt\u00f3r\u0105 mamy, chwy\u0107 za pada i zagrajmy w klasyki!
"},{"location":"RetroAchievements-Manifesto-pl/#osiagniecia-stworzone-sa-przez-i-dla-spoecznosci","title":"Osi\u0105gni\u0119cia stworzone s\u0105 przez i dla spo\u0142eczno\u015bci.","text":"To jest powi\u0105zane z tym to by\u0142o podane powy\u017cej. Nie oferujemy us\u0142ugi dla os\u00f3b z zewn\u0105trz. Rzeczy kt\u00f3re tworzymy w tej spo\u0142eczno\u015bci nale\u017c\u0105 do tej samej spo\u0142eczno\u015bci. Mo\u017cesz z nami zosta\u0107, ale to tw\u00f3j wyb\u00f3r, czy chcesz by\u0107 jej cz\u0119\u015bci\u0105.
Podczas bycia cz\u0119\u015bci\u0105 tej spo\u0142eczno\u015bci, pami\u0119taj poni\u017csze o\u015bwiadczenia:
1. Najwa\u017cniejsz\u0105 rzecz\u0105 jak\u0105 tu mamy s\u0105 osi\u0105gni\u0119cia.
2. Najwa\u017cniejszymi osobami s\u0105 tw\u00f3rcy osi\u0105gni\u0119\u0107.
Co to znaczy?
"},{"location":"RetroAchievements-Manifesto-pl/#najwazniejsza-rzecza-jaka-tu-mamy-sa-osiagniecia","title":"Najwa\u017cniejsz\u0105 rzecz\u0105 jak\u0105 tu mamy s\u0105 osi\u0105gni\u0119cia.","text":"Wszyscy kochamy te odznaki na naszej stronie profilowej, racja? Te przywi\u0105zanie do odznaki czasem powoduje irytacje kiedy szczeg\u00f3lny zestaw osi\u0105gni\u0119\u0107 przejdzie przez rewizje. Wa\u017cne jest pami\u0119ta\u0107 \u017ce ten projekt ci\u0105gle ewoluuje.
Robimy Rewizje do zestaw\u00f3w osi\u0105gni\u0119\u0107 z my\u015bl\u0105 o jako\u015bci, i \u017ceby odda\u0107 szacunek grze. Szanujemy r\u00f3wnie\u017c nagrody kt\u00f3re posiadasz, lecz polepszanie jako\u015bci projektu jest wa\u017cniejsze od naszych stron profilowych lub liczby punkt\u00f3w.
R\u00f3wnie\u017c, je\u015bli nie jeste\u015b zdolny opanowa\u0107 zestaw osi\u0105gni\u0119\u0107, to nie znaczy \u017ce automatycznie powinien by\u0107 u\u0142atwiony/zdj\u0119ty/przeniesiony do bonusowego zestawu. Je\u017celi innym graczom si\u0119 uda\u0142o, jest prawdopodobne \u017ce ci si\u0119 te\u017c mo\u017ce uda\u0107. Lecz je\u015bli nie mo\u017cesz, jest okej. Nie musisz odblokowa\u0107 ka\u017cdego osi\u0105gni\u0119cia aby mie\u0107 frajd\u0119 z starych gier.
Je\u017celi ci\u0105gle my\u015blisz \u017ce zestaw osi\u0105gni\u0119\u0107 ma niechciany koncept, mo\u017cesz napisa\u0107 swoje argumenty w temacie gry na forum. Tylko pisz z szacunkiem, co prowadzi nas do kolejnego punktu...
"},{"location":"RetroAchievements-Manifesto-pl/#najwazniejszymi-osobami-sa-tworcy-osiagniec","title":"Najwa\u017cniejszymi osobami s\u0105 tw\u00f3rcy osi\u0105gni\u0119\u0107.","text":"Nie przyjmij tego \u017ale! Ekosystem RetroAchievements ma wiele os\u00f3b, kt\u00f3rzy maj\u0105 inne role ni\u017c tw\u00f3rca osi\u0105gni\u0119\u0107 i s\u0105 oni wszyscy wa\u017cni. lecz tw\u00f3rcy osi\u0105gni\u0119\u0107 s\u0105 podstaw\u0105 tego projektu. Bez nich, to jest tylko stara i zbugowana strona.
Tworzenie osi\u0105gni\u0119\u0107 to proces zajmuj\u0105cy mas\u0119 czasu. Osoby dedykuj\u0105 spor\u0105 cz\u0119\u015b\u0107 swojego wolnego czasu produkuj\u0105c zawarto\u015b\u0107 na korzy\u015b\u0107 ca\u0142ej spo\u0142eczno\u015bci
Nawet je\u015bli nie jeste\u015b zdolny lub nie chcesz tworzy\u0107 osi\u0105gni\u0119\u0107, a chcesz tylko sobie pogra\u0107, jeste\u015b r\u00f3wnie\u017c wa\u017cny dla nas. Mamy wielu graczy kt\u00f3rzy s\u0105 warto\u015bciowymi cz\u0142onkami. Punktem kluczowym jest bycie mi\u0142ym i staranie si\u0119
Tym bardziej si\u0119 przyk\u0142adasz, tym bardziej jeste\u015b warto\u015bciowy dla naszej spo\u0142eczno\u015bci.
Na koniec, je\u015bli masz krytyk\u0119 na temat pracy tw\u00f3rcy osi\u0105gni\u0119\u0107, uszanuj ich. okazywanie rozgoryczenia jest nie mile widziane. Gdy b\u0119dziesz niemi\u0142y wobec nich, za d\u0142ugo tu nie zostaniesz
"},{"location":"RetroAchievements-Manifesto-pt_BR/","title":"O Manifesto RetroAchievements","text":"Este \u00e9 o Manifesto RetroAchievements e todo membro desta comunidade DEVE estar ciente disso.
Desde os prim\u00f3rdios do RetroAchievements, isto \u00e9 o que temos no nosso FAQ como resposta para O que \u00e9 o RetroAchievements.org?
RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos que colabora e compete para ganhar conquistas personalizadas em jogos cl\u00e1ssicos atrav\u00e9s de emula\u00e7\u00e3o. As conquistas s\u00e3o criadas pela e para a comunidade. (...)
Neste manifesto n\u00f3s vamos nos aprofundar nessa resposta.
"},{"location":"RetroAchievements-Manifesto-pt_BR/#retroachievementsorg-e-uma-comunidade-sem-fins-lucrativos","title":"RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos","text":"N\u00f3s temos um link de doa\u00e7\u00f5es na nossa p\u00e1gina principal, mas ainda assim n\u00f3s somos uma comunidade sem fins lucrativos.
Os patronos contribuem com, literalmente, um d\u00f3lar (1 USD) por m\u00eas e, felizmente, n\u00f3s temos patronos suficiente para pagar o servidor sem que precisemos recorrer aos an\u00fancios irritantes.
No entanto, queremos deixar bem claro que obter doa\u00e7\u00f5es n\u00e3o \u00e9 o nosso modelo de neg\u00f3cio pelo exato motivo de que RetroAchievements n\u00e3o \u00e9 um neg\u00f3cio!
Organiza\u00e7\u00f5es de neg\u00f3cios est\u00e3o sempre ansiosas para obter mais e mais clientes. Elas fazem o que elas podem para agradar os clientes e continuar obtendo cada vez mais. Mas aqui, no RetroAchievements, n\u00f3s n\u00e3o somos um neg\u00f3cio, n\u00f3s somos uma comunidade.
N\u00e3o temos clientes, n\u00f3s temos membros da comunidade.
N\u00f3s somos um grupo de pessoas apaixonadas por retrogames. E se voc\u00ea compartilhar da mesma paix\u00e3o, voc\u00ea \u00e9 muito bem vindo a se juntar a n\u00f3s!
Embora estejamos de portas abertas para receber bem qualquer um, n\u00f3s n\u00e3o estamos desesperadamente implorando por mais usu\u00e1rios. Cabe a voc\u00ea decidir: se voc\u00ea gosta do que n\u00f3s temos a oferecer, pegue o seu joystick e vamos jogar alguns cl\u00e1ssicos!
"},{"location":"RetroAchievements-Manifesto-pt_BR/#conquistas-sao-feitas-pela-e-para-a-comunidade","title":"Conquistas s\u00e3o feitas pela e para a comunidade","text":"Isto est\u00e1 relacionada com o que foi dito acima. N\u00f3s n\u00e3o estamos oferecendo um servi\u00e7o para pessoas de fora. As coisas que criamos nesta comunidade s\u00e3o para esta mesma comunidade. Voc\u00ea \u00e9 bem-vindo a ficar com a gente, mas cabe a voc\u00ea decidir se quer ser parte disso.
E enquanto fizer parte desta comunidade, tenha sempre em mente as seguintes afirma\u00e7\u00f5es:
1. A coisa mais importante que n\u00f3s temos aqui s\u00e3o as conquistas.
2. As pessoas mais importantes que n\u00f3s temos aqui s\u00e3o os criadores de conquistas.
E o que isso significa? Abaixo, abordaremos de forma mais detalhada cada conceito e os motivos de serem t\u00e3o fundamentais:
"},{"location":"RetroAchievements-Manifesto-pt_BR/#a-coisa-mais-importante-que-nos-temos-aqui-sao-as-conquistas","title":"A coisa mais importante que n\u00f3s temos aqui s\u00e3o as conquistas","text":"N\u00f3s todos amamos aquelas ins\u00edgnias na nossa p\u00e1gina do perfil, certo? Tal apego aquela ins\u00edgnia, \u00e0s vezes, causa frustra\u00e7\u00e3o quando a respectiva cole\u00e7\u00e3o de conquistas recebe uma revis\u00e3o, mas \u00e9 importante ter em mente que este projeto est\u00e1 constantemente evoluindo.
N\u00f3s fazemos revis\u00f5es nas conquistas tendo em mente a qualidade e para mostrar verdadeiro respeito pelo jogo. Tamb\u00e9m respeitamos os trof\u00e9us que voc\u00ea obteve, mas melhorar a qualidade geral do projeto tem preced\u00eancia sobre nossas p\u00e1ginas de perfil e/ou quantidade de pontos.
Al\u00e9m disso, se voc\u00ea n\u00e3o for capaz de obter todas as conquistas de um jogo, isso n\u00e3o significa automaticamente que elas precis\u00e3o ser suavizadas/removidas/se tornarem conquistas b\u00f4nus. Se outros jogadores obtiveram aquelas conquistas, \u00e9 prov\u00e1vel que voc\u00ea tamb\u00e9m consiga. Contudo, se voc\u00ea n\u00e3o consegue, est\u00e1 tudo bem tamb\u00e9m. Voc\u00ea n\u00e3o precisa desbloquear todas as conquistas para continuar se divertindo com jogos antigos.
Se ainda assim voc\u00ea acha que a cole\u00e7\u00e3o de conquistas possui conceitos indesej\u00e1veis, voc\u00ea pode postar seus argumentos no f\u00f3rum no t\u00f3pico do jogo. Apenas certifique-se de ser respeitoso em suas palavras. O que nos leva ao pr\u00f3ximo ponto...
"},{"location":"RetroAchievements-Manifesto-pt_BR/#as-pessoas-mais-importantes-que-nos-temos-aqui-sao-os-criadores-de-conquistas","title":"As pessoas mais importantes que n\u00f3s temos aqui s\u00e3o os criadores de conquistas","text":"N\u00e3o nos entenda mal! O ecossistema do RetroAchievements tem muitas pessoas executando muitos papeis diferentes de criar conquistas \u2014 e elas s\u00e3o todas importantes. Os criadores de conquistas s\u00e3o a espinha dorsal desse projeto. Sem eles, isso aqui \u00e9 apenas um site bugado e antiquado.
Cria\u00e7\u00e3o de conquistas \u00e9 uma atividade que consome muito tempo. As pessoas que fazem isso dedicam uma grande parte do seu tempo livre produzindo conte\u00fado em prol de toda a comunidade.
De qualquer forma, mesmo que voc\u00ea n\u00e3o consiga ou n\u00e3o esteja interessado em criar conquistas e queira apenas jogar, voc\u00ea tamb\u00e9m \u00e9 importante para n\u00f3s! Na verdade n\u00f3s temos in\u00fameros jogadores que s\u00e3o membros muito valiosos. O ponto-chave aqui \u00e9: envolva-se e seja legal.
Quanto mais voc\u00ea se envolve, mais valioso voc\u00ea \u00e9 para a comunidade.
Por \u00faltimo, mas n\u00e3o menos importante, se voc\u00ea tiver cr\u00edticas sobre o trabalho dos criadores de conquistas, seja respeitoso. Demonstrar hostilidade em rela\u00e7\u00e3o a eles \u00e9 fortemente desaprovado. Seja desrespeitoso com eles e voc\u00ea definitivamente n\u00e3o ser\u00e1 bem-vindo aqui.
"},{"location":"RetroAchievements-Manifesto-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 08:14] meleu:
fix links[2020-09-16 12:32] meleu:
reverting small changes[2020-09-16 12:29] meleu:
Revert 4f2de8f85aecad218d3d7bb533c9b7eb343de796...c175774b3077e1d3bc3d0e794e126a8febb143ff on RetroAchievements Manifesto pt_BR[2020-09-10 04:12] Alexandre Gadelha:
Movido a se\u00e7\u00e3o 3 como item 4 da se\u00e7\u00e3o 2.[2020-09-10 04:05] Alexandre Gadelha:
Pequena edi\u00e7\u00e3o final[2020-09-10 04:04] Alexandre Gadelha:
Adi\u00e7\u00e3o do item 3 na se\u00e7\u00e3o 2 (Conquistas s\u00e3o feitas pela e para a comunidade). Adi\u00e7\u00e3o da se\u00e7\u00e3o 3. Melhorias quanto a ortografia.[2020-09-10 02:55] Alexandre Gadelha:
Pequenas edi\u00e7\u00f5es[2020-09-10 02:43] Alexandre Gadelha:
Arrumado os erros de ortografia e erros de digita\u00e7\u00e3o[2020-09-10 01:47] meleu:
Updated The RetroAchievements Manifesto pt_BR (markdown)[2020-09-10 01:47] meleu:
Destroyed RetroAchievements Manifesto pt_BR (markdown)This is the RetroAchievements Manifesto and every member of this community should be aware of this.
Since the early days of RetroAchievements, this is what we have in our FAQ as the answer for What is RetroAchievements.org?
RetroAchievements.org is a zero profit community who collaborate and compete to earn custom-made achievements in classic games through emulation. Achievements are made by and for the community. (...)
In this manifesto we're going to go deeper into that answer.
"},{"location":"RetroAchievements-Manifesto/#retroachievementsorg-is-a-zero-profit-community","title":"RetroAchievements.org is a zero profit community","text":"We do have a donation link on our frontpage, but we're still a zero profit community.
The patrons contribute with literally one dollar per month, and fortunately we have enough patrons to pay for server expenses without needing to rely on annoying adverts.
However, we want to make very clear that getting donations is not our business model, exactly because RetroAchievements is not a business!
Business organizations are always eager to get more customers. They do what they can to please the customers and keep getting more and more of them. But here, at RetroAchievements, we are not a business, we are a community.
We don't have customers, we have community members.
We are a bunch of people passionate about retrogames. And if you share the same passion, you're very welcome to join us.
Although we're welcoming anyone, we're not desperately begging for more and more users. It's your call: if you like what we have to offer, pick your gamepad and let's play some classics!
"},{"location":"RetroAchievements-Manifesto/#achievements-are-made-by-and-for-the-community","title":"Achievements are made by and for the community.","text":"It's related to what was said above. We are not offering a service for outsiders. The things we create in this community are for this very same community. You're welcome to stay with us, but it's up to you to decide if you want to be part of it.
And while being part of this community, always keep in mind the following statements:
1. The most important thing we have here are the achievements.
2. The most important people we have here are the achievement creators.
What does that mean?
"},{"location":"RetroAchievements-Manifesto/#the-most-important-thing-we-have-here-are-the-achievements","title":"The most important thing we have here are the achievements.","text":"We all love those badges on our profile page, right? Such attachment to that badge sometimes causes frustration when the respective achievement set get a revision. But it's important to keep in mind that this project is constantly evolving.
We make achievement set revisions with quality in mind, and to show actual respect for the game. We also have respect for the awards you got, but improving the overall quality of the project has precedence over our individual profile pages and/or our amount of points.
Also, if you're not able to master an achievement set it doesn't automatically mean that it needs to be nerfed/demoted/turned into a bonus set. If other players got that, it's probable you can get that too. But if you can't, it's OK too. You don't need to unlock every achievement to keep having fun with old games.
If you still think the achievement set has unwelcome concepts, you can post your arguments in the game's forum topic. Just be sure to be respectful in your words. Which brings us to the next point...
"},{"location":"RetroAchievements-Manifesto/#the-most-important-people-we-have-here-are-the-achievement-creators","title":"The most important people we have here are the achievement creators.","text":"Don't get it wrong! The RetroAchievements ecosystem has a lot of people, playing many different roles than creating achievements, and they are all important. But the achievement creators are the backbone of this project. Without them, this is just a buggy and old fashioned website.
Achievement creation is a very time consuming activity. The people doing it dedicate a big portion of their free time producing content for the benefit of the whole community.
Anyways, even if you're not able to/interested in creating achievements and just want to play, you're also important to us. In fact we have countless players that are very valuable members. The key point here is: get involved and be nice.
The more you get involved, the more valuable you are to the community.
Last but not least, if you have criticism about achievement creators' work, be respectful. Showing bitterness towards them is strongly frowned upon. Be disrespectful with them and you're definitely not welcome here.
"},{"location":"RetroAchievements-Manifesto/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-04-19 23:45] televandalist:
Slight grammar fix about server expenses.[2020-09-17 14:44] meleu:
the you are valuable -> the more valuable you are[2020-09-08 07:45] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 19:39] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 09:10] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 08:48] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 08:45] meleu:
Created RetroAchievements Manifesto (markdown)Rich Presence (RP) es un breve resumen de lo que est\u00e1n haciendo los jugadores activos en su partida. Para tener RP en un juego necesitas un Script de Rich Presence (RPS) que este es creador por desarrolladores. El Script checa la memoria del juego y ya sea como esta fue programada reporta los valores de ciertas direcciones con definiciones asignadas por el desarrollador as\u00ed como en que stage se encuentra el jugador, cuantas vidas tienes, si el juego esta en pausa, que modo de juego se encuentra jugando, lo que a logrado el jugador, etc. Esta informacion es reportada de vuelta al sitio. Cada juego publicado deber\u00eda de tener m\u00ednimo un RPS b\u00e1sico.
Ejemplo de RP en acci\u00f3n:
Para ver la RP en tiempo real haz clic en el menu de RetroAchievements en tu emulador y despu\u00e9s en Rich Presence Monitor. Una peque\u00f1a ventana deber\u00eda de mostrar tu RP actual. (Bueno para realizar pruebas)
La mejor manera de entender Rich Presence es observar varios ejemplos de juegos, mira las direcciones que fueron utilizadas a mira como el texto es mostrado en el monitor y en el sitio.
"},{"location":"Rich-Presence-es/#como-funciona","title":"Como funciona?","text":"Cada vez que un juego es lanzado, guarda los logros del juego en un archivo de 'ruta' donde el ROM detalla todos los logros y valores en memoria (y tablas clasificatorias) que puede llegar a rastrear. Tambi\u00e9n va a solicitar un Script de Rich Presence para el ROM que se encuentre actualmente cargado. El emulador va a reportar al sitio web cada 120 segundos. Similarmente, cada 120 segundos o parecido, la caja de 'active players' en la pagina de inicio se va a refrescar, detallando la ultima actividad conocida por todos los jugadores activos. Si no hay un Script de rich presence entregado, el texto sera 'earning achievements' Si se esta jugando un juego con logros, 'playing [game]' si se juega un juego sin logros, o 'developing achievements' si la ventaba de memoria esta abierta y es visible.
El RPS de cada juego puede ser encontrado en la secci\u00f3n de desarrollo en cada pagina de juego:
"},{"location":"Rich-Presence-es/#ejemplo-super-mario-bros","title":"Ejemplo (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
El RSP se compone de objetos de Lookup, objectos de Formato y un objeto de Display.
"},{"location":"Rich-Presence-es/#lookups","title":"Lookups","text":"Los Lookups se definen de la siguiente manera:
Lookup:NombreDelLockup\nValor1=Texto cuando este valor este activo\nValor2=Texto cuando este otro valor\n...\n
Le damos un valor al Lookup, consistiendo de una serie de direcciones de memoria y modificador. Encontraras mas sobre esto mas adelante.
"},{"location":"Rich-Presence-es/#formato","title":"Formato","text":"Las Tablas de Formato se definen de la siguiente manera:
Format:Score\nFormatType=VALOR\n
Empezamos con Formato:
, y despu\u00e9s con el nombre del tipo de formato. En la siguiente linea, escribe FormatType=
, y entonces uno de los siguientes valores: VALUE
, SCORE
(o POINTS
), TIME
(o FRAMES
), SECS
, MILLISECS
, o OTHER
.
VALUE
: valor gen\u00e9rico, no se agregan ceros. SCORE
/POINTS
: \"000130 puntos\" TIME
/FRAMES
: este valor describe el numero de frames consecuentes, y se va a mostrar como 00:00.00 SECS
: este valor describe el numero de segundos que han pasado, y se va a mostrar como 00:00 MILLISECS
: este valor describe el numero de centenas de segundo que han pasado, y se va a mostrar como 00:00.00 Display es la string que se muestra en la caja de 'Active Players' en la pagina de inicio del sitio web. Para referirte a un Lookup o aun Format previamente definidos se utiliza simplemente un '@'. Y entonces se agrega el nombre que le diste al lookup o al format (distingue may\u00fasculas y min\u00fasculas!), e inmediatamente despu\u00e9s de eso, en brackets, sigue la serie de valores en memoria que especifican que sera enviado a ese lookup y format.
@Powerup(0xh756)
Eso significa que vas a utilizar el Lookup o Format que se llama Powerup
, y entrega cualquier valor que se encuentre actualmente en 0xh756.
@Mode(0xh770)
- Un Lookup para la direcci\u00f3n que muestra si el juego se encuentra en modo demo o si un mundo a sido completado. @Paused(0xh776)
- Un Lookup para la direcci\u00f3n que muestra si el juego se encuentra en pausa (Se utilizan 3 valores, dos de ellos son para pausar y despausar). @Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Un Lookup para la direcci\u00f3n que muestra si Mario tiene la Estrella. Mas sobre esto mas adelante. @Powerup(0xh756)
- Un Lookup para la direcci\u00f3n que muestra si Mario es Peque\u00f1o, grande o cuenta con la habilidad de fuego. Mario in
- Texto est\u00e1tico para unir los objetos format y lookup. @Digit(0xh75f_v1)
- Digit
es un objeto format definido como un valor. La direcci\u00f3n 0xh75f es Mundo menos 1 (porque cuenta con base 0, y este empieza a contar desde cero). _v1
Significa + valor 1. _v+1
tambi\u00e9n es correcto. -
- Mas texto est\u00e1tico para separar el mundo y el nivel. como en el juego Mundo 1-1. @Digit(0xh75c_v1)
- Otro uso del objeto Digit
format . Esta vez se encuentra rastreando el Stage. Mundo 1-X. @Swimming(0xh704)
- Un Lookup para la direcci\u00f3n que muestra si el jugador se encuentra nadando. @Status(0xhe)
- Un Lookup para la direcci\u00f3n que muestra el estatus de Mario, como por ejemplo descendiendo de un tubo. , \ud83d\udeb6:
- Mas texto est\u00e1tico. \ud83d\udeb6 es el s\u00edmbolo para vidas. @Digit(0xh75a_v1)
- Tercer uso del objeto Digit
format. Esta vez checa la direcci\u00f3n de vidas del jugador. ,
- Texto est\u00e1tico. @Quest(0xh7fc)
Un lookup para ver si el jugador se encuentra en modo normal o en la 2da vuelta (modo dificil). Quest
- Texto est\u00e1tico. Para especificar el tama\u00f1o de la direcci\u00f3n que te encuentras utilizando, hay varios caracteres que se utilizan para esto. (se ignora si es may\u00fascula o min\u00fascula)
h
(o H
). En 0xh10 la direcci\u00f3n es un byte - 8 bits. xxxx xxxx
u
(o U
). En 0xu10 la direcci\u00f3n es un nibble - 4 bits. xxxx 0000
l
(o L
). En 0xl10 la direcci\u00f3n es un nibble - 4 bits. 0000 xxxx
m
(o M
). En 0xm10 la direcci\u00f3n es un bit, el bit mas bajo: 0000 000x
n
(o N
). En 0xn10 la direcci\u00f3n es un bit, el segundo bit: 0000 00x0
o
(o O
). En 0xo10 la direcci\u00f3n es un bit, el tercer bit: 0000 0x00
p
(o P
). En 0xp10 la direcci\u00f3n es un bit, el cuarto bit: 0000 x000
q
(o Q
). En 0xq10 la direcci\u00f3n es un bit, el quinto bit: 000x 0000
r
(o R
). En 0xr10 la direcci\u00f3n es un bit, el sexto bit: 00x0 0000
s
(o S
). En 0xs10 la direcci\u00f3n es un bit, el s\u00e9ptimo bit: 0x00 0000
t
(o T
). En 0xt10 la direcci\u00f3n es un bit, el bit mas alto: x000 0000
x
(o X
). En 0xx10 la direcci\u00f3n es de cuatro bytes y 32 bits.Resumiendolo en una tabla:
localizaci\u00f3n/tama\u00f1o prefijo (las letras pueden ser en min\u00fasculas) ejemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Rich-Presence-es/#display-con-strings-condicionales","title":"Display con Strings Condicionales","text":"Display:\n?0x 000085=0?Pantalla de Titulo\n?0xT00007c=1?Mapa Personalizado en @Zona(0xH00016c)\nJugando Batalla @Batalla(0x 00007c*0.2) en @Zona(0xH00016c)\n
El marcador Display:
se sigue utilizando para indicar el principio del bloque de Display. Si la siguiente linea empieza con un signo de interrogaci\u00f3n, se considera como un display con una string condicional. La parte de la linea que se encuentra entre los dos signos de interrogaci\u00f3n es la clausula de la condici\u00f3n. Si la clausula de la condici\u00f3n se eval\u00faa y esta es verdadera, entonces la siguiente parte de la linea se utiliza como el string del display. Si esta no se eval\u00faa como verdadera, entonces se procede a la siguiente linea. Si esta empieza con un signo de interrogaci\u00f3n, entonces el mismo proceso se repite. Si este no empieza con un signo de interrogaci\u00f3n, la linea entera se utiliza como el string default para el display.
NOTA: Se requiere una string default en caso de que ninguna de tus strings condicionales sean verdaderas. Si solamente cuentas con strings condicionales, el script no va a hacer nada.
Observando este ejemplo, si el valor de 16-bit en $0085 es igual a 0, el string del display sera Title Screen
. Si no, la siguiente linea es examinada. Si el 7mo bit de $007C es igual a 1, el string del display sera Mapa Personalizado en @Zona(0xH00016c)
. Si no entonces, como linea final no cuenta con una clausula condicional esta es utilizada.
Strings de Display asociados con una clausula condicional soportan todo la misma sintaxis que el string de display predeterminado. En este ejemplo, puedes ver que el lookup @Zona
se utiliza en los dos strings condicionales y en el string predeterminado.
La frase condicional soporta todos los asesores de direcciones previamente mencionados as\u00ed como la l\u00f3gica de los AND (_) y OR (S). Nota: las clausulas OR aun requieren un grupo 'core', as\u00ed como en los logros.
?0xH1234=32_0xH2345=0?ejemplo y
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $2345 is 0, muestra ejemplo y
?0xH1234=32S0xH2345=1S0xH2345=2?ejemplo o
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $2345 es 1 o 2, muestra ejemplo o
?0xH1234=32_0xH5678=33S0xH2345=1S0xH2345=2?ejemplo y/o
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $5678 es 33 y el valor de 8-bit en $2345 es 1 o 2, muestra ejemplo y/o
BCD es cuando cuando los valores son almacenados en una direcci\u00f3n del 0-9 (un d\u00edgito) o 0-99 (dos d\u00edgitos). ten en mente que la mayor\u00eda de las veces los valores son almacenados en hexadecimal, pero algunas veces los juegos los almacenan de esta manera y aqu\u00ed esta el mejor m\u00e9todo para trabajar con este tipo de valores en tu display.
BCD decodifica cada car\u00e1cter hexadecimal como un d\u00edgito decimal. Si el inspector de memoria muestra un 86 (en hex), el resulta de BCD decodificando el valor seria un 86 (en decimal).
Para objectos con estos valores puedes utilizar le prefijo BCD, como aqu\u00ed b0xh1234
. Esto tambi\u00e9n funciona con valores en tablas de clasificaci\u00f3n. Ten en cuenta que tambi\u00e9n vas a necesitar especificar el tama\u00f1o de la direcci\u00f3n BCD en memoria. b0x1234
lee un valor de 16-bit. b0xh1234
lee un valor de 8-bit y b0xX1234
lee un valor de 32-bit. NOTA: Soporte para decodificacion BCD de 16-bit y 32-bit es una funci\u00f3n para el kit de desarrollo 0.075.
Esto es usualmente usado para puntuaciones y tiempo, pero algunas veces tambi\u00e9n para otros tipos de valores.
"},{"location":"Rich-Presence-es/#limites","title":"Limites","text":"0x
. Esto significa 1
== 0x1
, 2
== 0x2
, 9
== 0x9
, 10
== 0xa
, 100
== 0x64
, etc. @test(0x1234)
el cual no va a encontrar \"Format:Test\"@test(0x1234)
no va a encontrar \"Format:test \" o \"Format: test\"Esta es una prueba @test(0x1234).
va a salir como Esto es una .
si test
no puede ser encontrado.//
) indica que la parte restante de la linea va a ser ignorada cuando se procese el script. Nota: los comentarios tambi\u00e9n aplican para el tama\u00f1o m\u00e1ximo de caracteres del script.0xh0001
puede ser acortado a 0xh1
).Lookup
o Format
puede ser cargado m\u00faltiples veces con las mismas o diferentes direcciones. Puedes definir un solo Format:Number FormatType=VALUE
en vez de definir valores individuales para las vidas, Puntuaci\u00f3n, Nivel, etc.@Pause
, @Star
, @Swimming
, y @Mode . Cuando utilizamos objetos lookup y format @object()
es posible combinar y hacer c\u00e1lculos. Esto puede ser utilizado para mostrar una puntuaci\u00f3n correctamente, tiempo del juego, etc. o hacen lookups avanzados.
Ejemplo @Puntuaci\u00f3n(0x28*10_0x29*1000_0x26*100000) puntos
Esto significa utiliza el lookup o Format Puntuaci\u00f3n
, y entrega la suma de: - 0x28 10 veces, AGREGA - 0x29 1000 veces, AGREGA - 0x26 100000 veces
_
agregas las direcciones mutuamente. 0x28_v10
. Esto agrega un 10 a tu total, as\u00ed como el valor de 0x28
+ 10 puede ser mostrado. Tambi\u00e9n se puede hacer lo mismo pero restando 0x28_v-10.
0x29*-1
. 0x29
es ahora negativo. 0x26*.5
. 0x26
va a mostrar el valor 1/2 de 0x26
. 0x28*10_0x29*-1_0x26*.625_v-10
.Sin ninguna duda puedes utilizar estos s\u00edmbolos en rich presence.
\u258c\u258c=Pausa \ud83d\udd01=Continues \u23f0=Tiempo de la Partida/Reloj del Juego \ud83d\udd11=Llaves \ud83d\udca3=Bombas \u2764\ufe0f o \u2764=En un juego con corazones (ej. Zelda) \ud83d\udcb0=Dinero \ud83d\udea9=Nivel/Stage
Cuando te encuentres desarrollando Rich Presence tienes que hacegurarte que te estas comunicando de una manera completamente clara. Si no estas utilizando s\u00edmbolos estandarizados tal vez tengan sentido para ti pero tal vez sea completamente confusos para otros. Cuando utilices s\u00edmbolos no estandarizados, checalo con otro usuario o con alguna otra gente para ver si los s\u00edmbolos que estas utilizando tienen sentido. Si no lo tienen, utiliza mejores s\u00edmbolos, o utiliza texto o s\u00edmbolos junto con texto.
Para unicode/emojis personalizados ShapeCatcher es un excelente recurso, puedes ponerte a dibujarlos y la AI va a buscar resultados similares. Simplemente ten cuidado de no utilizar unicode que sea demasiado oscuro, ya que no se va a mostrar correctamente en todos los sistemas.
Toma nota en la preferencia de la comunidad en cuanto a displays:
"},{"location":"Rich-Presence-es/#desarrollando-rich-presence","title":"Desarrollando Rich Presence","text":"La herramienta de desarrollo actualmente no cuenta con editor de Rich Presence integrado, pero puedes hacer pruebas locales antes de guardar algo en el servidor. Una vez que hubieras empezado un juego y el Rich Presence actual a sido descargado del servidor, puedes llegar a encontrar en RACache\\Data\\XXX-Rich.txt
donde XXX es el ID del juego.
El Monitor de Rich Presence (ejecutable desde el menu de RetroAchievments) lee este archivo y muestra el valor actual cada segundo mientras la ventana se encuentre abierta.
Si haces cambios al archivo XXX-Rich.txt
, y vuelves a reseleccionar la opci\u00f3n de monitor del menu, este va a leer los nuevos cambios para aqu\u00ed as\u00ed puedas hacer pruebas inmediatamente sin tener que aplicar cambios al servidor. Continua haciendo cambios y vuelve a seleccionar la opci\u00f3n en el menu asta que el script trabaje como esperas que lo haga, una vez que hubieras terminado copia el contenido del archivo a la pagina del servidor para que est\u00e9n los cambios disponibles para todos los dem\u00e1s jugadores.
NOTA: El archivo XXX-Rich.txt
es sobre-escrito con la informaci\u00f3n actual del servidor cada vez que el juego es abierto. Mientras aun tengas el archivo abierto en un editor, siempre vas a poder guardar tus cambios a pesar de re-abrir el juego.
Last 10 changes on this page:
[2019-05-24 20:02] meleu:
fix broken link[2019-05-19 15:48] eldexterr:
Updated Rich Presence es (markdown)[2019-05-19 15:42] eldexterr:
Updated Rich Presence es (markdown)[2019-05-17 11:03] eldexterr:
Created Rich Presence es (markdown)link para texto em ingl\u00eas: Rich Presence
"},{"location":"Rich-Presence-pt_BR/#introducao","title":"Introdu\u00e7\u00e3o","text":"O Estado de Presen\u00e7a (RP - Rich Presence, pela sigla em ingl\u00eas), \u00e9 uma breve vis\u00e3o geral do que os jogadores est\u00e3o fazendo atualmente em seu jogo. Para ter RP em um jogo, voc\u00ea precisa de um Script do Estado de Presen\u00e7a (ou Rich Presence Script - RPS - pela sigla em ingl\u00eas). O Script verifica a mem\u00f3ria do jogo do jogador e como programado relata os valores de certos endere\u00e7os com defini\u00e7\u00f5es atribu\u00eddas pelo Desenvolvedor, como em qual est\u00e1gio o jogador est\u00e1, quantas vidas eles t\u00eam, se o jogo est\u00e1 em pausa, que modo de jogo eles est\u00e3o jogando, o que o jogador realizou, etc. Esta informa\u00e7\u00e3o \u00e9 reportada de volta ao site.
Exemplo de RP em a\u00e7\u00e3o:
Para ver o RP ao vivo em um jogo, clique no menu RetroAchievements no seu emulador e clique em Rich Presence Monitor. Uma pequena janela mostrar\u00e1 seu RP ativo. (Bom para depura\u00e7\u00e3o)
A melhor maneira de entender o Estado de Presen\u00e7a \u00e9 olhar para v\u00e1rios exemplos no jogo, olhar para os endere\u00e7os usados e ver como o texto \u00e9 exibido no Rich Presence Monitor e no site.
"},{"location":"Rich-Presence-pt_BR/#como-funciona","title":"Como funciona?","text":"Toda vez que um jogo \u00e9 iniciado, ele busca os achievements em um arquivo 'patch' para a ROM, que detalha todos os achievements e endere\u00e7os de mem\u00f3ria (e leaderboards) que podem ser observados. Ele tamb\u00e9m solicitar\u00e1 um Rich Presence Script para a ROM atualmente carregada. O emulador informar\u00e1 o site a cada 120 segundos. Da mesma forma, a cada 120 segundos mais ou menos, a caixa de 'jogadores ativos' na frontpage ser\u00e1 atualizada, detalhando a \u00faltima atividade conhecida de todos os jogadores ativos. Se n\u00e3o houver um script do estado de presen\u00e7a, o texto estar\u00e1 \"ganhando achievements\" se estiver jogando um jogo com achievements, \"jogando [jogo]\" se estiver jogando sem achievements ou \"desenvolvendo achievements\" se a caixa de di\u00e1logo de mem\u00f3ria estiver aberta e vis\u00edvel.
O RPS para cada jogo pode ser encontrado na se\u00e7\u00e3o de desenvolvimento na p\u00e1gina de cada jogo:
"},{"location":"Rich-Presence-pt_BR/#exemplo-super-mario-bros","title":"Exemplo (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
Ele se divide em uma s\u00e9rie de objetos de pesquisa, objetos de formato e um objeto de exibi\u00e7\u00e3o.
"},{"location":"Rich-Presence-pt_BR/#pesquisas","title":"Pesquisas","text":"Pesquisas s\u00e3o definidas assim:
Lookup:NameOfLookup\nValue1=Text When This Value\nValue2=Text When Another Value\n...\n
N\u00f3s damos ao Lookup (pesquisa) um valor, consistindo de uma s\u00e9rie de endere\u00e7os de mem\u00f3ria e modificadores. Falaremos mais sobre isso depois.
"},{"location":"Rich-Presence-pt_BR/#formato","title":"Formato","text":"Tabelas de formato s\u00e3o definidas assim:
Format:Score\nFormatType=VALUE\n
Comece com Format
: e depois o nome do tipo de formato. Na pr\u00f3xima linha, forne\u00e7a FormatType =
e, em seguida, um dos seguintes: VALUE
, SCORE
(ou POINTS
), TIME
(ou FRAMES
), SECS
, MILLISECS
ou OTHER
.
VALUE
: valor gen\u00e9rico, sem zeros \u00e0 esquerda.SCORE
/ POINTS
: \"000130 pontos\"TIME / FRAMES
: o valor descreve o n\u00famero de quadros transcorridos e ser\u00e1 transformado em 00: 00.00SECS
: valor descreve o n\u00famero de segundos decorridos e ser\u00e1 transformado em 00:00MILLISECS
: value descreve o n\u00famero de milissegundos decorridos e ser\u00e1 transformado em 00: 00.00A exibi\u00e7\u00e3o ser\u00e1 uma string exibida na caixa \"Players ativos\" na primeira p\u00e1gina. Refere-se aos objetos Lookup e Format definidos anteriormente usando um \u00fanico '@'. Em seguida, ele especifica um nome para a pesquisa ou formato (diferencia mai\u00fasculas de min\u00fasculas) e, imediatamente depois, entre colchetes, uma s\u00e9rie de valores de mem\u00f3ria que especificam o que enviar para esse objeto de pesquisa ou formato.
@Powerup (0xh756)
Isso significa usar o Lookup ou o Formato chamado Powerup
, e dar a ele qualquer valor que esteja em 0xh756.
@Mode (0xh770)
- pesquisa o endere\u00e7o que mostra se o jogo est\u00e1 no modo de demonstra\u00e7\u00e3o ou se um mundo foi conclu\u00eddo.@Paused (0xh776)
- pesquisa o endere\u00e7o que mostra se o jogo est\u00e1 em pausa (s\u00e3o utilizados 3 valores, dois deles s\u00e3o para pausa e pausa).@Star (0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Procura o endere\u00e7o de se Mario tem a estrela de invencibilidade. Mais sobre isso depois.@Powerup (0xh756)
- Procura pelo endere\u00e7o que mostra se o Mairo \u00e9 Pequeno, grande ou tem poder de fogo.Mario in
- Texto est\u00e1tico para pesquisar string e formatar objetos juntos.@Digit (0xh75f_v1)
- D\u00edgito \u00e9 um objeto de formato definido como um valor. O endere\u00e7o 0xh75f \u00e9 o mundo menos 1 (porque \u00e9 baseado em 0, j\u00e1 que come\u00e7a a contar em 0). _v1 significa + valor 1. _v + 1 tamb\u00e9m est\u00e1 correto.-
- Mais texto est\u00e1tico para dividir o mundo e o n\u00edvel. como no hypen no mundo 1-1.@Digit (0xh75c_v1)
- Outro uso do objeto de formato de d\u00edgito. Desta vez est\u00e1 olhando para o est\u00e1gio. Mundo 1-X.@Swimming (0xh704)
- pesquisa o endere\u00e7o que mostra se o jogador est\u00e1 nadando.@Status (0xhe)
- pesquisa o endere\u00e7o que mostra o status de Mario, como passar por canos., \ud83d\udeb6:
- Mais texto est\u00e1tico. \ud83d\udeb6 \u00e9 um s\u00edmbolo para vidas.@Digit (0xh75a_v1)
- Terceiro uso do objeto de formato de d\u00edgito. Desta vez, est\u00e1 verificando o endere\u00e7o do jogador.,
- texto est\u00e1tico.@Quest (0xh7fc)
Uma pesquisa para ver se o jogador est\u00e1 em normal ou na segunda miss\u00e3o, hardmode.Quest
- Texto Est\u00e1tico.Para especificar o tamanho do endere\u00e7o que voc\u00ea est\u00e1 verificando, existem v\u00e1rios caracteres usados. (capitaliza\u00e7\u00e3o \u00e9 ignorada)
h
(ou H
). Em 0xh10, o endere\u00e7o \u00e9 um byte - 8 bits. xxxx xxxx
u
(ou U). Em 0xu10, o endere\u00e7o \u00e9 um nibble - 4 bits. xxxx 0000
l
(ou L). Em 0xl10 o endere\u00e7o \u00e9 um nibble - 4 bits. 0000 xxxx
m
(ou M
). Em 0xm10 o endere\u00e7o \u00e9 um bit, o bit mais baixo: 0000 000x
n
(ou N
). Em 0xn10 o endere\u00e7o \u00e9 um bit, o segundo bit: 0000 00x0
o
(ou O
). Em 0xn10 o endere\u00e7o \u00e9 um bit, o terceiro bit: 0000 0x00
p
(ou P
). Em 0xp10 o endere\u00e7o \u00e9 um bit, o quarto bit: 0000 x000
q
(ou Q
). Em 0xq10 o endere\u00e7o \u00e9 um bit, o quinto bit: 000x 0000
r
(ou R
). Em 0xr10 o endere\u00e7o \u00e9 um bit, o sexto bit: 00x0 0000
s
(ou S
). Em 0xs10 o endere\u00e7o \u00e9 um bit, o s\u00e9timo bit: 0x00 0000
t
(ou T
). Em 0xt10 o endere\u00e7o \u00e9 um bit, o bit superior: x000 0000
x
(ou X
). Em 0xx10 o endere\u00e7o \u00e9 de quatro bytes e 32 bits.Resumindo em uma tabela:
"},{"location":"Rich-Presence-pt_BR/#strings-de-exibicao-condicional","title":"Strings de exibi\u00e7\u00e3o condicional","text":"Display:\n?0x 000085=0?Title Screen\n?0xT00007c=1?Custom Map in @Landscape(0xH00016c)\nPlaying Battle @Battle(0x 00007c*0.2) in @Landscape(0xH00016c)\n
O Display
: marker existente ainda \u00e9 usado para indicar o in\u00edcio do bloco de exibi\u00e7\u00e3o. Se a pr\u00f3xima linha come\u00e7ar com um ponto de interroga\u00e7\u00e3o, ela ser\u00e1 considerada uma sequ\u00eancia de exibi\u00e7\u00e3o condicional. A parte da linha entre os dois pontos de interroga\u00e7\u00e3o \u00e9 a cl\u00e1usula condicional. Se a cl\u00e1usula condicional avaliar que \u00e9 verdadeiro (true), a parte restante da linha ser\u00e1 usada como a sequ\u00eancia de exibi\u00e7\u00e3o. Se n\u00e3o avaliar true, o processamento prosseguir\u00e1 para a pr\u00f3xima linha. Se come\u00e7ar com um ponto de interroga\u00e7\u00e3o, o mesmo processo ser\u00e1 repetido. Se n\u00e3o come\u00e7ar com um ponto de interroga\u00e7\u00e3o, a linha inteira ser\u00e1 usada como a sequ\u00eancia de exibi\u00e7\u00e3o padr\u00e3o.
Olhando para este exemplo, se o valor de 16 bits em $ 0085 for 0, a seq\u00fc\u00eancia de exibi\u00e7\u00e3o \u00e9 Title Screen
. Se n\u00e3o, a pr\u00f3xima linha \u00e9 examinada. Se o s\u00e9timo bit de $ 007C for 1, a cadeia de exibi\u00e7\u00e3o ser\u00e1 Custom Map em @Landscape (0xH00016c)
. Se n\u00e3o, a linha final n\u00e3o tem uma cl\u00e1usula condicional e \u00e9 usada.
As cadeias de exibi\u00e7\u00e3o associadas a uma cl\u00e1usula condicional suportam a mesma sintaxe que a cadeia de exibi\u00e7\u00e3o padr\u00e3o. Neste exemplo, voc\u00ea pode ver que a pesquisa @Landscape
\u00e9 usada na seq\u00fc\u00eancia de exibi\u00e7\u00e3o condicional e na sequ\u00eancia de exibi\u00e7\u00e3o padr\u00e3o. A pesquisa em si s\u00f3 precisa ser definida uma vez.
A frase condicional suporta todos os assessores de endere\u00e7o mencionados anteriormente, bem como a l\u00f3gica AND (_) e OR (S). Note que cl\u00e1usulas OR ainda requerem um grupo 'core', da mesma forma que as conquistas.
? 0xH1234 = 32_0xH2345 = 0? and example
se o valor de 8 bits em $ 1234 for 32 e o valor de 8 bits em $ 2345 for 0, display and example
? 0xH1234 = 32_0xH2345 = 1S0xH2345 = 2? or example
se o valor de 8 bits em $ 1234 for 32 e o valor de 8 bits em $ 2345 for 1 ou 2, exibir or example
DBC \u00e9 quando os valores s\u00e3o armazenados em um endere\u00e7o de 0 a 9 (um d\u00edgito) ou 0 a 99 (dois d\u00edgitos). Na maioria das vezes os valores s\u00e3o armazenados em hexadecimal, mas em algum momento os jogos ir\u00e3o armazen\u00e1-los desta maneira e aqui est\u00e1 a melhor maneira de lidar com esses endere\u00e7os no seu monitor.
Para objetos de valor, voc\u00ea pode usar o prefixo DBC, como em b0x1
. Um endere\u00e7o DBC \u00e9 considerado 8bit, h \u00e9 desnecess\u00e1rio, mas tamb\u00e9m n\u00e3o causar\u00e1 problemas. Outros prefixos de caracteres funcionam? (n\u00e3o testado). Quando voc\u00ea usa o prefixo b e o endere\u00e7o \u00e9 armazenado como um DBC, sua sa\u00edda para um endere\u00e7o de 10 ser\u00e1 10 em vez de 16 (que \u00e9 10 em hexadecimal).
Isso \u00e9 mais comumente usado para pontua\u00e7\u00e3o e tempo, mas geralmente outros tipos de valores de exibi\u00e7\u00e3o.
"},{"location":"Rich-Presence-pt_BR/#limites","title":"Limites","text":"&
no texto cortar\u00e1 o script ap\u00f3s o &
+
n\u00e3o ser\u00e1 exibido0x00001
== 0x1
, 0xh0000245
== 0xh245, 0x0a
== 0xa
.0x
. Isso significa 1
== 0x1
, 2
== 0x2
, 9
== 0x9
, 10
== 0xa
, 100
== 0x64
, etc.@Pause
, @Star
, @Swimming
e @Mode
.Ao usar objetos de pesquisa e formata\u00e7\u00e3o @object ()
, \u00e9 poss\u00edvel combinar e executar c\u00e1lculos. Isso pode ser usado para exibir corretamente uma pontua\u00e7\u00e3o, em tempo de jogo, etc. ou fazer pesquisas mais avan\u00e7adas.
Exemplo `@Score (0x28 * 10_0x29 * 1000_0x26 * 100000) points``
Isso significa usar a pesquisa ou pontua\u00e7\u00e3o de formato e dar a soma de:
_
adiciona os endere\u00e7os juntos.0x28_v10
. Isso adiciona 10 ao seu total, como em qualquer que seja o valor de 0x28
+ 10 ser\u00e1 exibido. Voc\u00ea tamb\u00e9m pode subtrair 0x28_v-10
.0x29 * -1
. 0x29
agora \u00e9 negativo.0x26 * .5
. 0x26
ir\u00e1 gerar 1/2 do valor em 0x26
.0x28 * 10_0x29 * -1_0x26 * .625_v-10
.\u258c\u258c=em pausa
\ud83d\udd01= n\u00famero de loop
\ud83d\udeb6=vidas. Outros s\u00edmbolos que representam o jogo claramente tamb\u00e9m s\u00e3o adequados. \ud83d\udc30=in a Bugs bunny Game, \ud83d\udc35=in a Donkey Kong Country game, \u2708=In a jet plane game,
\ud83d\udc9e=Continue
\ud83d\udcaf=Pontos
\u23f0=Tempo de jogo/Rel\u00f3gio do game
\ud83d\udd11=Chaves
\ud83d\udca3=Bombas \u2630=Menu
\u2764\ufe0f ou \u2764= Em um jogo com cora\u00e7\u00f5es (ex. Zelda)
\ud83d\udcb0=Dinheiro
\u2696=Dificuldade
"},{"location":"Rich-Presence-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-09-16 12:25] meleu:
smallfix[2020-09-16 12:24] meleu:
use RP acronym[2020-09-16 12:20] meleu:
use relative links[2020-09-15 17:49] Ben-Ghazi:
Changed the links to go to the docs equivalent instead of the wiki.[2018-03-28 03:11] KingDice001:
Updated Rich Presence pt_BR (markdown)[2018-03-28 03:06] KingDice001:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:25] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:24] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:06] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 21:17] 7Mogami7:
Updated Rich Presence pt_BR (markdown)Rich Presence (RP) is brief overview of what active players are currently doing in their game. To have RP in a game you need a Rich Presence script, which is created by Developers. The script checks the player's game memory and reports the values of certain addresses with definitions assigned by the Developer such as which stage the player is on, how many lives they have, if the game is paused, what game mode they are playing, what the player has accomplished, etc. This information is reported back to the website once every two minutes.
A good rich presence should inform other users how far into the game you are (level/ town/dungeon), and give an overall sense of how the player is doing (score/remaining lives/character level). Additional details may be useful, depending on their context within the game. Try not to go overboard with the detail though. Other players don't care what you named your dog, or need to know how many bullets you have left, especially since it only updates every two minutes. Additionally, the more fluff you add to a rich presence display, the more diluted the important information becomes.
Example of RP in action:
To see the RP live in a game click on the RetroAchievements menu in your emulator and then click on Rich Presence Monitor. A small window will show you your active RP. (Good for debugging)
The best way to understand Rich Presence is to look at various examples in game, look at the addresses used and look at how the text is displayed in the Rich Presence Monitor and on site.
"},{"location":"Rich-Presence/#how-does-it-work","title":"How Does it work?","text":"The game's Rich Presence script is downloaded with the achievement and leaderboard data for a game. As soon as the emulator validates this data, it starts a session for the user. This sets the user's 'Last Seen In' to 'Playing [game]'. 30 seconds later, the Rich Presence script will be evaluated and the result sent to the server. This will update the 'Last Seen In' for the player, which is also used in the 'Active Players' list on the front page. Every two minutes after that, the Rich Presence script will be evaluated again, and the 'Last Seen In' will be updated again. This continues until the user closes the emulator.
If there isn't a Rich Presence script for the game, the user has disabled rich presence, or the user has modified the Rich Presence script, the text will remain 'Playing [game]'.
The user's 'Last Seen In' may also say 'Fixing Achievements' or 'Developing Achievements' if they have any of the tool windows open. The first will display if achievements have been published for the set. The second if achievements have not been published for the set.
The Rich Presence script for a game can be found under the development section on each game's page:
"},{"location":"Rich-Presence/#example-super-mario-bros","title":"Example (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
It breaks down into a series of Lookup objects, Format objects and one Display object.
"},{"location":"Rich-Presence/#macros","title":"Macros","text":"A macro converts a value into a user-friendly string. Macros are placed within a display string and will be replaced when the display string is evaluated. A macro starts with an @
, then the name of the macro, an opening parenthesis, the value to evaluate, and a closing parenthesis.
@Macro(0xh1234)
says read the byte at $1234, transform it using the Macro
macro, and place the result in the display string where the macro had been.
Parameters for each macro are constructed using a value definition.
"},{"location":"Rich-Presence/#lookups","title":"Lookups","text":"Lookups are defined like this:
Lookup:NameOfLookup\n1=Text When 1\n2=Text When 2\n...\n
When a display string references a Lookup, it's value will be located in the table and the associated text will be displayed.
NOTE: Values in the Lookup should be in decimal. If you want to use hex values, include a 0x
prefix. (i.e. 0x12=Eighteen
)
You can also specify multiple values for a single text string:
1-5,10=Text When These Values\n*=Text For All Other Values\n
In this example, the values 1, 2, 3, 4, 5, and 10 all map to the first text string.
Anything that doesn't match an item defined in the lookup table will return the text associated with *
. If *
does not appear in the lookup table, no text will be returned if a value doesn't have an entry.
Format tables are defined like this:
Format:Score\nFormatType=VALUE\n
Begin with Format:
, then the name of the Format converter. On the next line, give FormatType=
, then one of the following:
VALUE
: generic value, no leading zeroes. SCORE
/POINTS
: generic value, padded with leading 0s to 6 digits.TIME
/FRAMES
: value describes the number of frames elapsed, and will be turned into 00:00.00 by multiplying by 100 (hundredths of a second) and dividing by 60 (frames per second). If your system runs at something other than 60 fps, you'll have to do the conversion yourself and use MILLISECS
.MILLISECS
: value describes the number of hundredths of a second elapsed, and will be turned into 00:00.00 SECS
: value describes the number of seconds elapsed, and will be turned into 00:00 MINUTES
: value describes the number of minutes elapsed, and will be turned into 0h00SECS_AS_MINS
: value describes the number of seconds elapsed, and will be turned into 0h00FLOAT1
-FLOAT6
: formats a floating point number with the specified number of digits after the decimalAs of the 1.0 version of the DLL, you can use predefined macros for the most common formats. The following macros are now implicit:
Macro Format Description@Number()
VALUE
A generic value with no leading zeroes @Score()
SCORE
A generic value, padded with leading zeroes to six digits @Centiseconds()
MILLISECS
The number of hundreths of a second elapsed, and will be formatted as 00:00.00
@Seconds()
SECS
The number of seconds elapsed, and will be formatted as 00:00
@Minutes()
MINUTES
The number of minutes elapsed, and will be formatted as 0h00
@Float1()
FLOAT1
A floating point number, formatted with one digit after the decimal @Float2()
FLOAT2
A floating point number, formatted with two digits after the decimal @Float3()
FLOAT3
A floating point number, formatted with three digits after the decimal @Float4()
FLOAT4
A floating point number, formatted with four digits after the decimal @Float5()
FLOAT5
A floating point number, formatted with five digits after the decimal @Float6()
FLOAT6
A floating point number, formatted with six digits after the decimal @ASCIIChar()
n/a Converts a value from 0x20-0x7F into a character using the ASCII character map. Other values will be converted to ?
@UnicodeChar()
n/a Converts a value into a character using the 16-bit Unicode character map. Unknown values will be converted to \ufffd
"},{"location":"Rich-Presence/#display","title":"Display","text":"Display is a string that gets shown in the 'Active Players' box on the front page and the 'Last Seen In' section of the player's profile.
It is built by replacing any macros in the display string with text from a Lookup or formatted values from a Format converter. Each macro is identified by a single '@', which is followed by the name for the Lookup or Format (case sensitive!), and immediately after, in parenthesis, a value specifying what to send to that Lookup or Format object.
Using @Powerup(0xh756)!
This means use the Lookup or Format that's called Powerup
, and give it whatever 8-bit value is in the address 0x756. After converting, put the result in between \"Using \" and \"!\".
NOTE: Lookup/Format names are case sensitive and must exactly match the usage in the Display string: @test(0x1234)
will not find Format:Test
NOTE: Lookup/Format definitions cannot contain spaces before or after the name. @test(0x1234)
will not find Format:test
or Format: test
@Mode(0xh770)
- Lookup for the address that shows if the game is in demo mode or a world has been completed. @Paused(0xh776)
- Lookup for the address that shows if the game is paused (3 values are used, two of them are for pausing and unpausing). @Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Lookup for the address of if Mario has Star invincibility. More on this later. @Powerup(0xh756)
- Lookup for the address that show if Mario is Small, big or has fire power. Mario in
- Static text to string lookup and format objects together. @Digit(0xh75f_v1)
- Digit
is a format object defined as a value. The address 0xh75f is the World minus 1 (because it is 0 based, as in it starts counting at 0). _v1
Means + value 1. _v+1
is also correct. -
- More static text to split World and Level. as in the hyphen in World 1-1. @Digit(0xh75c_v1)
- Another use of the Digit
format object. This time It's looking up the stage. World 1-X. @Swimming(0xh704)
- Lookup for the address that shows if the player is swimming. @Status(0xhe)
- Lookup for the address that shows Mario's status, such as going through pipes. , \ud83d\udeb6:
- More static text. \ud83d\udeb6 is a symbol for lives. @Digit(0xh75a_v1)
- Third use of the Digit
format object. This time it's checking the player lives address. ,
- Static text. @Quest(0xh7fc)
A lookup to see if the player is in normal or on the 2nd quest, hardmode. Quest
- Static Text. Display:\n?0x 000085=0?Title Screen\n?0xT00007c=1?Custom Map in @Landscape(0xH00016c)\nPlaying Battle @Battle(0x 00007c*0.2) in @Landscape(0xH00016c)\n
The existing Display:
marker is still used to indicate the start of the display block. If the next line starts with a question mark, it is considered to be a conditional display string. The portion of the line between the two question marks is the conditional clause. If the conditional clause evaluates true, then the remaining portion of the line is used as the display string. If it does not evaluate true, then processing proceeds to the next line. If it starts with a question mark, the same process repeats. If it does not start with a question mark, the entire line is used as the default display string.
NOTE: A default display string is required in case none of the conditional display strings match. If you only have conditional display strings, the script will appear to do nothing.
Looking at this example, if the 16-bit value at $0085 is 0, the display string is Title Screen
. If not, the next line is examined. If the 7th bit of $007C is 1, the display string is Custom Map in @Landscape(0xH00016c)
. If not, the final line does not have a conditional clause and is used.
Display strings associated with a conditional clause support all of the same syntax as the default display string. In this example, you can see the @Landscape
lookup is used in both the conditional display string and the default display string. The lookup itself only has to be defined once.
The conditional phrase supports all of the previously mentioned address accessors as well as AND (_) and OR (S) logic. Note that OR clauses still require a 'core' group, just like achievements.
?0xH1234=32_0xH2345=0?and example
if the 8-bit value at $1234 is 32 and the 8-bit value at $2345 is 0, display and example
?0xH1234=32S0xH2345=1S0xH2345=2?or example
if the 8-bit value at $1234 is 32 and the 8-bit value at $2345 is 1 or 2, display or example
?0xH1234=32_0xH5678=33S0xH2345=1S0xH2345=2?and/or example
if the 8-bit value at $1234 is 32 and the 8-bit value at $5678 is 33 and the 8-bit value at $2345 is 1 or 2, display and/or example
Pro-tip: Conditions can be created using the achievement editor. Once you have your condition defined, use the Copy Def
button to copy the achievement definition to the clipboard so you can paste it into the rich presence script.
Rich Presence that directly displays custom player input text is prohibited. The most common example being displaying what a player inputs as their character or file name directly into Rich Presence.
This restriction helps in preventing inappropriate or offensive content from showing on various site pages as well as makes the moderation of Rich Presence more manageable, in addition to protection player privacy as players may not realize their text is being displayed publicly.
"},{"location":"Rich-Presence/#tips-and-tricks","title":"Tips and Tricks","text":"//
) indicates the remaining portion of the line should be ignored when processing the script. Note: comments still apply toward the script size limit.0xh0001
can be shortened to 0xh1
).Lookup
or Format
named mapping can be referenced multiple times with the same or different addresses. You can define a single Format:Number FormatType=VALUE
instead of defining individual ones for Lives, Score, Level, etc.@Pause
, @Star
, @Swimming
, and @Mode do. When using lookup and format objects @object()
it's possible to combine and perform calculations. Macro parameters are value definitions, so you can use multiplication, addition, and even some logic to generate values that aren't directly available in memory.
Example @Score(0xh28*10_0xh29*1000_0xh26*100000) points
This means use the Lookup or Format Score
, and give it the sum of: - the 8-bit value at 0x28 times 10, ADD - the 8-bit value at 0x29 times 1000, ADD - the 8-bit value at 0x26 times 100000
You can without doubt use these symbols in rich presence.
\u258c\u258c=Paused \ud83d\udd01=Continues \u23f0=In Game Time/Game Clock \ud83d\udd11=Keys \ud83d\udca3=Bombs \u2764\ufe0f or \u2764=In a game with hearts (e.g. Zelda) \ud83d\udcb0=Money \ud83d\udea9=Level/Stage
While making Rich Presence, devs need to be careful that they are communicating clearly. If you are using non-standard symbols they will make sense to you but could be entirely confusing to others. When using non-standard symbols, check them with someone else or a few people to see if the symbols you use make sense. If they don't, use better symbols, use text or use symbols alongside of text.
For custom unicode/emoji ShapeCatcher is an excellent resource, you can draw what you're looking for and an AI will find similar matches. Just be careful to not use unicode that too obscure, as they don't all display on all systems.
Take note of community display preference:
"},{"location":"Rich-Presence/#developing-rich-presence","title":"Developing Rich Presence","text":"The toolkit does not currently have an integrated Rich Presence editor, but you can test local changes before putting them on the server. Once you've started a game and the current Rich Presence has been downloaded from the server, you can find it in RACache\\Data\\XXX-Rich.txt
where XXX is the game ID.
The Rich Presence Monitor (openable from the RetroAchievments menu) reads this file and shows the current value every second while the window is open.
If you make changes to the XXX-Rich.txt
file, and reselect the menu option, it will read the new changes and allow you to immediate test them without applying the changes to the server. Continue to make changes and reselect the menu option until the script is behaving as you expect, then copy the contents to the server page to make it available to everyone else.
NOTE: The XXX-Rich.txt
file is overwritten with the current server data each time the game is opened. As long as you still have the file open in an editor, you can always save your changes over the updated file after reopening the game.
Rich Presence files utilize Condition Syntax for Memory Sizes, Prefixes and Logical Flags. These are also represented if you copy and paste achievement logic from the Achievement Editor.
"},{"location":"Rich-Presence/#parse-errors","title":"Parse Errors","text":"Code Enum Description -2INVALID_MEMORY_OPERAND
A memory operand was expected and not found. Memory operands start with 0x
, then a size indicator. The most common causes of this are forgetting the 0x
or having an _S
or __
in the script. -3 INVALID_CONST_OPERAND
A lookup key could not be evaluated. The most common cause of this is using hex without the 0x
prefix. This may also occur on older versions of RetroArch when using CSV or range keys for lookups. -6 INVALID_OPERATOR
An unknown operator was encountered. The most common cause of this is using !
instead of !=
-16 MISSING_VALUE
A macro was encountered without providing a value (i.e. @Points
instead of @Points(0xh1234)
) -18 MISSING_DISPLAY_STRING
The rich presence script did not contain a Display:
element, or contained only conditional display strings -20 RC_INVALID_VALUE_FLAG
A non-combining flag is used in a non-trigger context. Combining flags are AddSource, SubSource, AddHits, AddAddress and AndNext. Additionally, if you see [Unknown macro]
, that means the macro name could not be resolved. For example @Points(0xh1234)
without defining Format:Points
would generate [Unknown macro]Points(0xh1234)
.
This issue happens sometimes when a Rich Presence is created in the <GameID>-Rich.txt
file in the RACache>Data
folder. In this case the issue can be fixed by adding an empty line at the start of the file.
Last 10 changes on this page:
[2024-01-26 08:48] The Mystical One:
Updated Rich Presence (markdown)[2024-01-26 08:46] The Mystical One:
Adds Player-Input Text Restriction section.[2024-01-13 09:50] OvenOverlord:
Updated Rich Presence (markdown)[2023-06-06 11:04] televandalist:
Added ToC[2022-04-30 16:18] Jamiras:
Updated Rich Presence (markdown)[2022-02-04 17:38] Jamiras:
extract memory sizes[2022-02-04 17:12] Jamiras:
extract Value Definition to separate page[2022-01-31 10:51] Jamiras:
add built-in macros[2022-01-26 09:39] Shane Shirey:
Updated Rich Presence (markdown)[2022-01-26 09:38] Shane Shirey:
Updated Rich Presence (markdown)Rollouts are events that are meant to mimic a console launch. Developers participating in rollouts devote their time to working on achievement sets with the intent of having several sets ready once the console is supported for all players.
"},{"location":"Rollouts/#general-guidelines","title":"General Guidelines","text":"It's worth noting that these are general guidelines that apply to all rollouts. Individual rollouts may require addtional guidelines.
Lo siguiente es un plano detallado de la mayor\u00eda de las cosas que necesitas considerar cuando te encuentres haciendo un set de logros. No es requisito seguir esto al pie de la letra, esto es mas como una gu\u00eda.
"},{"location":"Set-Development-Roadmap-es/#investigacion-inicial","title":"Investigaci\u00f3n Inicial","text":"Last 10 changes on this page:
[2019-05-12 13:48] eldexterr:
Created Set Development Roadmap es (markdown)Link para o texto em ingl\u00eas: Set Development Roadmap
O texto seguinte \u00e9 um roteiro detalhado da maioria das coisas que voc\u00ea deveria considerar ao fazer um conjunto de conquistas. N\u00e3o \u00e9 necess\u00e1rio seguir exatamente isso, mas serve como um guia.
"},{"location":"Set-Development-Roadmap-pt_BR/#pesquisa-inicial","title":"Pesquisa Inicial","text":"Last 10 changes on this page:
[2018-03-25 16:23] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:22] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:17] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:15] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:04] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 13:18] KingDice001:
Created Set Development Roadmap pt_BR (markdown)The following is a detailed road-map of most things you would want to consider while making an achievement set. It's not required to follow this exactly but is meant as a guide.
"},{"location":"Set-Development-Roadmap/#initial-research","title":"Initial Research","text":"Last 10 changes on this page:
[2019-02-08 10:57] meleu:
fix markdown[2018-02-17 18:08] Kvon:
Updated Set Development Roadmap (markdown)[2018-01-29 13:35] meleu:
tagged Rich Presence as optional[2017-11-27 05:42] meleu:
format fix[2017-11-26 06:43] meleu:
cosmetic[2017-11-26 06:31] meleu:
improved markdown formatting[2017-11-26 00:32] Kvon:
added preface, changed title from \"Sample Set Development Roadmap\"As developers, our goal is to give every set we develop its own unique achievement set when possible. Sometimes we end up reusing an idea or two that another developer already used for their own set. Being an open community, sharing and building on others ideas is encouraged, however, intentionally taking someone else\u2019s work and applying it to your own set is prohibited and disrespectful to the work of the original Developer. If a set has been copied or copy/pasted, it will be grounds for demotion until the issue is remedied. This applies to RetroAchievement sets and third-party platform achievement sets like Xbox Live, PSN, Steam, and other similar services. If you are concerned about your set breaking these guidelines, just submit an inbox message to DevCompliance on the site and we will take a look at it.
"},{"location":"Set-Plagiarism/#unacceptable-plagiarism","title":"Unacceptable Plagiarism","text":""},{"location":"Set-Plagiarism/#iconsbadges","title":"Icons/Badges","text":"Achievement and mastery badges need to be unique from other sets. Slightly modifying a badge or putting a watermark over an existing badge is not acceptable unless it\u2019s a bonus/subset mastery badge. The difference must be obvious from a zoomed out side by side comparison of the badges. Using any copyrighted badges from official sets is prohibited.
"},{"location":"Set-Plagiarism/#titles","title":"Titles","text":"Achievement titles should be unique from other sets. This may not always be possible when working on games that have ports for multiple systems. Generic titles and titles based on the in-game contents are both allowed. For example, Green Hills Zone is the first level of Sonic the Hedgehog on the Mega Drive, Master System, and Game Gear ports. Additionally, the level shows up in later entries of the Sonic series. As such, the achievement title \u201cGreen Hills Zone\u201d would be acceptable in all these sets.
"},{"location":"Set-Plagiarism/#design","title":"Design","text":"The design of an achievement is open to the community. You can use an idea from other sets so long as the achievement badge and title differ. However, an exact copy of the achievement list from another set is prohibited.
"},{"location":"Set-Plagiarism/#acceptable-copying","title":"Acceptable Copying","text":""},{"location":"Set-Plagiarism/#descriptions","title":"Descriptions","text":"Achievement descriptions do not have to be unique. Descriptions need to be clear instructions of how to earn an achievement so variations on a description may make the achievement confusing. There are only so many ways to say \u201cBeat the game without dying.\u201d
"},{"location":"Set-Plagiarism/#rich-presenceleaderboards","title":"Rich Presence/Leaderboards","text":"Copying Rich Presence and Leaderboards are allowed. When copying a Rich Presence you should note the original author at the top by adding a line: // RP By Original Dev
Copying the logic of another achievement is acceptable. Developers are encouraged to look at how other sets are coded and incorporate it into their own sets.
"},{"location":"Set-Plagiarism/#self-plagiarism","title":"Self-Plagiarism","text":"You are allowed to copy anything you created from one set to another set. However, it is preferable to let another developer work on a port for set you have already created.
"},{"location":"Set-Plagiarism/#in-game-achievements","title":"In Game Achievements","text":"Some games incorporate a set of in game achievements that were released with the game. Any of these achievements can be used as long as they are not Unwelcome Concepts.
"},{"location":"Set-Plagiarism/#code-notes","title":"Code Notes","text":"Code notes can be copied from another set. Noting who did the original memory digging is good practice but not required.
"},{"location":"Set-Plagiarism/#giving-credit-or-copying-with-permission","title":"Giving Credit or Copying with Permission","text":"Credit should be given when using one of the Acceptable Copying items listed above. However, giving credit for one of the Unacceptable Plagiarism items is still plagiarism. Even if the original developer has given permission to use their assets it is unacceptable to do so. Each set should include a developers\u2019 own creative spin on existing achievements and sets. You are not expected to reinvent the wheel, just make it your own.
"},{"location":"Set-Plagiarism/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-11-16 21:55] pingus:
remove title[2022-11-16 21:53] pingus:
Created Set Plagiarism (markdown)WIP Page
Pending
"},{"location":"Setup-Guide/#duckstation","title":"DuckStation","text":"Pending
"},{"location":"Setup-Guide/#pcsx2","title":"PCSX2","text":"Pending
"},{"location":"Setup-Guide/#ralibretro","title":"RALibretro","text":"Pending - for now, see RALibretro
"},{"location":"Setup-Guide/#rameka","title":"RAMeka","text":"Pending
"},{"location":"Setup-Guide/#ranes","title":"RANes","text":"Pending
"},{"location":"Setup-Guide/#rap64","title":"RAP64","text":"Pending
"},{"location":"Setup-Guide/#rapplewin","title":"RAppleWin","text":"Pending
"},{"location":"Setup-Guide/#raquasi88","title":"RAQUASI88","text":"RAQUASI88 is based on QUASI88kai, which is a fork of QUASI88 with various improvements.
Documentation is available in the release archives, or in the repository for the project. Files that do not end with .EN.TXT
are in Japanese only.
The PC-8000/8800 support forum thread, as well as individual game pages and forum threads, also contain some information.
"},{"location":"Setup-Guide/#rasnes9x","title":"RASnes9x","text":"Pending
"},{"location":"Setup-Guide/#ravba","title":"RAVBA","text":"Pending
"},{"location":"Setup-Guide/#retroarch","title":"RetroArch","text":"Pending
"},{"location":"Setup-Guide/#winarcadia","title":"WinArcadia","text":"Pending
"},{"location":"Setup-Guide/#cores","title":"Cores","text":""},{"location":"Setup-Guide/#final-burn-neo","title":"Final Burn Neo","text":"Pending
"},{"location":"Setup-Guide/#flycast","title":"Flycast","text":"Pending
"},{"location":"Setup-Guide/#ppsspp","title":"PPSSPP","text":"Pending
"},{"location":"Setup-Guide/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 22:21] televandalist:
Updated Setup Guide (markdown)[2023-06-05 22:19] televandalist:
Created Setup Guide (markdown)(Editado ya que en el dll version 0.73 esto es usualmente incorrecto)
En este ejemplo el juego es Zooming Secretary (NES), y el logro es Great Job! - Now you can take a rest, por pasar el juego.
En este queremos que el jugador hubiera pasado por todos los niveles y haber pasado el juego en orden para que salte el logro. Si el jugador utiliza un save state para ir directamente al ultimo mundo y terminarlo, el logro no va a salir.
Variables (Addresses)
0x06e9
: ID de Nivel. De 0 a 8 y 8 significa \"juego terminado\".Condiciones
Como este juego tiene 8 niveles, el valor en la variable del ID de Nivel tiene que ser incrementado 8 veces para pasar el juego. De esta manera el jugador no puede simplemente empezar el juego, cargar un estado de guardado e ir directamente al nivel final y pasar el juego. El/ella necesita pasar por todos los niveles.
El ResetIf
se encuentra solo para evitar casos en el que el jugador este cargando estados de guardado y yendo hacia adelante y atr\u00e1s por todos los niveles intentando que el contador llegue a 8. Si el/ella a cargar un estado yendo a un nivel mas bajo, el contador de hits pasara a cero.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Simple Example of How to Avoid Load State Abusing
Neste exemplo, o jogo \u00e9 Zooming Secretary (NES), e o Achievement \u00e9 Great Job! - Now you can take a rest, por terminar o jogo.
Neste, queremos garantir que o jogador tenha passado por todos os n\u00edveis para vencer o jogo para ganhar o achievement. Se o jogador usar um save state para ir diretamente ao \u00faltimo est\u00e1gio e finaliz\u00e1-lo, o achievement n\u00e3o aparecer\u00e1.
Endere\u00e7os
0x06e9
: level ID. Do 0 ao 8. O 8 significa \"fim de jogo\".Condi\u00e7\u00f5es
Como este jogo tem 8 leveis, o valor no endere\u00e7o de identifica\u00e7\u00e3o (ID address) de n\u00edvel deve ser aumentado 8 vezes para vencer o jogo. Desta forma, um jogador n\u00e3o pode simplesmente iniciar o jogo, carregar (load game) para ir diretamente ao \u00faltimo n\u00edvel e depois vencer o jogo. Ele / ela precisa percorrer todos os n\u00edveis.
O ResetIf
est\u00e1 aqui apenas para evitar o caso em que o jogador continua carregando states (load state) indo para frente e para tr\u00e1s entre os n\u00edveis fazendo o contador de hits ser 8. Se ele / ela carrega um estado (load) indo para um n\u00edvel mais baixo, o contador de visitas vai para zero.
Last 10 changes on this page:
[2018-03-25 12:07] KingDice001:
Updated Simple Example of How to Avoid Load State Abusing pt_BR (markdown)[2018-03-25 11:51] KingDice001:
Updated Simple Example of How to Avoid Load State Abusing pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Simple Example of How to Avoid Load State Abusing.pt_BR (markdown)For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#general-changes","title":"General Changes","text":"~
or [
no long appear at the start of the entry database but at the end.Rich Presence:
Linking:
For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#developer-changes_1","title":"Developer Changes","text":"Memory Inspector:
Achievement Editor:
Rich Presence:
Time stamps on user, game pages and in many places now show the year.
"},{"location":"Site-Change-Log/#emulators-update-v0066","title":"Emulators Update [v0.066]","text":"For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#general-changes_1","title":"General Changes","text":"Started the log
Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
El SubSource
puede ser seleccionado en la columba de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Funciona similarmente a Add Source
, pero una bandera Sub Source
convierte el valor en memoria en un valor negativo.
Nota 1: Sub Source
NO es una bandera de subtraccion. Solo convierte el valor en negativo.
Nota 2: La ultima linea (sin el Add Source
o Sub Source
) aun se agrega a la comparativa final (Es una condicion que se tiene que cumplir).
Utlizando este ejemplo de uso de un AddSource
, si lo remplazamos con un Sub Source
y con los mismos valores (valor(0x8010) = 1
and valor(0x8020) = 2
), la comparacion seria -1 + 2 > 0
, o 1 > 0
.
SubSource
tambien puede ser utilizado para rastrear incrementos especificos en una variable. La condicion que se muestra abajo dice que el actual valor en la variable 0x0080dc
menos el valor en el antiguo fotograma (Delta Frame) en la misma direccion deberia de ser igual a 2
. Efectivamente, esto significa que la condicion es verdadera cualquier vez que el valor en 0x0080dc
se incremente exactamente sobre dos.
Si el resultado en tu operacion con Sub Source es un numero negativo, es posible buscarlo. A si es como se representan los numeros negativos:
-1
es 0xFFFFFFFF
-2
es 0xFFFFFFFE
-3
es 0xFFFFFFFD
-4
es 0xFFFFFFFC
-5
es 0xFFFFFFFB
-6
es 0xFFFFFFFA
-7
es 0xFFFFFFF9
A si que, vamos a decir que quieres buscar si el valor(0x8010) = 1
menos el valor(0x8020) = 2
es igual a -1
. Asi es como le harias:
Esto significa -2 + 1 = -1
, que es verdad.
Avanzado: tambien es posible utilizar directamente numeros negativos en la columna de la izquierda con tus operaciones Sub/Add Source. Para hacerlo, recuerda cambiar el Tipo (Type) de Mem
a Value
, y utilizar los valores explicados arriba, como 0xFFFFFFE5
para -27
, y 0xFFFFFFE3
para -29
, por ejemplo:
Esto significa -2 + (-27) = -29
, que es -2 - 27 = -29
, el cual es cierto.
De todos modos ten cuidado, si utilizas numeros negativos en una bandera con Sub Source, va a resultar en un doble negativo, convirtiendo los numeros de nuevo a positivos. Hecha un vistazo:
Esto significa - (-2) + (-27) = -29
, que es 2 - 27 = -29
, que es -25 = -29
, el cual es falso.
Last 10 changes on this page:
[2019-04-16 15:32] meleu:
fix broken link[2019-03-12 15:01] meleu:
Updated SubSource Flag ES (markdown)Note: most likely this technique is not needed for simple games. So, it's not mandatory for jr-devs.
The SubSource
can be chosen in the Flag column of the Achievement Editor
Works similarly to Add Source
, but the Sub Source
flag subtracts the calculated value from the accumulator.
Because it subtracts from the accumulator, SubSource A, B
is actually B - A
.
In this example the value in 0x8010
will be subtracted from the value in 0x8020
and the comparison will check is if this sum is greater than four.
If the value in 0x8010
is 1
and the value in 0x8020
is 2
, the comparison will be -1 + 2 > 4
, or 1 > 4
.
SubSource
can also be used to track specific increases in addresses. The conditions below states that the current value in address 0x80dc
minus the value in the previous frame in the same address must be equal 2
. Effectively, this means that the condition is true whenever the value in address 0x80dc
increases by exactly two.
The accumulator and all logic performed is limited to an unsigned 32-bit number. If the total drops below 0, it underflows, resulting in a very large positive number. Here's the representation for the first few negative numbers:
-1
is 0xFFFFFFFF
-2
is 0xFFFFFFFE
-3
is 0xFFFFFFFD
-4
is 0xFFFFFFFC
-5
is 0xFFFFFFFB
-6
is 0xFFFFFFFA
-7
is 0xFFFFFFF9
So, if you wanted to see if a value was 1 less than another value, you could write:
ID Flag Type Size Memory Cmp Type Size Mem/Val Hits 1 SubSource Mem 8-bit 0x8020 2 Mem 8-bit 0x8010 = Value 0xffffffff 0 (0)This would be true if the value at $8010 (1) was 1 less than the value at $8020 (2): 1 - 2
= -1
= 0xFFFFFFFF
.
However, you should swap the conditions to make it easier to read (B - A = -1
) is the same as (A - B = 1
):
This evaluates -1 + 2 = 1
, which is true.
It is also possible to use straight negative numbers in the left section of your Sub/Add Source operations. To do so, remember to change the Type from Mem
to Value
, and use the values as explained above, such as 0xFFFFFFE5
for -27
, and 0xFFFFFFE3
for -29
, for example:
If $8020 contains 2, this would be true. -2 + (-27) = -29
, which is -2 - 27 = -29
, which is true.
If you use a negative number in a SubSource
flag, it will result in a double negative, turning the number back to positive.
This means -(-2) + (-27) = -29
, which is 2 - 27 = -29
, which is -25 = -29
, which is false.
Last 10 changes on this page:
[2021-12-13 10:49] Jamiras:
\"less\" -> \"minus\"[2021-11-27 08:38] Jamiras:
Updated SubSource Flag (markdown)[2020-01-15 08:23] meleu:
better example of a negative number[2019-12-31 12:14] meleu:
cosmetic[2019-02-17 23:42] meleu:
better example for \"Using SubSource to Count Specific Increments\"[2019-02-17 21:05] meleu:
cosmetic[2019-02-14 10:10] meleu:
fix broken link[2019-02-12 13:25] meleu:
add heading to \"Using SubSource to Count Increments\"[2019-02-12 13:18] meleu:
fix broken link[2019-02-12 09:37] meleu:
Updated SubSource (markdown)Advanced Developer Topic
When browsing the list of games, you will see that some games have a [Subset]
tag in the title. Each of these contain achievements that for some reason or another, are not available in a game's base set. Subsets are typically home to specific types of challenge runs. They have also inherited what have been known simply as [Bonus]
and [Multi]
sets.
The methods to create a subset and means to play them will change once they become a more integrated feature. As of now, they require a patch to generate a unique hash and are separate entries from the base set, so achievements must be obtained separately as well. Information on creating these patches can be obtained here.
"},{"location":"Subsets/#types-of-subsets","title":"Types of Subsets","text":""},{"location":"Subsets/#bonus-sets","title":"Bonus Sets","text":"While Bonus sets are subject to debate amongst both players and achievement creators, the overall purpose of a bonus set is for achievements that were not fit for the base set to have a home and still be obtainable by a devoted player. Think of them as \"deluxe\" challenges. The following types of achievements are the most suitable for Bonus Sets: - Extreme Challenges: If it's generally voiced a challenge is too difficult, it's a prime candidate for a Bonus set. However, just because the achievement(s) are possible to code does not mean they are possible to obtain; therefore, the achievement must still be obtainable. A good example of this is the infamous Mr. Perfect from Mega Man (NES), which requires the player to complete the entire game without taking damage. - Grind Sessions: If achievements involve overly long and frustrating grinds that have no meaningful purpose, they're better suited for Bonus sets. These include leveling characters to the maximum level, maxing out stats, performing a task an absurd amount of times, etc. when none of those things award the player. A good example of something grindy that awards the player, thus making it suitable for a base set, is One of a Kind from Final Fantasy IV (SNES), which requires a highly RNG-reliant grind for an item to trade for said armor. - Variety Packs - Want to do a mixture of subset ideas all within one set because you don't want to do several different subsets? Then do it and throw it in a Bonus set. An example of this is the Suikoden Bonus Set, which contains various challenge runs, rare drops, and extreme challenges within a single subset. - Showcasing of or Abuse of Glitches: Glitching can have unpredictable effects in a game's memory, which can result in unwanted behavior for some achievements, thus making them not suitable for a base set. Some examples of this are Replica from Final Fantasy VII (PlayStation) and Rare Candy Addiction from Pokemon - Red and Blue Versions (Game Boy.
"},{"location":"Subsets/#multi-sets","title":"Multi Sets","text":"This one is simple. If an achievement requires input from more than one player in order to unlock it, then it cannot be in the base set.
"},{"location":"Subsets/#challenge-runs","title":"Challenge Runs","text":"While many base sets include plenty of challenges, developers have the option to add challenges that last the duration of a game's playthrough to a Subset. These are typically self-imposed challenges that go against how a game is normally played. Examples: - Chrono Trigger - No Level Up - requires players to complete the game without ever leveling up their characters. - EarthBound - Rare Drops - requires players to obtain all the rare drops from enemies. - Final Fantasy - Solo Class - requires players to complete the game using only one character class, but they need to do it with every class to master the set. - Pokemon - Professor Oak Challenge - There are several of these so far! This challenge requires players to catch and/or evolve every Pokemon possible between major story points in the game. - Trails in the Sky FC - NG Nightmare - requires players to obtain 100% completion in a single, NG (New Game) playthrough on the Nightmare difficulty setting, as opposed to doing it on NG+ with carryovers.
"},{"location":"Subsets/#dlc-and-expansions","title":"DLC and Expansions","text":"Not very common, but will become more common as our console support expands. Achievements in these sets are exclusive to a game's downloadable content or expansion pack(s). Examples: - Arc the Lad 2 - Arc Arena: Monster Tournament - released as a bonus disc in the Arc the Lad Collection, this requires save data from Arc the Lad 2 in order to play. - F-Zero X - Expansion Kit - achievements are for content exclusive to the 64DD expansion of the game. - Return Fire - Maps o' Death - a separate release that provides additional maps to the game. It requires save data from the original game in order to play.
"},{"location":"Subsets/#regional-differences","title":"Regional Differences","text":"If a regional variant of a game does not have enough differences to warrant a \"full\" set, but you don't want to include it with the base set due to interference with base challenges, you can make a Subset to showcase the differences.
"},{"location":"Subsets/#user-generated-content","title":"User-Generated Content","text":"If a game has a feature that allows players to make their own content such as custom levels, then a subset would be an acceptable place to include said content. Examples: - Irritating Stick - IrRAtating Custom Courses - features custom stages made by various RA community members. - Tony Hawk's Underground - RAdical Custom Goals/Gaps - Custom goals and gaps made by various RA community members.
"},{"location":"Subsets/#naming-scheme","title":"Naming Scheme","text":"To prevent players from getting confused, there is a specific naming scheme required for all Subsets: - Bonus Sets: Must have [Subset - Bonus]
following the base game title. For example: Castlevania [Subset - Bonus]
and Darkwing Duck [Subset - Bonus]
. - Multi Sets: Must have [Subset - Multi]
following the base game title. For example: Contra [Subset - Multi]
and Kirby 64: THe Crystal Shards [Subset - Multi]
. - Challenge Runs: Must have [Subset - Challenge Name/Type]
following the base game title. For example: Chrono Trigger [Subset - No Level Up]
and Pocket Monsters Midori [Subset - Monotype Challenge]
. - DLC and Expansions: Must have [Subset - DLC/Expansion Name
following the base game title. For example: Return Fire - [Subset - Maps o' Death]
and F-Zero X [Subset - Expansion Kit]
- User-Generated Content: While not actually required, including RA
in the subset title has been a fun way to name the content.
The approval process and claiming of a subset will vary depending on if the subset type is pre-approved, your involvement with the base set, and whether or not you're a full developer or a junior developer:
Authorship\u00b9 Approval and Claiming Process Sole Author of Core Set \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 Does not require a plan and revision vote \u2022 Considered a free claim \u2074 Collaborative Author of Core Set \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 Requires a plan and revision vote? \u00a0\u00a0\u00a0\u25e6 No, if all active authors of the set approve \u00a0\u00a0\u00a0\u25e6 Yes, otherwise \u2022 Considered a free claim \u2074 No Core Set Authorship \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 If approved, a set plan must be posted in the base set's forum topic and must go through revision voting \u2022 Is not considered a free claim \u2022 In the event that both a revision and subset plan are made for a set, both claims will count as one Junior Developer \u2022 In addition to the above cases, must first be approved by Code Reviewers\u00b9 In the case of multiple revision authors, use the most restrictive ruleset in the table. Example: If there is a subset collaboration and any subset author is not a core set author, use the No Core Set Authorship
rules.
\u00b2 To Contact Developer Compliance, send them a site message here and replace the [Game Name]
and [Subset Name]
in the subject line with the game name and desired subset name.
\u00b3 The following are pre-approved subset types and therefore do not require contacting Developer Compliance: - Bonus - Multi - DLC/Expansions - Glitch Showcases - Regional Differences - User-Generated Content - Challenge Run: Low Level Game/No Leveling Runs - Challenge Run: Solo Class/Monotype Runs - Challenge Run: Checkpoint Challenges, such as Professor Oak Challenges - Challenge Run: Perma-Death Challenges, such as Nuzlocke Challenges
\u2074 For now, an admin must be contacted via Discord or by messaging RAdmin to mark a claim as free. As a courtesy, please only request this if you actually need the claim slot or if you expect a long development period.
"},{"location":"Subsets/#notes","title":"Notes","text":"Last 10 changes on this page:
[2023-10-30 13:00] The Mystical One:
Fixes formatting in the pre-approved list.[2023-07-11 10:55] The Mystical One:
Add in footnote for when there are multiple subset authors, which table entry should be used.[2023-06-30 13:45] The Mystical One:
Cleaned up the table for collaborative core set author of a subset, which implied that other authors had to approve, and so thus could stealthily veto. Current wording should be clear that collaborative author disapproval now merely means you have to go through the plan/revision vote route.[2023-06-23 11:21] The Mystical One:
Fixed spacing in pre-generated subject line on DevCompliance contact link.[2023-06-23 11:16] The Mystical One:
Added links to contact Developer Compliance with pre-generated subject to be edited.[2023-05-09 04:03] televandalist:
Added info about User-Generated Content to multiple sections. Also added it to the list of pre-approved subset types[2023-04-19 23:49] televandalist:
Moved the \"how to create a subset patch\" info to RAPatches' wiki[2023-03-13 07:48] televandalist:
Typo fix[2023-03-13 07:42] televandalist:
Fix formatting, hopefully...[2023-03-13 07:33] televandalist:
Rewrote the Approval and Claiming section again. Turned the info into a table so relevant points are easier to find.This article was originally published in the RANews - November/2020
"},{"location":"System-X-wen/#intro","title":"Intro","text":"There seems to be a lot of speculation on what the next available systems to support achievements will be. With the recent announcement of a PS2 core, there have been a lot of questions regarding if/when it will be supported. If you're only interested in the answer to that question, skip to the end of this article. But if you want to understand what exactly is needed to add support for a new system, keep reading.
"},{"location":"System-X-wen/#requirements","title":"Requirements","text":"These are the things that are required in order to add RetroAchievements support for a new system:
The first step is, obviously, to have an emulator for the system to be supported.
In the early days of RetroAchievements we used standalone emulators - one for each system. Keeping all those emulators bug-free and up-to-date requires a lot of effort and we don't have enough programmers involved on this front.
It's currently preferred to use a libretro core for emulation. This way the core developers can push new features and we can focus only on the achievement functionality. Cores can be updated and released without any additional effort for us.
Another big advantage is that libretro cores also function in RetroArch, which allows RetroAchievements to be earned on many platforms (the standalone emulators were all Windows-only applications).
Managed by: libretro core developers.
"},{"location":"System-X-wen/#step-1a-exposed-memory","title":"Step 1a: Exposed Memory","text":"As achievement triggers are a series of conditions that watch for things that happen in the emulated RAM, another requirement is access to the system's RAM.
Without exposed memory, the Memory Inspector appears blank and achievement creators are unable to create achievements.
Additionally, as RetroAchievements only reads the memory once per frame, some systems which heavily leverage paged memory have to provide some way to access the entire memory, not just the current page of memory.
Managed by: libretro core developers with some interaction with RetroAchievements developers.
"},{"location":"System-X-wen/#step-1b-ralibretro","title":"Step 1b: RALibretro","text":"The core must function in RALibretro, as that is where the achievement developers will identify the important pieces of memory and create the achievements.
This is usually only an issue if the core relies on some functionality not yet implemented in RALibretro (like the recently added keyboard and OpenGL 3D support), but some issues are caused by the RALibretro implementation being sufficiently different from the RetroArch implementation. Unless the core can be modified to not require the missing functionality, it cannot be supported until RALibretro is updated.
This page lists the status of each core the last time they were tested.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#step-2-game-identification","title":"Step 2: Game Identification","text":"We must be able to uniquely identify the games for the system.
We use a method called MD5, which scans the game's file and generates a number that we usually call as \"hash\". With this number it's possible to confirm if two copies of a file are identical, which makes it possible to ensure the player is using a ROM that the achievements were designed or tested against.
For most systems, we are able to just hash the entire ROM file, minus any header information. For larger games (particularly those on CD or DVD) we only hash what we consider to be the most important data to minimize load times. More information on how we identify games can be found here.
For systems with writable media (mostly home computers), we have to make sure that we don't hash any files that may be modified by the game itself. Systems that write to the game file must treat the original disk file as readonly and only write changes to a copy of the disk. If the core/emulator modifies the disk file, it can no longer be identified and cannot be considered viable for achievements.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#step-3-configure-the-web-server","title":"Step 3: Configure the Web Server","text":"In order to support a new system, the RetroAchievements web server must be properly configured to accept new game and achievement entries for that system.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#when-will-ra-support-system-x","title":"When will RA support System X?","text":"This page lists the status of each core the last time they were tested.
"},{"location":"Systems-Memory-Mapping/","title":"Work in Progress","text":"This page details how the memory of each supported system is mapped.
Memory banks as registered in the RA emulators are defined here.
"},{"location":"Systems-Memory-Mapping/#nes","title":"NES","text":"Reference: https://wiki.nesdev.com/w/index.php/CPU_memory_map
Bank Offset Length Description 0 0x0000 0x0800 2KB internal RAM 1 0x0800 0x0800 Mirror of $0000-$07FF 2 0x1000 0x0800 Mirror of $0000-$07FF 3 0x1800 0x0800 Mirror of $0000-$07FF 4 0x2000 0x0008 PPU registers 5 0x2008 0x1FF8 Mirrors of $2000-$2008 6 0x4000 0x0018 APU and I/O registers 7 0x4018 0x0008 APU and I/O test registers 8 0x4020 0x1FE0 Cartridge data 9 0x6000 0x2000 Cartridge RAM 10 0x8000 0x8000 Cartridge ROM"},{"location":"Systems-Memory-Mapping/#snes","title":"SNES","text":"https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map
"},{"location":"Systems-Memory-Mapping/#n64","title":"N64","text":"https://raw.githubusercontent.com/mikeryan/n64dev/master/docs/n64ops/n64ops%23h.txt
"},{"location":"Systems-Memory-Mapping/#gb","title":"GB","text":"Reference: http://gameboy.mongenel.com/dmg
The memory map reflects the CPU memory space.
"},{"location":"Systems-Memory-Mapping/#gbc","title":"GBC","text":"The memory map is identical to the Game Boy's, with the exception of banked work RAM. The first bank is mapped to its usual location in CPU space, while banks 2-7 are appended to the end of the memory map, in the 0x10000-0x15FFF region.
"},{"location":"Systems-Memory-Mapping/#gba","title":"GBA","text":"https://www.coranac.com/tonc/text/hardware.htm#sec-memory
"},{"location":"Systems-Memory-Mapping/#virtualboy","title":"VirtualBoy","text":""},{"location":"Systems-Memory-Mapping/#master-system","title":"Master System","text":"Reference: http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html
TODO: find a more reliable source.
Offset Length Description 0x0C000 0x02000 RAM"},{"location":"Systems-Memory-Mapping/#megadrive-genesis","title":"MegaDrive (Genesis)","text":"https://en.wikibooks.org/wiki/Genesis_Programming https://wiki.megadrive.org/index.php?title=Main_68k_memory_map see also Jamiras comment here: https://github.com/RetroAchievements/RALibretro/issues/47#issuecomment-455374796
"},{"location":"Systems-Memory-Mapping/#gamegear","title":"GameGear","text":""},{"location":"Systems-Memory-Mapping/#atari-2600","title":"Atari 2600","text":"Reference: http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-05.html#summary
Offset Length Description 0x080 0x080 RAM"},{"location":"Systems-Memory-Mapping/#atari-7800","title":"Atari 7800","text":""},{"location":"Systems-Memory-Mapping/#atari-lynx","title":"Atari Lynx","text":""},{"location":"Systems-Memory-Mapping/#colecovision","title":"ColecoVision","text":""},{"location":"Systems-Memory-Mapping/#neogeo-pocket","title":"NeoGeo Pocket","text":""},{"location":"Systems-Memory-Mapping/#pcengine-turbografx16","title":"PCEngine (TurboGrafx16)","text":""},{"location":"Systems-Memory-Mapping/#pcengine-cd","title":"PCEngine CD","text":""},{"location":"Systems-Memory-Mapping/#arcade","title":"Arcade","text":""},{"location":"Systems-Memory-Mapping/#pc-8001-pc-8801","title":"PC-8001 / PC-8801","text":"Reference: http://www.maroon.dti.ne.jp/youkan/pc88/memmap.html
The memory map is based on the PC-8801 layout, but excludes graphics VRAM and extended RAM.
"},{"location":"Systems-Memory-Mapping/#pc-8801","title":"PC-8801","text":"Bank Offset Length Description 0 0x00000 0x10000 Main RAM 1 0x10000 0x1000 Text VRAMText VRAM is also known as high-speed RAM, and is used as a main RAM area in some titles.
"},{"location":"Systems-Memory-Mapping/#pc-8001","title":"PC-8001","text":"Reference: http://www.cyross.com/pc8801wiki
The entire memory space is mapped in the PC-8801 main RAM bank, but only RAM is exposed, so most of the mapped space will remain uninitialized.
Offset Length Description 0x08000 0x08000 RAM"},{"location":"Systems-Memory-Mapping/#apple-ii","title":"Apple II","text":"Reference: http://apple2.guidero.us/doku.php/mg_notes/general/mem_map
The memory map consists of both main and auxiliary RAM banks. Rather than mapping the CPU-accessible memory space, which can flicker at high frequencies, the RAM banks are mapped consecutively.
Auxiliary RAM is only available on systems with 128KB of RAM (Apple IIe and up), so it will remain uninitialized on 64KB systems or when running titles that are not designed to make use of auxiliary RAM.
Bank Offset Length Description 0 0x00000 0x10000 Main RAM 1 0x10000 0x10000 Auxiliary RAM"},{"location":"Testing-for-Demo-Mode/","title":"Testing for Demo Mode","text":"Link to original post on RetroAchievements
One of the more annoying things that can happen is if you leave your game running, and the game awards you achievements for reaching levels you haven't reached yet. This is fairly common, as many games of the 16-bit era still had 'attract modes', and is usually a pretty easy thing to fix with the achievements.
We are looking in the game to find something that is set when the game is in a demo mode. Either a small piece of memory set to 0
, or 1
, or 0xff
. It could be anything really.
To start it will help to play through the game a little, and set a few save states throughout different levels of the game. And then to begin finding this 'is demo mode active' memory, we should first reset the game and wait for the demo to play.
During when the game plays the first demo, use the Memory Inspector to start a new 8-bit test, (click New 8-bit test
), and set the filter value to be equal to the last known value (under Filter values:
, set to ==
), and press Filter!
a few times. With each press, you should see the number of matches slowly become fewer, but not by much.
Next wait til the game starts playing another demo but on a different level. When the next demo is playing, press Filter a few more times, and you'll see the candidates get smaller again. Continue to do this until you've eliminated as many candidates as you can.
IMPORTANT: Don't forget, you only want to press filter when the game is DEFINITELY in the demo. If you press when it's on the title screen, or playing a movie, or even when fading in or out, the value might not be set. There's no real way to know; we are assuming that it will be set (or unset) when the demo itself is playing, which itself is only a fairly likely assumption.
After viewing some or all of the demos, you will probably still have TONS of potential memory values. Here's the juicy part, that should eliminate a ton of candidates at once. Load up one of your save states where you are definitely in-game, playing and NOT in a demo.
Now we will be filtering for \"I am NOT in a demo\". Set your filter value to not-equal !=
, and hit Filter
ONLY ONCE.
At this point, the set of candidates now represent memory values that are \"values different to when a demo was playing\". Switch back to equal (=), and hit Filter
a few more times (because we are saying 'whatever values we have, they are the same as the ones just now. The 'is demo mode' value will still be equivalent to whatever it was just now). It might help to move the character around the screen, or perform a few actions, between hitting the Filter
button.
Next, load up your next save state, and perform the same routine. Your number of candidates should reduce further, until you have less than 100 remaining.
By now if you should have only a few candidates remaining. Likely values for the candidate will be 0, 1 or 0xff. If it is something else I'd recommend ignoring it, as it's not likely to be what we're looking for (but still, not impossible). For example, in Sonic the Hedgehog (Mega Drive), the address is 0xfff0, and the value is 01 when a demo is active.
Our next step will be to verify our find. Pick one of these values and restart the game, keeping an eye on this value as the game plays the demos. Then load through each of your save states and see if it changes as you expect it to. Perhaps start a brand new game and see if it matches up correctly to the value it is when the other save states are active. Make a note of the value it is when the game is active.
Let's say we are pretty confident we've found the memory used to say 'game is in demo mode'. We'll save this to CodeNotes by adding a description in the Memory Inspector, then clicking Add Note
.
Next we will use the Achievements
dialog to find all the achievements that could unlock during the demos (probably all the level-based achievements), and add a new requirement to these achievements. Add it alongside the existing requirements. For this new requirement, set the address to the 'demo mode active' memory we found, set the mem size to 8-bit, and set the value we require to be equal to the value when the game is active.
That's it! Now the achievement will only trigger if the player is on a certain level, AND that the game is not in a demo mode!
Before we commit this back to the server, it's a good idea to test out this to see if it worked. Press ESC on the game to bring up the overlay and pause the game. Then click 'Reset Achieved Status' on this achievement in the 'Achievements' dialog, and confirm the prompt. Finally, click back in the game and press TAB to reset the game, and ESC to dismiss the overlay. Press F4 a few times to increase the speed of the game, and watch to ensure the achievement doesn't trigger. If it still triggers, it sounds like something went wrong. Try and check the requirements are entered correctly ('is demo mode' comparison probably needs to be '8-bit'), check that you reset the right achievement, and finally watch the value of the 'is demo mode' flag in the memory inspector.
If it worked correctly, select the achievement in the Achievements dialog, hit 'Commit Selected', confirm the dialog and you're done!
There are many alternative methods for getting the 'is demo mode' flag, but unfortunately none of them are guarantees. All I can do is suggest methods I've found in existing games. To start with, I'll suggest Castlevania: Bloodlines (Mega Drive), and the achievement Watery Grave (5). There is a mild cheat-protection in these requirements, but I'll just focus on the 'demo mode' part. Castlevania treats every screen as a type of 'screen mode'. To test for this, I started the game, and at the sega logo, I started an 8-bit test. I then assumed that the 'screen mode' would have changed by the time it was playing the 'intro movie', so I did a 'not equal', then an 'equal' filter to suggest that I only want candidates that have changed. I did this again at the 'press start' screen, then at the options screen, then the password screen, character select screen, and finally ingame.
By this point I had 10 matches. I mentally eliminated anything where the surrounding values were very random - this data is likely to be graphic or sound data, and won't be much use for us. After having repeated the test and watching each of these 10 values, I also eliminated a few more, as some of these appeared to change while I was still on the same screen. This left me with three values, 0x9002
, 0x9004
and 0x905e
. After going into game and playing for a few seconds, I could tell that 0x905e
was changing while I was still ingame. I opted to use 0x9002
, as it was located fairly close to clean boundary (0x9000
). Also values like this are likely to be in the second half of RAM (between 0x8000
and 0xffff
) as they are easier for developers to address.
Tambi\u00e9n mira: Un vistazo al Inspector de Memoria.
!=
y =
.>
o <
). Por ejemplo, cero vida es usualmente 0
, Stage 1 es usualmente el valor 0
, Stage 2 es usualmente el valor 1
dependiendo el tipo de juego.AB CD WX YZ
, en 16 bit se convierte en CDAB YZWX
. A esto se le llama \"ordenado de bits big endian\". Sin preocupaciones puedes ignorar esta platica geek, solamente recordando que las cosas se almacenan al rev\u00e9s en la vista de 16 bit y superiores.Bits: 7 6 5 4 3 2 1 0
arriba de las variables. Y abajo de esos n\u00fameros va a ver ya sea un 0
o un 1
, as\u00ed como 0 0 1 0 0 0 1 1
en la imagen de abajo. Si bit5
tiene un 1
arriba de el, entonces bit3=1
para esa variable. El uso de Single bit es muy com\u00fan en un juego para items/eventos/desbloqueos/etc. Tal vez suene un poco confuso , pero es muy importante que lo entiendas. Algunos juegos con espacio en memoria muy limite usan los campos de bits (Bit fields) much\u00edsimo! Es una t\u00e9cnica importante de aprender.Tambi\u00e9n mira: Conceptos No-Bievenidos y Dise\u00f1o de Logros.
PauseIf
cheat codes: Si el juego tiene un cheat code para incrementar vidas, seleccionar stages, etc. Percatate de encontrar las variables para ello y agregar alguna especie de protecci\u00f3n a tus logros.\u00e9
en Pokemon, ya que actualmente rompen algunas cosas (como el feed). Cambien no son visibles en la b\u00fasqueda si no se introduce el car\u00e1cter especial. Lo mismo para c\u00f3digos universales de Emoji UTF-8. Excepci\u00f3n Permitida: Scripts de Rich Presence.Un truco usual para empezar a filtrar valores para encontrar el Modo Demo es dejar que empieze y asi empezar a filtrar con =
\"Last Known Value\" y presionar \"Filter\" suficiente veces, deteni\u00e9ndote una vez que el demo hubiera terminado (ten cuidado de no filtrar despu\u00e9s que se hubiera terminado el demo).
Ahora empieza el juego de manera normal y cuando tengas control del personaje cambie el filtro a !=
y filtra solo una vez. Los valores que se filtraron son los que cambiaron desde el modo demo.
Ahora cambien el filtro de regreso a =
y entonces inicia una secuencia de jugar-y-filtrar. Que significa juega un poco, mu\u00e9vete por el escenario, derrota algunos enemigos, y entonces filtra.
Pro tip: Es muy muy muy \u00fatil tener estados de guardado (savestates) en diferentes niveles del juego, ya que puedes hacer lo de jugar-y-filtrar en diferentes escenarios y hacer el filtrado mas efectivo.
Despu\u00e9s de conseguir algunas variables como resultado, por lo general el valor de demo es igual a 1
(algunas veces tambi\u00e9n es ff
). Si encuentras una direcci\u00f3n potencial editala a 0
y checa si eres capaz de mover al personaje. Si s\u00ed, BINGO!, esa es la variable que estabas buscando.
Aqu\u00ed un truco f\u00e1cil utilizando un logro de prueba para observar si una variable tiene cambios, que es algo que tu vas a querer saber com\u00fanmente.
Condiciones Explicadas
Valor 1 = Valor 0
; Esto es para prevenir que el logros jamas sea verdadero, ya que el valor 0 nunca va a ser igual a 1.Valor 1 = Valor 1
; Para que funcione este truco el logro necesita hits para que se resetee. Cuando 1 = 1 hits ser\u00e1n agregados a la condici\u00f3n.ResetIf Mem 0x10 != Delta 0x10
; Esta es la variable que quieres observar. Cada vez que hay un cambio el logro se va a reiniciar.Pause on Reset
y Active
est\u00e9n marcadas. Ahora vas a conseguir un pop-up y la emulaci\u00f3n se va a pausar cada vez que la variable cambie.Last 10 changes on this page:
[2019-04-14 13:53] eldexterr:
Document Finished :)[2019-04-12 11:50] eldexterr:
Document isn\u00b4t finishLink para o texto em ingl\u00eas: Tips and Tricks
"},{"location":"Tips-and-Tricks-pt_BR/#dicas-para-convencao-de-nomes","title":"Dicas para Conven\u00e7\u00e3o de Nomes","text":"NTSC USA
se dispon\u00edveis, pois 60 FPS (Frames Per Second) \u00e9 uma experi\u00eancia de jogo mais suave. As ROMs lan\u00e7adas como PAL European
s\u00e3o executados em 50 FPS, e devem ser evitados na maioria dos casos. As ROMs lan\u00e7adas como NTSC Japan
tamb\u00e9m s\u00e3o executados em 60 FPS, mas s\u00f3 \u00e9 a melhor op\u00e7\u00e3o se o jogo for uma vers\u00e3o exclusiva do Jap\u00e3o. Recorrer a um jogo lan\u00e7ado como PAL European
deve ser apenas em \u00faltimo caso (exclusivo para a Europa) e normalmente \u00e9 um n\u00famero muito seleto de jogos \u00fanicos da biblioteca inteira do console.!=
E ==
.>
ou <
). Por exemplo, geralmente nenhuma barra de energia \u00e9 0
, o est\u00e1gio 1 geralmente \u00e9 o valor 0
, o est\u00e1gio 2 geralmente \u00e9 o valor 1
, dependendo do tipo de jogo. Outro exemplo, talvez cada segmento da sua energia tenha 4 barrinhas - Voc\u00ea deve procurar quando \"4\" vai para \"3\" quando voc\u00ea perde uma barrinha?Comece com a visualiza\u00e7\u00e3o de 8 bits no Memory Inspector. Olhar para grandes partes de mem\u00f3ria ir\u00e1 complicar as coisas, mas isso facilitar\u00e1 o trabalho de um desenvolvedor experiente. Se voc\u00ea est\u00e1 apenas come\u00e7ando e desconhece termos como endianess e bit ordering (ou quando o cansa\u00e7o bate), \u00e9 melhor fazer suas observa\u00e7\u00f5es na vis\u00e3o de 8 bits. \u00c9 mais f\u00e1cil!
"},{"location":"Tips-and-Tricks-pt_BR/#nivel-2-medio","title":"N\u00edvel 2 - M\u00e9dio","text":"Big data (vista de 16 ou 32 bits): lembre-se de que ao adicionar um endere\u00e7o de 16 bits o endere\u00e7o \u00e0 direita vem primeiro.
Exemplo: AB CD WX YZ
em 8 bits torna-seCDAB YZWX
em 16 bits.
Isso \u00e9 chamado de \"ordena\u00e7\u00e3o de bytes big endian\". Voc\u00ea pode tranquilamente ignorar esse papo geek apenas lembrando que as coisas est\u00e3o armazenadas \"de tr\u00e1s pra frente\" na vista de 16 bits e acima.
Lembre-se de que se voc\u00ea estiver vendo mem\u00f3ria em peda\u00e7os maiores, quando voc\u00ea destaca um valor, esse valor agora representa um \"peda\u00e7o\" de mem\u00f3ria de 16 ou 32 bits e n\u00e3o o endere\u00e7o de mem\u00f3ria de 8 bits que voc\u00ea pode estar procurando. Voc\u00ea precisar\u00e1 voltar para a vis\u00e3o de 8 bits e destacar a endere\u00e7o que te interessa, se voc\u00ea encontrar algo de 8 bits que pare\u00e7a interessante.
"},{"location":"Tips-and-Tricks-pt_BR/#nivel-3-avancado","title":"N\u00edvel 3 - Avan\u00e7ado","text":"Adicionando suporte para os cores libretro Little Endian: N64-specific, na maioria das vezes, ao adicionar suporte para um core libretro LE ao seu set, os conceitos explicados anteriormente (N\u00edvel Intermedi\u00e1rio) se aplicam, com ordena\u00e7\u00e3o de bytes ligeiramente alteradas. O que \u00e9 visto como leg\u00edvel em 16 bits muda drasticamente no interior de um core LE.
Exemplo: AB CD WX YZ primeiro pega os bits de A, vira-os como se estivessem olhando em um espelho; bits de B bits e vira-os; bits de C... etc, at\u00e9 Z, e ent\u00e3o se torna WXYZ ABCD com os bytes do seu \u00faltimo passo.
Para adicionar o suporte LE, voc\u00ea estar\u00e1 escrevendo uma condi\u00e7\u00e3o do n\u00facleo falso (Mem 0x000001 = Mem 0x000001), copiando suas condi\u00e7\u00f5es originais n\u00e3o-LE com um 'PauseIfna parte superior em uma Alt, copie as mesmas condi\u00e7\u00f5es para a outra. Ambos os 'PauseIf
s conter\u00e3o um cheque olhando para um endere\u00e7o de mem\u00f3ria que nunca muda para ver se o seu valor de 16 bits teve o seu pedido de bytes alterado (Pense nisso como \" PauseIf
n\u00e3o estou no n\u00facleo LE\" e \"PauseIf
eu sou\" nas condi\u00e7\u00f5es alt).
Um funcionar\u00e1 se o jogador estiver executando em um n\u00facleo LE, o outro n\u00e3o. Em seguida, voc\u00ea executar\u00e1 a matem\u00e1tica que descrevi acima nos valores que voc\u00ea est\u00e1 procurando no \"PauseIf
, n\u00e3o estou no LE core\" Alt, e atualizando-o.
Confuso? Sim. \u00c9 por isso que a maioria dos iniciantes e desenvolvedores intermedi\u00e1rios n\u00e3o deve se preocupar.
"},{"location":"Tips-and-Tricks-pt_BR/#dicas-de-criacao-de-achievements","title":"Dicas de cria\u00e7\u00e3o de achievements","text":"mode != Demo
ou algo semelhante em suas conquistas.Last 10 changes on this page:
[2018-03-28 20:15] meleu:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 12:03] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 12:03] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 11:47] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Tips and Tricks.pt_BR (markdown)See also: Memory Inspector Overview.
!=
and =
filters.>
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.AB CD WX YZ
, in 16 bit it becomes CDAB YZWX
. This is called \"big endian byte ordering\". You can safely ignore the geek-speak by just remembering things are stored backwards in 16 bit view and above.Bits: 7 6 5 4 3 2 1 0
above the addresses. And below those numbers will be either 0
or 1
, like 0 0 1 0 0 0 1 1
in the image below. If bit5
has 1
under it, then bit5=1
for that address. Single bit usage is very common for game items/events/unlocks/etc. This may be confusing, but it's very important to understand. Some games with limited memory space use bit fields a lot! Its an important technique to learn.See also: Unwelcome Concepts and Achievement Design.
PauseIf
cheat codes: If the game has a cheat code to increase lives, select stages, etc. Make sure to find the addresses for it and add some kind of protection in your achievements.\u00e9
in Pokemon, as they currently break a few things (like feed). They are also not visible in search without the special character. Same for UTF-8 Universal Emoji codes. Allowed exception: Rich Presence Scripts.An usual trick to start filtering addresses to find the Demo Mode is to let the demo begin and then start to filter =
\"Last Known Value\" and press \"Filter\" many times, stopping right before the demo ends (be careful to not filter after the demo ends).
Now start the game normally and when you're able to control the character change the filter to !=
and then filter one single time. The filtered addresses are the ones that has changed since the demo mode.
Now change the filtering back to =
and then start a sequence of play-and-filter. Which means play a bit, move around then scenario, defeat some enemies, and then filter.
Pro tip: It is very very very useful to have savestates in different levels of the game, so you can do the play-and-filter in different scenarios and make the filtering more effective.
After getting a few addresses as result, quite often the demo value will be 1
(sometimes it's also ff
). If you find a potential address edit it to 0
and check if you become able to control the character. If yes, BINGO!, that's the address you're looking for.
Here's an easy trick using a dummy achievement to watch an address for any changes, which is something you'll quite often want to know.
Conditions Explained
Value 1 = Value 0
; This is to prevent the achievement from ever being true, as the value 0 never equals 1.Value 1 = Value 1
; For this trick to work the achievement needs hits to reset. When 1 = 1 hits will be added to this condition.ResetIf Mem 0x10 != Delta 0x10
; This is the address you want to watch. Any time there is a change the achievement will reset.Pause on Reset
and Active
are both checked. Now you will get a pop-up and emulation will pause each time this address changes.Last 10 changes on this page:
[2023-06-05 22:26] televandalist:
Updated Tips and Tricks (markdown)[2023-06-03 02:06] televandalist:
Updated Tips and Tricks (markdown)[2021-11-30 18:30] SporyTike:
Typo that caused a jr-dev confusion. Bit5 = Bit5 and not Bit3[2019-08-13 19:42] Kvon:
Tips and Tricks: Text hooks tip added[2019-02-07 14:57] meleu:
decrease verbosity; add trick fo find demo mode; group tips and tricks more reasonably[2019-01-17 11:19] meleu:
removed the \"Limitations\" topic[2019-01-17 11:17] meleu:
subnests on bullet points need 4 spaces[2019-01-15 19:15] Jamiras:
Update reset behavior for 0.75 toolkit[2019-01-13 16:20] Rapha\u00ebl Zumer:
Add \"Avoid relying on text and graphics\" tip[2019-01-13 15:41] Rapha\u00ebl Zumer:
Fix typos and reword a memory digging tipTrigger
marks one or more conditions in an achievement as the logic that is expected to be the final logic to become true which causes the achievement to trigger. This allows the runtime to know when an achievement is about to trigger, so a challenge indicator can be shown on the screen.
When all conditions that must be true for the achievement to trigger are true except those marked with the Trigger
flag, the achievement will become Primed. It will remain Primed as long as all of the previous conditions remain true, or until the achievement triggers or is deactivated.
This functionality allows putting indicators on the screen to help players know when a challenge is active, or more importantly, when they fail the challenge.
A prime example would be for a damageless boss fight. The Trigger
flag would be put on the \"boss is dead\" condition. When all other conditions are true (ex: in boss fight, boss at full hp (HitCount 1), not demo), the challenge indicator would be displayed. If the player takes damage, the HitCount on the \"boss at full hp\" condition would get reset, and the challenge indicator would go away.
Trigger should not be used if the player is not attempting a challenge. Achievements that would be earned without any additional effort from the player don't need to tell the player they're about to be earned.
Up to eight challenge indicators can be shown at one time (though rarely more than one or two should be). If indicators and leaderboard trackers are both visible, the tracker will appear above the indicators.
"},{"location":"Trigger-Flag/#interaction-with-pauseif","title":"Interaction with PauseIf","text":"If the achievement is Paused while Primed, the indicator will become hidden.
If it is Paused before it is Primed, the indicator will not be shown at all until the achievement is unpaused.
When the achievement becomes unpaused, the indicator may be displayed or hidden depending on the state of the non-Trigger conditions.
"},{"location":"Trigger-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-09-10 11:52] Jamiras:
Updated Trigger Flag (markdown)[2021-06-29 08:18] Chris:
update interaction w/ pauseif to latest (0.79.2) integration[2021-04-30 12:07] Jamiras:
Created Trigger Flag (markdown)You can and should always be as creative as you can be, but there are some concepts that are NOT welcome for achievements. Below is a list of what have been deemed unwelcome concepts. Please note that there is some wiggle room so some exceptions to the rules have been provided. When in doubt, consult with Developer Compliance.
It is bad design to have achievements popping too frequently. An example of this is unlocking achievements for both defeating a boss as well as obtaining a specific item after the fight.
When these are acceptable:
Achievements for dying, getting a game over, or repeatedly failing a task just for the sake of it are unnecessary.
When these are acceptable: - Many point-and-click adventure games and visual novels often tie a player's death into the story, which can result in unique scenes a player would not witness otherwise. - If playing poorly results in a humorous or otherwise interesting in-game acknowledgement such as being awarded a helmet for taking too many head shots.
"},{"location":"Unwelcome-Concepts/#zero-effort-without-purpose","title":"Zero Effort Without Purpose","text":"Examples of this are achievements for simply starting a game, collecting a single coin, watching a video, etc.
When these are acceptable:
Achievements for performing tasks that are only possible by using glitches, exploiting bugs, etc. are not allowed in a base set. Glitches/Bugs are errors within a game's code which often cause unintended behavior. Examples are memory overflow, incorrectly loaded levels, and clipping into objects.
When these are acceptable:
[Subset - Glitch Showcase]
or [Subset - Bonus]
.Achievements that require input from at least one other player are not allowed in a base set.
When these are acceptable:
[Subset - Multi]
sets.Achievements that require a long task where the slightest mistake will end in failing the challenge. Especially challenges where randomness and other variation in game behavior makes anticipating actions extra difficult.
When these are acceptable: - Subsets for Extreme Challenges, or a typical Bonus set. - Games where behavior of enemies or obstacles is highly deterministic or pattern-based. - Games where this challenge is a common goal of players or not seen as an extreme challenge by the game's community.
"},{"location":"Unwelcome-Concepts/#pointless-excessive-grinding","title":"Pointless Excessive Grinding","text":"Achievements that require long, repetitive tasks solely for the sake of saying you did it. If an achievement calls for spending countless hours making a character reach level 99 or farming for 99 of a certain item, but there is no actual purpose to it, then it does not have a place in a base set.
When these are acceptable:
Rely entirely on randomness, especially when there are extremely low odds.
When these are acceptable: Games or mini-games where the randomness is a major aspect.
"},{"location":"Unwelcome-Concepts/#secret-achievements","title":"\"Secret Achievements\"","text":"When the player has no indication of what they're going after.
When these are acceptable:
Let's face it. There are some games, or 'games,' rather, that are not fit for achievements. Below is a list of said types of games that are usually not.
If a compilation or multi-cart features games that share the same console, then they are not allowed. An example of this is 6-Pak for Genesis/Mega Drive, which contains six Genesis/Mega Drive games.
"},{"location":"Unwelcome-Concepts/#betas-demos-and-prototypes","title":"Betas, Demos, and Prototypes","text":"If the game ended up having an official release, then these are generally not allowed unless there is unique content. Games that only existed as betas, demos, or prototypes are typically fine, so long as they're actually playable (some prototypes barely qualify).
"},{"location":"Unwelcome-Concepts/#rich-presence-custom-name-restriction","title":"Rich Presence Custom Name Restriction","text":"Rich Presence that directly displays custom player input text is prohibited. The most common example being displaying what a player inputs as their character or file name directly into Rich Presence.
This restriction helps in preventing inappropriate or offensive content from showing on various site pages as well as makes the moderation of Rich Presence more manageable, in addition to protection player privacy as players may not realize their text is being displayed publicly.
"},{"location":"Unwelcome-Concepts/#banned-titles","title":"Banned Titles","text":"We generally avoid banning titles, leaving content filtering up to individual users to decide. Even still, some titles are egregious enough to warrant removal from the site, both for the protection of the users and of the site itself. Below is an incomplete list of such titles, to be updated as necessary.
Title Year Platform \u2022 Lolita Syndrome\u2022 \u30ed\u30ea\u30fc\u30bf\u30fb\u30b7\u30f3\u30c9\u30ed\u30fc\u30e0 1983 FM-7, PC-88 \u2022 My Lolita\u2022 \u30de\u30a4\u30fb\u30ed\u30ea\u30fc\u30bf 1984 FM-7, PC-88 \u2022 The Guy Game 2004 PS2, Xbox, Windows"},{"location":"Unwelcome-Concepts/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-05-05 11:08] Andrew Comer:
Bullet formatting fixes.[2024-03-27 09:46] The Mystical One:
Added details for \"Requires Complete Perfection\"[2024-01-26 08:49] The Mystical One:
Updated Unwelcome Concepts (markdown)[2024-01-26 08:46] The Mystical One:
Added Rich Presence Custom Name Restriction section.[2023-06-30 11:03] The Mystical One:
Added Developer Compliance contact links.[2023-06-28 15:10] The Mystical One:
Added in the clarification that an approved glitch should be for accomplishing something with the glitch.[2023-06-12 18:27] meleu:
fix list formats so mkdocs can render them properly[2023-06-05 21:10] televandalist:
Added Demos to \"Betas, Demos, and Prototypes\" - Added a link to GBA Video Series - Added quick links to the sections under unwelcome game types -[2023-06-02 20:33] televandalist:
Updated WIP Unwelcome Concepts (markdown)Great place to find game guides, finding almost all you could want to know about game content, find cheat codes, for development utility and also for making proper protections against the codes.
"},{"location":"Useful-Links/#httpswwwvgmapscom","title":"https://www.vgmaps.com/","text":"Thousands of maps/screenshots of your favourite video games.
"},{"location":"Useful-Links/#httpstcrfnet","title":"https://tcrf.net/","text":"It is a site dedicated to unearthing and researching unused and cut content from video games. From debug menus, to unused music, graphics, enemies, or levels, many games have content never meant to be seen by anybody but the developers \u2014 or even meant for everybody, but cut due to time/budget constraints.
"},{"location":"Useful-Links/#cumulative-probability-calculator","title":"Cumulative Probability Calculator","text":"When working with achievements with an RNG factor you will often want to know the probability of success for players given a number of attempts. (see unwelcome concepts, achievements with low odds). Use it to calculate P(X>=1), assuming the player needs to succeed only once across several attempts, to estimate how many attempts an might require for less lucky players.
"},{"location":"Useful-Links/#httpswwwzapstudionetframecalc","title":"https://www.zapstudio.net/framecalc/","text":"Simple utility to calculate frames out of time given and the other way around.
"},{"location":"Useful-Links/#httpswwwromhackingnet","title":"https://www.romhacking.net","text":"The biggest repository of patches to hack ROMs.
"},{"location":"Useful-Links/#httpdatacrystalromhackingnetwikihashes","title":"http://datacrystal.romhacking.net/wiki/Hashes","text":"Explains what hashes are. If you don't know what they are you should probably read this.
"},{"location":"Useful-Links/#httpsemn178githubioonline-toolscrc32_checksumhtml","title":"https://emn178.github.io/online-tools/crc32_checksum.html","text":"Drag and drop checksum checker utility. You can also get the checksum from the rom you have loaded from the retroachievements menu in the emulators.
"},{"location":"Useful-Links/#httpwwwmarcrobledocomrompatcherjs","title":"http://www.marcrobledo.com/RomPatcher.js","text":"An online ROM patcher utility.
"},{"location":"Useful-Links/#httpjsonviewerstackhu","title":"http://jsonviewer.stack.hu","text":"Excellent for viewing raw achievements
"},{"location":"Useful-Links/#httpgamehackingorg","title":"http://gamehacking.org","text":"Provides many Pro Action, Game Genie, and Game Shark codes which can be converted to RAW addresses on the site.
"},{"location":"Useful-Links/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-29 12:34] meleu:
add https://www.zapstudio.net/framecalc/[2019-01-29 14:15] Kvon:
added the Cumulative Probability Calculator link[2019-01-07 12:14] meleu:
added vgmaps.com[2018-12-06 20:20] televandalist:
Added gamehacking.org - I use the site a lot and always recommend it to people looking for addresses. - tele[2018-10-11 00:21] CoolCanuck:
gamefaqs.com -> gamefaqs.gamespot.com[2018-05-03 11:53] meleu:
better format, making the URLs appear on the ToC after mkdocs conversion[2018-04-28 22:31] meleu:
Updated Useful Links (markdown)[2018-04-28 19:03] magusLOGS:
added tcrf.net[2018-04-28 13:48] meleu:
Created Useful Links (markdown)Nosotros queremos un entorno abierto, positivo y acogedor.
Ejemplos de comportamientos que contribuyen a crear un entorno positivo incluyen:
Ejemplos de comportamientos inaceptables de parte de los participantes incluyen:
Los administradores tienen el derecho y la responsabilidad de remover, editar, o denegar comentarios, Logros, Medallas, posteos en el foro, y otras contribuciones que no est\u00e1n alineadas a este C\u00f3digo de Conducta, o el banear temporal o permanentemente a cualquier participante por otros comportamientos que ellos consideren inapropiados, amenazantes, ofensivos, o da\u00f1inos. Cu\u00e1ndo el comportamiento inapropiado no es muy claro, los administradores discutir\u00e1n entre ellos que acci\u00f3n deber\u00e1 ser tomada.
Los administradores que no sigan o impongan el C\u00f3digo de Conducta en buena fe pueden enfrentar repercusiones temporales o permanentes como lo sera determinado por otros miembros lideres del proyecto.
"},{"location":"Users-Code-of-Conduct-es/#reportando","title":"Reportando","text":"Instancias de abuso, acoso, trampa o de otro modo comportamientos inaceptables deber\u00e1n ser reportados contactando al equipo de moderadores de RetroAchievements en el Servidor de Discord (usuarios con nombres en azul). Tambi\u00e9n puedes contactar a todos los administradores/moderadores activos enviando un Mensaje Privado al usuario RAdmin en el sitio oficial.
Las quejas ser\u00e1n evaluadas, investigadas y respondidas cuando la circunstancia lo amerite.
"},{"location":"Users-Code-of-Conduct-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-17 09:12] ShinyNinetalesTM:
fixed some inaccuracies[2019-02-14 10:09] meleu:
fix broken link[2018-10-11 00:14] CoolCanuck:
https[2018-06-10 09:43] lilbud:
Updated Discord Link[2018-05-04 10:34] meleu:
Updated Users Code of Conduct es (markdown)[2018-05-04 10:03] meleu:
added a title to make it look better after mkdocs conversion[2018-04-20 18:31] ShinyNinetalesTM:
Changed \"cazerias\" to the correct word \"cacer\u00edas\", and changed \"derrogantes\" to \"despectivos\" (derrogantes doesn't exist at all in spanish language). Also, removed an extra n in \"deber\u00edan\" and changed \"der\" to \"ser\"[2018-03-24 11:30] meleu:
Updated Codigo de Conducta de los usuarios (markdown)Le projet RetroAchievements a pour objectif de fournir les outils n\u00e9cessaires \u00e0 la cr\u00e9ation de succ\u00e8s pour les jeux r\u00e9tro et \u00e0 leur mise en valeur. Nous aspirons \u00e0 promouvoir une communaut\u00e9 saine ax\u00e9e sur la collaboration autour de cette passion. Toute cr\u00e9ation est pens\u00e9e pour \u00eatre gratuite et ne fera jamais l'objet de profits de notre part.
"},{"location":"Users-Code-of-Conduct-fr/#regles","title":"R\u00e8gles","text":"Il y a beaucoup de joueurs r\u00e9tro \u00e0 travers le globe appartenant \u00e0 de nombreuses cultures diff\u00e9rentes, aux points de vue et opinions vari\u00e9s. C'est pourquoi, afin de garantir un environnement sain \u00e0 la communaut\u00e9 pour partager cette passion commune des jeux r\u00e9tro, il nous faut nous doter de certaines r\u00e8gles.
"},{"location":"Users-Code-of-Conduct-fr/#version-courte","title":"Version courte","text":"Cette version courte devrait suffir \u00e0 la plupart des gens :
Si la Version courte n'est pas assez d\u00e9taill\u00e9e pour vous, en voici une plus d\u00e9taill\u00e9e :
"},{"location":"Users-Code-of-Conduct-fr/#exemple-de-comportement-attendu","title":"Exemple de comportement attendu","text":"Les mod\u00e9rateurs interviendront pour calmer le jeu s'il leur semble que la situation commence \u00e0 d\u00e9raper. Consulter ci-dessous Comment fonctionne la mod\u00e9ration.
"},{"location":"Users-Code-of-Conduct-fr/#liberte-dexpression","title":"Libert\u00e9 d'expression","text":"Si vous souhaitez juste vous d\u00e9fouler en d\u00e9versant des commentaires p\u00e9joratifs sur notre mani\u00e8re de mener le projet, vous \u00eates libre de le faire. Mais dans la mesure o\u00f9 cela g\u00e9n\u00e8re une d\u00e9motivation et une perte de temps de nos volontaires, nous n'en voulons ni sur nos forums et ni sur notre serveur Discord. Il existe beaucoup d'autres options sur Internet pour le faire.
Gardez \u00e0 l'esprit que RetroAchievements.org n'est pas un bastion de la libert\u00e9 d'expression.
Si vous avez des critiques \u00e0 formuler, nous serons heureux de les \u00e9couter pour autant qu'elles soient faites de mani\u00e8re respectueuse.
"},{"location":"Users-Code-of-Conduct-fr/#comment-fonctionne-la-moderation","title":"Comment fonctionne la mod\u00e9ration","text":"Si vous avez le sentiment qu'une mod\u00e9ration est n\u00e9cessaire, contactez un @mod sur notre serveur Discord ou adressez votre probl\u00e8me \u00e0 RAdmin, une adresse partag\u00e9e par tous les mod\u00e9rateurs.
La mission des mod\u00e9rateurs est de s'assurer que tous les utilisateurs respectent le code de conduite des utilisateurs.
Que fait un mod\u00e9rateur s'il constate une violation du code de conduite :
Un rappel \u00e0 l'ordre formel et diplomatique (ni sarcasme ni ton mena\u00e7ant).
Si le rappel \u00e0 l'ordre est ignor\u00e9, le contrevenant sera renvoy\u00e9 du notre serveur Discord.
Si le contrevenant continue d'ignorer la mod\u00e9ration, il sera alors banni de notre serveur Discord. S'il avait le r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet, ses privil\u00e8ges seront r\u00e9voqu\u00e9s.
Note: sur le site Internet, il n'y a pas de \"renvoi\". Si le contrevenant ignore le rappel \u00e0 l'ordre, c'est directement le bannissement.
Si vous avez fait l'objet d'un bannissement et souhaitez faire appel de cette d\u00e9cision pour r\u00e9cup\u00e9rer votre acc\u00e8s, envoyez un courriel \u00e0 ramodmail@gmail.com ou directement un message \u00e0 RAdmin.
"},{"location":"Users-Code-of-Conduct-fr/#que-faire-si-vous-pensez-que-la-moderation-a-commis-une-erreur","title":"Que faire si vous pensez que la mod\u00e9ration a commis une erreur ?","text":"Si vous pensez que les mod\u00e9rateurs n'ont pas respect\u00e9 les r\u00e8gles \u00e9dict\u00e9es ci-dessus, envoyez un message direct \u00e0 RAdmin ou un courriel \u00e0 ramodmail@gmail.com. Il s'agit d'une adresse partag\u00e9e par tous les mod\u00e9rateurs et les administrateurs. La question sera discut\u00e9e coll\u00e9gialement et \u00e9quitablement.
Les administrateurs ou mod\u00e9rateurs qui ne respecteraient pas ou violeraient d\u00e9lib\u00e9r\u00e9ment ce code de conduite devraient faire face \u00e0 des r\u00e9percussions temporaires voire d\u00e9finitives d\u00e9cid\u00e9es par les autres membres de l'administration du projet.
"},{"location":"Users-Code-of-Conduct-fr/#tricherie","title":"Tricherie","text":"Consulter les R\u00e8gles concernant le classement global et la chasse aux succ\u00e8s.
"},{"location":"Users-Code-of-Conduct-fr/#faq","title":"FAQ","text":"Non.
Le membre pourra toujours utiliser nos services et jouer \u00e0 des jeux r\u00e9tro afin de d\u00e9bloquer des succ\u00e8s. Toutefois, si le comportement perturbateur devait se prolonger sur le site Internet, il en serait alors \u00e9galement banni.
"},{"location":"Users-Code-of-Conduct-fr/#jai-cree-un-serveur-discord-car-je-veux-plus-de-liberte-que-je-nen-ai-sur-le-serveur-officiel-retroachievements-puis-je-en-faire-la-promotion-ici","title":"J'ai cr\u00e9\u00e9 un serveur Discord car je veux plus de libert\u00e9 que je n'en ai sur le serveur officiel RetroAchievements. Puis-je en faire la promotion ici ?","text":"Non.
"},{"location":"Users-Code-of-Conduct-fr/#est-il-obligatoire-pour-un-developpeur-de-succes-de-rejoindre-le-serveur-discord","title":"Est-il obligatoire pour un d\u00e9veloppeur de succ\u00e8s de rejoindre le serveur Discord ?","text":"Non.
Rejoindre notre serveur Discord est facultatif. Toutefois, si vous vous trouvez sur la liste des membres bannis de Discord, vous ne pouvez pr\u00e9tendre au r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet.
"},{"location":"Users-Code-of-Conduct-fr/#si-un-createur-de-succes-est-banni-de-discord-perdra-t-il-son-role-de-developpeur-sur-le-site-internet","title":"Si un cr\u00e9ateur de succ\u00e8s est banni de Discord, perdra-t-il son r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet ?","text":"Oui.
"},{"location":"Users-Code-of-Conduct-fr/#si-je-suis-banni-du-serveur-discord-mais-que-je-souhaite-encore-creer-des-succes-que-dois-je-faire","title":"Si je suis banni du serveur Discord mais que je souhaite encore cr\u00e9er des succ\u00e8s, que dois-je faire ?","text":"Envoyez votre appel \u00e0 RAdmin ou ramodmail@gmail.com afin de demander \u00e0 ce que votre bannissement soit lev\u00e9.
Il n'est pas important que vous souhaitiez ou non rejoindre le serveur Discord mais si vous \u00eates dans la liste des utilisateurs bannis, vous ne pouvez pas pr\u00e9tendre au r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet.
"},{"location":"Users-Code-of-Conduct-pl/","title":"Kodeks Post\u0119powania U\u017cytkownika","text":""},{"location":"Users-Code-of-Conduct-pl/#nasze-standardy","title":"Nasze Standardy","text":"Chcemy wolne, otwarte, pozytywne \u015brodowisko. Pami\u0119taj cz\u0142eku; wszyscy tu jeste\u015bmy aby po\u0142\u0105czy\u0107 si\u0119 wsp\u00f3ln\u0105 pasj\u0105 grania w stare gry!
"},{"location":"Users-Code-of-Conduct-pl/#przykady-zachowania-ktore-suzy-do-tworzenia-przyjaznego-srodowiska","title":"Przyk\u0142ady zachowania kt\u00f3re s\u0142u\u017cy do tworzenia przyjaznego \u015brodowiska.","text":"Takie zachowanie mo\u017ce sko\u0144czy\u0107 si\u0119 dla sprawcy wyciszeniem, wykopaniem, lub banem z serwer Discord lub/i z RetroAchievements.org
"},{"location":"Users-Code-of-Conduct-pl/#zle-widziane-zachowanie","title":"\u0179le widziane zachowanie","text":"Moderator wst\u0105pi aby uspokoi\u0107 je\u015bli konwersacja wyjdzie spod kontroli, w takim wypadku moderator mo\u017ce usun\u0105\u0107 komentarze, tymczasowo wyciszy\u0107 u\u017cytkownik\u00f3w , poprosi\u0107 aby porozmawiali prywatnie, lub podj\u0119cie innych akcji kt\u00f3re s\u0105 konieczne aby uciszy\u0107 sytuacje. Zachowaj spok\u00f3j, a wszyscy b\u0119dziemy mieli lepszy czas
"},{"location":"Users-Code-of-Conduct-pl/#wyraznie-zezwolone","title":"Wyra\u017anie zezwolone","text":"Podczas robienia publicznej krytyki zachowuj si\u0119 cywilizowanie i nie atakuj os\u00f3b, nie stosowanie si\u0119 do tego b\u0119dzie skutkowa\u0107 moderacj\u0105
Dla zdrowia psychicznego i mora\u0142\u00f3w spo\u0142eczno\u015bci spr\u00f3buj aby krytyka by\u0142a zach\u0119caj\u0105ca, konstrukcyjna i optymistyczna.
"},{"location":"Users-Code-of-Conduct-pl/#zasady-dla-serwera-discord","title":"Zasady dla serwera Discord","text":"Pozosta\u0144 w temacie kana\u0142u w kt\u00f3rym jeste\u015b, niekt\u00f3re kana\u0142y s\u0105 szczeg\u00f3\u0142owe, a niekt\u00f3re s\u0105 elastyczne. Sprawd\u017a opis kana\u0142u na g\u00f3rze i jak inny u\u017cywaj\u0105 kana\u0142.
"},{"location":"Users-Code-of-Conduct-pl/#etyka-forum","title":"Etyka forum","text":""},{"location":"Users-Code-of-Conduct-pl/#opublikuj-to","title":"Opublikuj to!","text":"Je\u015bli inni zachowuj\u0105 si\u0119 nieprzyzwoicie nie graj moderatora!
Je\u015bli czujesz \u017ce moderacja jest konieczna, napisz do [Radmina]((http://retroachievements.org/createmessage.php?t=RAdmin.md), kt\u00f3ry jest kontem moderator\u00f3w
Je\u015bli masz problem z jak\u0105kolwiek czynno\u015bci\u0105 moderacji wy\u015blij wiadomo\u015b\u0107 do [Radmina]((http://retroachievements.org/createmessage.php?t=RAdmin.md) lub wy\u015blij maila do ramodmail@gmail.com. To jest wsp\u00f3lne konto kt\u00f3re widz\u0105 admini i moderatorzy, problemy b\u0119d\u0105 przedyskutowane i za\u0142atwione sprawiedliwie
"},{"location":"Users-Code-of-Conduct-pl/#konflikty","title":"Konflikty","text":"Jest ok i cz\u0119sto dobrze jak si\u0119 pojawi konflikt, lecz jest wa\u017cne aby by\u0142 on pozytywny, zobacz Hierarchie Niezgody Grahama (I will make the image later), by zobaczy\u0107 co wypada, wszystko pod Zaprzeczeniem nie jest wystarczaj\u0105co dobre na forum, gdy\u017c krytyczny ton, atakowanie innych i wyzwiska nie s\u0105 akceptowane
"},{"location":"Users-Code-of-Conduct-pl/#oszukiwanie","title":"Oszukiwanie","text":"Zobacz list\u0119 Globaln\u0105 Tablic\u0119 Wynik\u00f3w i Zasady Zdobywania Osi\u0105gni\u0119\u0107.
Konta kt\u00f3rym udowodniono oszukiwanie b\u0119d\u0105 ustawione na \"nie \u015bledzone\", a w niekt\u00f3rych wypadkach banowane.
Je\u017ali podejrzewasz kogo\u015b o oszukiwanie, nie r\u00f3b publicznych zarzut\u00f3w. Podziel si\u0119 dowodami z administacj\u0105/moderacj\u0105, lub poczekaj na szczeg\u00f3\u0142ow\u0105 ocen\u0119. Zarzuty oszukiwania mog\u0105 by\u0107 bardzo niszcz\u0105ce dla spo\u0142eczno\u015bci i s\u0105 cz\u0119sto bezzasadne lub nie maj\u0105 wystarczaj\u0105co dowod\u00f3w aby zosta\u0107 ukaranym. Twoje zarzuty pozostan\u0105 anonimowe
Naprzyk\u0142ad:_ u\u017cytkownik by\u0142 oskar\u017cony o oszukiwanie, bo ocenie dowod\u00f3w, __, _, _. uznali\u015bmy \u017ce jest wystarczaj\u0105co/niewystarczaj\u0105co dowod\u00f3w aby by\u0142 nie \u015bledziony.
"},{"location":"Users-Code-of-Conduct-pl/#zgaszanie","title":"Zg\u0142aszanie","text":"Przypadki Nieakceptowalnego zachowania lub oszukiwania mog\u0105 by\u0107 zg\u0142aszane do ekipy moderator\u00f3w na serwerze discord RetroAchievements (osoby z niebieskimi pseudonimami). Mo\u017cesz r\u00f3wnie\u017c skontaktowa\u0107 si\u0119 ze wszystkimi moderatorami/adminami poprzez wysy\u0142anie prywatnej wiadomo\u015bci do U\u017cytkownika Radmin na oficjalnej stronie.
Skargi b\u0119d\u0105 sprawdzone, zbadane i zaadresowane zale\u017cnie od okoliczno\u015bci.
"},{"location":"Users-Code-of-Conduct-pl/#obowiazki-adminowmoderacji","title":"Obowi\u0105zki admin\u00f3w/moderacji","text":"Admini/moderacja s\u0105 odpowiedzialni za utrzymywanie naszej spo\u0142eczno\u015bci dobrze funkcjonuj\u0105cej. Oni musz\u0105 podtrzymywa\u0107 ten kodeks post\u0119powanie jak i ten Deweloper\u00f3w osi\u0105gni\u0119\u0107 na stronie i na discordzie. Ich obowi\u0105zki na tych dw\u00f3ch frontach s\u0105 opisane poni\u017cej.
"},{"location":"Users-Code-of-Conduct-pl/#na-stronie","title":"Na stronie","text":"DiscordNick (RA_Username)
.Administatorzy/Moderatorzy kt\u00f3rzy nie przestrzega lub nie egzekwuje kodeksu post\u0119powania mo\u017ce zosta\u0107 tymczasowo lub permanentnie ukarany z za\u0142o\u017cenia innych lider\u00f3w projektu.
"},{"location":"Users-Code-of-Conduct-pt_BR/","title":"C\u00f3digo de Conduta dos Usu\u00e1rios","text":""},{"location":"Users-Code-of-Conduct-pt_BR/#nossas-normas","title":"Nossas Normas","text":"N\u00f3s queremos um ambiente aberto, agrad\u00e1vel e acolhedor.
Exemplos de comportamentos que contribuem para criar um ambiente adequado incluem:
Exemplos de comportamentos inaceit\u00e1veis incluem:
Os administradores t\u00eam o direito e responsabilidade de remover, editar ou rejeitar coment\u00e1rios, conquistas, emblemas, \u00edcones, t\u00f3picos do f\u00f3rum e outras contribui\u00e7\u00f5es que n\u00e3o est\u00e3o de acordo com os termos presentes neste C\u00f3digo de Conduta. Ainda, administradores podem banir, permanentemente ou temporariamente, usu\u00e1rios por outros comportamentos considerados inadequados, amea\u00e7adores, ofensivos ou prejudiciais. Quando um comportamento n\u00e3o for claramente inapropriado, os administradores debater\u00e3o, entre si, para decidir quais medidas ser\u00e3o tomadas.
Administradores que n\u00e3o cumprirem ou impuserem, de boa-f\u00e9, o C\u00f3digo de Conduta poder\u00e3o estar sujeitos a san\u00e7\u00f5es, permanentes ou tempor\u00e1rias, determinadas por outros membros da lideran\u00e7a do projeto.
"},{"location":"Users-Code-of-Conduct-pt_BR/#comunicacao","title":"Comunica\u00e7\u00e3o","text":"Casos de abuso, ass\u00e9dio, trapa\u00e7as, ou outros comportamentos inadequados podem ser informados aos administradores do RetroAchievements, no servidor Discord por meio de uma Mensagem Direta \u00e0 um dos administradores (usu\u00e1rios com nomes em vermelho). Voc\u00ea tamb\u00e9m pode contatar um administrador enviando uma Mensagem Privada para o usu\u00e1rio RAdmin no site oficial.
As reclama\u00e7\u00f5es ser\u00e3o lidas, investigadas e respondidas caso a caso.
"},{"location":"Users-Code-of-Conduct-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-02-10 16:00] meleu:
fix broken link[2018-10-11 00:12] CoolCanuck:
https[2018-06-10 09:43] lilbud:
Updated Discord Link[2018-05-04 10:02] meleu:
Updated Users Code of Conduct pt_BR (markdown)[2018-03-24 11:31] meleu:
Updated Codigo de Conduta do Usuario (markdown)The RetroAchievements project aims to provide tools for creating achievements for retrogames and ways to enjoy such creations. We strive to promote a healthy and collaborative community around this hobby. Everything we produce is made available for free and we will never profit from it.
"},{"location":"Users-Code-of-Conduct/#rules","title":"Rules","text":"There's a lot of retrogamers around the globe, spanning various different cultures, points of view, and opinions. Therefore, in order to provide a healthy environment for the community to share their passion for retrogames, we need some rules.
"},{"location":"Users-Code-of-Conduct/#short-version","title":"Short Version","text":"This short version should be enough for most people:
If the short version is not clear enough for you, here's a detailed one:
"},{"location":"Users-Code-of-Conduct/#examples-of-expected-behavior","title":"Examples of expected behavior","text":"The moderators will step in to cool things down if arguments start getting out of hand. Check below how moderation works.
"},{"location":"Users-Code-of-Conduct/#freedom-of-speech","title":"Freedom of Speech","text":"If you just want to rant or dump derogatory comments about how we run things here, you're free to do that. But, as it's demotivating and wastes a lot of volunteers' time, we don't want it on our forums or Discord Server. There are plenty of options where you can do it around the Internet.
Keep in mind that RetroAchievements.org is NOT a bastion of freedom of speech.
If you have criticism, you're very welcome to say it, just be sure to be civil.
"},{"location":"Users-Code-of-Conduct/#how-moderation-works","title":"How Moderation Works","text":"If you feel moderation is needed, ping the @mod role on our Discord server, or direct your issues to RAdmin, a shared mod-mail account.
The moderation goal is to assure users adhere to the User's Code of Conduct.
What a moderator should do after seeing a breach to the Code of Conduct:
Formal and diplomatic warning (no sarcasm, no threatening tone).
If the warning is ignored, the offender will be kicked from our Discord server.
If the offender continues to ignore the moderation, they'll be banned from our Discord server. If the offender has the \"Developer\" role on the website, their privileges will be removed.
Note: on the website there's no \"kick\". If the offender ignores the warning, the next step is a ban.
If you've been banned and somehow want to appeal to have your access back, send an email to ramodmail@gmail.com or a Direct Message to RAdmin.
"},{"location":"Users-Code-of-Conduct/#what-to-do-if-you-think-moderation-is-wrong","title":"What to do if you think moderation is wrong","text":"If you think moderators are not acting like described above, send a Direct Message to RAdmin or email ramodmail@gmail.com. This is a shared moderation account that all mods and admins see. The issue will be discussed and dealt with fairly.
Admins/mods who do not follow or enforce this Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's administration.
"},{"location":"Users-Code-of-Conduct/#faq","title":"FAQ","text":"No.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"Users-Code-of-Conduct/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"Users-Code-of-Conduct/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"Users-Code-of-Conduct/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"Users-Code-of-Conduct/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"Users-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 20:45] televandalist:
Removed section on cheating since it was just a redirect to the \"Global Leaderboard and Achievement Hunting Rules\" section, which is in the same category.[2021-05-01 20:24] meleu:
criticism doesn't need to be DMs to RAdmin[2021-05-01 12:05] meleu:
rewording stuff[2021-05-01 07:30] meleu:
reorder short rules[2021-05-01 07:22] meleu:
list's indentation[2021-05-01 07:17] meleu:
simpler, clearer and more focused version[2020-11-03 19:07] HolyShinx:
forgot one word, geez I'm so clumsy ;-;[2020-11-03 19:03] HolyShinx:
added rule 1, 2 and 4 to Discord Chat Specific Rules from RA discord server[2020-09-18 23:03] meleu:
no \"public lynching\"[2020-05-10 19:34] meleu:
Revert 65363acd5c8e6ab50b72985f30a64405b8c96526...72e3510e81ea66c6a90885af39e670f8d9f38b3e on Users Code of ConductIn this example is a simple way one can utilize the Add Source flag in their achievement logic.
We'll look at an achievement from Suikoden (PlayStation) entitled Treasure Hunter - Dragon Knights' Domain:
Addresses Used
0x1b8244
: bit0-bit4 are treasures in Soniere, bit5 is a treasure at the Northern Checkpoint, and bit6-bit7 are treasures at the Dragon Den.0x1b8245
: bit0 is a treasure at the Dragon Den, bit1-bit5 are treasures at Seek Valley, and bit6-7 are treasures in Kalekka.0x1b824b
: bit0-bit1 are treasures at the Village of the Hidden Rune, bit2 is unused, bit3-4 are treasures at the Dragon Knights' Fortress, bit5-6 are treasures in Teien, and bit7 is a treasure at Luiken's House. This particular achievement only requires treasures from Dragon Knights' Fortress, Dragon Den, and Seek Valley; therefore, we only need bit6-7 from 0x1b8244
, bit0-bit5 from 0x1b8245
, and bit3-bit4 from 0x1b824b
.
Logic Breakdown
This method is mostly handy for when the totals between the Delta-type and Mem-type only have a difference of 0x01, but it can be used in various types of achievements: collectibles that are only obtainable one-at-a-time, map completion (such as dungeon-crawlers with viewable maps that get revealed as you enter new areas), learnable skills, bestiaries, completing a certain number of side missions, and many others.
If you run into a situation where more than one bitflag in an Add Source chain toggles at the same time, you can still utilize this template. However, you'll want to clone the Delta conditions and make it so both totals create a range. Still using the above achievement as an example, the existing total could be changed to <= 0x09
and the total for the second group could be >= 0x05
. This would make it so the achievement would trigger if the total goes from 5-9 treasures to 10 treasures.
To Do: - Provide a separate example for the Delta range. - Go over using BitCount in a similar achievement. - Go over using /
when you need at least one of multiple things.
Tomemos a Streets of Rage 2 (Mega Drive) como ejemplo, y al logro Steel Grip - Derrota a 10 enemigos sin tirar tu arma. Este se basa en cuatro condiciones:
Variables (Addresses)
0xef33
: sujetando un arma 0xef37
: tipo de arma0xef4e
: numero de KOs (jugador 1)Condiciones
el jugador esta sujetando un arma. Requerimos que esto sea verdad, una vez. Esto no es realmente necesario, pero es util para mostrar progresi\u00f3n. Necesitamos que el jugador sujete un arma, m\u00ednimo una vez.
numero de KOs que el jugador a hecho. Es de 16-bit (esto significa que el valor puede ser mayor a 255), y utilizando un delta y los s\u00edmbolos 'mayor que (greater than)', estamos diciendo que necesitamos que el numero de KOs sea mayor que el valor anterior, y necesitamos que esto pase 10 \u00fanicas veces. Cada vez que el valor actual sea mas grande que el valor anterior, el hit count va a subir por uno. El siguiente frame, el valor 'delta' tiene que incrementarse para ser el mismo que el valor actual, esto asegura que despu\u00e9s de cada baja, el contador de KO se va a subir a uno, y el hit count va a subir a uno. LIMITACI\u00d3N: si el numero de KOs sube sobre dos en el mismo frame, el hit count solo va a subir por uno. Es una peque\u00f1a desventaja que pasa mas com\u00fan de lo que aparenta...
Se resetea todo el progreso, si el tipo de arma es diferente al ultimo tipo de arma conocido.
Se resetea todo el progreso, si el jugador no se encuentra cargando un arma.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esLet's take Streets of Rage 2 (Mega Drive) as a case study, and Steel Grip - Defeat 10 enemies without dropping your weapon achievement. This relies on four conditions:
Addresses
0xef33
: holding weapon 0xef37
: weapon type0xef4e
: number of KOs (player 1)Conditions
the player is holding a weapon. We require this to be true, once. This is actually not necessary, but it's useful to show the progression. We are requiring the player to hold a weapon, at least once.
number of KOs that the player has made. It's 16-bit (meaning the value can be more than 255), and by using the delta and 'greater than' symbols, we are saying that we require the number of KOs to be bigger than the previous value, and we need this to happen 10 unique times. Every time the current value is bigger than the previous value, the hit count will go up by one. The next frame, the 'delta' value will have increased to be the same as the current value, this ensures that after every kill, the KO counter will go up by one, and the hit count will go up by one. LIMITATION: if the number of KOs goes up by two in the same frame, the hit count will only go up by one. It's a slight flaw that does happen a little more often than expected... it's not so accurate but it's a fairly close estimate to your number of kills.
reset all our progress, if the weapon type is different than the last known weapon type.
reset all our progress, if the player is no longer carrying a weapon.
Link para o texto em ingl\u00eas: Using Delta Values and Hit Counts to Detect an Increment
Vamos pegar Streets of Rage 2 (Mega Drive) como um caso de estudo, e o achievement Steel Grip - Defeat 10 enemies without dropping your weapon. Isso depende de quatro condi\u00e7\u00f5es:
Endere\u00e7os
0xef33
: arma em m\u00e3o0xef37
: tipo de arma 0xef4e
: n\u00famero de KOs (player 1)Condi\u00e7\u00f5es
o jogador est\u00e1 segurando uma arma. Isso deve ser verdadeiro, ao menos uma vez. Isso na verdade n\u00e3o \u00e9 necess\u00e1rio, mas \u00e9 \u00fatil mostrar a progress\u00e3o. Estamos dizendo que exigem que o jogador mantenha uma arma, pelo menos uma vez.
n\u00famero de KOs que o jogador fez. \u00c9 16 bits (o que significa que o valor pode ser superior a 255), e usando os s\u00edmbolos delta e 'maior que', estamos dizendo que exigimos que o n\u00famero de KOs seja maior do que o valor anterior, e precisamos disso para aconte\u00e7a 10 unicas vezes. Toda vez que o valor atual \u00e9 maior do que o valor anterior, a contagem de hits aumentar\u00e1 em um. No pr\u00f3ximo quadro, o valor 'delta' aumentar\u00e1 para ser o mesmo que o valor atual, isso garante que depois de cada morte, o contador KO ir\u00e1 subir de um, e a contagem de batidas aumentar\u00e1 em um. LIMITA\u00c7\u00c3O: se o n\u00famero de KOs aumentar em dois no mesmo quadro, a contagem de batidas aumentar\u00e1 apenas em um.. \u00c9 uma pequena falha que acontece um pouco mais frequentemente do que o esperado ... n\u00e3o \u00e9 t\u00e3o preciso, mas \u00e9 uma estimativa bastante pr\u00f3xima do seu n\u00famero de mortes
resete todo o seu progresso, se o tipo de arma for diferente do \u00faltimo tipo de arma conhecida.
resete todo seu progresso, se o jogador j\u00e1 n\u00e3o estiver carregando uma arma.
Last 10 changes on this page:
[2019-02-18 17:01] meleu:
fix broken link[2018-03-25 12:06] KingDice001:
Updated Using Delta Values and ResetIf pt_BR (markdown)[2018-03-25 11:49] KingDice001:
Updated Using Delta Values and ResetIf pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Using Delta Values and ResetIf.pt_BR (markdown)Link para o texto em ingl\u00eas: Using Hit Counts as a Timer
Vamos ver como o achievement Super Hang-On (Mega Drive) Speed Freak - Maintain at least 300kph for 10 seconds aparece no Achievement Editor dialog:
Addresses (endere\u00e7os)
0x0055a
: \u00e9 a velocidade.0x0c757
: \u00e9 0x00 quando o jogo \u00e9 sem compensa\u00e7\u00e3o (sem pausar).Nesse achievement, desejamos que haja um fato ou condi\u00e7\u00e3o que seja verdadeira 600 vezes consecutivamente. A raz\u00e3o para isso \u00e9 que o Genesis/Mega Drive est\u00e1 travado no processamento de 60 frames de l\u00f3gica por segundo (NTSC pelo menos?). E o fato que estamos procurando \u00e9 que \"a velocidade \u00e9 mais de 300\". Al\u00e9m disso, queremos que o jogador mantenha a velocidade acima de 300 sem pausar o jogo.
Condi\u00e7\u00f5es
A velocidade do jogador est\u00e1 acima de 300 para 600 frames (ou 10 segundos se passaram).
reset o contador de hit (hit counter) se a velocidade for menor que 300.
reset o contador de hit se o jogador pausa o jogo.
Last 10 changes on this page:
[2019-02-18 16:55] meleu:
fix broken link[2018-03-25 12:05] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-25 11:48] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-25 11:48] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-23 01:22] meleu:
Updated Using Hit Counts and ResetIf.pt_BR (markdown)En este ejemplo vas a ver como los hit counts pueden ser utilizados como temporizador y recompensar un logro si la condici\u00f3n es verdadera por 10 segundos.
Veamos como en Super Hang-On (Mega Drive) el logro Speed Freak - Manten un minimo de 300kph por 10 segundos se ve en la ventana del Editor de Logros (Achievement Editor):
Variables (Addresses)
0x0055a
: es la velocidad.0x0c757
: es 0x00 cuando el juego no se encuentra pausado.En este logro, queremos que una condici\u00f3n sea verdadera 600 veces consecutivamente. La raz\u00f3n de esto es que el Sega Genesis procesa fijamente 60 frames de l\u00f3gica por segundo (m\u00ednimo NTSC?). Y tambi\u00e9n estamos buscando que la \"velocidad sea sobre 300\". Y aparte que el jugador mantenga la velocidad sin pausar el juego.
Condiciones
velocidad del jugador sea sobre 300 por 600 frames (o que hubieran pasado 10 segundos).
resetear el hit counter si la velocidad es inferior a 300.
resetear el hit counter si el jugador pausa el juego.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esIn this example, you'll see how hit counts can be used as a timer and award an achievement if a condition is true for 10 seconds.
Let's see what Super Hang-On (Mega Drive)'s achievement Speed Freak - Maintain at least 300kph for 10 seconds looks like in the Achievement Editor dialog:
Addresses
0x0055a
: is the speed.0x0c757
: is 0x00 when the game is unpaused.For this achievement, we are looking for a condition that is met 600 times consecutively. The reason why is that the genesis is locked into processing 60 frames of logic per second (NTSC at least?). And the condition we're checking is \"speed is over 300\". Also, we want the player to keep the speed above 300 without pausing the game.
Conditions
player's speed is above 300 for 600 frames (or 10 seconds have passed).
reset the hit counter if the speed goes under 300.
reset the hit counter if the player pauses the game.
Real Example document structure:
Brief explanation...
Addresses
0x123
: Note about the address0x456
: another noteConditions
Explaining each requirement in the achievement's logic.
Explanation of requirement 2.
Explanation of requirement 3...
Value definitions are used for leaderboards and rich presence.
A value is calculated by evaluating one or more memory reads. Read values can be scaled (multiplication) or summed (addition) to arrive at the final value.
NOTE: Value calculations are performed using 32-bit signed integers. As such, the maximum value is 2147483647 and the minimum value is -2147483648. Values above the maximum will wrap around and register as very negative numbers.
"},{"location":"Value-Definition/#value-from-measured","title":"Value from Measured","text":"Starting with the 0.77 DLL (and RetroArch 1.8.2), you can use the Measured flag to generate a Value. This supports all logic supported by the achievement editor, but every condition must have a flag that somehow influences the Measured value (i.e. AddSource, AddAddress). Note that the Measured condition cannot have a multiplier directly on it. If the final clause needs to be multiplied, use an additional AddSource and Measure 0.
VAL: A:0xhfe24_A:0xhfe25*60_A:0xhfe22*3600_M:0
The example provided above reads:
AddSource 8-bit 0xfe24\nAddSource 8-bit 0xfe25 * Value 60\nAddSource 8-bit 0xfe22 * Value 3600\nMeasured Value 0\n
The addresses represent frames, seconds, and minutes respectively, and are individually multiplied and then added together to create a total number of frames that can be submitted to the database.
"},{"location":"Value-Definition/#value-from-hitcount","title":"Value from HitCount","text":"Sometimes you want to count the number of times something happens and submit that as the value. You can also do this using Measured syntax. Just add a comparison to your final condition. Do not include an explicit Hit target, or that will be the maximum value that can be submitted.
The HitCount on the condition will automatically be set to 0 when the leaderboard starts, and the HitCount will be submitted as the Value when the leaderboard submit trigger activates. You can use PauseIf and ResetIf within the Value conditions to further control the behavior.
For example:
M:0xH1234!=d0xH1234\n
Would submit the number of times the byte at $1234 changed while the leaderboard was active.
N:0xH1234!=20_M:0xH1234!=d0xH1234\n
Would submit the number of times the byte at $1234 changed to something other than 20 while the leaderboard was active.
"},{"location":"Value-Definition/#legacy-syntax","title":"Legacy Syntax:","text":"VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Before the introduction of the Measured flag, Values were written using their own syntax. Some people still prefer this syntax as it's generally easier to do by hand. A legacy value is the sum of a collection of memory values multiplied by modifiers.
address*modifier
(address times modifier)
The _
underscore operator separates the individual values and acts as 'plus'. So the example above represents:
8-bit 0xfe24 times 1, PLUS\n8-bit 0xfe25 times 60, PLUS\n8-bit 0xfe22 times 3600\n
The addresses represent frames, seconds, and minutes respectively, and are individually multiplied and then added together to create a total number of frames that can be submitted to the database.
To add a constant, use _vN
where N is the constant in decimal (i.e. _v10
) will add 10 to the result. You can also use negative values for N (i.e. _v-10
will subtract 10 from the result.
Tip: modifier can be a non-integer value, so if you need to divide by two, you can multiply by 0.5: 0xhfe24*0.5
Multiple value calculations may be joined with a $
. This is similar to alt groups in a trigger, but instead of any one alt group needing to be true, whichever \"alt value\" is largest will be used as the overall value for the expression.
M:0xH1234$M:0xH1235
would return the larger of the values at $1234 or $1235.
A single memory reference can be prefixed with a ~
to perform a binary inversion on it. After reading the value from memory, every bit is switches (0s become 1s, 1s become 0s).
Typically, this is used to conditionally add or subtract a value:
A:0xH1234*~0xM1233_M:0xH1235
will add the byte at $1234 to the byte at $1235 if bit0 of $1233 is not set.
Binary Coded Decimal (BCD) is when a values in memory is stored as decimal digits in each hex digit location. For example, if the memory inspector shows 86 at a byte in memory, it would normally represent the decimal value 134 (0x86 hex = 134 decimal). BCD decoding the value keeps the individual decimal numbers and the result is 86 (0x86 hex = 86 BCD).
You can have the runtime decode BCD values by putting a b
prefix in front of the memory reference (i.e. b0xW1234
). You still need to specify the size of the BCD memory address. b0x1234 reads a 16-bit value. b0xh1234 reads an 8-bit value and b0xX1234 reads a 32-bit value. NOTE: Support for 16-bit and 32-bit BCD decoding is a feature of the 0.075 toolkit.
Last 10 changes on this page:
[2022-02-04 17:41] Jamiras:
add link to Condition Syntax[2022-02-04 17:34] Jamiras:
Updated Value Definition (markdown)[2022-02-04 16:52] Jamiras:
Updated Value Definition (markdown)[2022-02-04 16:41] Jamiras:
Updated Value definition (markdown)When RAM digging, you may find yourself wishing for a way to do code notes en masse. Unfortunately, there's not a convenient or simple way to do this, but it is possible and can save a ton of time if you are patient enough to learn how.
First, we'll look at how local code notes work: - Open the Memory Inspector and the Code Notes windows. - Go to a random address and type something in as a note, but do not publish it. - Check that address in the Code Notes window. You'll notice that your note is red. - Go to the emulator's RACache directory and open the GameID-User.txt
file of the game you have running. - Lines that start with N0:
are local code notes. Once you publish a note, it will disappear from the GameID-User.txt
file.
N0:address of the note:\"text of the code note\"
N0:
is how the server knows this is a code note.address of the note
the memory address, obviously. This will be in hex, not decimal.:
it's just a separator\"text of the code note\"
- the contents of the code note, and yes, the quotes are required. Line breaks can be used with \\r\\n
and quotes within the note can be used with \\\"
Now, the next part requires some general know-how with spreadsheets. It will vary per game, so you'll need to figure out the formula for a lot of things yourself. We will use an example, though.
Let's say we want to have notes for all character stats. You will need the following: - Character 1's stat addresses. - An offset for Character 1 and Character 2's first stats.
We will use Trails in the Sky SC as an example.
Character 1 is Estelle, and her stat addresses are as followed:
Address \"Character and Stat\" 0xc5bbcc \"[16-bit] Estelle - Current Level\" 0xc5bbd0 \"[16-bit] Estelle - Max HP\" 0xc5bbd4 \"[16-bit] Estelle - Current HP\" 0xc5bbd8 \"[16-bit] Estelle - Max EP\" 0xc5bbda \"[16-bit] Estelle - Current EP\" 0xc5bbdc \"[16-bit] Estelle - Current CP\" 0xc5bbe0 \"[32-bit] Estelle - Current EXP\" 0xc5bbe4 \"[16-bit] Estelle - STR Stat\" 0xc5bbe6 \"[16-bit] Estelle - DEF Stat\" 0xc5bbe8 \"[16-bit] Estelle - ATS Stat\" 0xc5bbea \"[16-bit] Estelle - ADF Stat\" 0xc5bbec \"[16-bit] Estelle - DEX Stat\" 0xc5bbee \"[16-bit] Estelle - AGL Stat\" 0xc5bbf0 \"[16-bit] Estelle - MOV Stat\" 0xc5bbf2 \"[16-bit] Estelle - SPD Stat\" 0xc5bbfa \"[16-bit] Estelle - RNG Stat\"Character 2 is Joshua. His first stat (Current Level) is at the address 0xc5bc08.
0xc5bc08 minus 0xc5bbcc is 0x3c, or 60 in decimal. We can confirm this by checking his last stat (RNG), which is 0xc5bc36, also 0x3c/60 from Estelle's last stat.
We'll start by putting Estelle's stats into a spreadsheet and adding a column between the addresses and stats. It will look like this (column numbers in parenthesis):
Address (A) Blank Column (B) \"Character and Stat\" (C) 0xc5bbcc \"[16-bit] Estelle - Current Level\" 0xc5bbd0 \"[16-bit] Estelle - Max HP\" 0xc5bbd4 \"[16-bit] Estelle - Current HP\" 0xc5bbd8 \"[16-bit] Estelle - Max EP\" 0xc5bbda \"[16-bit] Estelle - Current EP\" 0xc5bbdc \"[16-bit] Estelle - Current CP\" 0xc5bbe0 \"[32-bit] Estelle - Current EXP\" 0xc5bbe4 \"[16-bit] Estelle - STR Stat\" 0xc5bbe6 \"[16-bit] Estelle - DEF Stat\" 0xc5bbe8 \"[16-bit] Estelle - ATS Stat\" 0xc5bbea \"[16-bit] Estelle - ADF Stat\" 0xc5bbec \"[16-bit] Estelle - DEX Stat\" 0xc5bbee \"[16-bit] Estelle - AGL Stat\" 0xc5bbf0 \"[16-bit] Estelle - MOV Stat\" 0xc5bbf2 \"[16-bit] Estelle - SPD Stat\" 0xc5bbfa \"[16-bit] Estelle - RNG Stat\"In cell B1, we'll use the following formula: =hex2dec(A1)
to turn the address to decimal. Then we'll drag it down to populate the other cells. It should now look like this (also, added the row column since we'll need it):
Now, we'll populate the cells with Joshua's stats using the offset. In cell B17, we will use the formula =B1+60
, which will give us 12958728
. Drag cell B17 to B32. In cell A17, use the formula =dec2hex
and drag that down to A32. It should now look like this:
Now, we'll copy cells C1:C16 and paste them to cells C17:C32. We'll highlight C17:C32 and use the Find & Replace tool (CTRL+H for Google Sheets) to change instances of Estelle
to Joshua
, but only for that cell range. It will look like this:
We can repeat this for the remaining characters, but we'll leave it as is to keep it simple.
Remember the syntax: N0:address of the note:\"text of the code note\"
. This is how we'll set up the spreadsheet: - Add a column to the left of column A and fill that column with N0:
. - Copy cells B1:B32 (which are now the hex addresses). - Right-click on B1 and go to Paste Special -> Values only, or simply press CTRL+SHIFT+V. If you don't do this, the next step will mess everything up. - Clear Column C (which were the decimal addresses) and fill C1:C32 with :
. - The sheet should now look like this:
GameID-User.txt
file.The GameID-User.txt
contents now look like this:
#.#.#.#\nTrails in the Sky SC\nN0:0xc5bbcc:\"[16-bit] Estelle - Current Level\"\nN0:0xc5bbd0:\"[16-bit] Estelle - Max HP\"\nN0:0xc5bbd4:\"[16-bit] Estelle - Current HP\"\nN0:0xc5bbd8:\"[16-bit] Estelle - Max EP\"\nN0:0xc5bbda:\"[16-bit] Estelle - Current EP\"\nN0:0xc5bbdc:\"[16-bit] Estelle - Current CP\"\nN0:0xc5bbe0:\"[32-bit] Estelle - Current EXP\"\nN0:0xc5bbe4:\"[16-bit] Estelle - STR Stat\"\nN0:0xc5bbe6:\"[16-bit] Estelle - DEF Stat\"\nN0:0xc5bbe8:\"[16-bit] Estelle - ATS Stat\"\nN0:0xc5bbea:\"[16-bit] Estelle - ADF Stat\"\nN0:0xc5bbec:\"[16-bit] Estelle - DEX Stat\"\nN0:0xc5bbee:\"[16-bit] Estelle - AGL Stat\"\nN0:0xc5bbf0:\"[16-bit] Estelle - MOV Stat\"\nN0:0xc5bbf2:\"[16-bit] Estelle - SPD Stat\"\nN0:0xc5bbfa:\"[16-bit] Estelle - RNG Stat\"\nN0:0xc5bc08:\"[16-bit] Joshua - Current Level\"\nN0:0xc5bc0c:\"[16-bit] Joshua - Max HP\"\nN0:0xc5bc10:\"[16-bit] Joshua - Current HP\"\nN0:0xc5bc14:\"[16-bit] Joshua - Max EP\"\nN0:0xc5bc16:\"[16-bit] Joshua - Current EP\"\nN0:0xc5bc18:\"[16-bit] Joshua - Current CP\"\nN0:0xc5bc1c:\"[32-bit] Joshua - Current EXP\"\nN0:0xc5bc20:\"[16-bit] Joshua - STR Stat\"\nN0:0xc5bc22:\"[16-bit] Joshua - DEF Stat\"\nN0:0xc5bc24:\"[16-bit] Joshua - ATS Stat\"\nN0:0xc5bc26:\"[16-bit] Joshua - ADF Stat\"\nN0:0xc5bc28:\"[16-bit] Joshua - DEX Stat\"\nN0:0xc5bc2a:\"[16-bit] Joshua - AGL Stat\"\nN0:0xc5bc2c:\"[16-bit] Joshua - MOV Stat\"\nN0:0xc5bc2e:\"[16-bit] Joshua - SPD Stat\"\nN0:0xc5bc36:\"[16-bit] Joshua - RNG Stat\"\n
That's all, folks. Learn some spreadsheet formulas and Regular Expressions and you will become a Code Note guru. Please use responsibly and don't actually save over my Trails in the Sky SC notes. Always spot-check addresses here and there to make sure your formulas stay consistent. I added over 500 code notes to the wrong game using an older method, which was much easier to make mistakes. <3 - tele.
"},{"location":"WIP---Dev-Tips---Code-Notes-En-Masse/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-06 20:59] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2024-01-06 20:58] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-25 18:11] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-10 18:49] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-10 18:30] televandalist:
Typos[2023-04-10 18:25] televandalist:
First draftNo.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"WIP-CoC-FAQ/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"WIP-CoC-FAQ/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-CoC-FAQ/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"WIP-CoC-FAQ/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-CoC-FAQ/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-04-20 00:41] televandalist:
Created WIP-CoC-FAQ (markdown)WIP Page. Probably going to separate these into the following: - Game Entries - Achievement Set Requirements (done) - Unwelcome Concepts (done) - Tickets (done) - Hacks - Subsets (done) - Leaderboards & Rich Presence - Hubs
"},{"location":"WIP-Content-Guidelines/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-03 03:57] televandalist:
Updated WIP Content Guidelines (markdown)[2023-06-03 02:00] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-23 22:38] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:59] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:11] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:03] televandalist:
Created WIP-Content-Guidelines (markdown)WIP Page - Combining \"Getting started as an achievement developer,\" \"How to Become an Achievement Developer,\" and \"Set Development Roadmap\" into a sort-of Junior Dev doc.
This document covers the basics of how achievements work and the steps one must take to get started with achievement development.
Anyone can become a RetroAchievements developer if they put in the effort!
So how do RetroAchievements work? Technically, an achievement consists of a series of conditions that make up what we refer to as the achievement logic
. When a game with an achievement set is launched in an emulator that supports RetroAchievements, the emulator constantly checks if the conditions of each achievement are met in the current frame of gameplay. When all conditions for a particular achievement are met, the emulator will stop checking the conditions of that achievement and award it to the player.
The barebones process of creating achievement logic involves 3 steps: 1. Finding a place in the game's RAM where the information needed for an achievement is stored. Some examples: current level or stage, health, timer, coins, points, ammo, holding a weapon, etc. 2. Creating conditions that must be met in order to award an achievement. 3. Test if the achievement is working as expected.
However, this is often much easier said than done. There is a good chance that those steps will need to be repeated many times in order to refine the achievement logic to make it stable enough for players.
"},{"location":"WIP-Jr/#becoming-a-junior-developer","title":"Becoming a Junior Developer","text":"If you would like to start developing achievements, the first thing you will need to do is read up on our Developer and Content Guidelines. It is also important to read the various pages in the Achievement Development category, but that can be done as you go.
It is strongly recommended to join our Discord server so you can quickly and easily contact other achievement developers who can show you the ropes and help you along. Once you have joined the server, make sure you get verified by following the instructions in the #welcome
channel. If you already know what game you'd like to make achievements for, you can go ahead and ask for the jr-dev
role in the #tech-support
forum channel by creating a post tagged as Join Team
and pinging QA-Maintainer
. Once you have the jr-dev
role, you will have access to the #jr-devs
channel, where you can talk to code reviewers and ask any development-related questions.
After you have become a Junior Developer, you can decide on a game to work on. If you need an entry made for it, you can ask code reviewers to do so. They will need to open a forum topic for you anyway, assuming it doesn't already have one. You can now claim it for achievement development.
"},{"location":"WIP-Jr/#set-development-roadmap","title":"Set Development Roadmap","text":"Once you have chosen your game and have claimed it for development, you need to plan your achievement set. You should know enough about the game to give it justice. The following are some tips on coming up with a plan:
"},{"location":"WIP-Jr/#initial-research","title":"Initial Research","text":"Once you have a plan, it is recommended that you post it in the game's forum topic. This will allow the community to give feedback and will give code reviewers an idea of where you're at from a design standpoint. It is important to be open to receive feedback and suggestions!
"},{"location":"WIP-Jr/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-06 01:59] televandalist:
Created WIP-Jr (markdown)The docs are currently under heavy construction. For starters, the following pages are going to be moved to the site:
The plan is to have any documentation involving guidelines/policy as well as a general FAQ be in plain sight on retroachievements.org. Some of the pages will be merged and will result in the following categories:
This will eventually allow for the wiki to be more open and dedicated to support docs, tutorials, resources, etc.
From sidebar:
The RetroAchievements project aims to provide tools for creating achievements for retrogames and ways to enjoy such creations. We strive to promote a healthy and collaborative community around this hobby. Everything we produce is made available for free and we will never profit from it.
"},{"location":"WIP-User-Code-of-Conduct/#rules","title":"Rules","text":"In order to support the growth of our community as described in our mission statement, we need some rules. 1. Don't be a jerk or generally obnoxious - nobody likes trolls. 2. Do not use the RetroAchievements website or Discord server to share or request copyrighted material. This includes direct downloads, links to ROM sites, etc. 3. Keep the Discord channels and forum threads on-topic. 4. When a moderator/admin asks you to stop, you should stop. 5. When in doubt, ask a @mod
in Discord or send a message to RAdmin on the website. 6. Do not advertise products, services, or other Discord servers without approval.
Moderation typically follows a \"three strikes\" warning system, but there are certain behaviors that will not be tolerated and will likely expedite removing someone from the community. These behaviors include, but are not limited to: - Bigotry. This includes racism, sexism, elitism; intolerance regarding others' nationality, religion, sexual orientation, political beliefs, etc. - Public or private harassment. - Unwelcome sexual attention or advances towards others. - Doxing. This is publishing others' private information, such as photos, contact information, etc. without their explicit permission. - Spamming, excessive shitposting, etc. - Personal attacks, as in making abusive remarks on or relating to one's person, instead of providing evidence when examining another person's claims or comments. - Posting pornography, as in images or descriptions of erotic behavior intended to cause sexual excitement. - Posting gruesome or gory images intended to cause disgust. - Heated public arguments.
Please report to moderators/admins cases where these rules and behaviors are being violated. The moderators will step in to cool things down if arguments start getting out of hand.
"},{"location":"WIP-User-Code-of-Conduct/#freedom-of-speech","title":"Freedom of Speech","text":"Some people show up just to complain and all admins/mods are evil. We get it. If you want to constantly rant or dump derogatory comments about how we run things here, you're free to do that. However, this can be demotivating and wastes a lot of volunteers' time; therefore, we don't want it on our forums or Discord Server. There are plenty of options where you can do it around the internet.
Keep in mind that RetroAchievements.org is NOT a bastion of freedom of speech.
Criticism is welcome, but just be sure to be civil.
"},{"location":"WIP-User-Code-of-Conduct/#moderation","title":"Moderation","text":"If you feel moderation is needed, ping the @mod
role on our Discord server, or direct your issues to RAdmin, a shared mod-mail account.
The moderation teams' goal is to assure users adhere to the User's Code of Conduct. If a member from moderation spots an action that is a breach of this Code of Conduct, the following steps will be taken for proper action:
Formal and diplomatic warning via carl-bot. (no sarcasm, no threatening tone).
If the warning is ignored, the offender will be kicked from our Discord server.
Note: For website offenses, Step 2 is ignored. If the offender ignores the warning in Step 1, the next action results in a ban as detailed below:
If you think moderators are not acting like described above, send a Direct Message to RAdmin or email ramodmail@gmail.com. This is a shared moderation account that all mods and admins see. The issue will be discussed and dealt with fairly.
Admins/mods who do not follow or enforce this Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's administration.
"},{"location":"WIP-User-Code-of-Conduct/#ban-appeal","title":"Ban Appeal","text":"If you've been banned and want to appeal to have your account access back, please send a site Direct Message to RAdmin. In the event that your site account has been banned, please send an email to ramodmail@gmail.com.
"},{"location":"WIP-User-Code-of-Conduct/#cheating","title":"Cheating","text":"Check the Global Leaderboard and Achievement Hunting Rules.
"},{"location":"WIP-User-Code-of-Conduct/#faq","title":"FAQ","text":"No.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"WIP-User-Code-of-Conduct/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"WIP-User-Code-of-Conduct/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-User-Code-of-Conduct/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"WIP-User-Code-of-Conduct/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-User-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-30 14:39] televandalist:
Updated WIP User Code of Conduct (markdown)[2023-06-06 10:44] televandalist:
Fix broken link[2023-04-20 00:39] televandalist:
Created WIP-User-Code-of-Conduct (markdown)RetroAchievements (RA) provides users the ability to earn achievements in retro games from an RA achievement set. It awards achievements by comparing a game\u2019s memory, henceforth referred to as RAM, to achievement code written by an RA developer. Achievement code, also known as logic, is a list of memory conditions chosen by the developer, that when all are simultaneously true on a single frame, will award an achievement.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#what-is-an-achievement-set","title":"What Is An Achievement Set?","text":"An achievement set is the compilation of individual achievements, rich presence and leaderboards for a particular game. Achievements are comprised of achievement logic, a title, a description, a point value and a badge. Additionally, a set must contain a Rich Presence script which provides site users information on where active players are in a game. Sets may have leaderboards that track how well players perform in certain things in a game such as how quickly they can beat stages, how many points they can score and many other things. RA users interface with all these components and subcomponents. Each one is a vital part of the player experience.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#what-is-achievement-code-and-how-is-it-written","title":"What Is Achievement Code And How Is It Written?","text":"RA code is a custom text based language that is interpreted by RA supporting emulators. Developers write code using either the Achievement Editor in the RAIntegration toolkit or by using RATools, a standalone executable that provides a scripting language for achievement development. Both the achievement editor and RATools produce code that is used for all achievements, leaderboards and Rich Presence.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#how-is-achievement-code-processed","title":"How Is Achievement Code Processed?","text":"A game\u2019s RAM is its most basic form. RAM is simply the game's memory addresses and their respective values at any given time. When processed by a console or emulator, the RAM can be used to recognize what is happening within the game. Games are processed in a series of frames, generally 60, 50, 30 or 25 per second depending on console and format. RA processes all unearned achievement logic in a set every frame. Because of this, developers can create logic such that when all of its conditions are simultaneously true, identify something uniquely precise happening in a game and award an achievement, activate a leaderboard and provide accurate Rich Presence. It is an achievement developer\u2019s job to understand enough of a game's RAM to be able to construct this logic.
Understanding how the RAM works that a developer intends to use in their logic is essential to creating a stable set that awards achievements, submits leaderboard scores and accurately displays Rich Presence only as intended. RA developers use developer emulator tools to inspect a game's RAM and determine which addresses are responsible for things they intend to use for logic. Developers have many ways to precisely define exactly which memory conditions must be true in order to construct logic, including retaining knowledge that something occurred previously in memory, but may no longer be true.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#achievement-logic-and-processing-example","title":"Achievement Logic and Processing Example","text":"As a simple example, to award an achievement for obtaining the hammer in Zelda II: The Adventure of Link, a developer would need to figure out which memory addresses within the game were associated with a few unique things about obtaining the hammer. There are often many ways to do this. One way a developer might approach this achievement is to find the addresses for the room ID to ensure the player is in the room with the hammer, also perhaps an area ID to ensure the player is in the right section of the game and lastly an address that indicates whether the player actually gets the hammer. The reason a room and area ID are important is because when a player loads a save file that has collected the hammer, the memory would indicate that possessed of the hammer goes from untrue to true, but this isn't where the achievement should award. The room and area ID conditions would ensure that a player was actually obtaining the hammer in game and not just loading a save file that already possessed it. A solid achievement could be constructed to award when the following is true simultaneously:
Room ID = room the hammer is in Area ID = area of game the hammer is in Possesion of hammer changes from not possessed to possessed
Here is what this achievement would look like in the Achievement Editor In this example, address 0x0561 is the room ID and its value is 0x15 when the player is in the room with the hammer, address 0x076e is the area ID and its value is 0x02 when in Death Mountain where the hammer is located and Bit0 of address 0x078b indicates if the player has the hammer. This bit changes from 0 to 1 when the player acquires the hammer, so the achievement checks for a frame where this bit is greater than it was the previous frame which is precisely when the hammer is obtained since bits can only be either 1 or 0. If all three conditions are true on the same frame, the achievement is awarded. This can only happen when the player obtains the hammer while in the hammer room in Death Mountain, not at some other time such as loading a save file.
Every frame the player is playing the game, the RAM is being compared to the achievement logic to check if all conditions are true on that frame. For this example achievement, all conditions can only be true on the same frame when a player is in the room and area where the hammer is obtained and the player obtains the hammer. When that happens, all of the conditions defined in the logic will be true and the achievement will be immediately awarded.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#leaderboard-and-rich-presence-code","title":"Leaderboard and Rich Presence Code","text":"Leaderboards function quite similarly to achievements in terms of logic, but need a list of conditions to tell the leaderboard when to activate, when to cancel itself, and when and what value to submit to the leaderboard. Creating a leaderboard is essentially like creating a few small achievements that will be processed sequentially.
Rich Presence code is very similar to achievement and leaderboard code, but is written slightly differently due to the way it is handled by the site. Rich Presence is written and submitted to RA as a script, as opposed to a string of code like achievements and leaderboards. It still uses the same fundamental code as achievements and leaderboards, but has some additional features such as custom macros that may be used.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#take-aways","title":"Take Aways","text":"The key to writing solid code is to first understand what in RAM can be used to recognize a particular game event for which a developer intends to award an achievement, use for a leaderboard or Rich Presence. The next steps are finding the necessary memory addresses and their values to recognize when the event occurs and constructing logic to create a list of conditions that will only be simultaneously true on the intended frame.
"},{"location":"Ways-to-Contribute/","title":"Ways to Contribute","text":"If you do not wish to become an achievement developer, but would still like to contribute to RetroAchievements, there are many ways to do so:
If an achievement triggered at a wrong time or didn't trigger at all, please report it. We know that many users love free points, but please, even if an achievement triggered at a wrong time, report it!
Another important situation that needs to be reported is a cheevo triggering by using some kind of cheat in the game (e.g. stage select code), or by loading a saved game.
There are two ways to report a broken cheevo: directly in the emulator or via website. On both cases, add details of the state of your game, when it triggered/didn't trigger, what game mode, where you were when it happened/didn't happen, if you had reset the game recently, anything else you think may be relevant to the achievement. This is necessary for our system so the devs know where there is a problem.
"},{"location":"Ways-to-Contribute/#reporting-via-emulator","title":"Reporting Via emulator","text":"Go to RetroAchievements -> Report Broken Achievements, this feature is only available on official emulators (not on RetroArch).
See this example:
.
"},{"location":"Ways-to-Contribute/#report-via-website","title":"Report Via Website","text":"On every achievement's page you see a link saying Report an issue for this achievement
, like in the image below:
If you know a game very well, you probably can have some cool ideas of challenges for the game. Post your ideas on the forum topic related to the game.
We have a guide on how to think about and design good achievements, not the technical side but the conceptual. Then even non-developers can get some inspiration from that info.
"},{"location":"Ways-to-Contribute/#give-feedback","title":"Give Feedback","text":"Give feedback in the forums about what you like or dislike about the achievements sets. Be specific and leave details.
"},{"location":"Ways-to-Contribute/#create-badges-and-game-icons","title":"Create Badges and Game Icons","text":"If you like to play with graphics you can create some art for the achievements badges or icons for the games. Using the screenshot feature from the emulator itself can help with this, and then you can edit to make something cool.
You can see more info about it on the Badge and Icon Creation page.
"},{"location":"Ways-to-Contribute/#help-with-the-documentation","title":"Help with the Documentation","text":"If you have a github account and know the basics of Markdown, you can help with the documentation. Fixing typos, grammar or inaccurate information.
Take a look at this page to know the details: Contributing with the docs
"},{"location":"Ways-to-Contribute/#participate-in-events","title":"Participate in Events","text":"Such as Achievement of the Week, Leaderboard of the Week or other events that happens on our discord server.
"},{"location":"Ways-to-Contribute/#report-title-and-description-errors","title":"Report Title and Description Errors","text":"Section Pending
"},{"location":"Ways-to-Contribute/#playtesting","title":"Playtesting","text":"Section Pending
"},{"location":"Ways-to-Contribute/#compatibility-testing","title":"Compatibility Testing","text":"Section Pending
"},{"location":"Ways-to-Contribute/#write-for-ranews","title":"Write for RANews","text":"Section Pending - for now, see the RANews Repository.
"},{"location":"Ways-to-Contribute/#create-raguides","title":"Create RAGuides","text":"Section Pending - for now, see the RAGuides Repository.
"},{"location":"Ways-to-Contribute/#help-with-rapatches","title":"Help with RAPatches","text":"Section Pending - for now, see the RAPatches Repository.
"},{"location":"Ways-to-Contribute/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 22:32] televandalist:
Updated Ways to Contribute (markdown)[2023-06-05 22:29] televandalist:
Updated Ways to Contribute (markdown)[2023-06-05 21:59] televandalist:
Updated Non Developer Contributions (markdown)[2023-06-05 21:58] televandalist:
Added quick links/ToC - Added WIP sections for Playtesting, Compatibility Testing, RANews, and RAGuides[2023-06-05 20:42] televandalist:
Renamed from \"How to contribute if you're not an achievement developer\" to \"Ways to Contribute\"Nota: actualmente el problema descrito solamente sucede en RetroArch.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#hardcoresoftcore","title":"Hardcore/Softcore","text":"Algunos usuarios les gusta utilizar la funci\u00f3n de guardar/cargar estado para salvar su progreso en un juego. Puede que ya lo sepas pero, esta funci\u00f3n no esta permitida cuando se juega en modo hardcore. Pero algunos usuarios no son jugadores hardcore y prefiero mantener el modo hardcore desactivado (vamos a llamar a este modo como softcore).
Algunas veces algunos usuarios reportan que un logro no se desbloqueo, y cuando se les pregunta dicen que estaban jugando en softcore.
Una cosa que tienes que tener en cuenta es:
Si utilizas la funci\u00f3n de cargar estado espera tener problemas con los logros cuando no se disparan cuando se suponia que se ten\u00edan que disparar.
Ahora vamos a intentar explicar para aquellos que no est\u00e1n muy familiarizados con los detalles sobre el desarrollo de logro y por que este tipo de problema ocurre.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#concepto-basico-detras-de-un-logro","title":"Concepto B\u00e1sico detr\u00e1s de un logro","text":"T\u00e9cnicamente un logro es un grupo de condiciones que tienen que ser cumplidas en un frame en particular dentro del v\u00eddeo juego.
Cuando abres un juego en un emulador con la funci\u00f3n de RetroAchievements integrada, el emulador esta siempre revisando si las condiciones son cumplidas en el frame actual. Cuando todas las condiciones en el ese logro en particular son cumplidas, el logro es otorgado y el emulador deja de revisar si las condiciones para ese logro.
Ejemplos de condiciones:
El problema con softcore es que cuando cargas un estado de guardado puedes arruinar la l\u00f3gica detr\u00e1s del logro.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplos","title":"Ejemplos","text":""},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplo-1-completa-el-juego-sin-utilizar-passwords","title":"Ejemplo 1: Completa el juego sin utilizar passwords","text":"Imag\u00ednate un juego con 5 stages y con la funci\u00f3n de password.
Tal vez las condiciones para que el logro \"Completa el juego sin utilizar passwords\" salte son (en un logro de verdad por lo general hay mas condiciones, pero para esta explicaci\u00f3n vamos a considerar solamente estas):
Entonces para conseguir este logro lo que necesitas es estar en todos los niveles al menos alguna vez y completar el juego.
Cuando estas en el stage 1, el emulador lo recuerda, y lo mismo para todos los dem\u00e1s stages. Y cuando terminas el stage 5 (completa el juego) obtienes el logro.
Ahora imag\u00ednate este escenario:
En este escenario el logro no saldr\u00eda.
Despu\u00e9s de cerrar el emulador el \"olvida\" lo que paso en los stages 1, 2 y 3. Cuando corres el emulador/juego de nuevo y cargas el estado en el stage 4, el emulador no va a detectar que pasaste por lo stages anteriores. Entonces el logro no se va a desbloquear.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplo-2-derrota-al-jefe-x-sin-recibir-dano","title":"Ejemplo 2: Derrota al jefe X sin recibir da\u00f1o","text":"Lo mas probable es que la condiciones que tienen que ser cumplidas para que este logro salte son:
En otras palabras: para obtener este logro el emulador tiene que \"saber\" que entraste al cuarto del jefe, que no obtuviste ning\u00fan da\u00f1o, y que venciste al jefe.
El detalle importante en el que tenemos que prestar atenci\u00f3n es: cuando recibes alg\u00fan da\u00f1o, el emulador \"olvida\" que entraste al cuarto del jefe. Entonces incluso si cargaste un estado en alg\u00fan punto en el que aun no recib\u00edas da\u00f1o pero ya estabas dentro del cuarto del jefe, el emulador no va a detectar cuando entras por primera vez al cuarto. Y el logro no va a saltar.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ultimas-palabras","title":"Ultimas Palabras","text":"Cuando reportes logros rotos da la mayor cantidad de detalles que sean posibles, y no olvides si estabas o no jugando en hardcore.
Si quieres solicitar que un administrador te otorgue un logro manualmente cuando este no se disparo, ten en cuenta proveer pruebas. Especialmente para logros como en los ejemplos de arriba (no recibir da\u00f1o, no passwords, no muertes, etc).
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-31 10:50] eldexterr:
Created Why you shouldn't use the load state feature es (markdown)Note: currently the issue described here happens only on DuckStation standalone and RetroArch versions older than 1.9.1.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#hardcoresoftcore","title":"Hardcore/Softcore","text":"Some users like to use the save/load state feature to save their progress in a game. As you may know, this feature isn't allowed when playing with hardcore mode. But some users aren't hardcore gamers and prefer to keep hardcore mode disabled (let's call this mode softcore).
From time to time some users report that an achievement isn't triggering, and when asked they say they were playing in softcore.
One thing you all have to keep in mind is:
If you use the load state feature expect to have issues of cheevos not triggering when they are expected to trigger.
Here we'll try to explain to those who don't know the details of achievements development why this kind of issue happens.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#basic-concept-behind-an-achievement","title":"Basic concept behind an achievement","text":"Technically an achievement is a group of conditions that must be met in a particular frame of the video game.
When you launch a game using an emulator with the RetroAchievements feature, the emulator is always checking if those conditions are met in the current frame. When all conditions for a particular achievement are met, it is awarded and the emulator stops checking the conditions for that achievement.
Examples of conditions:
The problem with softcore is that when you load a saved state you can ruin the logic behind an achievement.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#examples","title":"Examples","text":""},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#example-1-beat-the-game-without-passwords","title":"Example 1: Beat the game without passwords","text":"Imagine a game with 5 stages and with the password feature.
Some probable conditions to trigger the \"Beat the game without passwords\" achievement are (in a real cheevo there will be more conditions, but for this explanation let's consider only these ones):
So to get this achievement you have to pass through all stages and then beat the game.
When you are at stage 1, the emulator memorizes it, the same thing for all other stages. And when you finish stage 5 (beat the game) you get the achievement.
Now imagine this scenario:
In this scenario, the achievement won't trigger.
After closing the emulator it \"forgets\" that you passed through stages 1, 2, and 3. When you run the emulator/game again and load the state being on stage 4, the emulator won't detect that you passed through the previous stages. Then the achievement won't trigger.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#example-2-defeat-boss-x-without-taking-damage","title":"Example 2: Defeat boss X without taking damage","text":"Most likely the conditions to be met in a frame to make this achievement trigger are:
In other words: to get this achievement the emulator must \"know\" that you entered the boss room, didn't take any damage, and beat the boss.
The important detail to pay attention to here: when you take any damage, the emulator \"forgets\" that you entered the boss room. Then even if you load a state to a point where you didn't take any damage but already entered the room, the emulator won't detect that you entered the room. And then the achievement won't trigger.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#final-words","title":"Final Words","text":"When reporting a broken achievement give as many details as possible, and don't forget to mention if you are playing on hardcore mode or not.
If you want to request an admin to manually award you an achievement that didn't trigger, be sure to provide qualified proof. Especially for achievements like those in the examples above (no damage, no passwords, no death, etc).
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/","title":"Working with DLC for the PlayStation Portable","text":"Various games for the PlayStation Portable support DLC content. Depending on the game, this may come in different formats with different processes for installation.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#standard","title":"Standard","text":"Traditional (generally paid) DLC was installed by the Playstation Store into game directories. Most of the time this will consist of one or more edat files and a param.pbp. Sometimes more files or directories are needed as well. If you already have decrypted DLC in this format, place it in saves/PSP/GAME/<game_id>/ in the exact format it came in. The game ID -must- match the region of the game you're playing. For example, Dissidia 012 will use ULUS10566 for the US version and ULES01505 for the EU version. For users dumping data from real hardware, you'll need to use custom firmware and the npdecrypter plugin to decrypt your DLC to a format usable by PPSSPP. Further information can be found in the plugin's readme.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#save-file","title":"Save File","text":"A number of games distributed (generally free) DLC as extra save files for the games. These will have their own specifically-named directories which are placed alongside your game savedata in saves/PSP/SAVEDATA/. In a few rare cases, there may be multiple sets of DLC that cannot be installed simultaneously for games using this method. For users dumping data from real hardware, just copy it to the same location from the memory stick. Nice and simple. Despite the free nature of this DLC, we don't believe we have the legal rights to distribute it ourselves, so please don't ask.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#updates","title":"Updates","text":"These can be a bit complicated. Currently the only way to apply updates tends to be by patching the update into the iso itself, after decrypting it on real hardware. This is messy and suboptimal, but there isn't a way around it right now. You'll need to open the iso in a tool like UMDGen and insert/replace the updated files in usrdir. Exact per-game instructions on doing so are outside the scope of this guide. Of note, this will be required to be able to use the DLC for Little Big Planet and Bleach: Heat the Soul 7, and may be necessary for other games as well. In the future, this step hopefully can be skipped.
Further information: https://github.com/hrydgard/ppsspp/issues/12344
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#killzone-liberation","title":"Killzone Liberation","text":"This game's final chapter is only available as DLC. This specific game had a very strange DLC configuration, requiring downloading a free \"game\" through the PSP's browser, running it to unpack the DLC file, then leaving the second \"game\" present while playing the real one. Unfortunately, it uses a wide variety of kernel calls unique to this game that aren't emulated yet. Even with the DLC in its post-extraction state, it just causes the game to freeze when present. There's no way to emulate the game's final chapter at this time.
Further information: https://github.com/hrydgard/ppsspp/issues/12343
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#note","title":"Note","text":"While links to github issues are provided here, please refrain from commenting on them unless you have constructive information to provide about the issues at hand. A simple supportive thumbs up to indicate interest in an issue is sufficient.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-10-01 06:12] Sanaki:
Updated Working with DLC for the PlayStation Portable (markdown)[2021-10-01 06:08] Sanaki:
Hopefully fix a tag issue on the deployed docs[2021-09-30 23:26] Sanaki:
Created Working with DLC for the PlayStation Portable (markdown)Relacionado: Logros para hacks de ROM, Sets Bonus
Solamente un set es permitido por juego y por consola. Esto es aplica en casos de existente revisiones oficiales (ex. Rev A), parches oficiales, no-oficiales, y otras regiones.
Sets Bonus son una excepci\u00f3n de esta esta regla, pero son considerado como una extensi\u00f3n del set est\u00e1ndar y estos siguen reglas diferentes sobre el tipo de logros que son permitidos.
"},{"location":"Working-with-the-Right-ROM-es/#seleccion-de-rom","title":"Selecci\u00f3n de ROM","text":"Casi cualquier juego cuenta con m\u00faltiples versiones del ROM , algunas veces asta docenas. Y algunas veces hay diferencias bastante mayores hasta el punto en el que, un ROM ni siquiera es compatible con los logros de otro ROM del mismo juego. Entonces, encontrar el mejor ROM para desarrollar logros es importante y tiene que hacerse cuidadosamente.
NTSC USA
no-intro, porque 60 FPS es una experiencia mucho mas fluida. Lanzamientos PAL Europeos
corren a 50 FPS, y la mayor\u00eda de los casos tienen que ser evadidos. Lanzamientos NTSC Japan
tambi\u00e9n corren a 60 FPS , pero solamente son la mejor opci\u00f3n si el juego fue exclusivamente lanzado en Jap\u00f3n. Utilizar como recurso la versi\u00f3n PAL Europea
de un juego deber\u00eda de ser el ultimo recurso (Juego exclusivamente de Europa solamente), y son tipicamente muy pocos juegos y bastante \u00fanicos tambi\u00e9n, de toda la librer\u00eda de la consola. El problema de PAL/NTSC no aplica a la emulaci\u00f3n del GBA, que corre todas las versiones regionales a la misma cantidad de FPS.ROM trainers
, no son oficiales, y no son compatibles por Retro Achievements de ninguna manera.ROMs de No-Intro son el tipo de ROMs preferidos a ser linkeados a la base de datos de RA, y son los que deber\u00edas de utilizar para hacer tu set cuando sea esto posible. Ellos filtran malos dumps, hacks, fakes, overdumps, underdumps, etc. y solo muestra los ROMs que son mas fieles al cartucho original. ROMs de No-Intro ROMs pueden ser identificados de la siguiente manera:
Nombre del Juego (Regi\u00f3n) (Lenguajes Disponibles si es que aplica) (Revisi\u00f3n Actual si es que aplica) Ejemplo: Diddy Kong Racing (USA) (En,Fr) (Rev A)
GoodTools Nombre del Juego (Regi\u00f3n) [!], aunque tambi\u00e9n algunos de los ROMs Nombre del Juego (Regi\u00f3n) (Grupo de Rom Dumpers) son de una era mas temprana y tal vez sean iguales a la base de datos de No-Intro pero no es algo garantizado.
Puedes verificar aqu\u00ed que el checksum de tu ROM concuerda con el que se encuentra en la base de datos de No-Intro. Desafortunadamente algunos emuladores de RA no calculan correctamente el checksum (como el de NES) as\u00ed que tal vez necesites encontrar tu checksum desde otra fuente.
"},{"location":"Working-with-the-Right-ROM-es/#parches-de-traduccion","title":"Parches de Traducci\u00f3n","text":"(tambi\u00e9n mira: P\u00f3liza de Localizaci\u00f3n de ROM mas abajo)
Ingles es el lenguaje primario de RetroAchievements. Los parches de traducci\u00f3n son algunas veces aplicados por los desarrolladores a t\u00edtulos que no se encuentran en ingles. En estos casos instrucciones de como parchear el ROM se van a encontrar en el foro del juego. Proveer un parche de traducci\u00f3n a un titulo existente permite que el juego sea mas accesible a otros usuarios. Tu tienes que inspeccionar profundamente la memoria para ver si el parche es completamente compatible con el set de logros y as\u00ed mandarlo como aprobaci\u00f3n para que lo cheque un desarrollador y as\u00ed lo pueda postear en el foro del juego.
Algunas veces los parches de traducci\u00f3n pueden llegar a diferir cr\u00edticamente del MD5 del desarrollador encontrando as\u00ed diferencias en la memoria original. Antes de linkear estos parches checa con el desarrollador original del juego o haz pruebas profundas en memoria para asegurarte que es completamente compatible. Puedes agregar parches de traducci\u00f3n que te hubieras encontrado en linea mientras todos los logros funcionen de manera correcta y no hagan al juego mas o menos dificil.
"},{"location":"Working-with-the-Right-ROM-es/#poliza-de-localizacion-de-rom","title":"P\u00f3liza de Localizaci\u00f3n de ROM","text":"Como Ingles es el lenguaje principal de la comunidad, ROMs en Ingles son preferidos. Cuando escojas que ROM deseas para construir logros entre todas las versiones regionales disponibles tu tienes que darle prioridad a los ROMs No-Intro Americanos para consolas que no son port\u00e1tiles y ROMs Europeos para consolas port\u00e1tiles.
Damos la bienvenida y nos gustar\u00eda seguir mejorando nuestro soporte para todas las versiones regionales, especialmente Japones (ya que la mayor\u00eda de nuestra librer\u00eda de juegos fueron creados en Jap\u00f3n). Aparte, algunos usuarios simplemente prefieren versi\u00f3n regional en especifico de un juego y es al final de cuentas es mucho mejor incluir un soporte amplio para que cada buen ROM este linkeado a una buena entrada y as\u00ed se le den los logros apropiados.
Cuando miramos en como juegos con diferentes versiones regionales son manejados nuestro est\u00e1ndar es una entrada por juego y por consola. Lo ideal seria que si alguien carga la versi\u00f3n Americana o Japonesa de Donkey Kong, Pac-Man o Contra, la gente consiga los mismos logros para la misma entrada. Pero hay algunas situaciones donde es mejor para nuestra librer\u00eda y jugadores separar las versiones regionales en sus propia entradas \u00fanicas. Si la comunidad tiene la raz\u00f3n en creer que es mejor que una entrada se parta en dos, esto puede ser revisado y aprobado por el equipo de desarrolladores despu\u00e9s de un votaci\u00f3n y discusi\u00f3n.
"},{"location":"Working-with-the-Right-ROM-es/#diferencias-de-localizacion","title":"Diferencias de Localizaci\u00f3n","text":"El tipo de cambios hechos durante una localizaci\u00f3n (mas com\u00fanmente de Japones a Ingles) pueden varear bruscamente. Cualquiera de los siguientes cambios pueden ser resultados de una localizaci\u00f3n:
Debido a estas variantes y para evitar llenar la base de datos de entradas duplicadas innecesarias nuestra meta es minimizar el numero de sets separados. Para que un set sea separado necesita razones suficientes; nos tomamos bastante cuidado cuando tenemos que aprobar este tipo de casos.
"},{"location":"Working-with-the-Right-ROM-es/#separando-una-entrada-regional","title":"Separando una entrada regional","text":""},{"location":"Working-with-the-Right-ROM-es/#1-obtener-aprobacion-por-medio-del-canal-de-discord-revision-voting-es-requerido","title":"1. Obtener aprobaci\u00f3n por medio del canal de Discord #revision-voting es requerido.","text":"La aprobaci\u00f3n sigue el mismo m\u00e9todo de votaciones como cuando se va a trabajar una revisi\u00f3n, como postear tu plan en el foro del juego y en el canal de Discord de #revision-voting; permitiendo tiempo para discutirlo y esperar las 72 horas para que la mayor\u00eda pueda votar en las votaciones.
Recuerda que la meta de reducir la duplicaci\u00f3n de entradas; solo se permite que un set se separe cuando es realmente comprensible.
El desarrollador que intente separar un set tiene que tener un fuerte motivo por el que el set merezca una nueva entrada y porque no es posible crear la experiencia que se desea con solamente una entrada.
Los Desarrolladores que busquen partir un set tienen que venir con el acto de buena fe. Los Sets tienen que ser partidos por el bien de nuestra librer\u00eda de juegos y la comunidad y no por una manera ego\u00edsta de re-hacer un set o buscar puntos de desarrollador gratis.
"},{"location":"Working-with-the-Right-ROM-es/#2-tal-vez-podria-ser-aceptable-separar-un-set-si","title":"2. Tal vez podr\u00eda ser aceptable separar un set si","text":"Ejemplos de juegos que califican:
Considerando todo esto, aun depende de la consideraci\u00f3n de los desarrolladores.
Ejemplos de juegos que (probablemente) no califican:
No es aceptable simplemente duplicar los sets en dos entradas diferentes. Sets separados tienen que tratarse como una nueva entrada y no un un sub-set (donde los sets Bonus son sub-sets). Estos tienen que tener un sentimiento diferente, retos que hablen de las funciones \u00fanicas del juego que causaron que este se separara en su propia entrada en primer lugar.
"},{"location":"Working-with-the-Right-ROM-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-22 10:21] eldexterr:
Updated Working with the Right ROM es (markdown)[2019-05-20 10:23] eldexterr:
Created Working with the Right ROM es (markdown)Related: Achievements for ROM hacks, Subsets
Only one achievement set is allowed per game per console. This is true in cases of existing official revisions (ex. Rev 1), official and unofficial fix patches, and alternate regions.
Subsets 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.
Regional exceptions may exist -rarely- when regional variations massively change the game.
"},{"location":"Working-with-the-Right-ROM/#rom-selection","title":"ROM Selection","text":"Almost every game has multiple ROM versions available, sometimes dozens. Often there are major differences under the hood that prevent achievement compatibility between version. Because of this, finding the best ROM for achievements is critical and should be done carefully.
NTSC USA
release ROMs, because 60Hz is a smoother gaming experience and generally matches the intended play speed. PAL European
releases run at 50Hz, and are to be avoided in most cases. NTSC Japan
releases also run at 60Hz, but are only the best choice if the game was a Japan-exclusive release. PAL European
releases should be used as a last resort only (Europe-only exclusive), and are typically limited to a very select few unique games from the entire console's library. Handheld consoles don't have regional timing differences, so language options should be prioritized there whenever possible.ROM trainers
, are not official, and are not in any way supported by RetroAchievements. These ROMs cannot be linked even as secondary options.No-Intro and Redump are the primary groups responsible for verifying clean dumps of console games, excluding all modifications and untrustworthy sources in the process. They offer dat files that can be used to verify your own dumps via a ROM manager. ROMs verified by these groups are preferred whenever possible, and can generally 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 1)
TOSEC is another less restrictive preservation group. Their hashes often will match Redump for discs, but will frequently contain less thoroughly verified dumps. For floppy discs, cassettes, and less well-known systems where No-Intro and/or Redump verification aren't avaliable, TOSEC is a good fallback choice.
You can verify that your ROM checksum matches the databases of No-Intro, Redump, or TOSEC either by using a rom manager with a dat provided by the preferred group or by verifying checksum manually and searching the dat for it in a text editor. Bear in mind that unlike a manual check, the rom manager may be able to skip over external headers to accurately verify integrity. Standard choices are clrmamepro and Romulus.
"},{"location":"Working-with-the-Right-ROM/#preferred-groups-per-console","title":"Preferred Groups Per Console","text":"Console ID Console Name Preferred Group 01 GenesisMega Drive No Intro 02 Nintendo 64 No Intro 03 Super NintendoSuper Famicom No Intro 03 Sufami Turbo No Intro 03 Satellaview No Intro 04 Game Boy No Intro 05 Game Boy Advance No Intro 06 Game Boy Color No Intro 07 NESFamicom No Intro 07 Famicom Disk System No Intro 08 TurboGrafx-16PC Engine No Intro 08 SuperGrafx No Intro 08 TurboGrafx-CDPC Engine CD Redump 09 Sega CDMega CD Redump 10 Sega 32X No Intro 11 Master SystemMark III No Intro 12 PlayStation Redump 13 Atari Lynx No Intro 14 Neo Geo Pocket No Intro 14 Neo Geo Pocket Color No Intro 15 Game Gear No Intro 17 Atari Jaguar No Intro 18 Nintendo DS No Intro 21 PlayStation 2 Redump 23 Magnavox Odyssey 2 No Intro 24 Pokemon Mini No Intro 25 Atari 2600 No Intro 27 Arcade Final Burn Neo 28 Virtual Boy No Intro 29 MSX (Cartridges) No Intro 29 MSX (Disks) TOSEC 29 MSX2 (Cartridges) No Intro 29 MSX2 (Disks) TOSEC 33 SG-1000 No Intro 38 Apple II TOSEC 39 Sega Saturn Redump 40 Sega Dreamcast Redump 41 PlayStation Portable Redump 41 PlayStation Portable No Intro 43 3DO Redump 44 ColecoVision No Intro 45 Intellivision No Intro 46 Vectrex No Intro 47 NEC PC-8001 Neo Kobe 47 NEC PC-8001 TOSEC 47 NEC PC-8801 Neo Kobe 47 NEC PC-8801 TOSEC 49 NEC PC-FX Redump 51 Atari 7800 No Intro 53 WonderSwan No Intro 53 WonderSwan Color No Intro 63 Watara Supervision No Intro"},{"location":"Working-with-the-Right-ROM/#translation-patches","title":"Translation patches","text":"(see also: ROM Localization Policy below)
English is the Primary language of RetroAchievements. Translation Patches are sometimes applied by developers to non-English titles as the main hash 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. Whenever reasonable, the original unpatched version should still be supported as well.
Sometimes translation patches may produce critically different memory from the linked hashes. All linked hashes are expected to be fully supported by the -entire- achievement set. If you can't personally guarantee this, don't link the hash.
If you aren't the original developer of the set in question and the developer is active, verify memory personally using testing mode and contact the developer before attempting to add a new translation.
"},{"location":"Working-with-the-Right-ROM/#rom-localization-policy","title":"ROM Localization Policy","text":"As English is the primary language of the community, English ROMs are preferred. When choosing which ROM to build achievements for, we give priority to No-Intro or Redump US ROMs for non-handheld consoles and European ROMs for handheld consoles.
We would like to continue improving our support for all regional versions, especially Japanese (as the majority of our game library was created in Japan). Some users may also prefer a specific regional version of a game and it is better to include broad support so that any good ROM can link to a good entry and give appropriate achievements. That said, regional variants must still be fully supported, and 50Hz slowdown needs to be mitigated (via additional patches) or proven to be a non-issue when present.
When looking at how games with regional versions are handled, our standard is one entry per game per console. It is ideal that if a player loads up the US or Japanese version of Donkey Kong, Pac-Man, or Contra, they will earn the same achievements from the same entry. As mentioned above, there are some extremely rare situations where it is better for our library and players to split off regional versions into their own unique entry. If the community has reason to believe that it's better for an entry to be split, it can be reviewed and approved by the RetroAchievements staff.
Tip: For games with text-triggered achievements (especially RPGs) it's recommend to find an event flag instead of hooking onto text or text ID. Text presentation varies between regional versions, making multi-region support difficult.
"},{"location":"Working-with-the-Right-ROM/#localization-differences","title":"Localization Differences","text":"The types of changes made during localization (most commonly from Japanese to English) can vary wildly. Any of the following changes may result from a localization:
Because of this variation and to avoid filling the database with unnecessary duplicates, our goal is to minimize the number of split sets. For a set to be split it needs compelling reasons; we take great care to determine when to approve these splits.
"},{"location":"Working-with-the-Right-ROM/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-12-12 18:39] shigutso:
Added PS2 on preferred group list[2022-02-25 20:41] televandalist:
Changed bonus set link to subset link - added a preferred group table for each console[2020-06-02 06:00] Sanaki:
Added revision and N64 format guidelines, removed entire section on region splitting procedure, made numerous grammar and detail updates[2019-08-13 19:49] Kvon:
Working with the right rom: text hooking tip added[2019-05-03 11:30] meleu:
typo[2019-05-03 10:55] meleu:
merge \"ROM Localization Policy\" into here[2018-11-17 08:07] Kvon:
changed one word, for clarifcation[2018-09-17 17:56] meleu:
capital 'R' in the title (Right)Language It is required for all of your achievement titles to be in English. There are some exceptions to this rule however:
Capitalization For capitalization in titles, we recommend using https://capitalizemytitle.com/style/chicago/. This will capitalize every word that should be capitalized. While this may not always give perfect results on longer achievement titles, for consistency it is recommended to choose this option when unsure about which words to capitalize, with the recommended style being either Chicago or MLA for the most aesthetically pleasing results.
Punctuation Since achievement titles are not full sentences, they should not end with punctuation. Exceptions to this include an exclamation or question mark, as well as the usage of ellipses (three periods) to emphasize there is more to the story or idea.
Emojis Adding emojis to achievement titles is not allowed. Not only will they reduce readability, but as unicode they are also more prone to breaking in emulators, as well as on the site depending on what language the user currently has enabled on their desktop, or what browser they are using. Keep in mind that emoticons (e.g. :-], <3) are also not allowed.
Creative Titles Creative titles for achievements are more enjoyable for players than exact descriptions of what the players must do to obtain the achievement. If you\u2019re not sure how to add some style to your achievements, you can review the list below for some ideas.
Language Achievement descriptions, just like titles, are expected to be in English completely. Unlike titles however, it is not allowed under any circumstances to use another language even when it fits the achievement, with the only exception being in-game items and songs for comparing purposes. Everyone should be able to understand a description without the necessity to look up any other language than English.
Capitalization In general, only the first letter of a new sentence is capitalized. In English, words are not capitalized due to their type (noun, verb, etc.) or for emphasis, unlike in some languages. Of course, there are exceptions to this:
Punctuation Whether or not your achievement descriptions end in periods is up to you, but generally, it is preferred for achievement descriptions to not end with periods. However, consistency across a set is key, so please avoid having some achievement descriptions end in periods while others don\u2019t.
Abbreviations
Abbreviations should generally only be used for honorary titles or degrees such as Dr. and Mrs. The exception to this rule is when the achievement description you are creating involves an abbreviation being used in-game. Examples include 1P mode (One player mode), ATK stat (Attack stat), and named objects such as the BFG. Do not abbreviate single words such as difficulty to dif, seconds to secs, levels to lvls etc. unless the game itself does.
Brackets/Parentheses Brackets have often been used by developers to note conditions that have to be met, such as being on a specific difficulty or playing a specific game mode. While there are situations where this is appropriate, for example when there are too many conditions to make a coherent description that doesn\u2019t result in a long list of \u2018\u2019ands\u2019\u2019, achievement descriptions are easier to read and more stylish when presented as a single phrase or sentence rather than divided into multiple parts through the use of brackets and parentheses.
When there are only a few conditions, we ask you to write your descriptive sentence to include this condition naturally.
Example of how you should write the description: \u2018\u2019Beat the game on hard difficulty without losing a life\u2019\u2019. Example of how you should NOT write the description: \u2018\u2019Beat the game without losing a life [hard difficulty]\u2019\u2019.
Symbols and Emojis Just like with brackets, symbols have been used to describe conditions but are also discouraged. The most common ones are to describe a condition being lower (< / <=) or higher (> / =>). For this, we also ask you to rewrite the text of the description with this condition in mind.
Example of how you should write the description: \u2018\u2019Beat the game on hard mode without losing more than five lives\u2019\u2019. Example of how you should NOT write the description: \u2018\u2019Beat the game on hard mode [lives lost <= 5]\u2019\u2019.
Just like achievement titles, the usage of emojis is not allowed in descriptions.
Quotation Marks Quotation marks are used on RetroAchievements mostly to wrap works such as movies, books, and songs, seen commonly in Rhythm games for example. Other uses may include to set apart a specific word for irony or sarcasm, differentiate a nickname from a given name, or directly taking a quote from somewhere.
You should ONLY use double quotation marks. Single quotation marks are only used for quotes within quotes, and should not be used elsewhere.
Consistency As an international community, we don\u2019t expect every developer to write with perfect grammar, or to agree exactly on what perfect grammar is. Simple and relatively universal guidelines of English grammar, like leaving a space after a comma, should be followed closely. However, more obscure or controversial guidelines, such as the Oxford Comma (the final comma in a list of things, often placed before the final entry starting with \u201cand\u201d), are not a necessity. However, please be consistent within a set in your usage of grammar. Do not use the Oxford Comma in one achievement while not using it in another where it would also be appropriate.
Consistency is also preferred in the use of common words to describe an achievement. For finishing a level or boss for example, the most common words used are \u201cbeat\u201d, \u201cfinish\u201d, \u201cclear\u201d, \u201cdefeat\u201d as well as a few others. Please only use one of them when working with multiple achievements that have the same theme - if the achievement description for finishing level 1 says \u201cDefeat the boss of level 1\u201d, the achievement description for level 2 shouldn\u2019t say \u201cBeat the boss of level 2\u201d unless there is a good reason to use the different word. Stick to using the same words to describe the same things within a group of similar achievements.
If a challenge condition, such as \u201con normal difficulty or higher\u201d or \u201cno cheats\u201d, applies to almost every achievement in the set, it is recommended to note this condition through a zero-point achievement (usually awarded at the start of the game), a forum post, or comments rather than repeating \u201con normal difficulty or higher\u201d in the description of every achievement.
The Description Itself The most important role of an achievement description is to describe exactly what is needed to obtain the achievement in as few words as possible while not excluding important information. It needs to be clear and concise, and both native and non-native English speakers must be able to understand what they need to do by reading the description in combination with the badge and title.
There is a generous character limit of 255 characters to work with to describe what needs to be done for an achievement. Absolutely avoid redirecting people to the achievement comments for a full explanation, as emulator-only users do not have access to this information. If your achievement uses a lot of complex conditions and is difficult to explain within the character limit, consider simplifying the logic of the achievement so that it is easier to explain to users, rather than trying to fit all of the complexity within the character limit in a sub-optimal way.
In some cases, achievement descriptions are intentionally written to avoid explaining what needs to be done word-for-word. For example, perhaps you want to avoid spoiling a story segment or you want to encourage the player to find out how to obtain the achievement without directly telling them what to do, like discovering a secret. This is a great idea, but one that needs to be approached with care. Remember, the description needs to be clear and concise for everyone to understand. It is important that the title, badge, and/or the description gives a solid hint on what the player needs to do. Consider reaching out to fellow community members with your planned achievement and see if they understand what needs to be done.
"},{"location":"Writing-Policy/#leaderboards","title":"Leaderboards","text":"Leaderboard Titles Like achievement titles, the language, capitalization, punctuation, and emoji guidelines do apply to leaderboard titles. However, we will not ask you to give the leaderboards creative titles.
Unlike achievement titles, we ask you to get directly to the point with leaderboard titles in as few words as possible while still remaining clear and concise. The reasoning behind this is that when a user is playing a game and a leaderboard becomes available, the pop-up will only show the title. It is important that players\u2013especially emulator-only players\u2013immediately know why this leaderboard is currently active and what it is about so they can decide on the fly whether to partake in this leaderboard or not.
Typically leaderboards fall under a specific category, such as speedruns, score attacks, or something not too dissimilar. In these categories, specific parts of the games are what the leaderboard focuses on, such as a specific boss, stage, or the entire game. This is why we recommend you to structure the leaderboard title starting with the category, followed by the part of the game, and finally followed by a potential extra condition such as a specific character or vehicle.
Examples include:
Important to keep in mind is that when the leaderboard is based on an in-game named mode (such as Time Trial) that this is the name used as the challenge.
Leaderboard Descriptions The leaderboard descriptions essentially follow the exact same guidelines as the achievement descriptions. The two most important rules remain consistency, and a clear and concise description of what the leaderboard is about. Implement correct usage of all the other guidelines of the achievement descriptions.
However, there are two things to keep in mind specifically for leaderboards:
It is not uncommon for grammatical errors to find their way into achievements, be it in the titles or the descriptions. As mentioned before, we do not expect everyone to have a perfect handle on the English language and the grammar that comes with it. With our years of experience, we have identified some mistakes that are more common than others, and these are listed down below to prevent them for future use, as well as show some examples to give you a better understanding of them.
If reading the explanations below still raises questions, consider checking out a grammar tool such as LanguageTool or Grammarly. It is not recommended to use said tools for complete sentences, to avoid correcting grammar that doesn\u2019t need correction, but they can be used for simpler fixes such as the below-mentioned aspects.
Articles Articles are by far the most common grammatical error identified on the site. Articles are words that identify a noun as being specific/definite (\u201cthe\u201d) or unspecific/indefinite (\u201ca\u201d/\u201dan\u201d). To give you a few examples of how they can be used in achievements:
Most of these are pretty straightforward. Note that for unspecific/indefinite articles, you may also want to use different words to designate an amount. Using the above examples, you can slay an enemy with a sword, but also with any sword.
Another possibility is that it is not necessary to use an article. This mostly applies to named words, such as locations. While \u201cArrive at the Baron Castle\u201d is technically correct, preferred would be to use \u201cArrive at Baron Castle\u201d. If you are unsure which one to go for in this situation, speaking the sentence out loud may just give you the hint you need!
However, more people have an issue with the usage of the unspecific articles, \u201ca\u201d and \u201can\u201d. While they both have the same function, they cannot be used before some words. This is dependent on if the word that follows it starts with a consonant- or vowel sound when spoken in correct English. This also applies to abbreviations that are spoken one letter at a time.
Possessive/Contraction Another common mistake is with words that use an apostrophe, such as \"you\u2019re\" and \"it\u2019s\". These are very commonly used in the English language, but removing the apostrophe changes the entire meaning of the word. Therefore, it is good to check beforehand if you are using it as a possessive form, or as a contraction of multiple words.
Separated words and the usage of hyphens Another common grammatical mistake we find involves words such as \u201catleast\u201d and \u201calot\u201d, where two words are forced together into one word. This is not allowed in English - these examples should be \u201cat least\u201d and \u201ca lot\u201d.
You should also watch out for correct usage of hyphens (the \u201c-\u201d symbol). This symbol is generally used to combine words, but only if they are followed by a noun. When they come after the noun, they are not combined with a hyphen and are instead written as two separate words.
Written numbers, such as twenty-five, are always written with hyphens.
Number Formatting All numbers should be formatted according to the conventions accepted in most English-speaking locations to avoid confusion about whether a number is very large or very small.
Deceptive Similarity Between Languages Many languages are related to each other, distantly or closely, and have words that are spelled similarly with similar meanings - but which are not identical. This may include your native language and English. Please check your spelling carefully to ensure you are using the English spelling for the word.
Username references are a good way to acknowledge the work of a fellow user in the community. However, the references should be limited as most references are only understood by a small subset of the community. Username references must not carry a negative connotation. Username references must be explicitly requested by the developer and approved by the user being referenced unless otherwise specified below. Username references are appropriate in the following situations:
Users retain full control over the use of their name. They have the right to request that their username be removed from any achievement at any time, developers must abide by this. For users who share the their name with an everyday term (Bedtime, Fridge, Gloves, Griffin, etc.), this only applies if their likeliness is directly referenced.
The use of banned users is strictly prohibited. Any achievement that includes a banned username should be updated promptly upon becoming aware of the ban.
"},{"location":"Writing-Policy/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-11 14:09] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:14] Andrew Comer:
Updated Writing Policy (markdown)[2024-01-12 20:47] Andrew Comer:
Added initial \"Username References\" section[2023-12-18 18:45] Andrew Comer:
Updated Writing Policy (markdown)[2023-12-18 10:08] suspect15:
Updated Writing policy (markdown)RetroAchievements Documentation
Official Website RADocs Discord Server"},{"location":"_Sidebar/","title":"Wiki Home Page","text":""},{"location":"_Sidebar/#guidelines","title":"Guidelines","text":"- Manifesto RetroAchievements - C\u00f3digo de Conduta do Usu\u00e1rio - FAQ - Perguntas Frequentes - Como contribuir se voc\u00ea n\u00e3o \u00e9 um desenvolvedor - Tutorial para Jogos Multi-Discos
"},{"location":"_Sidebar/#desenvolvedores","title":"Desenvolvedores","text":"- Introdu\u00e7\u00e3o - Primeiros Passos como um Desenvolvedor de Conquistas - Recursos de L\u00f3gica para Achievements - Exemplos Reais - Introdu\u00e7\u00e3o - Usando Hit Counts e ResetIf - Usando Delta Values e ResetIf - Simples Exemplo de como Evitar Abuso de Load State - Dicas e Truques - Dicas Espec\u00edficas de Console - Modelos de Achievement - Escala de Dificuldade e Equil\u00edbrio - Roteiro de Desenvolvimento de um Set de Conquistas - Cria\u00e7\u00e3o de \u00cdcones e Emblemas - Leaderboards - Rich Presence - Design de Conquistas
"},{"location":"_Sidebar/#espanol","title":"Espa\u00f1ol","text":"- Manifesto RetroAchievements - C\u00f3digo de Conducta del Usuario - FAQ - Preguntas Frecuentes - Tablas Globales y Reglas para la Caser\u00eda de Logros - Mi juego no esta cargando los logros - Como contribuir si no eres un desarrollador - Por que no deber\u00edas utilizar la funci\u00f3n de cargar estado - Contribuyendo con los documentos - Como funciona la Documentaci\u00f3n de RA - Descargas
"},{"location":"_Sidebar/#desarrolladores","title":"Desarrolladores","text":"- Intro - C\u00f3digo 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\u00edsticas en la Logica de un Logro - Intro - Contador de Golpes (Hit Counts) - Valores Delta - Bandera ResetIf - Bandera PauseIf - Bandera AddSource - Bandera SubSource - Bandera AddHits - Combinando Banderas - Alt Groups - Versiones M\u00ednimas Requeridas para Funciones en la L\u00f3gica - 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\u00e1ndote en la Velocidad de un Juego - Plantillas para Logros - Tips y Trucos - Escala de Dificultad y Balance - Dise\u00f1o de Logros - Mapa de Desarrollo de Set - Revisiones en Set de Logros - Creaci\u00f3n de Iconos y Badges - Tablas de Clasificaci\u00f3n - Rich Presence - Trabajando con el ROM apropiado - Identificaci\u00f3n del Juego - Gu\u00eda para Sets Bonus - Logros para ROM hacks - Tips Espec\u00edficos por Consola
"},{"location":"home-pl/","title":"Home pl","text":""},{"location":"home-pl/#_1","title":"Home pl","text":"Witaj w dokumentacji RetroAchievements!
Na pocz\u0105tek, musisz zna\u0107 Or\u0119dzie RetroAchievements wraz z Kodeksem post\u0119powania U\u017cytkownika.
Je\u017celi szukasz dokumentacji o tworzeniu osi\u0105gni\u0119\u0107, sprawd\u017a nasz\u0105 sekcje Dokumentacje Developerskie.
Zach\u0119camy wszystkich cz\u0142onk\u00f3w spo\u0142eczno\u015bci aby do\u0142\u0105czyli do naszego Serwera Discord, u\u017cywamy go do wi\u0119kszo\u015bci komunikacji
Pe\u0142na lista stron jest na bocznym pasku, lecz tu jest kr\u00f3tki opis paru z nich:
Mo\u017cesz wspom\u00f3c t\u0119 dokumentacje poprzez tworzenie/edytowanie stron na Wikipedii RetroAchievements.
"},{"location":"home-pl/#tumaczenia","title":"T\u0142umaczenia","text":"For a libretro core to support RetroAchievements, it must expose memory and it must not modify the game files. Everything else should be handled by the libretro frontend (i.e. RetroArch or RALibretro).
First, find the memory regions expected by RetroAchievements by looking for the mapping associated to the console in consoleinfo.c. It will look something like this:
static const rc_memory_region_t _rc_memory_regions_pc_engine[] = {\n { 0x000000U, 0x001FFFU, 0x1F0000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM\" },\n { 0x002000U, 0x011FFFU, 0x100000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"CD RAM\" },\n { 0x012000U, 0x041FFFU, 0x0D0000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"Super System Card RAM\" },\n { 0x042000U, 0x0427FFU, 0x1EE000U, RC_MEMORY_TYPE_SAVE_RAM, \"CD Battery-backed RAM\" }\n};\n
This example defines four regions of memory for the PC-Engine console. The first two fields are the starting and ending RetroAchievements address for the region. The third field is the starting real address for the region. The fourth field identifies the type of memory stored in the region, and the last field is a label for the region.
Achievements rely almost entirely on system RAM and save RAM. There may be additional blocks in the memory map flagged as other types of memory. Those blocks are leftover from the way the memory way initially exposed by a standalone emulator. They can only be exposed by RETRO_ENVIRONMENT_SET_MEMORY_MAPS
, and are almost never needed for achievement logic, so it's usually acceptable to not worry about them initially.
If no memory map is provided, RetroAchievements doesn't support the system yet. Please contact us if you believe your core/system is ready to be supported.
"},{"location":"libretro-core-support/#exposing-via-retro_get_memory_data","title":"Exposing via retro_get_memory_data","text":"Memory can be exposed in two ways. The simplest is using the retro_get_memory_data
/retro_get_memory_size
functions. These functions will be called with RETRO_MEMORY_SYSTEM_RAM
and RETRO_MEMORY_SAVE_RAM
(when applicable). The functions return a single pointer and a size for a block of memory. This block of memory is then distributed to the memory regions until no more is available.
Using the above example, the expectation would be that retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
would return 0x42000 and retro_get_memory_size(RETRO_MEMORY_SAVE_RAM)
would return 0x800, and retro_get_memory_data
would return pointers to blocks of memory of the specified sizes. The 0x42000 bytes of system RAM would be distributed to the three blocks of RC_MEMORY_TYPE_SYSTEM_RAM
, and the 0x800 bytes of save RAM would be associated to the one block of RC_MEMORY_TYPE_SAVE_RAM
.
If less than 0x42000 bytes is returned by retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
, it will be associated to the three blocks of RC_MEMORY_TYPE_SYSTEM_RAM
in a first-come, first-serve basis. The first 0x2000 bytes will be allocated to the first block. The next 0x10000 to the second block, and whatever is left to the third block. Whatever addresses could not be filled will be unavailable to the achievement code and achievements dependent on those addresses will be disabled.
If more than 0x42000 bytes is returned by retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
, only the first 0x42000 bytes will be allocated and the rest will be ignored.
The other way to expose memory is the RETRO_ENVIRONMENT_SET_MEMORY_MAPS
environment callback. This callback allows the core to specify disparate chunks of memory without having to join them into a single byte array for access by retro_get_memory_data
. Using the example above, unique pointers could be returned for each of the three blocks of system RAM, or even for subsections of each of the three blocks of system RAM.
The RetroAchievements code will using the provided map to translate it's addresses to the appropriate core memory through the start/select/disconnect properties of the exposed memory. Addresses that cannot be mapped will be unavailable to the achievement code and achievements dependent on those addresses will be disabled.
"},{"location":"libretro-core-support/#special-considerations","title":"Special considerations","text":"Some maps contain comments indicating special considerations should be applied for the console. These usually have to do with paged memory. As the achievement code needs access to all memory, not just the currently paged memory, we often request that the entire unpaged memory be accessible.
{ 0x00C000U, 0x00CFFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (fixed)\" },\n { 0x00D000U, 0x00DFFFU, 0x00D000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (bank 1)\" },\n\n /* GameBoy Color provides six extra banks of memory that can be paged out through the $DXXX \n * memory space, but the timing of that does not correspond with blanks, which is when achievements \n * are processed. As such, it is desirable to always have access to these extra banks. We do this\n * by expecting the extra banks to be addressable at addresses not supported by the native system. */\n { 0x010000U, 0x015FFFU, 0x010000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (banks 2-7, GBC only)\" }\n
The GameBoy Color has 32KB of RAM broken into eight 4KB banks. Normally, the first bank is exposed at $C000, and the other seven banks are paged into the $D000 memory space. As RetroAchievements only process data once per frame, we can't rely on the correct data being in the $D000 page when we evaluate our logic, so we ask that $D000 always only contains bank 1, and banks 2-7 are exposed at $10000-$15FFF (addresses which are not normally used by the GameBoy Color).
"},{"location":"libretro-core-support/#immutable-game-data","title":"Immutable Game Data","text":"The other important thing for a core to consider is that the game files should not be modified.
RetroAchievements hashes a portion of the game data (usually most or all of it) to ensure the player is using a compatible version of the game. If the hash doesn't match exactly, we don't enable achievements. This ensures that regional variants are only allowed if their memory lines up correctly. It also ensures players aren't playing on a hacked version where they have infinite health or some other cheat applied.
If the game files are modified by the core, the hash may change and the game will no longer be identified.
Any modifications to the game files should be handled through the retro_serialize
interface.
If a user can manually change settings in the core that could make playing a game easier, please inform us so we can add them to a blacklist that disables hardcore when they're set. Common examples are: * running NTSC games in PAL mode slows them down by 16% * disabling layers allows players to see through fog-of-war * core provided cheats give infinite health/ammo/etc
"},{"location":"libretro-core-support/#reset","title":"Reset","text":"When enabling hardcore mode, the frontend will ask the core to reset. It is important that the core do this, or users can drop out of hardcore mode for difficult parts of the game and switch back to hardcore mode without penalty just before an achievement triggers.
"},{"location":"libretro-core-support/#save-states","title":"Save States","text":"While not required, save state support makes it much easier to develop and debug/fix achievements using the core.
No special logic is required to support achievements in the save states - the frontend will handle that.
"},{"location":"libretro-core-support/#disabling-support","title":"Disabling Support","text":"If a core wishes to opt-out of achievement support, it can explicitly call the RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS
with false
/0
. This will disable the achievement subsystem while the core is loaded, which will avoid any attempts to identify if the loaded content has achievements, and disable all functionality limited by having achievement hardcore mode enabled (rewind, loading save states, slow-motion, cheats).
Last 10 changes on this page:
[2024-03-17 07:48] Jamiras:
Updated libretro core support (markdown)[2023-06-06 11:05] televandalist:
Added ToC[2022-01-06 07:40] Jamiras:
Created libretro core support (markdown)Welcome to the RetroAchievements documentation!
The docs are currently under heavy construction so be sure to check back often! Each section appears in the sidebar, but here is a brief explanation of the categories:
We encourage all community members to join our Discord Server; we use this for most communication.
Translations
Last 10 changes on this page:
[2023-11-28 14:29] televandalist:
Removed the RA logo from the top since the link was broken[2023-06-30 12:36] televandalist:
Updated Home (markdown)[2023-06-30 12:14] televandalist:
Updated Home (markdown)[2023-06-06 10:35] televandalist:
Fix broken link[2023-04-13 15:08] televandalist:
Removed the links to pages that deal with specific support questions. They should/will be merged with a support section or the FAQ to declutter the home page.[2023-04-13 14:51] televandalist:
Removed link to \"Free Games\" section. While they are free homebrews, the downloads are typically on site if they actually have a set. If they aren't, they should be.[2022-08-23 20:22] Jazerus:
grammar fixes[2022-02-18 21:24] televandalist:
Add Event page link[2021-04-21 10:23] meleu:
french docs are yet incomplete[2020-09-07 09:06] meleu:
add ManifestoLet's start jumping directly to the conclusion:
If you mastered a game and then it received a revision, don't feel frustrated! Keep in mind that changes come for a better quality.
Now let's elaborate why we are saying that.
RetroAchievements is a \"young\" project and is constantly evolving. It was launched in the late 2012, and in the early days the emulators and the site (database stuff, PHP, HTML, CSS, JavaScript, etc.) were developed by a single person: Scott. Therefore the evolution occurred slowly.
Another thing that was occurring very slowly in the early days was the diffusion of knowledge about achievement creation. Specially about good practices when creating achievements. There wasn't documentation at that time (RADocs only started in November/2017). People were learning to create achievements by sharing knowledge on forum threads and/or by personal messages.
In the early days the community didn't have a very clear a concept of what a good achievement design is. And it resulted in many poorly designed sets compared to our current standards (e.g. sets with only progress-based achievements). We also didn't have much experience of how achievements could be protected against in-game cheats or battery save abusing. That's why from time to time some achievement sets receive revisions. We make set revisions with quality in mind, and to show actual respect for the game.
When a revision is going to happen, we try to involve the community by discussing on our forums (usually the official game's topic) and/or on our discord server. We are aware that this is insufficient to reach all interested people, but it is the way we are currently using.
We are working on new ways to discuss revisions with the community by implementing some new social features on the RA website, but while those features are not implemented, we'll keep using the forums and discord.
If you would like to propose new methods for discussing revisions, we are open to suggestions.
"},{"location":"About-Us/","title":"About Us","text":""},{"location":"About-Us/#ra-staff","title":"RA Staff","text":"The RetroAchievements project started as a personal project of Scott Breen and in the early days the project had only administrators, achievement creators, and regular users (and it's still like that on the website). At that time administrators were responsible to do things like:
As the community continues to grow, the amount of work, time, and energy required to keep it running also grows. In order to assure the project thrives, without administrators having burnouts and ragequitting the project, various roles with specific tasks were created.
These roles are not really visible in the website, but they are on discord and here in this page we list the roles and their responsibilities.
Shared accounts used by their respective team members:
Members who have direct access to the webserver.
A group of dedicated and trusted users with varied responsibilities, the heaviest being decision-making regarding the direction of the project and community:
The team responsible to keep the this community a healthy place (at least for those who adhere to the User's Code of Conduct and agree with the RetroAchievements Manifesto):
The team responsible for the adherance and driving updates to the Developer's Code of Conduct.
The team responsible for ensuring the overall quality of achievement sets: including logic, correct titles and descriptions, working leaderboards, working rich presence and hash compatibility:
The team responsible for helping Jr. Devs learn how to make achievements sets and review their work to ensure their understanding is enough to make sets on their own:
The team that is more involved with the tech side of things, whether it be the website, emulators, Discord bots, etc.:
Users who oversee one of the QA sub-teams:
The RetroAchievements project was created by Scott Breen in 2012. He hacked some open source emulators to add the RetroAchievements feature and coded all the backend/website mostly alone.
By January 2014, there were 4 RA emulators, over 5000 achievements to earn (thanks to the devotion of many passionate achievement developers) and over 1000 players registered. After a couple of years Scott was called by the real life the website development went into a period of hiatus with just a few sporadic improvements (the achievement developers were continually working on more and more games, though).
In late 2015 leiradel started to work to integrate the RetroAchievements feature into RetroArch. And, as RetroArch is able to run on a wide variety of platforms (such as Mac and Linux) and devices (such as Android phones and Raspberry pi), it helped a lot to increase the popularity of the RetroAchievements project.
As the site slowly grew, so did the bandwidth costs, so in late 2016, Scott reached out to the community and they suggested doing a Patreon to keep the site going. After implementing it, the community response was fantastic, which allowed the site to continue completely ad-free.
Mid 2017 the RetroAchievements Discord server was started and it made communication across the community much easier. Since then, many knowledgeable members (coders, web developers, etc.) joined the scene volunteering to contribute to the project.
Up to this point all the achievement creation knowledge was scattered in several forum posts, making it very tough for a newbie to learn how to create achievements. Then in the late 2017 meleu started the RADocs project and thanks to contributions from many experienced achievement creators it is now a reasonably solid resource of information. Helping dozens of Jr. Developers (and even the experienced ones) to create content for our community.
In the early 2018 Scott opened the source of the back-end/website, which was a turning point in the history of the development of the whole RetroAchievements project (see us at github).
Later in the same year a more concise staff began to take shape and is now an awesome team. These talented guys keep the ball rolling and make it very clear that the RA community is alive and stronger than ever.
In some areas the project may still look like a beta version, but we are continually working hard to make things better.
"},{"location":"About-Us/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-08-04 23:23] Snow:
Updated users in roles[2023-04-13 14:37] televandalist:
Updated the list.[2022-06-09 19:04] Searo:
Swap QA and DevComp descriptions[2022-06-09 18:45] Searo:
Add DevComp, Update QA after the split, Add CR, Suffa28 to Mods, SnowPin to Admins[2022-04-16 12:07] snowpin:
Updated Staff & Tech Team members[2022-03-21 15:08] ScottFromDerby:
I am now Breen instead of Davies :)[2022-03-13 21:11] televandalist:
Updated according to current roles.[2022-01-28 18:40] SporyTike:
added RAdmin and QATeam as contacts to the lists, I got feedback from users that it might be good to put them here[2021-11-28 14:14] televandalist:
Update team lists[2021-06-01 09:19] meleu:
add missing human being to be listed in the mod teamEsta es una gu\u00eda en como pensar en un buen dise\u00f1o de logros. No el lado t\u00e9cnico sino el conceptual.
Este contenido es un resumen de lo que originalmente escribi\u00f3 el usuario de RA cirellio en un tema del foro.
"},{"location":"Achievement-Design-es/#logros-basados-en-progresion","title":"Logros basados en Progresi\u00f3n","text":"Hay 3 tipos de logros basados en progresi\u00f3n: progresi\u00f3n simple, progresi\u00f3n basada en historia, y logros de progresi\u00f3n/colecci\u00f3n.
"},{"location":"Achievement-Design-es/#progresion-simple","title":"Progresion Simple","text":"Logros basados en progresi\u00f3n son usualmente los mas simples, especialmente si el juego que estas haciendo es nada mas que eso. O no tiene mucho que ver con una trama/historia o algo parecido. En este caso, veamos algunos BUENOS y MALOS ejemplos sobre esto:
Toma ligeramente mas trabajo programar un logro donde el jugador necesita completar un stage en vez de simple llegar al siguiente. Pero es aparte mas satisfactorio para el jugador, y se ve mucho mas profesional. Aparte tambi\u00e9n es menos susceptible a problemas donde los jugadores cargan partidas de guardado o estados de guardado (savestates) para logros gratis.
Es cierto que los logros basados en progresi\u00f3n son usualmente logros regalados, pero generalmente todos estamos de acuerdo en que un logro sobre empezar el juego es demasiado f\u00e1cil, y no del todo memorable para el jugador. Es simplemente es una norma, sin embargo es muchas veces la parte mas memorable de un juego para el jugador, y completar un juego es definitivamente un logro en si. Es correcto hacer un logro que funcione de la siguiente manera \"Completa el ultimo mundo y completa el juego\".
Una de las peores cosas que puedes hacer es spammear logros. Juegos de Puzzle son notorios por tener ese tipo de problemas, porque los stages son cortos y por lo regular, hay cientos o hasta mas. Como resultado, el feed de la pagina principal termina con un mont\u00f3n de micro-actualizaciones, y sacan a los logros de otros usuarios r\u00e1pidamente del feed. La manera de corregir esto de la manera mas profesional posible es espaciar los logros un poco mas, en grupos de stages. Por ejemplo, si los stages 1-10 todos tienen tem\u00e1tica de fuego, y los stages 11-20 todos tienen tem\u00e1tica del espacio, puedes crear logros basados en esas tem\u00e1ticas. Se creativo.
"},{"location":"Achievement-Design-es/#progresion-basada-en-historia","title":"Progresion Basada en Historia:","text":"Los momentos mas memorables en la historia de los videojuegos usualmente no est\u00e1n relacionados a coleccionar un \u00edtem o a misiones secundarias, sino a escenas especificas relacionadas con la historia.
Ejemplos:
La cosa es de ser extremadamente cuidados con los spoilers. Si encuentras alg\u00fan logro relacionado con historia y cuenta con un spoiler, contacta al desarrollador responsable. Y a los desarrolladores, por favor sean comprensivos cuando se trate de critica constructiva, el numero y el porcentaje de este tipo de logros varia de juego en juego--Esto realmente se vasa en que tan fuertemente el juego esta enfocado en su historia.
"},{"location":"Achievement-Design-es/#progresioncoleccion","title":"Progresi\u00f3n/Colecci\u00f3n","text":"Progresi\u00f3n/Colecci\u00f3n es com\u00fanmente un h\u00edbrido. No solo estas coleccionando un \u00edtem, sino tambi\u00e9n sale una memorable (y mandataria) escena.
Ejemplos:
Logros en esta categor\u00eda h\u00edbrida tipicamente mas satisfactorios ya que hacen doble-trabajo. El jugador no esta solamente obteniendo un \u00edtem, sino tambi\u00e9n viendo una escena memorable y obteniendo un logro a la vez. Bastante dosis de endorfinas!
"},{"location":"Achievement-Design-es/#progresion-pros-y-contras","title":"Progresion Pros y Contras","text":"Logros basados en progresi\u00f3n son garantizados que le van a salir al jugador en un play-through normal. Entonces para que tenerlos en primer lugar?
"},{"location":"Achievement-Design-es/#pros","title":"Pros","text":"Los juegos de anta\u00f1o, por lo general, ofrecen de muy poco a nada por vencer un modo extra, mas all\u00e1 de simplemente hacerlo en un d\u00eda lluvioso despu\u00e9s de pasar el juego. Los juegos viejos no contaban con una conexi\u00f3n a Internet. Y no contaban con aspectos sociales mas all\u00e1 del modo de 2-jugadores, y tal vez decirle a tus amigos que pasaste algo. Pero ahora, con RetroAchievements.org, podemos mostrar nuestros logros de anta\u00f1o (incluso si implica volver a hacer lo que hicimos hace a\u00f1os atr\u00e1s). Estos Trofeos son medallas de honor. Puedes observar con ver los logros de otro compa\u00f1ero y empezar a entender que tan lejos a llegado, que tanta habilidad tiene. Junto con eso tambi\u00e9n viene el respeto hacia otros compa\u00f1eros. Socializamos, felicitamos a cualquiera que hubiera hecho un buen trabajo. Sentimos como si perteneci\u00e9ramos, y estuvi\u00e9ramos en buena compa\u00f1\u00eda.
"},{"location":"Achievement-Design-es/#misiones-secundarias","title":"Misiones Secundarias","text":"A menudo hay cosas que el jugador puede hacer, pero no son necesarias de completar. En otras palabras, un reto hecho por los desarrolladores. Usualmente son divertidas, o algunas veces no tanto, pero merecen un precio porque requieren de trabajo duro y persistencia para lograrlos. Tienes que caminar por una cuerda floja entre si los jugadores dedicados har\u00e1n algo al respecto, vs. si la meta es algo est\u00fapido. La gente simplemente le va a dar la vuelta, as\u00ed que ten eso en mente.
Algunas veces, este tipo de logros son incluso Easter Eggs o cosas que el jugador en toda su vida jam\u00e1s supo que exist\u00edan! Muchos jugadores adoran este tipo de logros. Yo pienso porque aprenden algo nuevo de un juego con el que crecieron, o pensaban que eran los \u00fanicos que saben sobre ello y se emocionan al verlo como un logro aqu\u00ed. Es realmente importante para nosotros los desarrolladores REALMENTE conocer el juego por dentro y por fuera antes de crear un set de logros.
Ejemplos de Misiones Secundarias:
Las misiones secundarias son mas com\u00fanmente encontradas en RPGs, pero especialmente en estos d\u00edas, las sidequests se encuentra pr\u00e1cticamente en cualquier genero. Manten los ojos bien abiertos - Incluso el plataformero que menos piensas podr\u00eda tener una o dos sidequests. La serie de Kirby, en algunos casos, cuenta con \u00e1reas y cuartos escondidos. Algunas veces, las sidequests terminan otorgando un \u00edtem, que cae en un hibrido de: Misiones Secundarias/Colleccionables.
"},{"location":"Achievement-Design-es/#logros-opcionales","title":"Logros Opcionales","text":"Ejemplos de Logros Opcionales:
Estos son los desarrolladores del juego esperando a que te guste su juego lo suficiente para que vuelvas a el aun mas, incluso despu\u00e9s que hubieran rodado los cr\u00e9ditos. Ellos intentan recompensar al jugador por completar su juego, y crear un poco mas de re-jugabilidad. Si los desarrolladores del juego se dieron la molestia de hacer cosas como estas una parte integral del juego, nosotros como desarrolladores de logros deber\u00edamos de reconocer estos retos y crear los logros adecuados tan siquiera para algunos de ellos.
Chrono Trigger, Chrono Cross, y Star Ocean: The Second Story son famosos por hacer esto. Las entregas para el Game Boy Advance de Castlevania tambi\u00e9n hacen esto. En efecto, muchos juegos lo hacen. Si no estas completamente seguro de que tu juego cuente con modos extras o retos, procura hacer un poco de research y checar algunos FAQs. O tambi\u00e9n puedes preg\u00fantale a la comunidad de aqu\u00ed, varios de nosotros somo expertos en varios juegos de aqu\u00ed.
"},{"location":"Achievement-Design-es/#sidequestsopcionales-pros-y-contras","title":"Sidequests/Opcionales Pros y Contras","text":"Los logros de Sidequests/Opcionales son fant\u00e1sticos suplementos para los logros de Progresion.
"},{"location":"Achievement-Design-es/#pros_1","title":"Pros","text":"La mayor\u00eda de los logros basados en coleccionables son opcionales, al menos que los items sean MacGuffins, que en ese caso ya cae en Progresi\u00f3n/Colecci\u00f3n.
Ejemplos:
Si el juego almacena cierta stat/habilidad, los desarrolladores pr\u00e1cticamente te est\u00e1n motivando a que lo maximices. Ahora, podr\u00edas ser ese tipo de jugador, o tal vez no. Eso tienes que pregunt\u00e1rtelo a ti mismo, como un desarrollador, como quieras o no, otros jugadores si podr\u00edan ser capaz de conseguir esas 9999 bajas de murci\u00e9lagos vampiro por ejemplo, incluso si tu no lo hicieras. Las ventajas de esto es que la gente que no lo haria normalmente ahora tiene algo por lo que volver cuando tengan ganas de volver a jugar el juego. La desventaja es que hay otros jugadores que no llegarian tan lejos como para hacerlo, pero tambi\u00e9n sienten que tienen que MASTERIZAR cada juego r\u00e1pidamente (algo un poco raro), al final se van a quejar. Y si consigues bastantes quejas, tal vez quieras dar de baja ese logro de haz 9999 o a algo un poco mas razonable, como 500. Si nadie se divierte haciendo alg\u00fan logro, ese simplemente no es el esp\u00edritu de jugar juegos y de hacer logros.
Tienes que utilizar tu criterio y pensar que es lo que el jugador disfrutar\u00eda mas. Como una regla de oro, es mejor tener algunos logros sobre Sidequests/Opcionales que ni siquiera ninguno. Pero con un poco de empe\u00f1o extra, estos logros pueden hacer tu lista mucho mas memorable.
Siguiente, a llegado el momento de que nos subamos nuestras mangas como desarrolladores y nos pongamos MUY creativos, hemos llegado cuando el desarrollador reta al jugador a retos que van mucho mas all\u00e1 de las reglas del juego.
"},{"location":"Achievement-Design-es/#logros-por-diversion","title":"Logros por Diversi\u00f3n","text":"Este tipo de logros usualmente otorgan solamente algunos puntos, pero siguen siendo divertidos
Ejemplos de Por Diversi\u00f3n:
Algunas veces, los desarrolladores dejan divertidos easter eggs. Ellos se van la milla extra para entrener al jugador con \u00a8que pasar\u00eda si...\u00a8. De nuevo, es nuestro trabajo identificar este tipo de casos y as\u00ed darles soporte como desarrolladores.
"},{"location":"Achievement-Design-es/#retos","title":"Retos","text":"Una cosa que tienes que recordar sobre jugadores retro - y los juegos que juegan - es que la mayor\u00eda de las veces nosotros hemos jugado estos juegos un mill\u00f3n de veces anteriormente. Esta es la misma vieja canci\u00f3n y baile para la mayor\u00eda de nosotros, e inclusive a veces necesitamos algo de motivaci\u00f3n para hacerlo de nuevo. Algunos de nosotros hemos terminado Contra sin perder una sola vida. Bueno, a llegado la hora que lo demostremos!
A lo que me refiero es que, pi\u00e9nsalo: Antes de este sitio web, la \u00fanica manera de demostrarle a alguien que te pasaste Contra perfectamente era invitar a un amigo para que lo viera, o moverle a un software de grabaci\u00f3n de v\u00eddeo y subir un a YouTube. Pero incluso hay, muchos de esos v\u00eddeos est\u00e1n modificados para que se vean que fue un playthrough perfectos. En cambio, este sitio, cuenta con Hardcore mode, que te ayuda a indicar que nadie esta haciendo trampa.
Tal vez ya cuentes con logros de progresi\u00f3n y logros sobre Sidequests/Opcionales, pero si tu quieres crear una lista de logros que sea realmente grandiosa, necesitas al menos algunos logros sobre Retos. Intenta pensar atr\u00e1s a cerca de todos los juegos que haz jugado en este sitio web. Cuales son algunos de los logros mas memorables? Te puedo garantizar que son Logros sobre Retos. Hay excepciones en la regla, claro, pero el jugador tipico no va a realmente recordar un logro sobre, 'Completa el Stage 2-6', o 'Llega al Nivel 30'. Es mas probable que recuerden logros que convirtieron a su playthrough en una experiencia \u00fanica, as\u00ed como...
Esto es lo que hace a este sitio tan especial, y lo que hace a los logros algo mucho mas de simplemente completar el juego.
Incluso los jugadores que odian la simple idea de los Logros podr\u00edan decir, \"Bueno, excepto por ESTE. Este si estaba bien.\" y te puedo garantizar que el ejemplo del que ESE ejemplo del que estaban hablando fue un logro sobre un reto, algo que reta al jugador mas all\u00e1 del juego en si.
Un buen desarrollador de logros va a mantener sus ojos bien abiertos, y sus sentidos al m\u00e1ximo cuando se trate de desarrollar un juego, buscando buenos e inusuales retos. Tal vez notes algo en el juego que seria una haza\u00f1a bastante complicada y que vale la pena.
"},{"location":"Achievement-Design-es/#retos-de-speedruns","title":"Retos de Speedruns","text":"Los Timers introducen una presi\u00f3n a los jugadores en sus juegos favoritos que tal vez jamas hubieran sentido. Muy pocas cosas hacen que el coraz\u00f3n se acelere tanto que un reloj haciendo tik-tok. A\u00f1ade un timer, y un juego que era anteriormente tan f\u00e1cil que se poda completar con los ojos cerrados se va a convertir transformar de repente en la prueba jugabilista definitiva de sus vidas.
Ejemplos de Retos de Speedruns:
Un desarrollador tal vez quiera ir a YouTube o Twitch y ver que tan r\u00e1pido la gente esta terminando un juego (Y por favor ignora v\u00eddeos que utilicen TAS - \"Tool Assisted Speedruns\"). Algunos pro speed-runners son muy r\u00e1pidos que el jugador t\u00edpico no tendr\u00eda la posibilidad de lograrlo en ese tiempo establecido, tienes que encontrar una manera que sea un buen balance. Y si no puedes encontrar un buen tiempo el cual retar a los jugadores, para eso est\u00e1n las tablas de clasificaci\u00f3n - Convi\u00e9rtelo en una competici\u00f3n! De hecho, algunos de tus celebridades favoritas del mundo del speedrun podr\u00edan venir a este sitio y meter uno que otro tiempo.
Tu sabes cuando un logro te esta metiendo presi\u00f3n cuando te empiezan a sudar las manos y te encuentras nervioso mientras observas y observas el reloj. Como dije anteriormente, nada grita mas fuerte, \"Despierta!\" que un timer, especialmente cuando los desarrolladores empiezan a\u00f1adir este tipo de logros con OTROS tipos de logros (e incluso tablas de clasificaci\u00f3n) durante una secci\u00f3n contrarreloj del juego. Los Retos de Tiempo tienen una sinergia muy grande con otros tipos de logros.
"},{"location":"Achievement-Design-es/#retos-de-limitaciones","title":"Retos de Limitaciones","text":"Ejemplos de Retos con Limitaciones:
Sitios web basados en juegos en especifico son un recurso fant\u00e1stico para encontrar estos tipos de logros ellos tienen una muy buena idea de que es posible y que es imposible, e inclusive han asta escrito FAQs discutiendo retos alternos y maneras diferente de jugar el juego.
Algunas veces, pasara de que no hay en si una comunidad. No FAQs. No tablas de mensajes. E inclusive tal vez no all\u00e1 v\u00eddeos \u00fatiles. En esos casos, tu necesitas ser una persona con la idea de crear nuevos e interesantes retos para el jugador. Ten en cuenta que ese tipo de logros toman mucha practica, tiempo, y experiencia para ser creados.
La clave de esto es que SEAS CREATIVO! Y recuerda mantenerlo DIVERTIDO!
"},{"location":"Achievement-Design-es/#retos-de-puntuacion","title":"Retos de Puntuaci\u00f3n","text":"Ejemplos de Retos de Puntuaci\u00f3n:
Logros sobre retos son tu oportunidad para mostrarle a los jugadores como jugar sus juegos favoritos de una manera diferente, \u00fanica, y inclusive en maneras alucinantes. A pesar de que este tipo de logros le dan un respiro de vida a un set aburrido, tu generalmente solo quieres que una peque\u00f1a parte de este tipo de logros est\u00e9n en tu lista final.
"},{"location":"Achievement-Design-es/#pros_2","title":"Pros","text":"Last 10 changes on this page:
[2019-05-12 13:11] eldexterr:
Updated Achievement Design es (markdown)[2019-05-11 18:54] eldexterr:
Updated Achievement Design es (markdown)[2019-05-10 17:08] eldexterr:
Updated Achievement Design es (markdown)[2019-05-10 11:58] eldexterr:
Updated Achievement Design es (markdown)[2019-05-08 17:30] eldexterr:
Updated Achievement Design es (markdown)[2019-04-25 19:25] eldexterr:
Updated Achievement Design es (markdown)[2019-04-24 16:49] eldexterr:
Updated Achievement Design es (markdown)[2019-04-23 17:38] eldexterr:
Updated Achievement Design es (markdown)[2019-04-22 17:12] eldexterr:
Updated Achievement Design es (markdown)[2019-04-17 17:45] eldexterr:
Updated but still not finishedLink para o texto em ingl\u00eas: Achievement Design
Este \u00e9 um guia de como pensar sobre e desenvolver boas conquistas. N\u00e3o o lado t\u00e9cnico, mas o lado conceitual.
Este conteudo \u00e9 um resumo do que foi originalmente escrito pelo usu\u00e1rio cirellio em um forum. texto em ingl\u00eas
H\u00e1 3 tipos de conquistas baseadas em progresso: progresso simples, progresso baseado na hist\u00f3ria, e conquistas baseadas em progresso/coletagem.
"},{"location":"Achievement-Design-pt_BR/#progresso-simples","title":"Progresso Simples","text":"Conquistas baseadas em Progresso s\u00e3o geralmente mais simples, especialmente se o jogo que voc\u00ea est\u00e1 fazendo n\u00e3o passa de fases lineares. Ou n\u00e3o tem muita coisa acontecendo na hist\u00f3ria. Neste caso, vamos dar uma olhadas em alguns exemplos BONS e RUINS disto:
\u00c9 preciso um pouco mais de trabalho para codificar uma conquista em que o jogador precisa concluir a fase, em vez de simplesmente chegar a pr\u00f3xima. Mas tamb\u00e9m \u00e9 muito mais satisfat\u00f3rio para o jogador, e tem muito mais um olhar profissional. Tamb\u00e9m \u00e9 menos suscet\u00edvel a problemas com jogadores que carregam save games ou savestates para ganhar conquistas em massa Nota do tradutor: Em outras palavras: Evitar Cheats
Enquanto as conquistas baseadas em progresso s\u00e3o frequentemente brindes, geralmente \u00e9 concordado aqui que uma conquista para come\u00e7ar o jogo \u00e9 um pouco f\u00e1cil demais, e n\u00e3o \u00e9 nada memor\u00e1vel para o jogador. \u00c9 apenas uma formalidade. E finalizando o jogo, no entanto, \u00e9 frequentemente a parte do jogo mais memor\u00e1vel para um jogador, e completar um jogo \u00e9 definitivamente uma conquista em si. \u00c9 uma boa pr\u00e1tica fazer essas conquistas como \"Derrote o ultimo chefe/fase e conclua o jogo\"
Uma das piores coisas que voc\u00ea pode fazer \u00e9 criar spams de conquistas. Jogos de Puzzles s\u00e3o not\u00e1veis por esses tipos de problemas, porque as fases s\u00e3o curtas e existem centenas delas ou mais. Como um resultado, o feed da p\u00e1gina principal fica com muitas micro-atualiza\u00e7\u00f5es, que \"spama\" as conquistas das outras pessoas para baixo e pra fora da p\u00e1gina principal rapidamente. A maneira de se mostrar mais profissional nessa quest\u00e3o \u00e9 ampliar um pouco mais as conquistas, em grupos de fases. Por exemplo, se os est\u00e1gios 1-10 s\u00e3o todas tem\u00e1ticas de fogo, e as fases 11-20 s\u00e3o tem\u00e1ticas de espa\u00e7o sideral, voc\u00ea pode criar conquistas ao redor desses temas. Seja criativo.
"},{"location":"Achievement-Design-pt_BR/#progresso-baseado-na-historia","title":"Progresso Baseado na hist\u00f3ria:","text":"Os momentos mais memor\u00e1veis na hist\u00f3ria dos jogos muitas vezes n\u00e3o est\u00e3o relacionados \u00e0 cole\u00e7\u00e3o de itens ou sidequests, mas para cenas espec\u00edficas relacionadas \u00e0 hist\u00f3ria
Exemplos: - O primeiro encontro com Pyramid Head na s\u00e9rie Silent Hill - Encontrar a verdade sobre Darth Revan em Knights of the Old Republic - Encontrar o que ir\u00e1 acontecer no futuro em Chrono Trigger - Lan\u00e7ar a vaca em Earthworm Jim. - Praticamente qualquer morte de personagem.
A coisa que voc\u00ea tem que ter cuidado extra \u00e9 com os spoilers. Se voc\u00ea pegar uma conquista baseada em progresso que tem um spoiler, contacte um desenvolvedor sobre isso. E os desenvolvedores, por favor, seja receptivo quando vier cr\u00edticas construtivas! Al\u00e9m disso, o n\u00famero e at\u00e9 a porcentagem deles ir\u00e3o variar de jogo para jogo--E depende muito de como o jogo \u00e9 baseado na hist\u00f3ria.
"},{"location":"Achievement-Design-pt_BR/#progressocoletagem","title":"Progresso/Coletagem","text":"Progresso/Coletagem \u00e9 um h\u00edbrido comum. N\u00e3o apenas em voc\u00ea coletar um item, mas tamb\u00e9m inicia uma cena memor\u00e1vel (e obrigat\u00f3ria).
Exemplos - Obter a Master Sword em Link to the Past, que sustenta a maldi\u00e7\u00e3o em Lost Woods - Encontrar a espada na praia em Link's Awakening, na primeira cena em que a coruja s\u00e1bia fala com voc\u00ea. - Pegar o seu Pokemon inicial, que acontece durante uma cena inicial, mas \u00e9 um \"ritual de passagem\" para a maioria dos jogadores.
Conquistas nesta categoria h\u00edbrida podem oferecer muito mais satisfa\u00e7\u00e3o porquer eles s\u00e3o Conquistas nesta categoria h\u00edbrida geralmente s\u00e3o mais satisfat\u00f3rios pois eles desempenham um papel duplo. O jogador n\u00e3o est\u00e1 apenas pegando um item, mas tamb\u00e9m assistindo uma cena memor\u00e1vel e farturando uma conquista, tudo de uma vez. Que enxurrada de endorfina!
"},{"location":"Achievement-Design-pt_BR/#pros-e-contras-em-progresso","title":"Pr\u00f3s e Contras em Progresso","text":"Conquistas em Progresso s\u00e3o garantidos ao jogador em uma jogada normal. Ent\u00e3o, por que t\u00ea-los?
"},{"location":"Achievement-Design-pt_BR/#pros","title":"Pr\u00f3s","text":"Os jogos antigos, por si s\u00f3, oferecem pouco ou nenhum incentivo para zerar um bonus, al\u00e9m de que \u00e9 algo para fazer em um dia chuvoso depois de voc\u00ea ter zerado o jogo. Jogos antigos n\u00e3o tinham conectividade com a Internet. E eles n\u00e3o tinham aspectos sociais al\u00e9m de 2 jogadores, e talvez dizendo a seus amigos da escola que voc\u00ea vencesse alguma coisa. Mas agora, com o Retroachievements.org, nos podemos mostrar seus trof\u00e9is antigos (mesmo que isso nos obrigue a refazer o que provavelmente j\u00e1 fizemos h\u00e1 muitos anos). Estes trof\u00e9is s\u00e3o emblemas de honra. Voc\u00ea pode olhar as conquistas de outros membros e come\u00e7ar a entender o qu\u00e3o longe eles foram, o qu\u00e3o h\u00e1beis eles s\u00e3o. Junto com isso vem o respeito dos outros membros. N\u00f3s socializamos, n\u00f3s parabenizamos uns aos outros por um trabalho bem feito. E n\u00f3s somos uma boa compania.
"},{"location":"Achievement-Design-pt_BR/#sidequests","title":"Sidequests","text":"Muitas vezes h\u00e1 coisas que o jogador pode fazer que est\u00e3o confinados \u00e0s regras do jogo, mas n\u00e3o s\u00e3o necess\u00e1rias para complet\u00e1-lo. Em outras palavras, um desafio contruido para o jogo pelos desenvolvedores originais do jogo. Geralmente elas s\u00e3o divertidos, mas merecem ser ganhos porque elas requerem trabalho duro e pesistencia para ganhar. Voc\u00ea tem que caminhar em uma corda bamba bem entre se jogadores dedicados s\u00e3o propensos a fazer algo, vs. se o objetivo \u00e9 estupido. As pessoas ter\u00e3o vis\u00f5es diferentes sobre isso, ent\u00e3o fortale\u00e7a-se.
Muitas vezes, esses tipos de conquistas s\u00e3o at\u00e9 Easter Eggs ou coisas que o jogador nunca soube que existiam em toda a sua vida! Muitos jogadores adoram esses tipos de conquistas. Provavelmente porque eles acabam conhecendo algo novo sobre um jogo que eles cresceram jogando, ou talvez por perceber que aquele segredo do jogo que \"s\u00f3 ele conhece\" est\u00e1 sendo suportado aqui. \u00c9 muito importante para n\u00f3s desenvolvedores conhecer MUITO BEM o jogo antes de criar um set de conquistas.
Exemplos de Sidequests:
Sidequests s\u00e3o mais frequentemente encontrados em RPGs, mas especialmente nesses dias, sidequests s\u00e3o encontrandas em quase todos os g\u00eaneros. Mantenha seus olhos abertos, jogos de plataforma pode tem uma ou tr\u00eas sidequests. Os jogos da s\u00e9rie Kirby por exemplo, tem muitas salas e \u00e1reas escondidas. Muitas vezes, sidequests acabam com \"ganhando um item\" no qual acaba sendo um hibrido: Sidequest/Coletagem.
"},{"location":"Achievement-Design-pt_BR/#conquitas-opcionais","title":"Conquitas Opcionais","text":"Estes s\u00e3o os criadores do jogo esperando que voc\u00ea goste de seu jogo o suficiente para continuar voltando para mais, mesmo depois que esses cr\u00e9ditos terminarem. Eles est\u00e3o tentando recompensar o jogador por completar seu jogo e criar alguma forma de satisfazer uma segunda jogatina. Se os criadores do jogo tem problemas de fazer essas coisas como parte integral do jogo, nos como desenvolvedores de conquistas devemos reconhecer esses desafios e criar conquistas apropriadas para pelo menos alguns deles.
Chrono Trigger, Chrono Cross, and Star Ocean: The Second Story s\u00e3o famosos por isso. De fato, muitos jogos fazem isso. Se voc\u00ea n\u00e3o tem certeza se o seu jogo tem modos extras ou desafios, tenha certeza de fazer alguma pesquisa e chegar alguns FAQs. Ou perguntar na nossa comunidade, muitos de n\u00f3s somos experts nos jogos que s\u00e3o suportados aqui.
"},{"location":"Achievement-Design-pt_BR/#pros-e-contras-de-sidequestsopcionais","title":"Pr\u00f3s e Contras de Sidequests/Opcionais","text":"Conquistas de Sidequests/Opcional fazem complementos fant\u00e1sticos para Conquistas de Progresso.
"},{"location":"Achievement-Design-pt_BR/#pros_1","title":"Pr\u00f3s","text":"A maioria das conquistas baseadas em coleta s\u00e3o opcionais, a menos que os itens em si sejam MacGuffins, que, nesse caso, cairiam diretamente em Progress\u00e3o / Cole\u00e7\u00e3o.
Exemplos:
Se o jogo acompanhar uma estat\u00edstica, o desenvolvedor do jogo est\u00e1 praticamente desafiando voc\u00ea a maximiz\u00e1-lo. Agora, voc\u00ea pode ser esse tipo de jogador, e voc\u00ea pode n\u00e3o ser. Voc\u00ea tem que perguntar a si mesmo, como um desenvolvedor, se os outros jogadores provavelmente obter\u00e3o 9999 mortes de um inimigo, mesmo que voc\u00ea n\u00e3o o fa\u00e7a. As vantagens disso s\u00e3o que as pessoas que normalmente n\u00e3o fazem isso sempre t\u00eam algo para voltar e trabalhar quando sentem vontade de jogar novamente. A desvantagem \u00e9 que outros jogadores que normalmente n\u00e3o ir\u00e3o t\u00e3o longe e talvez n\u00e3o o fa\u00e7a, mas tamb\u00e9m sentem que precisam PLATINAR rapidamente todos os jogos (raros de encontrar), v\u00e3o reclamar. Se voc\u00ea receber reclama\u00e7\u00f5es suficientes, voc\u00ea pode querer reduzir 9999 algo mais razo\u00e1vel, como 500. Se ningu\u00e9m est\u00e1 se divertindo com uma conquista, n\u00e3o \u00e9 no esp\u00edrito de jogar ou fazer uma conquista.
Voc\u00ea tem que usar seu melhor julgamento aqui e pensar no que o jogador mais gosta. Como regra geral, \u00e9 melhor ter algumas conquistas paralelos / opcionais do que nenhuma. Mas com um pouco de esfor\u00e7o extra, essas conquistas podem tornar sua lista muito memor\u00e1vel.
Em seguida, \u00e9 hora de arrega\u00e7ar as mangas como desenvolvedores e ser REALMENTE criativos quando os pr\u00f3prios desenvolvedores desafiam o jogador al\u00e9m das regras do jogo.
"},{"location":"Achievement-Design-pt_BR/#conquistas-divertidas","title":"Conquistas divertidas","text":"Este tipo de conquistas geralmente vale apenas alguns pontos, mas eles ainda s\u00e3o divertidos
Exemplos de divers\u00e3o:
Uma coisa que voc\u00ea deve lembrar sobre os jogadores retr\u00f4 - e os jogos que eles jogam - \u00e9 que a maioria de n\u00f3s j\u00e1 jogou esses jogos um milh\u00e3o de vezes antes. Esta \u00e9 a mesma velha m\u00fasica e dan\u00e7a para a maioria de n\u00f3s, e muitas vezes precisamos de motiva\u00e7\u00e3o para faz\u00ea-lo novamente. Alguns de n\u00f3s podem terminar o Contra sem perder uma \u00fanica vida. Bem, agora \u00e9 a nossa chance de provar isso!
Quero dizer, pense nisso: antes deste site, a \u00fanica maneira de provar que voc\u00ea pode fazer uma corrida impec\u00e1vel de Contra era convidar um amigo, sentar e mostrar a ele, ou descobrir software de grava\u00e7\u00e3o e fazer um v\u00eddeo no YouTube. Mas mesmo assim, muitos desses v\u00eddeos s\u00e3o manipulados para se parecer com jogos perfeitos. Este site, no entanto, tem o modo Hardcore, que ajuda a indicar que ningu\u00e9m est\u00e1 trapaceando.
Voc\u00ea pode ter Conquistas progressivas e Sidequest / Conquistas Opcionais, mas se voc\u00ea quiser criar uma lista de conquistas que seja realmente \u00f3tima, voc\u00ea precisa de pelo menos algumas Conquistas de Desafio. Tente pensar em todos os jogos que voc\u00ea jogou aqui neste site. Quais s\u00e3o algumas das realiza\u00e7\u00f5es mais memor\u00e1veis? Eu quase posso garantir que eles eram Conquistas de Desafio. Existem exce\u00e7\u00f5es \u00e0 regra, \u00e9 claro, mas o jogador t\u00edpico n\u00e3o vai se lembrar com carinho, Concluir a fase 2-6', ou 'Chegar ao nivel 30'. Eles s\u00e3o mais propensos a se lembrar com carinho de realiza\u00e7\u00f5es que fizeram de seus jogatinas uma experi\u00eancia \u00fanica, como ...
Isso \u00e9 o que torna este site t\u00e3o especial, e o que faz das conquistas algo mais do que apenas vencer um jogo.
Mesmo os cr\u00edticos mais contundentes que odeiam a id\u00e9ia de realiza\u00e7\u00f5es podem dizer: \"Bem, exceto por este. Esse foi bom\". E eu garanto que UM exemplo de que eles est\u00e3o falando \u00e9 uma conquista de desafio, algo que desafiou o jogador al\u00e9m do pr\u00f3prio jogo.
Um bom desenvolvedor de realiza\u00e7\u00f5es manter\u00e1 seus olhos abertos, sua intelig\u00eancia sobre eles e seus sentidos afiados ao desenvolver um jogo, procurando por desafios bons e incomuns. Eles podem perceber algo no jogo que \u00e9 um feito dif\u00edcil.
"},{"location":"Achievement-Design-pt_BR/#desafios-de-speedrun","title":"Desafios de Speedrun","text":"Os timers apresentam uma press\u00e3o adicional que os jogadores podem nunca ter sentido antes enquanto jogam seus jogos favoritos. Poucas coisas fazem o cora\u00e7\u00e3o bombear mais do que um rel\u00f3gio imponente. Adicione um elemento de temporizador, e um jogo que anteriormente era t\u00e3o f\u00e1cil que eles poderiam venc\u00ea-lo de olhos vendados poderia de repente ser transformado no maior desafio de jogo de suas vidas.
Exemplos de desafios do Speedrun:
Um desenvolvedor pode querer ir ao YouTube ou Twitch e ver o qu\u00e3o r\u00e1pido as pessoas est\u00e3o terminando um jogo (E, por favor, ignore o TAS - \"Tool Assisted Speedruns\"). Alguns corredores profissionais de velocidade s\u00e3o t\u00e3o r\u00e1pidos que o jogador t\u00edpico n\u00e3o ter\u00e1 a menor chance de competir, mas voc\u00ea deve ser capaz de encontrar um ponto m\u00e9dio entre o melhor tempo dele e o seu. E se voc\u00ea n\u00e3o consegue descobrir um bom momento para desafiar os jogadores aqui, \u00e9 para isso que os Leaderboards s\u00e3o - Transforme isso em uma competi\u00e7\u00e3o! Na verdade, alguns de seus favoritos speed-runners podem vir a este site e colocar seus tempos.
Voc\u00ea saber\u00e1 quando voc\u00ea est\u00e1 enfrentando uma conquista de press\u00e3o quando as palmas das m\u00e3os est\u00e3o suando e voc\u00ea se v\u00ea nervosamente olhando para o cron\u00f4metro. Como eu disse antes, nada grita: \"Aten\u00e7\u00e3o!\" mais alto que um cron\u00f4metro, especialmente quando os desenvolvedores come\u00e7am a tecer esse tipo de conquista com OUTROS tipos de conquistas (e at\u00e9 placares de l\u00edderes) durante uma parte cronometrada de um jogo. Os Desafios Temporizadores t\u00eam uma quantidade insana de sinergia com outros tipos de conquistas.
"},{"location":"Achievement-Design-pt_BR/#desafios-de-limitacao","title":"Desafios de Limita\u00e7\u00e3o","text":"Exemplos de Desafios de Limita\u00e7\u00e3o:
Os sites da comunidade constru\u00eddos em torno de determinados jogos s\u00e3o um recurso fant\u00e1stico para esses tipos de realiza\u00e7\u00f5es. Eles ter\u00e3o uma boa id\u00e9ia sobre o que \u00e9 poss\u00edvel e imposs\u00edvel, e provavelmente escreveram perguntas frequentes discutindo maneiras alternativas e desafiadoras de jogar o jogo inteiro.
Muitas vezes, por\u00e9m, n\u00e3o haver\u00e1 comunidade. N\u00e3o h\u00e1 perguntas frequentes. Nenhum quadro de mensagens. E talvez nem v\u00eddeos \u00fateis. Nesses casos, voc\u00ea precisar\u00e1 ser uma pessoa de ideias para criar maneiras novas e interessantes de desafiar o jogador. Esteja ciente de que esse tipo de conquista requer muita pr\u00e1tica, tempo e experi\u00eancia para criar.
O jeito aqui \u00e9 ser criativo! E lembre-se de mant\u00ea-lo divertido!
"},{"location":"Achievement-Design-pt_BR/#desafios-de-pontuacao","title":"Desafios de pontua\u00e7\u00e3o","text":"Exemplos de desafios de pontua\u00e7\u00e3o:
As conquistas de desafio s\u00e3o a sua chance de mostrar aos jogadores como jogar seus jogos favoritos de maneiras diferentes, \u00fanicas e at\u00e9 alucinantes. Embora essas conquistas possam dar vida a um conjunto de realiza\u00e7\u00f5es que, de outra forma, \u00e9 mon\u00f3tono, voc\u00ea geralmente quer que apenas um pequeno grupo delas esteja na sua lista final.
Pr\u00f3s
Contras
texto em ingl\u00eas
texto em ingl\u00eas
texto em ingl\u00eas
Last 10 changes on this page:
[2018-05-25 12:10] meleu:
Updated Achievement Design pt_BR (markdown)[2018-04-01 00:18] KingDice001:
Updated Achievement Design pt_BR (markdown)[2018-03-31 15:03] meleu:
Updated Achievement Design pt_BR (markdown)[2018-03-30 22:15] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 22:08] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 21:25] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 21:16] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 20:59] 7Mogami7:
Updated Achievement Design pt_BR (markdown)[2018-03-30 18:50] KingDice001:
Updated Achievement Design pt_BR (markdown)[2018-03-30 18:47] KingDice001:
Updated Achievement Design pt_BR (markdown)This is a guide on how to think about and design good achievements. Not the technical side, but the conceptual.
"},{"location":"Achievement-Design/#progression-based-achievements","title":"Progression Based Achievements","text":"There are 3 types of progression-based achievements: simple progression, story-based progression, and progression/collection achievements.
"},{"location":"Achievement-Design/#simple-progression","title":"Simple Progression","text":"Progression-based achievements are usually simplest ones, especially if the game you are doing is nothing but linear stages. Or doesn't have much going on in the way of storylines. In this case, let's look at some GOOD and BAD examples of this:
It takes slightly more work to code an achievement where the player is required to clear the stage rather than simply reach the next one. But it is also much more satisfying for the player, and it is much more professional-looking. It is also less susceptible to problems with players loading save games or save states for freebie achievements en masse.
While it is true progression-based achievements are often freebies, it is generally agreed upon here that an achievement to start the game is a bit too easy, and not at all memorable for the player. It's just a formality. The ending of the game, however, is often the most memorable part of a game for a player, and completing a game is definitely an achievement in itself. It's a good practice to make such achievement work like \"Beat last stage and beat the game\".
One of the worst things you can do is create achievement spam. Puzzle games are notorious for these kinds of problems, because the stages are short and often, there are one-hundred of them or more. As a result, the main page feed ends up with a lot of micro-updates, which spams other folks' achievements down and off the front page quickly. The way to come off as more professional in this matter is to space out the achievements a bit more, into groups of stages. For instance, if stages 1-10 are all fire themed, and stages 11-20 are all outer-space themed, you can create achievements around these themes. Be creative.
"},{"location":"Achievement-Design/#story-based-progression","title":"Story Based Progression:","text":"The most memorable moments in gaming history are often not related to item collection or sidequests, but to specific scenes relating to the story.
Examples:
The thing you have to be extra-careful with here is spoilers. If you catch a progression-based achievement that has a spoiler in it, by all means contact the dev about it. And devs, please be receptive when it comes to constructive criticism! Also, the number and even percentage of these will vary from game to game--The dependence lies heavily upon how story-driven the game is.
"},{"location":"Achievement-Design/#progressioncollection","title":"Progression/Collection","text":"Progression/Collection is a common hybrid. Not only are you collecting an item, but it also launches into a memorable (and mandatory) scene.
Examples:
Achievements in this hybrid category are often more satisfying because they are pulling double-duty. The player is not only obtaining an item, but watching a memorable scene and nabbing an achievement all at once. Quite the rush of endorphins!
"},{"location":"Achievement-Design/#progression-pros-and-cons","title":"Progression Pros and Cons","text":"Progression Achievements are guaranteed to the player on a normal play-through. So why even have them?
"},{"location":"Achievement-Design/#pros","title":"Pros","text":"Vintage games, on their own, offer little-to-no incentive to beat a bonus mode, other than that it's something to do on a rainy day after you've beaten the game. Old games didn't have internet connectivity. And they had no social aspects other than 2-player mode, and maybe telling your friends at school that you beat something. But now, with RetroAchievements.org, we can display our vintage trophies (even though it requires us to redo what we've probably already done many years ago). These trophies are badges of honor. You can look at another member's Challenge Achievements and begin to understand how far they went, how skilled they are. Along with that comes respect from the other members. We socialize, we congratulate each other on a job well done. We feel like we belong, and we are in good company.
"},{"location":"Achievement-Design/#sidequests","title":"Sidequests","text":"There are often things the player can do that are confined to the rules of the game, but aren't necessary to complete it. In other words, a challenge built into the game by the original game developers. Usually they are fun, or sometimes not so fun, but deserve an award because they require hard work and persistence to achieve. You have to walk a fine tightrope between if dedicated players are likely to do something, vs. if the goal is stupid. People will have differing views over this, so steel yourself.
Often times, these types of achievements are even Easter Eggs or things the player never knew existed in their entire lives! Many players adore these types of achievements. I think it's because they learn something new about a game they grew up with, or feel like maybe they were the only ones who knew about a given secret and were excited to see it supported here. It's important for us developers to REALLY know a game inside-and-out before creating an achievement set.
Examples of Sidequests:
Sidequests are most often found in RPGs, but especially these days, sidequests are finding their way into just about every genre. Keep your eyes peeled - Even the unsuspecting platformer may have a sidequest or three. The Kirby series, for instance, has many hidden rooms and areas. Often times, sidequests end up awarding an item, which falls under a hybrid: Sidequest/Collection.
"},{"location":"Achievement-Design/#optional-achievements","title":"Optional Achievements","text":"Examples of Optional Achievements:
This is the game makers hoping you'll like their game enough to keep coming back for more, even after those ending credits scroll by. They are trying to reward the player for completing their game, and create some form of satisfying re-playability. If the game makers went to the trouble making things like this an integral part of the game, we as achievement developers should recognize these challenges and create appropriate achievements for at least a few of them.
Chrono Trigger, Chrono Cross, and Star Ocean: The Second Story are famous for this. The Game Boy Advance Castlevania entries also do this. In fact, many games do this. If you aren't sure if your game has any extra modes or challenges, be sure to do some research and check out some FAQs. Or ask the community here, many of us are experts on the games supported here.
"},{"location":"Achievement-Design/#sidequestoptional-pros-and-cons","title":"Sidequest/Optional Pros and Cons","text":"Sidequest/Optional Achievements make fantastic supplements to Progression Achievements.
"},{"location":"Achievement-Design/#pros_1","title":"Pros","text":"Most collection-based achievements are optional, unless the items themselves are MacGuffins, which in that case they would fall squarely under Progression/Collection.
Examples:
If the game keeps track of a stat, the game developer is practically daring you to max it out. Now you might be that kind of player, and you might not. You have to ask yourself, as a dev, whether or not other players are likely to get 9999 vampire bat kills, even if you wouldn't. The advantages to this are that people who wouldn't normally do this always have something to come back and work for when they feel like playing the game again. The disadvantage is that other players who wouldn't normally go that far and never would, but also feel like they have to MASTER every game quickly (a rare breed), will complain. If you get enough complaints, you might want to bring down that 9999 to something more reasonable, like 500. If no one's having fun with an achievement, it's not in the spirit of playing games or making achievements.
You have to use your better judgment here and think of what the player would enjoy the most. As a rule of thumb, it's better to have a few Sidequest/Optional Achievements than none at all. But with a little extra effort, these achievements can make your list very memorable.
Next, it's time to roll up our sleeves as devs and get REALLY creative when the devs themselves challenge the player beyond the rules of the game.
"},{"location":"Achievement-Design/#for-fun-achievements","title":"For-Fun achievements","text":"This kind of achievements usually worths just a few points, but they are still fun
Examples of For Fun:
Sometimes, game makers add fun easter eggs. They went the extra mile to entertain the player with 'what if's'. Again, it is our job as devs to recognize and support these as much as we can.
"},{"location":"Achievement-Design/#challenges","title":"Challenges","text":"One thing that you have to remember about retro gamers - and the games they play - is that most of us have played these games a million times before. This is the same old song and dance for most of us, and we often need motivation to do it again. Some of us can clear Contra without losing a single life. Well, now is our chance to prove it!
I mean, think about it: Before this website, about the only way to prove you can do a flawless run of Contra was to invite a friend over, sit him down, and show him, or figure out recording software and make a YouTube video. But even then, a lot of those videos are doctored to look like flawless playthroughs. This site, however, has Hardcore mode, which help to indicate no one is cheating.
You may have Progression Achievements and Sidequest/Optional Achievements, but if you want to create an achievement list that's truly great, you need at least a few Challenge Achievements. Try to think back to all the games you've played here at this website. What are some of the most memorable achievements? I can almost guarantee you that they were Challenge Achievements. There are exceptions to the rule, of course, but the typical player isn't going to fondly recall, 'Cleared Stage 2-6', or 'Reached Level 30'. They are more likely to fondly remember achievements that made their play-throughs a unique experience, such as...
That is what makes this website so special, and what makes achievements something more than just beating a game.
Even the most vocal critics who hate the idea of Achievements may say, \"Well, except for THIS one. This one was okay.\" And I guarantee you that ONE example they're talking about is a Challenge Achievement, something that challenged the player beyond the game itself.
A good achievement developer will keep their eyes peeled, their wits about them, and their senses sharp when developing a game, looking for good, unusual challenges. They may notice something in the game that's a difficult feat.
"},{"location":"Achievement-Design/#speedrun-challenges","title":"Speedrun Challenges","text":"Timers introduce an added pressure players may have never felt before while playing their favorite games. Few things get the heart pumping more than an imposing ticking clock. Add a timer element, and a game that was previously so easy they could beat it blindfolded could suddenly be transformed into the ultimate gaming challenge of their lives.
Examples of Speedrun Challenges:
A dev may want to head out to YouTube or Twitch and see how fast people are finishing a game (And please ignore TAS - \"Tool Assisted Speedruns\"). Some pro speed-runners are so fast, the typical player here won't stand a chance at the times being posted, but you should be able to find a happy medium. And if you can't figure out a good time to challenge the players here, that's what Leaderboards are for - Turn it into a competition! In fact, some of your favorite celebrity speed-runners may come to this very site and submit a time or two.
You'll know when you're facing a pressure achievement when your palms are sweating and you find yourself nervously glancing at the timer. Like I said before, nothing screams, \"Wake up!\" louder than a timer, especially when developers start weaving this kind of achievement with OTHER kinds of achievements (and even leaderboards) during a timed portion of a game. Timer Challenges have an insane amount of synergy with other types of achievements.
"},{"location":"Achievement-Design/#limitation-challenges","title":"Limitation Challenges","text":"Examples of Limitation Challenges:
Community websites built around certain games are a fantastic resource for these kinds of achievements They'll have a good idea about what's possible and impossible, and have likely written up FAQs discussing alternative and challenging ways to play the entire game.
Often times, though, there will be no community. No FAQs. No Message Board. And maybe even no useful videos. In these cases, you'll need to be an idea person to come up with new and interesting ways to challenge the player. Be aware that these kinds of achievements take a lot of practice, time, and experience to create.
The takeaway here is to BE CREATIVE! And remember to keep it FUN!
"},{"location":"Achievement-Design/#score-challenges","title":"Score Challenges","text":"Examples of Score Challenges:
Challenge Achievements are your chance to show players how to play their favorite games in different, unique, and even mind-bending ways. While these achievements can breathe life into an otherwise dull achievement set, you generally only want a small handful of these to be in your final list.
"},{"location":"Achievement-Design/#pros_2","title":"Pros","text":"Last 10 changes on this page:
[2023-06-02 19:40] televandalist:
Updated Achievement Design (markdown)[2018-05-08 16:36] meleu:
fixed some lists formatation[2018-02-01 17:29] meleu:
Updated Achievement Design (markdown)[2018-01-30 23:04] meleu:
Updated Achievement Design (markdown)[2018-01-28 18:50] meleu:
removed \"unique achievements\" section - it's the same thing as for-fun achievements[2018-01-28 14:57] meleu:
added one more link to an external resource and put them at the end of the doc[2018-01-28 11:42] meleu:
changed link to jeff sullivan article (better formatation)[2018-01-27 18:25] meleu:
Updated Achievement Design (markdown)[2018-01-27 13:22] Kvon:
added two links to guilds[2018-01-27 13:12] meleu:
summing up the cirellio's postsPage is heavily WIP, but the goal is to dive deep into achievement creation. Will probably end up merging the \"Real Examples\" into this section somehow. Each flag, type, size, comparison, etc. will have its own page to show the various ways they can be used. Will also include several tips, case studies, etc.
"},{"location":"Achievement-Development-Overview/#basics","title":"Basics","text":"- Adding Games to the Database - Everything you ever wanted to know (but were too scared to ask) about hashes - Patch Guide - RAM digging - Utilizing Game Genie, Game Shark, Codebreaker, Action Replay, etc. codes - Code Notes - Formatting conventions
"},{"location":"Achievement-Development-Overview/#achievement-editor","title":"Achievement Editor","text":"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:
"},{"location":"Achievement-Development-Overview/#flags","title":"Flags","text":"PauseIf
Flag - PauseIf
with hit countsResetIf
Flag - ResetIf
with hit countsResetNextIf
FlagAddSource
FlagSubSource
Flag - Checking for a negative resultAddHits
and SubHits
FlagAddAddress
FlagAndNext
and OrNext
FlagsMeasured
and MeasuredIf
FlagsTrigger
Flag- Mem - Value - Delta - Mem > Delta
Comparisons - Prior - BCD - Float
- bit0 - bit7 - 8-Bit - 16-Bit - 24-Bit - 32-Bit - Lower4 and Upper4 - 16-Bit BE - 24-Bit BE - 32-Bit BE - BitCount - Float - MBF32
"},{"location":"Achievement-Development-Overview/#general-comparisons","title":"General Comparisons","text":"- =
- <
- <=
- >
- >=
- !=
- *
- /
- &
- Hit Counts - Using with Reset If - Using with Pause If - Alt Groups
"},{"location":"Achievement-Development-Overview/#protections","title":"Protections","text":"- Demo Protection - Finding and testing demo addresses - Save Protection - Delta and Prior - Using in-game timers - Using event flags - Password Protection - Cheat Protection - Multiplayer Protection - Other - Dipswitch - BIOS (PlayStation and Saturn)
"},{"location":"Achievement-Development-Overview/#logic-tips-and-tricks","title":"Logic Tips and Tricks","text":"- Checkpoints hits - Pause Locks - Using Hit Counts as a timer - Using Delta Values and Hit Counts to Detect an Increment - Circumvent the Problem of a Counter Incrementing Twice in the Same Frame - note: need to add something about how the toolkit still uses hex even if the value is in BCD
- Various types of chains - When to use Reset If or Pause If - When to use Delta or Prior - Using BitCount for collectables - Using Add Source with Mem / Mem
comparisons - Creating a Timer with Reset If hits based on the speed of the game - Using bit0
to include or exclude odd-numbered values
- Double-Clicking bitflags while in 8-bit view - Right-Clicking addresses in the editor to jump to them in the Memory Inspector (also works with offsets to jump to the current address) - Highlighting conditions and holding CTRL while clicking to change a field in multiple conditions at once
"},{"location":"Achievement-Development-Overview/#workflow-tips","title":"Workflow Tips","text":"- Using Google Sheets and Notepad++ - Editing local file
"},{"location":"Achievement-Development-Overview/#things-to-avoid-and-why","title":"Things to Avoid and Why","text":"- Redundant Reset Ifs - Single-Condition achievements - Text-Based addresses
"},{"location":"Achievement-Development-Overview/#see-also","title":"See Also","text":"- Point Distribution - Badge Creation - Rich Presence - Leaderboards - RATools - Making Tutorial Videos - Syntax Table
"},{"location":"Achievement-Development-Overview/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-02 20:08] televandalist:
Updated Achievement Development Tutorials (markdown)Estas son algunas severas herramientas y opciones disponibles para el desarrollador. Saber como utilizarlas apropiadamente mejorara la calidad en tus sets. Estas herramientas/opciones pueden ser utilizadas en el Editor de Logros (Achievement Editor):
Para mas ayuda relacionada con esto, nuestro servidor de Discord esta siempre abierto para ayuda.
Aqui hay una lista de funciones disponibles:
ResetIf
- ResetIf
con hit counts (contador de golpes)PauseIf
- PauseIf
con hit counts (contador de golpes)AddSource
SubSource
- Buscando un resultado negativoAddHits
Last 10 changes on this page:
[2019-04-16 15:30] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Achievement Logic Features ES (markdown)Link para o texto em ingl\u00eas: Achievement Logic Features
Existem v\u00e1rias ferramentas e op\u00e7\u00f5es dispon\u00edveis para o desenvolvedor, saber como utiliz\u00e1-las adequadamente melhorar\u00e1 a qualidade de seus sets. Essas ferramentas/op\u00e7\u00f5es podem ser usadas no Achievement Editor:
Para ajuda sobre esses, o nosso servidor do Discord estar\u00e1 sempre aberto para ajudar.
"},{"location":"Achievement-Logic-Features-pt_BR/#valores-delta","title":"Valores Delta","text":"Um valor Delta
\u00e9 o valor do frame anterior.
Exemplos de como ele pode ser usado:
level > delta level
. Significa que \"o n\u00edvel atual \u00e9 maior que o n\u00edvel do frame anterior\".health < delta health
. Significa que \"a sa\u00fade atual \u00e9 menor do que a sa\u00fade do frame anterior\". Ou voc\u00ea pode apenas tornar o valor do frame anterior um requisito. delta health = 1
significa que \"o valor do frame anterior para a sa\u00fade deve ser 1\". Voc\u00ea pode ver como isso funciona no Exemplos ReaisNo Achievement Editor, o campo do lado direito \u00e9 Hit Count.
Zero \u00e9 o valor padr\u00e3o. Isso significa que a condi\u00e7\u00e3o deve ser verdadeira quando a conquista aparecer.
Se voc\u00ea definir manualmente uma contagem (hit), por exemplo 1, significa que a condi\u00e7\u00e3o deve ser verdadeira por pelo menos 1 frame e, uma vez que a contagem de hits seja atendida, ela n\u00e3o precisa ser atendida novamente em outro momento.
ATEN\u00c7\u00c3O: se uma condi\u00e7\u00e3o tiver uma contagem de hits e atingir o n\u00famero necess\u00e1rio, esta condi\u00e7\u00e3o n\u00e3o \u00e9 mais testada. Ela \u00e9 verdadeira e permanece verdadeira, A MENOS que voc\u00ea tenha um Reset If
, o qual discutiremos abaixo.
Voc\u00ea pode ver como isso funciona no Exemplos Reais
"},{"location":"Achievement-Logic-Features-pt_BR/#special-flags","title":"Special Flags","text":"No Achievement Editor, \u00e9 o campo intitulado como Special?.
Essas flags condicionais s\u00f3 funcionam se voc\u00ea definir uma contagem de hits para uma condi\u00e7\u00e3o.
"},{"location":"Achievement-Logic-Features-pt_BR/#pauseif","title":"PauseIf
","text":"Isso pausar\u00e1 a atividade para todas as condi\u00e7\u00f5es no mesmo grupo.
Nota: tenha em mente que isso n\u00e3o ir\u00e1 pausar as condi\u00e7\u00f5es em outros grupos.
O PauseIf
\u00e9 usado para pausar a contagem de hits em uma situa\u00e7\u00e3o espec\u00edfica (como pausar o jogo). \u00c9 usado quando voc\u00ea deseja manter a contagem de hits previamente conquistada, mas n\u00e3o deseja reinici\u00e1-la quando algu\u00e9m simplesmente faz uma pausa no jogo, por exemplo.
ResetIf
","text":"Isso ir\u00e1 zerar a contagem de hits para todas condi\u00e7\u00f5es em que voc\u00ea definiu uma contagem de hits. Ele \u00e9 muito mais comum de usar do que PauseIf
Nota: Ao contr\u00e1rio do PauseIf
, le ir\u00e1 zerar as condi\u00e7\u00f5es em todos os grupos
Voc\u00ea pode ver como isso funciona no Real Examples
"},{"location":"Achievement-Logic-Features-pt_BR/#add-source","title":"Add Source
","text":"Quando uma condi\u00e7\u00e3o tem a flag Add Source
o valor daquele endere\u00e7o de mem\u00f3ria \u00e9 adicionado ao valor do endere\u00e7o na condi\u00e7\u00e3o logo abaixo, e a compara\u00e7\u00e3o \u00e9 feita na condi\u00e7\u00e3o abaixo daquela com o Add Source
. Isso pode soar um pouco confuso, mas o exemplo a seguir vai esclarecer como funciona:
Neste exemplo o valor em 0x8010
ser\u00e1 adicionado ao valor em 0x8020
e a compara\u00e7\u00e3o \u00e9 se esta soma \u00e9 maior ou igual a zero.
Se o valor em 0x8010
\u00e9 1
e o valor em 0x8020
\u00e9 2
, a compara\u00e7\u00e3o ser\u00e1 1 + 2 > 0
, ou 3 > 0
.
Nota: todos os campos de compara\u00e7\u00e3o na condi\u00e7\u00e3o com a flag Add Source
s\u00e3o ignorados.
Tentando resumir esta explica\u00e7\u00e3o com uma imagem:
Nota: voc\u00ea pode usar Add Source
para somar mais endere\u00e7os, como no exempo abaixo:
Sub Source
","text":"Funciona muito semelhante ao Add Source
, por\u00e9m o Sub Source
faz o valor naquele endere\u00e7o de mem\u00f3ria ser negativo.
Nota 1: Sub Source
N\u00c3O \u00e9 um flag de subtra\u00e7\u00e3o. Ele apenas torna o valor negativo.
Nota 2: A linha final (sem Add Source
ou Sub Source
) ainda \u00e9 adicionada para a compara\u00e7\u00e3o final.
Usando aquele exemplo de uso de Add Source
example, se n\u00f3s o substitu\u00edssemos por Sub Source
e com os mesmos valores (valor(0x8010) = 1
e valor(0x8020) = 2
), a compara\u00e7\u00e3o seria -1 + 2 > 0
, or 1 > 0
.
Add Hits
","text":"Tamb\u00e9m funciona de maneira de similar ao Add Source
, por\u00e9m relacionado aos hitcounts.
O Add Hits
adiciona o hitcount da condi\u00e7\u00e3o atual \u00e0 pr\u00f3xima condi\u00e7\u00e3o. O hitcount total a ser checado ser\u00e1 aquele definido na condi\u00e7\u00e3o logo ap\u00f3s a \u00faltima condi\u00e7\u00e3o com Add Hits
. Se a condi\u00e7\u00e3o logo ap\u00f3s o \u00faltimo Add Hits
n\u00e3o tiver um hitcount definido, todas as condi\u00e7\u00f5es com Add Hits
ser\u00e3o ignoradas.
Diferentemente do Add Source
, todos os campos s\u00e3o usados numa condi\u00e7\u00e3o Add Hits
, inclusive os campos de compara\u00e7\u00e3o. Se uma condi\u00e7\u00e3o \u00e9 verdadeira, o hitcount para esta condi\u00e7\u00e3o \u00e9 incrementada (e parar\u00e1 de incrementar se assim que o n\u00famero de hitcount definido for atingido).
As condi\u00e7\u00f5es com Add Hits
n\u00e3o precisam ser verdadeiras para a conquista disparar. Por\u00e9m primeira condi\u00e7\u00e3o ap\u00f3s o \u00faltimo Add Hits
, sim, precisa ser verdadeira.
Os achievements podem ter grupos adicionados a eles que podem atuar como requisitos alternativos para desbloquear um achievement. Estes s\u00e3o chamados de Alt Groups.
Uma coisa extremamente importante a notar: para uma conquista desbloquear, deve ter o Core group E pelo menos um Alt group ser verdadeiro. Se n\u00e3o houver nenhum grupo Alt presente, apenas as condi\u00e7\u00f5es do Core group's precisam ser verdadeiras.
Dica: devido ao grupo Core sempre precisar ser verdadeiro, normalmente voc\u00ea colocaria l\u00e1 condi\u00e7\u00f5es que sejam \u00e0 todos os requisitos alternativos. No entanto, um truque que voc\u00ea pode usar para basicamente para ignorar a necessidade de um grupo Core \u00e9 dar-lhe uma condi\u00e7\u00e3o que \u00e9 sempre verdadeira, como:
Mem 0x0001 = Mem 0x0001
Como o grupo Core agora \u00e9 sempre verdadeiro, agora voc\u00ea pode se concentrar em diferenciar os grupos Alt.
"},{"location":"Achievement-Logic-Features-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-07-14 13:33] meleu:
melhorando explica\u00e7\u00f5es sobre AddSource/SubSource e afins[2018-07-14 13:17] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-28 19:57] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-28 19:56] meleu:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-25 11:46] KingDice001:
Updated Achievement Logic Features pt_BR (markdown)[2018-03-23 01:17] meleu:
Updated Achievement Logic Features.pt_BR (markdown)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:
For more help regarding these, our Discord server is always open for assistance.
Here is the list of features available:
ResetIf
Flag - ResetIf
with hit countsPauseIf
Flag - PauseIf
with hit countsAddSource
FlagSubSource
Flag - Checking for a negative resultAddHits
and SubHits
FlagThere is no set point cap. When scoring achievements match your scores to one of these 5 tiers.
Point Tiers Difficulty Significance (Level of Importance) 0-5 Easy Minor- Collecting a power-up- Beating a stage 10 Medium Intermediate- Beating a boss 25 Hard Major - Beating the Game 50 Very Hard Completion Level 100 \"Impossible\" Typically for Bonus SetsThere are other factors you should consider as well, such as achievement spread and game length.
Scoring from set to set will never perfectly match up, but this scoring system allows the points earned to more closely match skill and effort.
"},{"location":"Achievement-Scoring/#factors-to-consider-while-scoring-achievements","title":"Factors to Consider While Scoring Achievements","text":""},{"location":"Achievement-Scoring/#difficulty","title":"Difficulty","text":"Consider for the whole set:
Imagine you had two versions of the same set, with the same difficulty:
Up until June 2019, RetroAchievements had a 400-point cap per set, with no restrictions on individual achievements. The set cap was removed to put less focus on set totals and more on the achievements themselves. This initiative was also meant to eliminate the misconception that a set worth 400 points is a \"complete\" set.
As with revisions and aesthetic changes, a rescore typically requires community approval. You can find more information on rescores here.
"},{"location":"Achievement-Scoring/#exceptions","title":"Exceptions","text":"Some games may come up as exceptions to the normal scoring tiers and will be listed here.
Last 10 changes on this page:
[2023-12-29 22:14] Andrew Comer:
Bullet formatting fixes.[2023-06-02 19:21] televandalist:
Changed the point tiers to a table format. Got rid of the \"Significance\" section and put the info into the table.[2022-05-07 14:33] Searo:
Update Achievement Scoring with section noting exceptions such as picross and sudoku[2021-08-20 06:44] meleu:
fix markdown format (lists)[2020-03-23 06:37] televandalist:
Removed most info regarding rescores and redirected to the revision page.[2019-08-08 03:19] Kvon:
Achievement Scoring: typo[2019-08-08 03:18] Kvon:
Achievement Scoring: Added details for phase four of rescoring[2019-07-11 08:44] Kvon:
create page[m]
in the end of achievement's title was the standard format to mark missables. Do Not mark missable achievements in this way. Use the achievement-type system instead.Last 10 changes on this page:
[2024-05-04 13:57] Andrew Comer:
Fix bullet formatting.[2024-02-06 08:48] The Mystical One:
Updated Achievement Set Requirements (markdown)[2024-02-06 08:47] The Mystical One:
Updated to clarify that [m] should no longer be used to mark missables.[2023-11-03 08:11] The Mystical One:
Adds requirement to mark progression and win conditions[2023-06-05 20:54] televandalist:
Added the note about compilation games[2023-06-03 02:16] televandalist:
Updated Achievement Set Requirements (markdown)[2023-06-02 20:27] televandalist:
Updated WIP Achievement Set Requirements (markdown)Revisiones, osea trabajar en un set el cual ya cuenta con logros existentes tipicamente requiere aprovacion por la comunidad, presentando tu plan en el foro y en el canal de #revision-voting channel en Discord. No todos los cambios requieren aprovacion.
"},{"location":"Achievement-Set-Revisions-es/#preparando-tu-plan","title":"Preparando tu plan","text":"Cualquier desarrollador que quiera revisar un set necesita:
Preparar un plan para cada uno de los siguientes puntos (cuando tu no eres el autor original) - Adicci\u00f3n - Eliminaci\u00f3n - Retrabajo de Logros - Posibilidad de cambiar las tablas de clasificaci\u00f3n - Actualizaci\u00f3n de rich presence
Resuelve los tickets abiertos de todos los logros que quedan en el set.
Presenta tu plan - Tu plan completo en el foro del juego - En #revision-voting publica un link al post del foro
Cualquiera en la comunidad puede expresar sus preocupaciones u objeciones. Permitiendo tiempo para discutirlo y para el desarrollador ajustar su plan si es que as\u00ed lo decide. Si cualquier queja u objeciones son expresadas, de acuerdo al desarrollador ajustando el plan, una votaci\u00f3n se tiene que llevar acabo.
Una vez que la discusi\u00f3n se all\u00e1 terminado, la votaci\u00f3n tiene que ser publicada por un desarrollador en el canal de #revision-voting .
La votaci\u00f3n es aprobada/rechazada despu\u00e9s de 72 horas. Si pasa/falla por la mayor\u00eda de la gente.
"},{"location":"Achievement-Set-Revisions-es/#cuando-haces-una-revision","title":"Cuando haces una revisi\u00f3n","text":"Esto previene que los jugadores necesiten innecesariamente volver a conseguir los logros, restringe cambios que no son necesarios a sets, y preserva una buena calidad de desarrollador en tu trabajo y en tus conceptos.
"},{"location":"Achievement-Set-Revisions-es/#despues-de-la-aprobacion","title":"Despu\u00e9s de la Aprobaci\u00f3n","text":"Si producir la revisi\u00f3n esta tomando tiempo mucho mas largo, cada dos meses (+/- 2 semanas) haz un nuevo post en la pagina del juego explicando el progreso actual de la revisi\u00f3n. No hacer esto invalida tu revisi\u00f3n; el plan de revisi\u00f3n necesitar\u00eda volver a tener una nueva aprobaci\u00f3n.
"},{"location":"Achievement-Set-Revisions-es/#no-se-necesita-aprobacion","title":"No se necesita aprobaci\u00f3n","text":"De acuerdo a la importancia en los iconos de juegos hacer cambios a estos son tomados por votaci\u00f3n de la comunidad. Mira Game Icon Gauntlet.
"},{"location":"Achievement-Set-Revisions-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-12 14:28] eldexterr:
Created Achievement Set Revisions es (markdown)Any changes to a set with existing achievements is considered a revision. They typically happens after someone present a plan in the game's forum topic and in the #revision-voting
channel on Discord and the plan is approved by the achievement creators community.
There are three types of revisions:
Each are assigned their own Discord role:
Type Role Getting the role Who can get the role Standard Revisions@revision-voting
React with \ud83d\uddf3\ufe0f here achievement creators Rescores @rescore
React with \ud83d\udcaf here achievement creators Icon Gauntlet @icon-gauntlet
React with \ud83c\udfa8 here any verified discord user"},{"location":"Achievement-Set-Revisions/#standard-revisions","title":"Standard Revisions","text":"Any developer wanting to revise a set need to:
Prepare a plan for each (where you're not the original author) - Addition - Demotion - Achievement rework
Contact each active author of the set. They may have valuable insight or resources that you can utilize to help your revision. Wait for a response (after 72 hours have passed, you may proceed without a response). - Some authors opt out of requiring contact. Check the Public Opt-Out Sheet. If the author is listed as opting out of this revision type, they do not need to be contacted. To update your own Opt-Out information, use this form.
Post the plan in the game's forum topic. NOTE: Be as specific as possible, but if you have only a vague plan, provide a general idea of what you want to do and don't go too far from that idea.
Start a vote by posting a link to that topic in #revision-voting
. If you're not on Discord, another developer can do it for you. Whomever creates the vote must ping @revision-voting
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.
Address concerns: Once a revision vote is posted, the developer can address any comments, concerns, and objections the community may have to the plan.
The vote is approved/rejected after 24 hours and is pass/fail by simple majority.
Note: Anonymous revision proposals - If desired, a developer can choose to propose a revision plan while remaining anonymous throughout the voting process. Simply contact a mod or admin to request that the plan be presented on your behalf.
"},{"location":"Achievement-Set-Revisions/#when-making-a-revision","title":"When Making a Revision","text":"In the event that a revision includes merging two sets together (e.g. the Pokemon Red/Blue merge), the developer who does the revision needs to keep track of achievements in the demoted set and their equivalent achievements in the set it is being merged with. If the revision vote passes, this information must be sent to an admin so the achievements from the merged set can be manually awarded to the earners of the demoted set.
"},{"location":"Achievement-Set-Revisions/#respecting-revision-plans","title":"Respecting Revision Plans","text":"If you are one of or the original set developer(s) for a set that is currently undergoing a revision, you must communicate with the developer carrying out the revision before making changes to the set. This is to prevent potential extra work for the revision, overlapping or redundant changes, etc.
"},{"location":"Achievement-Set-Revisions/#rescores","title":"Rescores","text":"Up until June 2019, RetroAchievements sets had a cap of 400 points, with no restrictions on individual achievements. The set cap was removed to focus less on overall set totals and more on the achievements themselves. This initiative was also meant to eliminate the misconception that a set worth 400 points is a \"complete\" set, but is also an ongoing community effort to promote fairness across the board. Information on the scoring process can be found here.
Anyone wanting to rescore a set needs to:
Prepare a rescore plan that shows the original scores and the proposed scores. A quick and easy way to do this is by utilizing this sheet; you can enter the Game ID in F2 to bring up a full list of that game's achievements and scores.
Contact each active author of the set. They may have valuable insight into the chosen scores. You do not need to wait for a response.
Post the plan in the game's forum topic.
Start a vote by posting a link to the topic in the #revision-voting
channel on Discord. Whomever creates the vote must ping @rescore-voting
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.
Address concerns: Prepare to do some negotiating with other users and try to find a good middle-ground.
Voting will be active for 24 hours. If a rescore passes, you can make the necessary changes.
Some achievement sets can be rescored without going through the voting process:
The Icon Gauntlet is used to vote for new game icons or new badges for a set. With the vote it is checked which version is preferred by the community.
Any user wanting to change the game icon or badges of a set need to:
Create the game icon or new badges. For more info, see Badge and Icon Creation.
Upload the work on an image sharing site.
Consider sharing samples of your badges or icons in #gauntlet-discussion
prior to starting the revision vote. This will help polish any issues and avoid multiple updates to the gauntlet.
Start a vote by posting links to the old icon/badges and their contenders in the #icon-gauntlet
channel on Discord.
@icon-gauntlet
. Ping active authors that did not respond to contact. Ping active authors that requested a ping at vote start after the contact.?quickpoll (game/hub page link) | Current (current icon/badges link) | Contender (contender icon/badges link)
\ud83d\udcca 1 vs. 2 or 3 proposal: ?quickpoll (game/hub page link) | Current (current icon link) | Contender 1 (contender 1 icon link) | Contender 2 (contender 2 icon link) | Contender 3 (contender 3 icon link)
Discord only embeds 4 images at maximum in a single post (current icon vs. 3 contenders), so if there's at least 5 images required (current icon vs. 4+ contenders), you'll have to do a montage with all icons: \ud83d\udcca 1 vs. 4+ proposal: ?quickpoll (game/hub page link) | Current | Contender 1 | Contender 2 | Contender 3 | Contender 4 | Contender 5 | Contender 6 (single image montage link with all icons)
#icon-gauntlet-uploads
Notes:
The game does not have an achievement set, nor is it reserved by a developer.
The entry has no game icon or badges.
The new icon/badge(s) display the same content, but are of better quality.
You are the existing set's sole developer and no other developer has changed the icon/badge(s).
You are one of the existing set's original developers as part of a collaborative set, all parties agree to the change, and no other developer has changed the icon/badge(s).
Revision voting is currently dev-only. While voting is exclusive to Discord, please remember that anyone can express their comments, questions, concerns, criticisms, etc. in the forum thread in which the plan was posted. The issues regarding Discord exclusivity will be addressed in a future version of the website.
Last 10 changes on this page:
[2024-02-02 12:33] The Mystical One:
Reordered the 'reauthor' clause so it's clearer.[2024-01-26 08:41] The Mystical One:
Added additional new revision guidelines to the 'When Making a Revision' section to clarify what is expected from a revision. Updated section on achievement clones to clearly indicate that reauthoring requires Developer Compliance Permission.[2023-12-07 14:05] The Mystical One:
Updated rules for missable types now that there is a missable typing.[2023-11-06 18:20] Andrew Comer:
Formatting updates.[2023-11-03 08:18] The Mystical One:
Added rules for progression and win typing to Standard Revisions[2023-08-15 10:28] The Mystical One:
Reduces requirements for when to ping active authors at vote start.[2023-08-01 13:47] The Mystical One:
Adjusted bullet list formatting.[2023-07-14 10:35] The Mystical One:
Fix a minor capitalization typo. Add the word 'Vote' after 'No Need for Approval' just for extra clarification.[2023-07-13 09:59] The Mystical One:
Added opt-out form and public sheet. Added section about contacting an active author.[2023-07-11 10:46] The Mystical One:
Clarify \"No Need for Approval\" for revisions that are collaborations. Add in revision rule alignment changes (contact, waiting for response, pinging authors). Add bold highlights for the main ideas of each step. Add post-vote process to icon gauntlet.Aqu\u00ed encontraras varios ejemplos de varios logros t\u00edpicos. Puedes utilizarlo como una inspiraci\u00f3n para crear tu propio logro. Pero ten en mente lo siguiente:
CADA JUEGO ES DIFERENTE! La memoria tiene un comportamiento diferente de juego en juego.
A si que NO tomes estas plantillas como una regla. Simplemente son para motivos educativos.
En estos ejemplos utilizamos la siguiente definici\u00f3n, 0xNIVEL es el valor en memoria que representa el ID del Nivel; 0xVIDA es el valor utilizado para la vida de nuestro personaje; 0xTIEMPO para el tiempo, 0xITEM por obtener un item, etc...
"},{"location":"Achievement-Templates-es/#coleccionando-un-item-n-veces","title":"Coleccionando un Item N veces","text":"Abra situaciones en las que quieras otorgar un logro por coleccionar un item (como una moneda o anillo) N numero de veces. Vas a necesitar encontrar el valor en memoria responsable en contar cuantas veces tienes un item. Una vez que tengas la variable, esta l\u00f3gica usualmente hace el trabajo:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCONTADOR > Delta 0xCONTADOR (N)Pero es mas probable que quieras ser mas especifico, por ejemplo \"obt\u00e9n el item N veces sin morir\". Entonces tendr\u00edas que utilizar otra condici\u00f3n con un ResetIf
, de la siguiente manera:
La condici\u00f3n del ResetIf
podr\u00eda ser \"mientras est\u00e9s en el nivel X\", \"sin utilizar una bomba\", etc.
En este ejemplo queremos otorgar el logro cuando el jugador termino el nivel N
y pasa al nivel N+1
.
Requisitos
N
m\u00ednimo una vezN+1
El valor 0xTITULO significa \"en la pantalla de titulo del juego\". Tu necesitas poner un ResetIf
en la pantalla de titulo para evitar que se dispare en el momento equivocado.
Aqui hay un ejemplo de una situacion de un juego en el que podria hacer que el logro se dispare en el momento equivocado si no estuviera el ResetIf:
Si no utilizamos el ResetIf tendr\u00edamos estas condiciones:
Y seria lo suficiente para que el logro se dispare (en un momento equivocado). Por eso estamos utilizando el ResetIf en este ejemplo.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-antes-de-que-el-tiempo-llegue-a-t","title":"Termina el Nivel N antes de que el tiempo llegue a T","text":"En este ejemplo vamos a considerar un juego en el que el tiempo decrementa (ej.: Super Mario Bros). Adapta el logro de acuerdo al comportamiento del tiempo de tu juego.
Queremos premiar el logro si el jugador termina el nivel N
mientras el tiempo es mayor que T
.
Requisitos
Los Requisitos 1-4 son los mismos que la plantilla Termina el Nivel N.
T
.Ten en cuenta que mas all\u00e1 de saber como funciona el contador en tu juego tambi\u00e9n necesitas saber como se maneja en la memoria del juego.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-sin-morir-o-sin-que-te-peguen-usar-un-arma-etc","title":"Termina el Nivel N sin Morir (o sin que te peguen, usar un arma, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xPANTALLA = Value NVL_N_INTRO (1) 6 ResetIf 0xVIDA < Delta 0xVIDARequisitos
Los Requisitos 1-4 son los mismos que los de la plantilla Termina el Nivel N.
El requisito 6 tambi\u00e9n puede ser utilizado para resetear el si se utiliza un arma, se recibe da\u00f1o, o cualquier otra cosa que NO quieras que el jugador haga.
"},{"location":"Achievement-Templates-es/#termina-el-nivel-n-con-un-item","title":"Termina el Nivel N con un Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xITEM = Value VERDADERORequisitos
Los Requisitos 1-4 son los mismos que los de la plantilla Termina el Nivel N.
Esta plantilla es para salvados de bater\u00eda o protecci\u00f3n contra passwords para items. Evita premiar \"obten x item\" cargando cuando el jugador ya cuenta con ese item. Checa que el item se obtenga en nivel/habitacion donde se supone que tenga que ser obtenido, y solo lo premia cuando se hace de esa manera.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSO (1) 2 0xITEM = Value VERDADERO 3 ResetIf 0xNIVEL != Value nivel donde se coleccionaRequisitos
Los Requisitos 1 y 3 juntos significan \"llego al ID de nivel/habitacion sin el item\".
Incluso si el jugador carga un estado de guardado y va al nivel requerido el no seria capaz de a\u00f1adir hits a la condici\u00f3n 1, ya que no se pueden conseguir solamente por gameplay normal.
No necesita ser necesariamente un ID de nivel/habitaci\u00f3n. Hay otros m\u00e9todo para enfrentar este problema, por ejemplo ejemplo un valor en memoria \u00fanico que solo ocurre cuando lo coleccionas. Etc.
"},{"location":"Achievement-Templates-es/#colecciona-100-en-algo","title":"Colecciona 100% en algo","text":"Esta es proteccion limitada de salvado de bateria /proteccion de password cuando el jugador coleccione 100% de algo como pasar cada stage en Super Mario world, u obtener 100% en el porcentaje de coleccionables en Super Metroid. Es necesario que el jugador no pueda simplemente cargar un save con 100% y obtener el logro de a gratis. (Como siempre hay otras maneras de enfrentar este problema tambi\u00e9n.)
ID Special? Type Memory Cmp Type Mem/Val Hits 1 Delta 0xPorcentajeColeccionado < Value valor 100% 2 Mem 0xPorcentajeColeccionado = Value valor 100% 3 PauseIf Mem 0xEstadoJugador != Value Modo especifico/punto donde % es incrementadoUsar la variable y el valor indicado en la condici\u00f3n 3 es especialmente importante. Necesitas encontrar una variable que represente un momento \u00fanico en el juego cuando este porcentaje aumenta. Tu no quieres que el logro salte cuando el jugador cargue su archivo de guardado, que quiere decir que el logro tiene que ser pausado en ese momento.
Ejemplo: En Super Mario World este cambio pasa cuando el jugador observa el mapa del mundo despu\u00e9s de a ver completado un stage.
Nota: Este comportamiento es similar y el resultado a Colecciona un item en un nivel en especifico.
"},{"location":"Achievement-Templates-es/#evitando-el-problema-de-que-un-contador-se-incremente-dos-veces-en-el-mismo-frame","title":"Evitando el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame","text":"En Coleccionando un item N veces estamos contando que tantas veces este contador aumenta. Pero en algunos juegos hay algunas situaciones en el que el contador aumenta al doble en el mismo frame, y el hit counter se incremente solo por uno. Este comportamiento, obviamente, arruina nuestra l\u00f3gica. Vamos a ver una manera para evitar este problema.
La t\u00e9cnica utilizada aqu\u00ed se baza en otras dos:
AddHits
Aqu\u00ed esta el truco:
ID Special? Type Memory Cmp Type Mem/Val Hits 1 SubSource Delta 0xCONTADOR 2 AddHits Mem 0xCONTADOR = Value 0x02 3 Mem 0xCONTADOR > Delta 0xCONTADOR (N) 4 ResetIf Mem 0xVIDAS < Delta 0xVIDASPodr\u00eda verse un poco confuso a primera vista, pero talvez utilizando un ejemplo de verdad pueda ser todo mas claro. Checa Evitar el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame.
"},{"location":"Achievement-Templates-es/#checar-el-cambio-de-un-valor-especifico-a-otro-valor-especifico-diez-veces","title":"Checar el cambio de un valor especifico a otro valor especifico diez veces","text":"En este ejemplo queremos detectar que un valor cambie de V1
a V2
diez veces:
Requisitos
0xADDRESS
en el frame anterior es 0xV1
, aumenta el hitcount (hasta 10).0xADDRESS
es igual a 0xV1
, aumenta el hitcount (hasta 10).0xADDRESS
.Resets Condicionales se pueden utilizar para muchas cosas.
Digamos que quieres tener un reset si el jugador entra a cierta zona X e Y del nivel:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xNIVEL = Value NIVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONE 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONE 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONE 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONEALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2019-05-24 19:57] meleu:
fix broken link[2019-04-16 11:16] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Achievement Templates
"},{"location":"Achievement-Templates-pt_BR/#atencao-todo-jogo-e-diferente","title":"ATEN\u00c7\u00c3O: TODO JOGO \u00c9 DIFERENTE!","text":"Aqui voc\u00ea ir\u00e1 ver exemplos de algumas conquistas tip\u00edcas. Voc\u00ea pode usar elas como inspira\u00e7\u00e3o para criar suas conquistas. Mas mantenha em mente o seguinte:
TODO O JOGO \u00c9 DIFERENTE! A mem\u00f3ria tem uma diferen\u00e7a de comportamento de jogo para jogo.
Ent\u00e3o N\u00c3O fa\u00e7a desses exemplos como regras. Elas est\u00e3o aqui apenas para fins educacionais.
Nesses exemplos n\u00f3s usamos a seguinte conven\u00e7\u00e3o 0xNIVEL \u00e9 o endere\u00e7o de mem\u00f3ria (memory address) com o ID de n\u00edvel; 0xVIDA \u00e9 o endere\u00e7o usado para a vida do personagem; 0xTEMPO para obter um item, etc...
"},{"location":"Achievement-Templates-pt_BR/#termine-nivel-n","title":"Termine N\u00edvel N","text":"Neste exemplo n\u00f3s queremos premiar quando o jogador terminar o n\u00edvel N
e v\u00e1 para o n\u00edvel N+1
Requerimentos
N
pelo menos uma vezN+1
O valor 0xTITULO significa \"na tela de t\u00edtulo do jogo\". Voc\u00ea precisa do ResetIf
indo para a tela de t\u00edtulo para evitar uma premia\u00e7\u00e3o na hora errada
Aqui est\u00e1 um exemplo do fluxo de jogo que poderia fazer a conquista ser ativada em uma hora errada se n\u00e3o fosse pelo ResetIf:
Se n\u00e3o estiver usando o ResetIf, teremos estas condi\u00e7\u00f5es:
E seria o suficiente para ativar a conquista (no momento errado). \u00c9 por isso que nos estamos usando o ResetIf
neste exemplo
Neste exemplo vamos considerar um jogo quando o tempo diminuir (ex: Super Mario Bros). Adaptar-lo de acordo com o tempo no seu jogo tem um comportamento diferente.
N\u00f3s queremos premiar se o jogardor finalizar o n\u00edvel N
enquanto o tempo for maior que T
Requerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
T
.Mantenha em mente que por tr\u00e1s de al\u00e9m saber como o tempo se comporta no jogo, al\u00e9m disso voc\u00ea precisa pesqusar como se comporta na mem\u00f3ria
"},{"location":"Achievement-Templates-pt_BR/#terminar-nivel-n-sem-morrer-ou-ser-atingido-usando-uma-arma-etc","title":"Terminar N\u00edvel N sem Morrer (ou ser atingido, usando uma arma, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITLE 5 0xTELA = Value NVL_CM_INTRO (1) 6 ResetIf 0xVIDA < Delta 0xVIDARequerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
O requerimento 6 pode tamb\u00e9m ser usando para resetar o contador de hits se uma arma for usada, tomado dano, ou qualquer coisa al\u00e9m daquilo que voc\u00ea n\u00e3o quer que o jogador fa\u00e7a
"},{"location":"Achievement-Templates-pt_BR/#termine-o-nivel-n-com-item","title":"Termine o N\u00edvel N com Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xNIVEL = Value N (1) 2 0xNIVEL = Value N+1 3 0xNIVEL > Delta 0xNIVEL 4 ResetIf 0xNIVEL = Value TITULO 5 0xITEM = Value VERDADEIRORequerimentos
Requerimentos 1-4 s\u00e3o os mesmos como o modelo Terminar o N\u00edvel N.
Aqui est\u00e1 uma forma de checar se o item foi coletado em um n\u00edvel/sala que deve ser coletado. Isto evita a premia\u00e7\u00e3o \u00e0 \"consiga item X\" por carregando um savestate onde o jogador j\u00e1 tem o item.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSO (1) 2 0xITEM = Value VERDADEIRO 3 ResetIf 0xNIVEL != Value nivl de coletaRequerimentos
Requerimentos 1 e 3 juntos significa \"chegou ao n\u00edvel/sala sem o item\"
Mesmo se o jogador carregar um savestave e for para o n\u00edvel requerido eles n\u00e3o poder\u00e3o adicionar hits para a condi\u00e7\u00e3o 1, portanto eles n\u00e3o podem conseguir exceto em gameplay normal
N\u00e3o precisa ser necessariamente n\u00edvel/sala. H\u00e1 outras maneiras de abordar esse problema, por exemplo uma \u00fanica Mem\u00f3ria/Valor que apenas ocorre na coletagem. Etc
"},{"location":"Achievement-Templates-pt_BR/#cheque-por-um-valor-especifico-mudando-para-outro-valor-especifico-dez-vezes","title":"Cheque por um valor espec\u00edfico mudando para outro valor espec\u00edfico dez vezes","text":"Neste exemplo n\u00f3s queremos para detectar uma mudan\u00e7a de valor de V1
para V2
dez vezes:
Resets Condicionais podem ser usado para muitas coisas.
Vamos dizer que voc\u00ea quer para resetar se um jogador entrar ema certa zona X e Y de um n\u00edvel:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xNIVEL = Value NIVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONA 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONA 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONA 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONAALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2018-03-25 12:07] KingDice001:
Updated Achievement Templates pt_BR (markdown)[2018-03-25 11:51] KingDice001:
Updated Achievement Templates pt_BR (markdown)[2018-03-24 04:22] KingDice001:
Created Achievement Templates pt_BR (markdown)Here you'll see examples of some typical achievements. You can use them as inspiration to create your own achievement. But keep in mind the following:
EVERY GAME IS DIFFERENT! The memory has a different behavior from game to game.
So do NOT take these templates as a rule. They are here just for educational purposes.
In these examples we use the following convention 0xLEVEL is the memory address with the level ID; 0xLIFE is the address used for the character life; 0xTIME for time, 0xITEM for getting an item, etc...
There are some situations where you want to award an achievement for collecting an item (like a coin or a ring) N times. You'll need to find in the memory the address responsible to count how much of the item you have. Once you have the address, this logic usually does the job:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCOUNT > Delta 0xCOUNT (N)But you most likely will want to be more specific, for example \"get item N times without dying\". Then you should use another condition with a ResetIf
, like this:
The ResetIf
condition could be \"while in level X\", \"without using a bomb\", etc.
In this example we want to award when the player finish the level N
and goes to level N+1
.
Requirements
N
at least one timeN+1
The value 0xTITLE means \"at game's title screen\". You need to ResetIf
going to the title screen to avoid the awarding at a wrong time.
Here is an example of game flow that could make the achievement trigger at a wrong time if it wasn't for that ResetIf:
If not using the ResetIf we will have these conditions:
And it would be enough to trigger the cheevo (at a wrong time). That's why we're using the ResetIf
in this example.
In this example we consider a game where the time decreases (e.g.: Super Mario Bros). Adapt it accordingly the time on your game has a different behavior.
We want to award if the player finishes the level N
while time is greater than T
.
Requirements
Requirements 1-4 are the same as Finish Level N template.
T
.Keep in mind that besides knowing how the time behaves in game you also need to research how it behaves in memory.
"},{"location":"Achievement-Templates/#finish-level-n-without-dying-or-getting-hit-using-a-weapon-etc","title":"Finish Level N without Dying (or getting hit, using a weapon, etc.)","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xLEVEL = Value N (1) 2 0xLEVEL = Value N+1 3 0xLEVEL > Delta 0xLEVEL 4 ResetIf 0xLEVEL = Value TITLE 5 0xSCREEN = Value LVL_N_INTRO (1) 6 ResetIf 0xLIFE < Delta 0xLIFERequirements
Requirements 1-4 are the same as Finish Level N template.
The requirement 6 can also be used to reset hit count if a weapon was used, damage taken, or anything else that you want the player to NOT do.
"},{"location":"Achievement-Templates/#finish-level-n-with-item","title":"Finish Level N with Item","text":"ID Special? Memory Cmp Type Mem/Val Hits 1 0xLEVEL = Value N (1) 2 0xLEVEL = Value N+1 3 0xLEVEL > Delta 0xLEVEL 4 ResetIf 0xLEVEL = Value TITLE 5 0xITEM = Value TRUERequirements
Requirements 1-4 are the same as Finish Level N template.
This template is for battery save or password protection for items. It avoids awarding \"get item X\" by loading to where player already has the item. It checks that an item is collected in the level/room ID it is supposed to be collected, and only allows it be earned at that time.
ID Special? Memory Cmp Type Mem/Val Hits 1 0xITEM = Value FALSE (1) 2 0xITEM = Value TRUE 3 ResetIf 0xLEVEL != Value collect levelRequirements
Requirements 1 and 3 together mean \"arrived the level/Room ID without the item\".
Even if the player loads a savestate and goes to the required level they will not be able to add hits to condition 1, thus they can't get it except in normal gameplay.
It does not necessarily have to be level/Room ID. There are other ways to approach this problem, for example a unique Mem/Val that only occurs on collection. Etc.
"},{"location":"Achievement-Templates/#collected-100-percent-of-something","title":"Collected 100 Percent of Something","text":"This is limited battery save /password protection for when a player will collect 100% of something like clearing each stage in Super Mario world, or getting a 100% collection rate in Super Metroid. It's necessary so that a player cannot just load a save at 100% and get the achievement for free. (As usual there are other ways to approach this problem too.)
ID Special? Type Memory Cmp Type Mem/Val Hits 1 Delta 0xCollectPercent < Value 100% value 2 Mem 0xCollectPercent = Value 100% value 3 PauseIf Mem 0xPlayerState != Value Specific mode/point in game where % is increasedUsing the correct address value for condition 3 is especially important. You need to find an address that represents a unique time in the game where this percent increases. You'd not want the achievement to trigger when the player is loading their in game save file, which means this achievement must be paused at that time.
Example: In Super Mario World this change happens while the player sees the world map after completing a stage.
Note: This is similar in behavior and result to Collect an Item in a specific Level.
"},{"location":"Achievement-Templates/#circumvent-the-problem-of-a-counter-incrementing-twice-in-the-same-frame","title":"Circumvent the Problem of a Counter Incrementing Twice in the Same Frame","text":"In the Collecting an Item N times we are counting how many times the counter goes up. But in some games there are situations where the counter goes up twice in the same frame, and the hit counter is incremented only by one. This behavior, obviously, ruins our logic. We're going to see a way to circumvent this issue.
The technique used here relies on two other ones:
SubSource
to count specific incrementsAddHits
FlagHere's the trick:
ID Special? Type Memory Cmp Type Mem/Val Hits 1 SubSource Delta 0xCOUNT 2 AddHits Mem 0xCOUNT = Value 0x02 3 Mem 0xCOUNT > Delta 0xCOUNT (N) 4 ResetIf Mem 0xLIVES < Delta 0xLIVESIt can looks a bit confusing at a first sight, but maybe using a real example it can be more clear. Check the Circumvent the Problem of a Counter Incrementing Twice in the Same Frame.
"},{"location":"Achievement-Templates/#check-for-a-specific-value-changing-to-another-specific-value-ten-times","title":"Check for a Specific Value Changing to Another Specific Value Ten Times","text":"In this example we want to detect a value changing from V1
to V2
ten times:
Requirements
0xADDRESS
in the previous frame is 0xV1
0xADDRESS
is 0xV2
, increases the hitcount (up to 10).Conditional resets can be used for many things.
Lets say you want to have a reset if a player enters a certain X and Y zone of a level:
CORE
ALT1
ID Special? Type Memory Cmp Type Mem/Val 1 ResetIf Mem 0xLEVEL = Value LEVELID 2 PauseIf Mem 0xX-COORDS > Value RESET-X-ZONE 3 PauseIf Mem 0xX-COORDS < Value RESET-X-ZONE 4 PauseIf Mem 0xY-COORDS > Value RESET-Y-ZONE 5 PauseIf Mem 0xY-COORDS < Value RESET-Y-ZONEALT2
ID Special? Type Memory Cmp Type Mem/Val 1 Mem 0x1 = Mem 0x1Last 10 changes on this page:
[2023-06-06 11:17] televandalist:
Added ToC[2021-05-01 07:24] meleu:
fix link to AddHits page[2020-09-01 09:50] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:31] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:28] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 09:23] Brandon D:
Updated as per feedback from Keltron[2020-09-01 09:04] Brandon D:
Updated Achievement Templates (markdown)[2020-09-01 08:47] Brandon D:
Took a real usage case from my game Dicing Knight Period and condensed it down to something more manageable. The AddHits docs are also a bit vague on some things and this hopefully will help out there.[2019-12-02 11:25] Searo:
Updating \"Check for a specific value changing to another specific value ten times\" to use AndNext to simplify the logic[2019-02-17 21:19] meleu:
add \"Collecting an Item N times\" and \"Circumvent the Problem of a Counter Incrementing Twice in the Same Frame\"\u00bfEste hack que encontr\u00e9/Que hice puede tener un set en RetroAchievements?
RetroAchievements abre la puerta a todos esos divertidos hacks para el disfrute de los jugadores. Pero esto tambi\u00e9n abre el tema de \"Que es permitido, y que no esta permitido que tenga un set en RetroAchievements?\"
"},{"location":"Achievements-for-ROM-hacks-es/#parches-para-game-trainers","title":"Parches Para Game Trainers","text":"No est\u00e1n permitidos sobre cualquier circunstancia
Hacks que incluyan \"game trainers\" o funciones de integradas de cheats (por razones obvias) no est\u00e1n permitidos.
"},{"location":"Achievements-for-ROM-hacks-es/#hacks-de-dificultad-e-historia","title":"Hacks de Dificultad e Historia","text":"Posiblemente Permitido
Si un hack tiene suficiente diferencias que la versi\u00f3n licenciada del juego, tanto que incluso el juego puede ser considerado un juego completamente diferente, usualmente la creaci\u00f3n de un set es usualmente aceptable. Consulta con un administrador para una aprobaci\u00f3n mas especifica.
Ejemplo: Metroid - Rogue Dawn
"},{"location":"Achievements-for-ROM-hacks-es/#lanzamiento-beta-prototipo-correccion-de-un-bug-re-balanceo-y-hacks-para-testing","title":"Lanzamiento Beta, prototipo, correcci\u00f3n de un bug, re-balanceo, y hacks para \"testing\"","text":"No est\u00e1n permitidos
Hacks para corregir un bug, parches de balance, versiones prototipo, hacks que est\u00e1n a nivel desarrollador y que cuentan con herramientas integradas (Selecci\u00f3n de Niveles f\u00e1cil de accesar, menus de debuging, menus que muestran informaci\u00f3n o proveen funciones de prueba y que no son normalmente accesibles en el juego normal), no pueden ser agregadas a un set core, y son tipicamente no permitidas que cuenten con su propio set de logros.
Si un rom hack esta en un estado de beta con potenciales glitches que puedan romper el juego, crasheos, o bugs, intactos siendo un resultado del hack, esto no esta permitido.
"},{"location":"Achievements-for-ROM-hacks-es/#parches-de-traduccion","title":"Parches de Traducci\u00f3n","text":"Posiblemente Permitidos
Ingles es el Lenguaje Primario en RetroAchievements. Parches de traducci\u00f3n son algunas veces aplicados por los desarrolladores a t\u00edtulos que no son en Ingles cuando en el MD5 principal de un set de logros no existe un versi\u00f3n licenciada en ingles. En este tipo de casos instrucciones de como parchear el juego tienen que ser agregadas al foro del juego. Proveer una traducci\u00f3n completa a un titulo existente es posiblemente permitido para que as\u00ed un juego sea mas accesible a gente que hable otros idiomas. Recuerda que tienes que inspeccionar profundamente la memoria del juego entre el parche y el set core y meter una solicitud de aprobaci\u00f3n antes de que esta se entregue al desarrollador del set para que la postee en el foro junto con el parche.
Algunas veces los parches de traducci\u00f3n pueden diferir cr\u00edticamente de como trabaja la memoria de acuerdo al MD5 del desarrollador. Antes de linkear estos parches checa con el desarrollador original o haz algunas pruebas profundas en memoria para asegurarte que sea completamente compatible. Puedes agregar parches de traducci\u00f3n que encuentres en linea siempre y cuanto todos los logros core funcionen de manera correcta y estos no se hagan mas o menos dif\u00edciles.
"},{"location":"Achievements-for-ROM-hacks-es/#hacks-cosmeticos-sprites","title":"Hacks Cosm\u00e9ticos / Sprites","text":"Posiblemente permitidos
Ejemplo: Roll-chan Evolution, Episode I - Roll-chan Gaiden
"},{"location":"Achievements-for-ROM-hacks-es/#parches-para-sets-bonus","title":"Parches para Sets Bonus","text":"Hacks Cosm\u00e9ticos que producen un MD5 \u00fanico para un Set Bonus son usualmente permitidos para que sean agregados al proceso de revisi\u00f3n. Inclusive este tipo de parches tienen que ser testeada profundamente la memoria con el set core para asegurarte que todos los logros funcionan de manera correcta. Esto envuelve artas ediciones a la pantalla de titulo para que pueda conseguir los requisitos de los lineamientos. Para parches cosmeticos para Sets Bonus para que permitan que el jugador pueda jugar el Set Bonus en vez del juego original, por favor habla con Salsa si necesitas ayuda en el proceso de creaci\u00f3n. Salsa maneja la sub-comunidad de creaci\u00f3n de parches IPS para desarrollo de Sets Bonus de RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks-es/#consultando","title":"Consultando","text":"Consulta a la comunidad por medio del foro y/o Discord para meter tu solicitud de aprobaci\u00f3n. Puedes darte una buena idea de que es lo que le gusta ver a la comunidad preguntando. Preguntar por una aprobaci\u00f3n antes de agregar un parche es una practica integra de un Desarrollador, y cae en tu c\u00f3digo de conducta como desarrollador aqu\u00ed en RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-21 11:56] eldexterr:
Created Achievements for ROM hacks es (markdown)RetroAchievements opens the doorway to include fun hack sets for players to enjoy. The issue arising in such a broad category open to world of creativity being \"What is allowed, and what is not allowed to have a set at RetroAchievements?\" This page will go over the various types of hacks that are not allowed to have their own set and whether or not they are allowed to be linked to a base set.
[t1]
, [t2]
, etc. in the title are examples of this.Usually not allowed
If a rom hack is incomplete or in a beta/prototype/testing state with potential game-breaking glitches, crashes, or bugs, intact as a result of hacking, it is usually not allowed.
Examples:
Usually allowed
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 usually 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.
Tip: For games with text-triggered achievements (especially RPGs) it's recommend to find an event flag instead of hooking onto text or text ID. Text presentation varies between regional versions making multi-region support difficult.
Examples:
Usually allowed
Examples:
Consult the community via the forum and Discord for review and approval. You can get a good view-port of what the community likes to see by asking. Asking for approval before linking is an integral Developer practice, and falls within your code of conduct as a developer here at RetroAchievements.
"},{"location":"Achievements-for-ROM-hacks/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-03 20:09] televandalist:
Updated Achievements for ROM hacks (markdown)[2023-06-05 21:43] televandalist:
Updated Achievements for ROM hacks (markdown)[2021-03-01 01:06] televandalist:
Removed section about using cosmetic patches for Bonus sets. It's not a good practice and should have been in the Bonus set guide anyway.[2020-07-06 09:53] meleu:
markdown fix[2020-02-17 05:32] meleu:
speak with BenGhazi for bonus set patches[2019-08-13 19:45] Kvon:
Achievements for Romhacks, text hooking tip[2019-07-22 17:14] Kvon:
minor edit. Changed capitalization[2019-07-22 14:38] Kvon:
Achievements for romhacks: Added much clarification, more examples, split out \"Beta Release...\" into is own section. Updated what might be allowed to match status quo.[2018-09-09 20:27] Kvon:
Listed translation patches as possibly allowed[2018-02-03 22:10] meleu:
changed the titleAddAddress
modifies the memory address(es) of the following condition by the calculated value. It works similar to AddSource
, but modifies the address, not the resulting value. Additionally, it affects addresses on both sides of the condition.
AddAddress
only affects the next condition. If multiple AddAddress
lines are chained together, each lookup in the chain will be altered; the values won't all be added to the final lookup.
The 32-bit value at 0x0112F8 is a pointer to the data for the first character in the party. When the party order changes, the pointer will point at a different block of memory, but data within the block will have the same structure.
To translate the real pointer to a memory inspector address, we compare the two values. For example:
AddAddress
is how RAIntegration handles pointers. There are four major types of pointer support:
Direct Pointer: The pointer contains another address that is referenced without modification. These are most commonly used for string pointers. To use a direct pointer, the base address to which the pointer is added would be 0.
Indirect Pointer: The pointer contains another address that indicates the start of some block of data. The data of interest is a fixed number of bytes into the block of data. These are commonly used for attributes of a character/object.
For both Direct and Indirect Pointers, the AddAddress
line should reference the pointer, and the address in the following line should be the offset into the block of data for the information relevant to the condition. While you would typically use 0 for a Direct Pointers, the following line would also contain any value necessary to convert between a real address and a memory inspector address.
The example above is an Indirect Pointer, where the data is 0x5C bytes into a block of data. The conversion from a real address to a memory inspector address is handled by using a 24-bit read instead of a 32-bit read.
Array Index: The pointer contains an offset to apply to a fixed pointer.
Scaled Array Index: The pointer contains an offset to apply to a fixed pointer after it has been scaled.
For Array Indices, the AddAddress
line should reference the offset to apply, and the following line should contain the address of the first element of the array (index 0). For example:
AddAddress 16-bit Mem 0x1234\n 8-bit Mem 0x4567\n
Would read a 16-bit number from 0x1234 and read the single byte that is that many bytes after 0x4567.
To scale an array index, click on the space in the Cmp column for the array index address and select the *
symbol. Then enter the size of each array item in the second mem/val column. For example:
AddAddress 16-bit Mem 0x1234 * Value 4\n 8-bit Mem 0x4567\n
Would read a 16-bit number from 0x1234, multiply it by 4, and read the single byte that is that many bytes after 0x4567.
"},{"location":"AddAddress-Flag/#chaining-pointers","title":"Chaining Pointers","text":"AddAddress
can be chained to perform multi-step lookups, but only one step at a time. As such, you can reference data pointed at by a pointer that's pointed at by another pointer, but you can't reference data in an array that's pointed at by another pointer unless either the array or the array index is at a fixed address.
To do a delta check on an AddAddress
chain, you should only put the delta on the final condition. You want to use the current value for each step of the chain to derive the final result, and you only care about the changes in the final value. Using previous values for the pointers will have you reading invalid memory and will likely cause problems.
A) AddAddress Mem 0000\nB) AddAddress Mem 0000\nC) Delta 0000\n
Assuming Mem: $0000=0, $0001=2, and $0002=4, this will evaluate to 0 for the first few frames, and when Mem 0 changes to 1, the following happens:
Frame N : A = Mem[0] = 1 (delta[0] = 0), B = Mem[A] = Mem[1] = 2 (delta B = 0), C = Mem[B] = Mem[2] = 4 (delta C = 0)\nFrame N+1: A = Mem[0] = 1 (delta[0] = 1), B = Mem[A] = Mem[1] = 2 (delta B = 2), C = Mem[B] = Mem[2] = 4 (delta C = 4)\n
You can see the entire delta chain updates in the same frame (one frame after the change occurs).
If you use Delta for A and B, something different happens:
A) AddAddress Delta 0000\nB) AddAddress Delta 0000\nC) Delta 0000\n
Frame N : Mem[0] = 1 (delta[0] = 0), B = Mem[deltaA] = Mem[0] = 1 (delta B = 0), C = Mem[deltaB] = Mem[0] = 1 (delta C = 0)\nFrame N+1: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 1), C = Mem[deltaB] = Mem[1] = 2 (delta C = 1)\nFrame N+2: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 2), C = Mem[deltaB] = Mem[2] = 4 (delta C = 2)\nFrame N+3: Mem[0] = 1 (delta[0] = 1), B = Mem[deltaA] = Mem[1] = 2 (delta B = 2), C = Mem[deltaB] = Mem[2] = 4 (delta C = 4)\n
Not only does it take two extra frames for delta C to be correct, it has two intermediate values that are not correct. The value went from 0 to 4 in a single frame and never was 1 or 2.
"},{"location":"AddAddress-Flag/#calculating-your-offset","title":"Calculating your offset","text":"Once you think that you've found your data and something that points at (or near) your data, you need to calculate the offset to use to read that data. * 32-bit data at 0x821448
(RetroAchievements address) * Pointer at 0xA1CA14
(RetroAchievements address) (value is 0x8C821440
)
First, determine how much of the pointer you need. For a system with 16MB of RAM, you need 24-bits to address it all (2^24 = 16777216). For 32MB, you'd need 25-bits. For 8MB, you'd only need 23-bits.
For the data provided above, we have 16MB of memory, so we only need 24-bits of the pointer (0x8C821440
& 0x00FFFFFF
= 0x821440
)
Then, subtract that value from the data address to calculate the offset: 0x821448
- 0x821440
= 0x000008
Now, you can construct the logic. Place the pointer address and size/mask in the AddAddress
condition and the offset/logic in the second line:
AddAddress Mem 24-bit 0x00A1CA14\n Mem 32-bit 0x00000008 < 1000\n
Executing this example with the provided data: * Read 24-bit data at 0x00A1CA14
: 0x00821440
* Add the offset: 0x00821440
+ 0x00000008
= 0x00821448
* Read 32-bit data at new address (0x00821448
)
0x1B385E0
(RetroAchievements address)0xE7B054
(RetroAchievements address) (value is 0x09B42F0C
)0x09B42F0C
& 0x01FFFFFF
= 0x1B42F0C
0x1B385E0
- 0x1B42F0C
= 0xFFFFFFFFFFFF56D4
(truncate to 32-bits: 0xFFFF56D4
)AddAddress Mem 32-bit 0x00E7B054 & 0x1FFFFFF Mem 16-bit 0xFFFF56D4 = 0x0E
In this case, the pointer is actually pointing backwards, so the offset is a really big number. That's how computers represent negative values. Due to the rules of twos-compliment and overflow, you can add the really big number to perform subtraction. Executing this example with the provided data: * Read 32-bit data at 0x00E7B054
: 0x09B42F0C
* Mask off 25-bits: 0x09B42F0C
& 0x01FFFFFF
= 0x01B42F0C
* Add the offset: 0x1B42F0C
+ 0xFFFF56D4
= 0x101B385E0
(truncated to 32-bits: 0x01B385E0
) * Read 16-bit data at new address (0x01B385E0
)
The experienced achievement creator wilhitewarrior made a nice video showing how to work with pointers and AddAddress flag.
You can check it here: https://www.youtube.com/watch?v=_gk0vYYlm-E.
"},{"location":"AddAddress-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-01-26 08:53] Jamiras:
add calculating offset section[2021-10-06 19:35] Jamiras:
Updated AddAddress Flag (markdown)[2021-08-08 18:59] Jamiras:
update for scaled array index support[2020-08-05 02:06] meleu:
cosmetic[2020-08-05 01:58] meleu:
add link to wilhitewarrio's video tutorial[2019-11-17 22:18] meleu:
fix markdown formats[2019-11-16 07:53] Jamiras:
Updated AddAddress Flag (markdown)[2019-11-14 20:25] Jamiras:
Created AddAddress Flag (markdown)Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
La bandera de AddHits
puede ser seleccionada en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Cuando una condicion con la bandera de AddHits
es verdadera, el contador de hits (hit count) de la siguiente condicion sin el AddHits
es incrementada.
Si la siguiente condicion si el AddHits
no tiene un numero de hits especificos (hit target), la condicion AddHits
no tiene un efecto en el logro.
La condicion AddHits
no tiene que ser verdadera para el logro se dispare, pero la siguiente condicion sin el AddHits
si tiene que serlo, que es afectada por la condicion que si tiene el AddHits
.
Last 10 changes on this page:
[2019-03-12 15:01] meleu:
Updated AddHits Flag ES (markdown)NOTE: This technique is not needed for simple games, so it is not mandatory for jr-devs.
AddHits
and SubHits
can be chosen in the Flag column of the Achievement Editor.
The AddHits
/SubHits
conditions do not have to be true for the achievement to trigger. They modify the hit count of another condition, which does have to be true for the achievement to trigger. The sequence of conditions is referred to as a AddHits
chain (even if it contains SubHits
).
When a condition with the AddHits
/SubHits
flag is true, the hit count for that condition is incremented. A hit target may be placed on the condition to keep it from tallying too many times.
The total hit count of the final condition in a chain is incremented by the hit counts of any AddHits
conditions in the chain, and decremented by any SubHits
conditions in the chain. If the total hit count meets or exceeds the target hit count of the final condition, it's considered true.
If the final condition of the chain does not have a hit target, the AddHits
/SubHits
conditions have no effect on the achievement. The final condition will be true if, and only if, it is true by itself.
NOTE: The hit target on the final condition of the chain serves as both the overall target hit count and the maximum hit count for that condition. As a result, it is impossible to use SubHits
without AddHits
, as any hits subtracted by the SubHits
could not be recovered without a separate AddHits
. Similarly, if you need to put a condition-specific limit on the final condition of the chain, you should pull it out as an AddHits
condition with the appropriate limit and use a dummy final condition with the overall hit target (i.e. 0=1 (10)
). The dummy condition would never accumulate any hits of its own, and only serve to tally the other values in the chain.
Last 10 changes on this page:
[2021-04-30 12:40] Jamiras:
Updated AddHits Flag (markdown)Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
Un AddSource
puede ser seleccionado en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Cuando una condicion tiene la bandera de Add Source
, el valor de esa variable es a\u00f1adido al valor de la variable de la condicion de abajo, y la comparacion es hecha en la condicion que se encuentra abajo de la que si tiene la bandera de Add Source
. Puede sonar un poco confuso, pero el ejemplo de aqui abajo va a aclarar como funciona:
En este ejemplo el valor en 0x8010
va a ser agregado a el valor en 0x8020
y la comparacion es si la suma es mas grande que cero.
Si el valor en 0x8010
es 1
y el valor en 0x8020
is 2
, la comparacion seria 1 + 2 > 0
, o 3 > 0
.
Nota: Todo lo que este en los campos de comparacion (Cmp) en una condicion con una bandera de Add Source
son ignorados.
Intentando resumir la explicacion con una imagen:
Nota: puedes utilizar la bandera Add Source
para sumar mas variables, como en el siguiente ejemplo:
Last 10 changes on this page:
[2019-03-12 15:00] meleu:
Updated AddSource Flag ES (markdown)Note: most likely this technique is not needed for simple games. So, it's not mandatory for jr-devs.
The AddSource
can be chosen in the Flag column of the Achievement Editor
When a condition has the Add Source
flag, the value on that memory address is added to the accumulator. When a condition is reached that does not modify the accumulator, the accumulator is added to value of the address on that condition before the comparison is made, and the accumulator will be reset to 0. It may sound a bit confusing, but the example below will clarify how this works:
In this example the value in 0x8010
will be added to the value in 0x8020
and the comparison will check is if this sum is greater than four.
If the value in 0x8010
is 1
and the value in 0x8020
is 2
, the comparison will be 1 + 2 > 4
, or 3 > 4
.
Trying to summarize the explanation in an image:
"},{"location":"AddSource-Flag/#chaining","title":"Chaining","text":"You can use the Add Source
flag to sum more addresses, like in the example below:
This represents value(0x8010) + value(0x8011) + value(0x8020) > 4
.
The accumulator is reset after its used, so you can have multiple AddSource
chains in one trigger without having to worry about them interfering with each other.
This represents value(0x8010) + value(0x8020) > 4 AND value(0x8030) + value(0x8040) < 0x80
.
The accumulator and all logic being performed is limited to 32-bits. If the total value exceeds 0xFFFFFFFF, there will be an overflow and only the 32 least significant bits will be used in the comparison.
ID Flag Type Size Memory Cmp Type Size Mem/Val Hits 1 AddSource Mem 32-bit 0x8010 2 Mem 32-bit 0x8020 > Value 0x30000000 0 (0)If 0x8010 is 0xC0000000 and 0x8020 is 0x54321ABC, then the total will be 0x114321ABC, which is more than 32-bits and will be truncated to 0x14321ABC, which is not more then 0x30000000, so the logic will evaluate false.
"},{"location":"AddSource-Flag/#using-modifiers","title":"Using Modifiers","text":"Additionally, you can use AddSource to modify a value. By clicking on the \"Cmp\" column, a dropdown will open with three operators: *
, /
, and &
. This allows you to modify the value before adding it to the accumulator.
*
: Multiply the left side by the right side. - AddSource 8-bit Mem 0x8010 * Value 0x14
would read the 8-bit value from $8010, multiply it by 20 (0x14 hex) and then add that to the accumulator.
/
: Divide the left side by the right side. - AddSource 8-bit Mem 0x8010 / Value 0x14
would read the 8-bit value from $8010, divide by 20 (rounding down) and then add that to the accumulator.
&
: Bitwise-mask the left side with the right side. - AddSource 8-bit Mem 0x8010 & Value 0x3f
would read the 8-bit value from $8010, discard bits 6 and 7 (0x3f is 00111111 in binary) and then add that to the accumulator.
You can use memory references on the right side as well. AddSource 8-bit Mem 0x8010 * 8-bit Mem 0x8011
would read the two 8-bit values, multiply them together, and add that to the accumulator.
The accumulator is typed based on the first thing added to it. If the first AddSource
/SubSource
of a chain is an integer, the accumulator will be an integer and any floats added to the accumulator will be floored before they're added to the accumulator. If the first AddSource
/SubSource
of a chain is a float, the accumulator will be a float and any integers added to the accumulator will be converted to floats before they're added to the accumulator.
Note that when the accumulator is added to the final condition, the type of the final condition is used. So if the final condition is float and the accumulator is an integer, the accumulator will be converted to a float before it's added to the final condition.
To force all floats in an AddSource
chain to be floored, you need an extra first and last condition:
Line 1 primes the accumulator as an integer, so lines 2-4 will be floored before they're added to the accumulator. Line 5 ensures the final value is an integer before doing the comparison. Without line 1, lines 2-4 would be accumulated as floats. Without line 5, the accumulator would be added to the last float without it being floored.
"},{"location":"AddSource-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-09-02 07:13] Jamiras:
add interaction with floats section[2021-11-27 08:38] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:20] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:17] Jamiras:
Updated AddSource Flag (markdown)[2021-11-27 08:14] Jamiras:
Updated AddSource Flag (markdown)[2019-02-12 09:37] meleu:
Updated AddSource (markdown)Un logro puede tener grupos agregados a el que permiten requisitos alternativos para que el logro se desbloquee. A esto se le conoce como Alt Groups, (Grupos Alternativos)
Cuando utilizamos Alt groups, para que se dispare un logro, todas las condiciones en Core group TIENEN que ser verdaderas. Y as\u00ed tambi\u00e9n todas las condiciones de CUALQUIER Alt group tienen que ser verdaderas. En otras palabras, cada Alt group utiliza la logica OR
.
En este simple ejemplo para Contra (NES) el logro requiere, \"En un Stage mira hacia arriba o ag\u00e1chate.\" Veamos que hay en el Core group y en los Alt groups:
En el grupo core: 0x18 = 5
. Esto checa si el jugador se encuentra en un Stage.
En Alt 01
: 0xbc = 1
. Esto checa si el jugador esta viendo hacia arriba.
En Alt 02
: 0xbc = 2
. Esto checa si el jugador esta agachado.
Mientras el jugador se encuentre en un stage. El grupo core es verdadero. Si el jugador mira hacia arriba, Alt 01 es verdadero. Si el jugador se agacha, Alt 02 es verdadero. Si core + Alt 01 \u00d3 Alt 02 es verdadero, este logro se dispararia.
"},{"location":"Alt-Groups-es/#datos-sobre-los-alt-groups","title":"Datos sobre los Alt Groups","text":"+
o -
en la parte inferior izquierda del editor de logros (achievement editor). O
ESO puedes dejar el core group en blanco y a\u00f1adir ESTE en Alt 01
, y ESO en Alt 02
.Alt groups
tenga un logro, si el grupo Core es verdadero, solo un Alt tiene que ser verdadero para que el logro se dispare.Avanzado: Un Alt group puede ser utilizado para crear una condici\u00f3n ResetIf que solo se activa por cierto tiempo.
Si tu creas un Alt group que contenga una condici\u00f3n PauseIf y una condicion ResetIf, puedes utilizar la condici\u00f3n PauseIf para pausar la condici\u00f3n ResetIf sobre ciertas circunstancias y sin deshabilitar todo el logro. - Un Reset afecta a todos los grupos, incluyendo el grupo core. El Pause solo pausara el Alt group que contenga el PauseIf. - Esta l\u00f3gica puede ser aplicada a m\u00faltiples Alt groups en el mismo logro para proteger varios Reset de ser disparados por separado. - Ten en cuenta de tener m\u00ednimo un Alt group que sea verdadero o el logro no se disparara. La manera mas facil de hacer esto es crear un alt group extra que tenga una condici\u00f3n que sea Valor 1 = Valor 1
. - Cuidado: Si tu condici\u00f3n Pause es falsa, y la condici\u00f3n Reset tambi\u00e9n es falsa, el grupo va a ser considerado como verdadero al menos que tengas otra condici\u00f3n falsa en el grupo. Cuando utilizamos un Alt group para segregar un PauseIf, ten en cuenta de incluir siempre una condici\u00f3n que sea falsa como Valor 1 = Valor 0
.
Last 10 changes on this page:
[2019-04-16 11:13] eldexterr:
ES title changed to esAchievements can have groups added to them that allow for alternative requirements to unlock an achievement. These are called Alt Groups,
When using Alt groups, for the achievement to trigger, all the conditions in the Core group MUST be true. And then all the conditions of ANY Alt group must be true. In other words, each Alt group uses OR
logic.
In this dummy example for Contra (NES) the achievement requires, \"While on stage look up or crouch.\" Lets look at what's in the Core group and in the Alt groups:
In the core group: 0x18 = 5
. This checks that the player is on stage.
In Alt 01
: 0xbc = 1
. This checks that the player is looking up.
In Alt 02
: 0xbc = 2
. This checks that the player is crouching.
As long as the player is on stage. The core group is true. If the player looks up, Alt 01 is true. If the player crouches, Alt 02 is true. If core + Alt 01 OR Alt 02 are true, the achievement will trigger.
"},{"location":"Alt-Groups/#facts-about-alt-groups","title":"Facts about Alt Groups","text":"+
or -
button in the bottom left of the achievement editor. OR
that you can leave the core group blank and add this in Alt 01
, and that in Alt 02
.Alt groups
an achievement has, if the Core group is true, only one Alt has to be true for the achievement to trigger.Advanced: An Alt group can be used to create a ResetIf condition that is only active some of the time.
If you create an Alt group containing a PauseIf condition and a ResetIf condition, you can use the PauseIf condition to disable the ResetIf condition under certain circumstances without disabling the entire achievement.
Value 1 = Value 1
.Value 1 = Value 0
.Last 10 changes on this page:
[2019-06-18 15:48] Jamiras:
add whitespace so bullets are joined when document is published[2019-03-07 21:00] Jamiras:
Updated Alt Groups (markdown)[2019-02-12 09:38] meleu:
Created Alt Groups (markdown)AndNext
and OrNext
are used to associate more than one condition to a ResetIf, PauseIf, or Hit Count.
AndNext
and OrNext
can be chosen in the Flag column of the Achievement Editor
When a condition has the AndNext
flag, the condition must be true in addition to the following condition for the following condition to be considered true.
When a condition has the OrNext
flag, the condition or the following condition must be true for the following condition to be considered true.
You can chain multiple AndNext
and OrNext
conditions to create complex requirements for a single ResetIf
, PauseIf
, or Hit Count
.
When evaluating a combination of AndNext
and OrNext
conditions, each line is evaluated individually.
AndNext A=1\nOrNext B=1\nAndNext C=1\nOrNext D=1\nAndNext E=1\nResetIf F=1\n
Represents the following logical statement:
reset if (((((A = 1 && B = 1) || C = 1) && D = 1) || E = 1) && F = 1)\n
Alt Groups are still preferred over OrNext
for most use cases. They allow for multiple conditions to be present in each clause of the OR, and support more than two clauses.
AndNext
is not required for simple logic. All conditions in a group are automatically AND'd together. AndNext
just allows for two or more conditions to affect a single PauseIf
, ResetIf
, or Hit Count
.
Last 10 changes on this page:
[2021-01-25 13:18] meleu:
fix markdown links[2020-05-17 14:01] Jamiras:
update titleTabla de Contenidos - Iconos de Juegos - Dise\u00f1ando mis nuevos iconos - gu\u00eda est\u00e9tica - Flexibilidad para la gu\u00eda est\u00e9tica - Tengo que seguir esta gu\u00eda de est\u00e9tica? - Otros Tips de Dise\u00f1o de Iconos - Archivo y Tama\u00f1o del Icono - mejores practicas - Subiendo Iconos de juegos (Desarrollador) - Subiendo Iconos de Juegos (no-Desarrollador) - Game Icon Gauntlet - Reglas para proponer un nuevo icono de juego - La votaci\u00f3n en Icon Gauntlet - Que pasa con la imagen cuando subes el icono de un juego - Servidores de los Archivos de Iconos - Badges de Logros - Gu\u00edas y Tips en la Creaci\u00f3n de Badges - Tama\u00f1o y Archivo del Badge - mejores practicas - Subiendo un Badge (Desarrollador) - Subiendo un Badge (No-Desarrollador) - Que pasa con la imagen cuando subes un Badge - Servidor de los archivos de Badges - Donde se muestran los Badges e Iconos
"},{"location":"Badge-and-Icon-Creation-es/#iconos-de-juegos","title":"Iconos de Juegos","text":"Los Iconos son im\u00e1genes subidas por el usuario que sirven para representar a un juego por medio de la pagina. Debido a la prominencia en las pagina de juego y de usuarios estas reciben una atenci\u00f3n especial.
Icono en Sonic the Hedgehog's
Cuando dise\u00f1es el nuevo icono de un juego considera los siguientes puntos: La mayor\u00eda de la comunidad prefiere que los iconos utilicen el artwork original del juego; - que se encuentre dentro del juego, - o en documentos del juego, - o en el manual, - o material promocional, - y un sin fin; arte creado por el equipo original.
Utilizar dise\u00f1os mas actuales (o fan art) para personajes cl\u00e1sicos de v\u00eddeo juegos tal vez parezca prudente. Pero varios podr\u00edan encontrar esto como irrespetuoso al material original.
"},{"location":"Badge-and-Icon-Creation-es/#flexibilidad-para-la-guia-estetica","title":"Flexibilidad para la gu\u00eda est\u00e9tica","text":"~hacks~
donde hay muy poco material original disponible, utilizar arte no-official podr\u00eda ser razonable.El estilo que escoges para tus dise\u00f1os ya depende de ti. Puedes romper estas reglas siempre y cuando no rompas alguna lei de copyright, o subas algo vulgar, ofensivo o pornogr\u00e1fico.
"},{"location":"Badge-and-Icon-Creation-es/#otros-tips-de-diseno-de-iconos","title":"Otros Tips de Dise\u00f1o de Iconos","text":"Los desarrolladores de logros tienen permitido cambiar iconos de juegos en entradas que no cuenten con logros. Como desarrollador si tu quieres postear un respaldo de la antigua imagen eres libre de hacerlo pero no es realmente un requisito. Mientras creas un nuevo set de logros tu eres libre de crear o escoger que icono quieres para el juego.
Para cambiar el Icono de un juego primero ve a la pagina del juego y haz click en Dev tools:
Luego haz click en el bot\u00f3n de choose file que se encuentra resaltado. Encuentra el archivo en tu PC, y luego presiona el bot\u00f3n resaltado de submit:
Si un juego que ya cuenta con logros el cambio de Icono tiene que pasar por medio de Icon Gauntlet.
"},{"location":"Badge-and-Icon-Creation-es/#subiendo-iconos-de-juegos-no-desarrollador","title":"Subiendo Iconos de Juegos (no-Desarrollador)","text":"Si, absolutamente puedes, pero recuerda leer las regla de Icon Gauntlet. Tambien seria bueno darle un vistazo a las reglas de dise\u00f1o para nuevos iconos de juegos.
"},{"location":"Badge-and-Icon-Creation-es/#game-icon-gauntlet","title":"Game Icon Gauntlet","text":"El game Icon Gauntlet enfrenta un icono posteado por un usuario en una pelea cara-a-cara con el icono actual. El voto popular es lo que toma lugar en #Icon-Gauntlet este canal de Discord es lo que determina que se queda y que se va. Todos los usuarios verificados de Discord son elegibles de ingresar su voto. Spawncalibur es el administrador en todos los aspectos de esta din\u00e1mica.
"},{"location":"Badge-and-Icon-Creation-es/#reglas-para-proponer-un-nuevo-icono-de-juego","title":"Reglas para proponer un nuevo icono de juego","text":"[img=http://YourImageURL.png]
[game=GameID]
. Puedes encontrar el ID del juego viendo el URL de la pagina de este)Cuando se sube, tu imagen es reducida a un PNG de 32-bits colores y a un tama\u00f1o de 96x96. Si subes un icono que sea mas peque\u00f1o que 96x96 la imagen va a retener su tama\u00f1o original.
Lo mismo pasa para los Badges, excepto que el tama\u00f1o maximo para los badges es de 64x64. (El de Imagenes de Perfil es de 128x128.)
"},{"location":"Badge-and-Icon-Creation-es/#servidores-de-los-archivos-de-iconos","title":"Servidores de los Archivos de Iconos","text":"Los Iconos son almacenados en el sitio de la siguiente manera y lugar: i.retroachievements.org/Images/000705.png
. Ellos son almacenados en el mismo folder donde se almac\u00e9n todas las dem\u00e1s im\u00e1genes como las caratulas y las screenshots por ejemplo.
Los Badges (Emblemas) son las imagenes creadas por el usuario para cada logro en individuo de un juego.
Si te encuentras creando logros eres libre de subir badges para ellos.
Los Badges se suben con las herramientas de desarrollador del emulador por medio del editor de logros:
O tambi\u00e9n puedes seleccionar una imagen prefabricada o encontrar otras im\u00e1genes que haz subido por medio de la lista desglosable:
Subir archivos .jpg
, .jpg
o .gif
. No es completamente importante el formato, pero si es completamente recomendable que la imagen sea cuadrada.
Si el juego ya cuenta con badges existentes \u00e9chale una checada y sigue el procedimiento para Subiendo Badges (No-Desarrollador).
"},{"location":"Badge-and-Icon-Creation-es/#subiendo-badges-no-desarrollador","title":"Subiendo Badges (No-Desarrollador)","text":"Postea todas las im\u00e1genes nuevas que quieres remplazar en el foro oficial del juego. Tambi\u00e9n enlista cuales badges quieres remplazar. Un desarrollador o un moderador va a evaluar tu trabajo y decidir si, s\u00ed ser\u00e1n remplazados. Si as\u00ed lo deciden se posteara un respaldo de los iconos actuales en el foro, y tambi\u00e9n se remplazaran por los nuevos.
Este respaldo es necesario si llega a existir el caso en el que hay desacuerdos con los nuevos badges. En estos casos algunos o todos los badges podr\u00edan ser revertidos a los anteriores.
Es mas f\u00e1cil hacer una referencia a los viejos y nuevos badges como links de img
: - ejemplo: [img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
- (Dev) percatate de capturar los antiguos ID de los badges del Editor de Logros antes de subir los nuevos - El ID de los nuevos badges aparecer\u00e1n en el Editor de Logros despu\u00e9s de que sean subidos. - ambos valores tambi\u00e9n pueden ser capturados desde el sitio web, pero tienes que copiar el link de la imagen como el hover link del logro.
Aqu\u00ed hay un ejemplo perfecto de como hacer un respaldo apropiado de Badges reci\u00e9n cambiados.
"},{"location":"Badge-and-Icon-Creation-es/#que-pasa-con-la-imagen-cuando-subes-un-badge","title":"Que pasa con la imagen cuando subes un Badge","text":"Cuando se sube, tu archivo es convertido a lo siguiente: - 64x64 PNG de 32-bit de color. Ejemplo:
![00136](https://user-images.githubusercontent.com/8508804/37221161-b9b0bb02-23a7-11e8-81b2-3d09fa7456af.png)\n
Estos se almacenan en el sitio de la siguiente manera y lugar: i.retroachievements.org/Badge/00136.png
; el numero coincide con el ID de Badges que se encuentra con el Editor de Logros.
La im\u00e1genes actuales no se les cambia el tama\u00f1o. La imagen es escalada por el navegador al tama\u00f1o correspondiente. Algunos navegadores como el de Android muestran de una manera mas clara las im\u00e1genes mas grandes. Tambi\u00e9n puedes aumentar el zoom de tu navegador para ver aun mas claro.
Se espera que en la versi\u00f3n futura del sitio, los Iconos y Badges se muestren en tama\u00f1o completo en otros lugares.
"},{"location":"Badge-and-Icon-Creation-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-15 10:10] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-15 10:06] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-15 09:58] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-05-12 16:01] eldexterr:
Updated Badge and Icon Creation es (markdown)[2019-04-18 17:26] eldexterr:
Document created but still not finishedLink para o texto em ingl\u00eas: Badge and Icon Creation
"},{"location":"Badge-and-Icon-Creation-pt_BR/#introducao","title":"Introdu\u00e7\u00e3o","text":"Emblemas e \u00edcone s\u00e3o usados em todo o site e s\u00e3o uma boa maneira de representar a conquista no jogo.
Emblemas s\u00e3o as imagens para os achievements de um jogo. Eles s\u00e3o armazenados no site da seguinte maneira e local: i.retroachievements.org/Badge/00136.png
; o n\u00famero coincide com o ID do emblema encontrado no Achievement editor.
Os \u00edcones s\u00e3o armazenados no site da seguinte maneira e colocam: i.retroachievements.org/Images/000705.png
, armazenados na mesma pasta que outras imagens do jogo, como a caixa do jogo (game box) e screenshots do jogo.
Quando carregado, seu arquivo \u00e9 convertido no seguinte:
N\u00e3o \u00e9 totalmente importante como o arquivo \u00e9 formatado antes do upload, mas, desde que seja quadrado, o arquivo ser\u00e1 carregado e convertido facilmente. Naturalmente, \u00e9 importante n\u00e3o infringir nenhuma lei de direitos autorais ou fazer upload de algo vulgar, ofensivo ou pornogr\u00e1fico, com as poss\u00edveis consequ\u00eancias de ser advertido, potencialmente reportado e potencialmente removido da RetroAchievements.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#formato-de-icone","title":"Formato de \u00edcone","text":"Quando carregadas, as imagens do seu \u00edcone s\u00e3o reduzidas para um PNG em cores de 32 bits 96x96 no m\u00e1ximo. Se voc\u00ea fizer o upload de um \u00edcone menor que 96x96, a imagem enviada manter\u00e1 seu tamanho original.
O mesmo vale para os emblemas, exceto que o tamanho m\u00e1ximo dos emblemas \u00e9 64x64. (O m\u00e1ximo de imagens do perfil \u00e9 128x128.)
Lugares e tamanhos Os \u00edcones s\u00e3o exibidos:
A mesma coisa que com os emblemas, a imagem real n\u00e3o est\u00e1 sendo redimensionada apenas o tamanho da tela, se voc\u00ea usar o Android ou aumentar o zoom do seu navegador, voc\u00ea ver\u00e1 as imagens com mais clareza.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#diretrizes-e-dicas","title":"Diretrizes e Dicas","text":"Como o site n\u00e3o tem, na maioria dos casos, um rollback permanente / estilo git-rollback / estilo wiki para todas as a\u00e7\u00f5es tomadas em um conjunto, \u00e9 recomendado que quando um desenvolvedor faz altera\u00e7\u00f5es de qualquer tipo em um conjunto dele no f\u00f3rum para esse jogo.
Em rela\u00e7\u00e3o aos emblemas, publique na p\u00e1gina do f\u00f3rum do jogo uma das seguintes op\u00e7\u00f5es:
[img = \"https://retroarchievement.org/badge/1234]
)Aqui est\u00e1 um exemplo perfeito de como fazer o backup corretamente de emblemas alterados.
\u00e9 recomendado, para ajudar a manter tudo em ordem, de modo que, nos casos em que as revers\u00f5es ou altera\u00e7\u00f5es sejam adequadas, \u00e9 muito mais f\u00e1cil faz\u00ea-las.
"},{"location":"Badge-and-Icon-Creation-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-10-11 00:45] CoolCanuck:
https[2018-03-26 23:01] meleu:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-26 02:52] KingDice001:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-26 02:52] KingDice001:
Updated Badge and Icon Creation pt_BR (markdown)[2018-03-25 23:13] 7Mogami7:
Created Badge and Icon Creation pt_BR (markdown)Icons are user uploaded images that are used throughout the site to represent a game. Due to their prominence on game and user pages they are worth special attention. These icons should be representative of the game and its common themes, and therefore should be instantly recognizable.
Sonic the Hedgehog's game Icon
Achievement Developers are allowed to change game icons freely for entries that do not have achievements. As a Developer if you'd like to post a backup of the previous image there, if there is one, or backup yours in the forum you're free to but not required. As you create a new set of achievements you are free to create or choose the image you'd like to use as the game icon.
To change a game icon first go to the game page and click on the Dev tools:
Then click the choose file button highlighted. Find the file on your PC, and then press the submit button highlighted:
If a game has existing achievements, game icon changes need to go through revision process.
"},{"location":"Badge-and-Icon-Creation/#uploading-game-icons-non-developer","title":"Uploading game icons (non-Developer)","text":"Yes, you absolutely can, but they are subject to revisions. It will also be good to review the guidelines for designing new game icons.
"},{"location":"Badge-and-Icon-Creation/#what-happens-to-the-image-when-you-upload-a-game-icon","title":"What happens to the image when you upload a game Icon","text":"When uploaded, your Icon images will be rejected unless they are a 96x96 32-bit colour PNG. If you upload an Icon that is smaller than 96x96 the image uploaded will retain its original size.
The same is true for Badges, except Badge size is 64x64. (Profile images maximum is 128x128.)
"},{"location":"Badge-and-Icon-Creation/#icon-server-files","title":"Icon server files","text":"Icons are stored on the site in the following manner and place: i.retroachievements.org/Images/000705.png
. They are stored in the same server folder as other game images such as the game box and game screenshots.
Badges are the user created images for individual achievements of a game.
If you are creating new achievements you are free to upload badges for them.
Badges are uploaded from within the emulator developer tools while in the achievement editor:
Or you can select a prefabricated image or find other images you've uploaded in the drop down box:
Upload .png
file types.
If the game has existing badges review and follow the procedure for Uploading Badges (Non-Developer).
"},{"location":"Badge-and-Icon-Creation/#making-new-badges-for-existing-achievements","title":"Making new Badges for existing achievements","text":"If you'd like to make improved badges for existing achievements, you can. Your images will go through the revision process, which will put your creations to a community vote.
Post all the new images you'd like to replace current ones in the Icon Gauntlet Forum Topic. Also post all the badges that the new images are meant to replace. They will be placed for a community review by as a single vote. After a community vote is complete if you are a dev you can replace the Badges or if you are not, ask for help in the #help-me channel on Discord or in the Icon Gauntlet Forum Topic.
It's easiest to just reference the old and new Badges as img
links:
[img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
Here is a perfect example of how to effectively post new and old Badges.
"},{"location":"Badge-and-Icon-Creation/#what-happens-to-the-image-when-you-upload-a-badge","title":"What happens to the image when you upload a Badge","text":"When uploaded, your file is converted into the following: - 64x64 32-bit colour PNG. Example:
![00136](https://user-images.githubusercontent.com/8508804/37221161-b9b0bb02-23a7-11e8-81b2-3d09fa7456af.png)\n
They are stored on site in the following manner and place: i.retroachievements.org/Badge/00136.png
; the number coincidences with the badge ID found in the Achievement.
The actual images are not being resized. The image is scaled by the browser to the display size. Some browsers such as Android's browser will display larger images more clearly. You can also increase your browser zoom to see them more clearly.
It's anticipated that in a future website version, Icons and Badges will be displayed at full size in other places.
"},{"location":"Badge-and-Icon-Creation/#creating-good-screenshots","title":"Creating Good Screenshots","text":"Most emulators have a screenshot function that takes screenshots at the system's native resolution, regardless of your output resolution. It can be helpful to leverage these to get crisp screenshots without added distortion or filters. For example, in RALibretro, the print screen key will take a screenshot in this manner.
"},{"location":"Badge-and-Icon-Creation/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-26 13:48] The Mystical One:
Added a note about screenshots.[2023-06-21 07:59] The Mystical One:
Removed jpg and gif references.[2023-06-13 13:05] The Mystical One:
Added new rules about game icons as proposed by art team and approved by DevCompliance. Cleaned up a few other details.[2023-05-31 10:21] The Mystical One:
Fixing badge and icon size design rules.[2021-07-01 09:00] StingX2:
Added \"These icons should be representative of the game and its common themes, and therefore should be instantly recognizable.\"[2021-05-10 21:09] HolyShinx:
Updated Badge and Icon Creation (markdown)[2021-04-26 13:26] meleu:
fix links[2020-10-25 18:30] meleu:
Updated Badge and Icon Creation (markdown)[2020-03-23 06:31] televandalist:
Fixed several typos. Removed Game Icon Gauntlet information (going to merge it with revisions) and linked to the revision page where applicable.[2019-11-17 22:14] meleu:
remove Table of Contents (it was bad formatted)When someone mentions badges, they could be talking about one of two things: - Achievement badges, which are user-created images associated with the individual achievements of a set. - Sonic the Hedgehog's first Badge - #00199) - - Game icons, also known as mastery badges, which is a single image used to represent an achievement set. - Sonic the Hedgehog's game icon -
"},{"location":"Badge-and-Icon-Guidelines/#badge-format-and-sizes","title":"Badge Format and Sizes","text":"Achievement badges should refer in some way to what the achievement is about - i.e. a picture of the boss, level or collectible that the achievement requires the player to get to.
"},{"location":"Badge-and-Icon-Guidelines/#designing-new-game-icons","title":"Designing New Game Icons","text":""},{"location":"Badge-and-Icon-Guidelines/#game-mastery-icons-must-represent-the-associated-game-by-using-official-art-only","title":"Game Mastery Icons must represent the associated game by using 'Official' art only.","text":"Developers: - Achievement Developers are allowed to change game icons freely for entries that do not have achievements. As a Developer if you'd like to post a backup of the previous image there, if there is one, or backup yours in the forum you're free to but not required. As you create a new set of achievements you are free to create or choose the image you'd like to use as the game icon. - To change a game icon first go to the game page and click on the Dev tools: - Then click the choose file button highlighted. Find the file on your PC, and then press the submit button highlighted:
If a game has existing achievements, game icon changes need to go through revision process.
Non-Developers: - Yes, you absolutely can, but they are subject to revisions. It will also be good to review the guidelines for designing new game icons.
"},{"location":"Badge-and-Icon-Guidelines/#uploading-badges","title":"Uploading Badges","text":"For Developers:
If you are creating new achievements you are free to upload badges for them.
Badges are uploaded from within the emulator developer tools while in the achievement editor:
Or you can select a prefabricated image or find other images you've uploaded in the drop down box:
"},{"location":"Badge-and-Icon-Guidelines/#badge-server-files","title":"Badge Server Files","text":"i.retroachievements.org/Images/000705.png
. They are stored in the same server folder as other game images such as the game box and game screenshots.i.retroachievements.org/Badge/00136.png
; the number coincidences with the badge ID found in the Achievement.If you'd like to make improved badges for existing achievements, you can. Your images will go through the revision process, which will put your creations to a community vote.
Post all the new images you'd like to replace current ones in the Icon Gauntlet Forum Topic. Also post all the badges that the new images are meant to replace. They will be placed for a community review by as a single vote. After a community vote is complete if you are a dev you can replace the Badges or if you are not, ask for help in the #help-me channel on Discord or in the Icon Gauntlet Forum Topic.
It's easiest to just reference the old and new Badges as img
links: - Example: [img=https://retroachievements.org/Badge/01234.png] -> [img=https://retroachievements.org/badge/56789.png]
- (Dev) Make sure to capture the old Badge ID from the Achievement Editor before uploading the new Badge - The new Badge ID will appear in the Achievement Editor after uploading it. - Both values can also be captured from the web site, but you have to copy the image links as the hover link is for the achievement.
Here is a perfect example of how to effectively post new and old Badges.
"},{"location":"Badge-and-Icon-Guidelines/#to-do","title":"To Do","text":"Last 10 changes on this page:
[2023-06-21 09:42] The Mystical One:
Adding the Mastery Icon to these guidelines.[2023-06-03 03:55] televandalist:
Created Badge and Icon Guidelines (markdown)BitCount
is a shortcut for counting the number of bits set in a byte.
BitCount Mem 0x1234 == Value 6\n
is the same as
AddSource Bit0 Mem 0x1234\nAddSource Bit1 Mem 0x1234\nAddSource Bit2 Mem 0x1234\nAddSource Bit3 Mem 0x1234\nAddSource Bit4 Mem 0x1234\nAddSource Bit5 Mem 0x1234\nAddSource Bit6 Mem 0x1234\n Bit7 Mem 0x1234 == Value 6\n
and would be true for 0x3F
(00111111), 0xDB
(11011011), 0xEE
(11101110), etc.
Its most common use is counting collectibles for a Measured condition.
It can be combined with other flags like Delta.
BitCount Mem 0x1234 != BitCount Delta 0x1234\n
If you just want to make sure all the bits are set and don't need to worry about some subset of bits being set, you should check for concrete values (i.e. Eight Bit 0x1234 = 0xFF
or Lower4 0x1234 = 0x0F
).
WARNING: BitCount always counts all eight bits in a byte. If you only need 6 or 7 bits, you should use the AddSource chain in case the other bits are used for something else.
"},{"location":"BitCount-Size/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-07-09 15:18] RALordAndrew:
Double-bracket links do not work on docs.retroachievements.org[2021-04-22 09:12] Jamiras:
Updated BitCount Size (markdown)[2021-04-22 09:06] Jamiras:
Updated BitCount Size (markdown)[2020-05-17 14:09] Jamiras:
add BitCountTema Avanzado para Desarrolladores
"},{"location":"Bonus-Sets-es/#que-es-un-set-bonus","title":"\u00bfQue es un Set Bonus?","text":"\u00bfSe te ocurren algunos verdaderos retos para retar al jugador mas masoquista mientras dise\u00f1as un set? O tal vez \u00bfalgunos extras que no est\u00e1n incluidos en el set core? \u00bfTuviste muchas solicitudes de algo que no encajaba del todo en el set core? RetroAchievements da la bienvenida y motiva todos esos retos y diversi\u00f3n, pero como siempre nos gusta hacerlo de una manera organizada. Puntos Bonus para sets populares es una grandiosa idea!
"},{"location":"Bonus-Sets-es/#que-deberia-de-incluir-en-un-set-bonus","title":"\u00bfQue deber\u00eda de incluir en un Set Bonus?","text":"Sets dise\u00f1ados para probar la maestr\u00eda en un juego y proveer nuevos y divertidos retos. Siempre deber\u00edas seguir el estandarte de \"\u00bfEs esto realmente diferente?\" cuando te encuentres haciendo Sets Bonus.
Tu obviamente deber\u00edas comentar la idea primero . Es tu trabajo y una regla que se tiene que cumplir.
Actualmente, crear un set Bonus no es f\u00e1cil. Tienes que b\u00e1sicamente aplicar un hack que no destruya el ROM a una copia de la ROM original y lanzar el parche IPS que incluye las diferencias para que la gente lo pueda disfrutar. Parchear un ROM con el parcheador IPS es relativamente f\u00e1cil. Un jugador que disfrute de muchos ROM hacks para probar retos adicionales a de estar bastante acostumbrado. Sin embargo es algo que tienes que aceptar para lanzar tu Set Bonus, crear un parche no-destructivo.
Algunas veces un administrador (as\u00ed como Salsa, que es la cabecilla del proyecto de los Sets Bonus y del creado de parches) puede ser capaz de guiarte por la direcci\u00f3n correcta. Si tu solamente desarrollas logros, adentrarte en la creaci\u00f3n del parche puede llegar a ser algo complicado y confuso.
Si tu eres un programador o un artista y ya estas consiente del uso apropiado de las herramientas de hacking, los pasos se encuentras mas abajo para como generar un parche IPS cosmetico. Recuerda seguir los lineamientos!
NOTA
Este meto cambiara cuando los Sets Bonus sea una funci\u00f3n integrada de RetroAchievements. Mientras tanto puede proveer parches IPS mientras esta funci\u00f3n aun es agregada.
"},{"location":"Bonus-Sets-es/#paso-1-obten-el-juego-original","title":"Paso 1 - Obt\u00e9n el juego original","text":"El primer paso para dise\u00f1ar un Set Bonus es conseguir el ROM original del juego. Recuerda que nosotros no podemos proveer un m\u00e9todo descarga para eso. \u00bfYa tienes tu Dumpeador/Extractor de ROMs a la mano?
"},{"location":"Bonus-Sets-es/#paso-2-crea-una-copia-del-rom-original","title":"Paso 2 - Crea una copia del ROM original","text":"Este es el archivo que vas a utilizar para editar para convertirlo en el ROM para tu set Bonus
"},{"location":"Bonus-Sets-es/#paso-3-agarra-un-editor-hexadecimal-o-una-herramienta-de-modificacion-de-sprites-sprite-hacking-tool","title":"Paso 3 - Agarra un editor hexadecimal o una herramienta de modificaci\u00f3n de sprites (sprite-hacking tool).","text":"Puedes saltarte este paso si es que ya cuentas con uno. Algunos juegos ya cuenta con herramientas de hackeo especializadas. Algunas de ellas se encuentran aqu\u00ed disponibles en github, y tambi\u00e9n hay bastantes de ellas en ROMHacking.net, que esto aria tu trabajo aun mas f\u00e1cil. Vas a necesitar un editor mas gen\u00e9rico si el juego no cuenta con una herramienta. La edici\u00f3n tiene que ser lo suficiente para que se puede crear un nuevo MD5sum para el archivo del ROM. Herramientas para editar tu ROM pueden ser encontradas en la Pagina de Utilidades de ROMHacking.net's.
Aqu\u00ed hay algunas b\u00fasquedas que te podr\u00edan resultar \u00fatiles:
Por favor \u00e9chale a la sesi\u00f3n de Parches Cosm\u00e9ticos para Sets Bonus de los lineamientos del Linkeado de ROMs para mas informaci\u00f3n.
ESTE PASO REQUIERE PEDIR APROBACI\u00d3N ANTES DE SEGUIR AVANZANDO
Es algo integro que solicites una aprobaci\u00f3n antes de agregar/linkear cualquier cosa a RetroAchievements. Es tu trabajo y es parte del C\u00f3digo de Conducta del Desarrollador de RetroAchievements.
"},{"location":"Bonus-Sets-es/#paso-5-agrega-el-md5-al-nuevo-set-bonus","title":"Paso 5 - Agrega el MD5 al nuevo Set Bonus","text":"Despu\u00e9s de recibir la aprobaci\u00f3n, carga tu ROM parcheado en un Emulador de RA, y sigue las instrucciones de como linkear tu nuevo Set Bonus a tu ROM en el sitio web. Si tu juego produce un MD5 igual al de otro juego, procura hacer mas modificaciones al ROM para que este genere un MD5 nuevo otra vez y lo cargue como un juego nuevo.
"},{"location":"Bonus-Sets-es/#paso-6-modifica-la-pagina-de-detalles-del-set","title":"Paso 6 - Modifica la pagina de detalles del set","text":"Navega por tu perfil de usuario y procede a la nueva pagina de tu juego que deber\u00eda de aparecer ahora. Puedes editar los detalles del juego, capturas de pantalla, e informaci\u00f3n desde el panel de Dev Options en la nueva pagina del set.
PREG\u00daNTALE A UN ADMINISTRADOR PARA QUE RESE\u00d1E TU TRABAJO DESPU\u00c9S QUE HUBIERAS COMPLETADO ESTE PASO
"},{"location":"Bonus-Sets-es/#paso-7-crea-logros-para-el-set-anuncialo-y-lanzalo","title":"Paso 7 - Crea logros para el set, an\u00fancialo y l\u00e1nzalo.","text":"Ahora ya puedes empezar a desarrollar logros para tu Set Bonus. Cuando termines, anuncia tu set e incluye tu parche IPS en el tema del foro despu\u00e9s de a ver pasado los logros a Core. Actualmente los miembros necesitan aplicar tu parche al juego original as\u00ed como lo hiciste en tus pruebas para que ellos puedan jugar tu Set Bonus. No esta permitido lanzar el ROM parcheado en si. Tu tienes que SOLAMENTE lanzar el Parche IPS para cumplir con los lineamientos del sitio de no compartir p\u00fablicamente material con derechos de autor/copyright en RetroAchievements).
"},{"location":"Bonus-Sets-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-21 11:01] eldexterr:
Updated Bonus Sets es (markdown)[2019-05-21 11:00] eldexterr:
Created Bonus Sets es (markdown)En este ejemplo veras como evitar el problema de que un contador se incremente dos veces en el mismo frame combinando un SubSource y AddHits.
En la libreria del Game Boy Advance hay un plataformero Navide\u00f1o conocido como Santa Claus Jr. Advance. Hay algunos logros de coleccionar varios dulces en cada uno de los Stages Bonus.
Esos logros se suponen que tendrian que ser algo simple, como esto:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xDULCES != Delta 0xDULCES (N) 2 ResetIf 0xSTAGE != Value 0xBONUSEsto se traducir\u00eda \"checa si el contador de dulces cambio N
veces en el stage bonus\".
Nota: estamos utilizando 0xDULCES != Delta 0xDULCES
(utilizando !=
, y no >
) porque cuando el jugador cuenta con 99 dulces y colecciona uno mas el contador se va a cero.
Sin embargo, hay un aspecto en este juego (y muchos otros) donde si el jugador colecciona 2 dulces a la vez el contador va a aumentar por 2 en el mismo frame. Cuando pasa el contador de hits es aumentado por uno mientras que el contador de dulces aumento en dos. Esto, obviamente, arruina la l\u00f3gica que utilizamos arriba.
En manera que podamos evitar este problema tenemos que utilizar la t\u00e9cnica de utilizar SubSource
para contar incrementos espec\u00edficos combinado con una AddHits
flag.
Echemos un vistazo a la l\u00f3gica del logro y as\u00ed poder ver la explicaci\u00f3n:
Variables (Addresses)
0x80dc
: Contador de Dulces.0x809c
: ID de Stage.As\u00ed que ahora la estructura de logro seria de esta manera:
Condiciones
Junto con la condici\u00f3n 2, es un truco para ver si 0xDULCES - Delta 0xDULCES = 2
. En otras palabras, el contador de dulces fue incrementado por dos.
Utilizando a la vez con la condici\u00f3n 1 (como se explica arriba) y 3. Como se explica en su respectiva pagina, cuando la condici\u00f3n de AddHits
es verdadera, el hit counter en la siguiente condici\u00f3n es incrementado. Entonces , en nuestro ejemplo de aqu\u00ed, cuando condici\u00f3n 2 es verdadera, el hitcounter en condici\u00f3n 3 es incrementado.
Contador cuando el contador de dulces cambia.
Resetear contador si no se encuentra en un Stage Bonus.
Todas esta condiciones se pueden traducir como \"mientras est\u00e9s en un stage bonus, salta el logro si el contador de dulces cambia 99 veces, y si el contador de dulces es incrementado por 2 en el mismo frame, a\u00f1ade un cambio extra al contador de dulces.\"
"},{"location":"Circumvent-the-Problem-of-a-Counter-Incrementing-Twice-in-the-Same-Frame-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:33] meleu:
fix broken links[2019-04-16 11:15] eldexterr:
ES title changed to esIn this example you'll see how to circumvent the problem of a counter incrementing twice in the same frame by combining SubSource and AddHits.
In the Game Boy Advance library there's a Christmas platformer game called Santa Claus Jr. Advance. There are some achievements for collecting all candy canes in each one of the bonus stages.
Such achievements were supposed to be quite simple, like this:
ID Special? Memory Cmp Type Mem/Val Hits 1 0xCANDIES != Delta 0xCANDIES (N) 2 ResetIf 0xSTAGE != Value 0xBONUSThis translates into \"check if the candy canes counter changed N
times in the bonus stage\".
Note: we're using 0xCANDIES != Delta 0xCANDIES
(using !=
, and not >
) cause when the player has 99 candies and collect one more, the counter goes to zero.
However, there is an aspect in this game (and many others) where if the player collect 2 candy canes simultaneously the counter is increased by 2 in the same frame. When it happens the hit counter is increased by one while the candy counter is increased by two. This, obviously, ruins the logic used above.
In order to circumvent this issue we have to use that technique of using SubSource
to count specific increments combined with the AddHits
flag.
Let's take a look at the achievement logic and then we'll see the explanation:
Addresses
0x80dc
: Candy Canes counter.0x809c
: Stage ID.So now the structure of the achievement is going to be like this:
Conditions
Together with condition 2, is a trick used to check if 0xCANDIES - Delta 0xCANDIES = 2
. In other words, the candy counter was incremented by two.
Used together with condition 1 (as explained above) and 3. As explained in its respective page, when the AddHits
condition is true, the hit counter in the next condition is incremented. Therefore, in our example here, when condition 2 is true, the hitcounter in condition 3 is incremented.
Count when the candy counter changes.
Reset the counter if not in the Bonus stage.
All these conditions could be translated as \"while in the bonus stage, trigger the achievement if the candy counter changes 99 times, and if the candy counter is incremented by 2 in the same frame, count an extra change in the candy counter.\"
So, now it is 100% solved, right? Well, actually, almost. There is still a very minor exception. Remember it was said before that !=
was being used instead of >
because when the player has 99 candies and collect one more, the counter goes to zero
?
This means that, if we get two canes in the same frame (which is already rare), there's a very small possibility that this change will be from 98 -> 00
or from 99 -> 01
. In these only two cases our code won't work, because 00 - 98
is not 2, it is -98
. Same thing for 01 - 99
, it is not 2, it is also -98
.
Despite being a very unlikely possibility, we should treat this case too. So we're gonna add two more requirements to the code, and it will end up looking like this:
It is the same as before, with the only changes being lines 3 and 4, which represents an extra SubSource + Add Hits
to check if 0xCANDIES - Delta 0xCANDIES = -98
, only to take care of this very minor exception just mentioned.
And now it is solved!
"},{"location":"Claims-System/","title":"Claims System","text":"To make a claim, go to the Developer panel of a game entry, which will contain one of the following links: - Make Claim - Make Claim and Forum Topic (Junior Developers require a forum topic to be made on their behalf) - Make Revision Claim - Make Collaboration Claim - Make Collaboration Revision Claim
"},{"location":"Claims-System/#dropping-a-claim","title":"Dropping a Claim","text":"Dropping a claim is as simple as selecting the \"Drop Claim\" link in the Developer panel.
"},{"location":"Claims-System/#extending-a-claim","title":"Extending a Claim","text":"Developer Compliance
for subsequent renewals. The report should provide an overview of the development situation and include details such as:To mark a claim as complete, you can select the \"Complete Claim\" link in the Developer panel. Doing so will free the claim slot and notify users who have a set request for the game, via email, that new achievements have been added for that game.
When selecting \"Complete Claim\" within 24 hours of making the claim, a prompt will inform the developer that they should have approval before marking it as complete. Approval must be from someone on the Developer Compliance team.
"},{"location":"Claims-System/#collaboration-claims","title":"Collaboration Claims","text":"Collaboration claims are made when there is already a primary claim on a game and acts as a \"child\" of said primary claim. It will inherit the primary claim's expiration date. Extending or completing a collaboration claim can only be done by the developer with the primary claim.
There are several ways to view claim information: - Every game entry will show if it has a claim or not - A developer's profile will show which claims they currently have active. - The site navbar contains New Sets & Revisions
, Sets in Progress
, My Claims
, and Expiring Claims
. - The set request list will show if a game has an active claim.
Each developer is allowed four primary claims. Junior developers are allowed one primary claim. However, the following claim types can be marked as free claims and therefore will not take up a slot: - Claims made specifically for console rollouts. This is due to the unpredictable nature of rollouts as well as a way to reduce stress/pressure on developers. - If a developer makes a revision or subset claim, the claim can be set to \"Own Revision\" depending on criteria I haven't copy-pasted into this section yet. - Collaboration claims.
"},{"location":"Claims-System/#important-notes","title":"Important Notes","text":"Last 10 changes on this page:
[2024-03-12 07:43] The Mystical One:
Fixed confusion between when a mandatory detailed progress report is needed as the two metrics given were not equivalent before.[2024-02-07 16:40] The Mystical One:
Updated Claims System (markdown)[2024-02-02 13:08] The Mystical One:
Updated emphasis on new forum post.[2024-02-02 13:07] The Mystical One:
Removed a redundancy where the 'one month' cooldown unnecessarily appeared twice.[2024-01-26 09:08] The Mystical One:
Updated Claims System (markdown)[2024-01-26 08:56] The Mystical One:
Added new claims enforcement rules, including requirement to comment on progress prior to extending a claim, and clearer guidelines for what to do at the one-year mark.[2023-06-05 18:08] televandalist:
Typos[2023-06-04 19:37] televandalist:
Added the notes under the section for collaboration claims. These were taken from the DevCoC and slightly reworded.[2023-06-03 04:56] televandalist:
Updated Claims System (markdown)[2023-06-03 04:39] televandalist:
Updated Claim System (markdown)Code notes are a vital part of achievement development. They provide valuable context to memory addresses used in achievement creation. Good code notes can make future achievement troubleshooting a breeze for developers, while bad code notes can make it a nightmare. This guide will help developers create clear, helpful, and consistent code notes that can be used by any developer looking at their sets in the future.
"},{"location":"Code-Notes/#how-to-make-code-notes","title":"How to Make Code Notes","text":"Code notes are made by the developer in the Memory Inspector as they are RAM digging a game. This allows for easily seeing where sizes of notable addresses as well as areas in the RAM that hold important values. Code notes can be added, deleted and updated from the Memory Inspector. Code notes that are already created can be updated or deleted from the games' \"Code Notes\" page on the website. This is intended for quick fixes to notes and not intended as the main form of code note modification.
There are multiple ways to specify a memory address that will be recognized by the Memory Inspector highlighting. Any code note that does not specify a valid size will cause the Memory Inspector to highlight the byte the note is for. Any number of bit and byte lengths will be recognized by the Memory Inspector highlighting. Many developers will enclose the address size in square brackets ([]
) to make it more noticeable in the full note.
[Lower4]
, [Upper4]
[8-bit]
, [16-bit]
, [24-bit BE]
, [32-bit]
, [Float]
[1 byte]
, [2 bytes]
, [4 bytes]
, [8-bytes]
[128 bits]
, [78 bytes]
, [428 bits]
, [1024 bytes]
Very often you will run into an address that uses each bit within the address to store data. Noting the individual bits won't affect any Memory Inspector highlighting, though each bit should be properly noted in the code note. Some people choose to mark the size for these as [Bitfield] or [Bitflags] instead of [8-Bit].
"},{"location":"Code-Notes/#adding-values-and-labels","title":"Adding values and labels.","text":"When you need to label specific values or bit meanings in a note, here are some things to keep in mind.
0x
so that it is clear the value is in hex. This is especially important if none of your values use characters A-F.(Values below are decimal)
Simple address types cover the very basic address that are needed for nearly every achievement set and are often the some of first addresses noted when RAM digging. Often easily described in a line or two. These may include health, lives, in game currency, level, X/Y positions, etc...
"},{"location":"Code-Notes/#good-examples","title":"Good Examples","text":"Good examples here include size, description, and different values or affects on the values.
[8-bit] Difficulty\n0x01 - Easy\n0x02 - Normal\n0x03 - Hard\n
[16-bit] Player Health\nMax health is 0x1200, each hit reduces it by 0x8\n
"},{"location":"Code-Notes/#bad-examples","title":"Bad Examples","text":"Difficulty\n
health\n
"},{"location":"Code-Notes/#map-or-screen-id-types","title":"Map or Screen ID Types","text":"Map and Screen ID type code notes are very often used to determine location within the game and commonly used in level completion or item collection achievements.
"},{"location":"Code-Notes/#good-example","title":"Good Example","text":"Good examples here include the various values that the address can take throughout the game. All addresses used in the achievement logic are noted in detail.
[8-bit] Screen ID\nChapter I\n0x36 - Initial Screen with woman's face\n0x0b - Taxi ride opening scene\n0x07 - Outside of apartment (Day 1)\n0x04 - Apartment main hall (Day 1)\n0x16 - Apartment main hall (Day 2)\n\nChapter II\n0x37 - Driving intro cutscene\n0x2b - Outside of Inn (Day 1)\n0x2c - Inn main room (Day 1)\n
"},{"location":"Code-Notes/#bad-example","title":"Bad Example","text":"screen id\n
"},{"location":"Code-Notes/#scores","title":"Scores","text":"There are numerous way a game can store the players scores with memory, as such there are numerous ways to write the score code note out.
"},{"location":"Code-Notes/#good-examples_1","title":"Good Examples","text":"Good examples here will specify the size, which digits of the score are being represented, how the on screen score is calculated from the value in memory, Binary Coded Decimal (BCD) notation if applicable, as well any any other important details.
[1 byte] 1P display score, digits 0000XX00 in BCD\n
[16bit][DEC] P2 Score XXXX0000\n
Score [24-Bit BE BCD] (Determines Rank)\n0-9=Pauper\n0-99=Peasant\n100-999=Prosperous\n1000+=Professional\n
"},{"location":"Code-Notes/#bad-example_1","title":"Bad Example","text":"Player 1 score\n
"},{"location":"Code-Notes/#bits","title":"Bits","text":"It's very common to run into games that need to store event or item flags. Often these will be stored as individual bits rather than taking up an entire byte per flag. It's assumed that a bit value of 0 is off/no/false, if this is not the case then that should be noted.
"},{"location":"Code-Notes/#good-examples_2","title":"Good Examples","text":"Good examples here will specify each bit as well as what they represent.
[Bitflags] Requests completed\nBit1 = No. 01 - Retrieve 1 Beetle Shell.\nBit2 = No. 02 - Retrieve the first old document.\nBit3 = No. 03 - I'd like to sip a Muscle Drink.\nBit4 = No. 04 - Retrieve 3 Old Lanterns.\nBit5 = No. 05 - Retrieve the second old document.\nBit6 = No. 06 - Create Jack Frost with Dia.\nBit7 = No. 07 - Retrieve 1 Lead Metal.\n
Bonuses Unlocked\nbit0 - All Replay Items\nbit1 - Unlimited Ammo (Mission 1)\nbit2 - Silver Bullets (Mission 3)\nbit3 - Bullet Shield (Mission 4)\nbit4 - Rubber Grenades\nbit5 - Men With Hats (Mission 5)\nbit6 - Always Sniper\nbit7 - Achilles Head (Mission 6)\n
[Treasure Flags 03]\nBit0=[Altair - Rebel Hideout] Potion\nBit1=[Fynn - Pub Basement] Scott's Ring\nBit2=[Castle Deist 1F - South Treasure Room] Stun Tome\nBit3=[Castle Deist 1F - South Treasure Room] Stop Tome\nBit4=[Castle Deist 1F - South Treasure Room] Curse Tome\nBit5=[Cave of Mysidia B4 - Treasure Room] Bell of Silence\nBit6=[Castle Deist 1F] Phoenix Down\nBit7=[Castle Deist 1F - NW Treasure Room] Gold Needle\n
"},{"location":"Code-Notes/#bad-example_2","title":"Bad Example","text":"The bits here represent the unlocked bonuses\n
"},{"location":"Code-Notes/#pointers","title":"Pointers","text":"Pointers are more commonly found in newer consoles and their notes typically include information for various addresses that the pointer can point to. The pointer notes will typically include numerous offset values to the important addresses used by the developer.
+
before the offset value.0x
to indicate a hexadecimal offset value; the memory inspector will treat it as a decimal offset if this is not present.Good examples here will include various address offsets, each of which including details and size of the address being pointed to.
Pointer to P1 Data [16-Bit]\n+0x68 P1 Character ID [8-Bit]\n+0xba P1 Health [8-Bit]\n+0xc4 P1 Move ID [16-Bit]\n
[32-bit] Data Pointer\n+0x638 | Pointer to pointer to smells pointer\n++0x6d0 | Pointer to woofs\n+++0xb8 | Total Woofs [32-bit]\n+++0x380 | Sniff Level [32-bit]\n0x00 = Sniff Apprentice\n0x01 = Sniff Artisan\n0x02 = Sniff Expert\n0x03 = Sniff Master\n0x04 = Grand Sniff Master\n+++0x3c8 | Pointer to Racing Data [32-bit]\n++++0x15a8 | Checkpoint Count [32-bit]\n++++0x15ac | Frame Timer [32-bit]\n++0x13d8 | Pointer to smells pointer\n+++0x04 | Total Smells [32-bit]\n
*US* Pointer [32-bits]\n\n--Player Kratos--\n+0x97898=Health [Float]\n+0x6f570=Combo [32-bits]\n+0x977a0=Coordinates Y [Float]\n+0x977a4=Coordinates Z [Float]\n+0x977a8=Coordinates X [Float]\n\n--Unlockables (Alternative)--\n+0x6f594=Poseidon's Trident [Bit0]\n+0x6f598=Poseidon's Rage [Bit0]\n+0x6f59c=Medusa's Gaze [Bit0]\n+0x6f5a0=Zeus' Fury [Bit0]\n+0x6f5a4=Army of Hades [Bit0]\n+0x6f5a8=Blade of Artemis [Bit0]\n
"},{"location":"Code-Notes/#bad-example_3","title":"Bad Example","text":"Pointer for player information. Includes player data and unlockables.\n
"},{"location":"Code-Notes/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-11 14:08] Andrew Comer:
Updated Code Notes (markdown)[2024-03-11 14:03] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:57] Andrew Comer:
Updated Code Notes (markdown)[2024-03-11 13:53] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:14] Andrew Comer:
Removed WIP header[2024-01-15 13:27] The Mystical One:
Updated Code Notes (markdown)[2024-01-10 07:05] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 16:36] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 16:33] The Mystical One:
Updated Code Notes (markdown)[2024-01-09 15:29] The Mystical One:
Added another score example to replace the one that was removed.This is a list of things that code reviewers usually check when someone submits a set to be reviewed.
"},{"location":"Code-Review-Checklist/#code-notes","title":"Code Notes","text":"0xADDRESS = 1
and ResetIf 0xADDRESS != 1
).>= 100
rather than = 100
.Un ResetIf
y PauseIf
pueden ser aplicados al numero que sea de condiciones Add Hits
, Add Source
, y Sub Source
.
Volviendo al ejemplo del Add Source
de arriba, si un ResetIf
se aplicara a la condicion 2, el logro se reiniciar\u00eda porque 1 + 2 > 0
.
Last 10 changes on this page:
[2019-04-16 15:34] meleu:
fix broken link[2019-04-16 11:13] eldexterr:
ES title changed to esResetIf
and PauseIf
can be applied to a condition following any number of Add Hits
, Add Source
, or Sub Source
conditions.
Going back to the Add Source
example above, if ResetIf
were applied to condition 2, the achievement would reset because 1 + 2 > 0
.
0xM
0xM01234
Bit1 0xN
0xN01234
Bit2 0xO
0xO01234
Bit3 0xP
0xP01234
Bit4 0xQ
0xQ01234
Bit5 0xR
0xR01234
Bit6 0xS
0xS01234
Bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x 01234
24bit 0xW
0xW01234
32bit 0xX
0xX01234
16bit BE 0xI
0xI01234
24bit BE 0xJ
0xJ01234
32bit BE 0xG
0xG01234
BitCount 0xK
0xK01234
Float fF
fF01234
Float BE fB
fB01234
MBF32 fM
fM01234
MBF32 LE fL
fL01234
Double32 fH
fH01234
Double32 BE fI
fI01234
"},{"location":"Condition-Syntax/#prefixes","title":"Prefixes","text":"Modifier Prefix Example Delta d
d0xH1234
Prior p
p0xH1234
BCD b
b0xH1234
Invert ~
~0xH1234
"},{"location":"Condition-Syntax/#logical-flags","title":"Logical Flags","text":"Flag Prefix Example ResetIf R:
R:0xH1234=1
ResetNextIf Z:
Z:0xH1234=1
PauseIf P:
P:0xH1234=1
AndNext N:
N:0xH1234=1
OrNext O:
O:0xH1234=1
AddSource A:
A:0xH1234=1
SubSource B:
B:0xH1234=1
AddHits C:
C:0xH1234=1
SubHits D:
D:0xH1234=1
AddAddress I:
I:0xH1234=1
Measured M:
M:0xH1234=1
Measured% G:
G:0xH1234=1
MeasuredIf Q:
Q:0xH1234=1
Trigger T:
T:0xH1234=1
"},{"location":"Condition-Syntax/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-19 15:03] Jamiras:
add Float BE and Double32[2022-03-05 08:16] Jamiras:
Updated Condition Syntax (markdown)[2022-02-04 17:32] Jamiras:
Created Condition Syntax (markdown)Cuando escavamos en memoria en estas viejas consolas ayuda saber que los creadores originales de estos juegos trabajaron en ellos alguna vez. Si te familiarizas bien en la manera en la que trabaja tu consola favorita entonces hacer un set va a resultar mas sencillo y preciso.
"},{"location":"Console-Specific-Tips-es/#nes-ranes","title":"NES (RANes)","text":""},{"location":"Console-Specific-Tips-es/#duplicado-de-direcciones","title":"Duplicado de Direcciones","text":"Cuando utilices el inspector de memoria para encontrar variables en juegos de NES, va a ver 4 copias de todo lo que encuentres. Si te estas preguntando \"cual deber\u00eda de utilizar?\" o \"deberia probar cada una de ellas?\" no es tan complicado como parece.
Esta es una caracter\u00edstica que el NES le da a los desarrolladores para encontrar mas maneras para buscar en memoria. Porque el NES en si solo tiene 2KB de RAM, el primer resultado (el que va abajo de 0x800) tiene que ser usado para consistencia, y aplicar condiciones adicionales en los otros realmente no hace nada.
Esto tambi\u00e9n aplica para RPS y tablas clasificatorias tambi\u00e9n.
"},{"location":"Console-Specific-Tips-es/#game-boy-ravba","title":"Game Boy (RAVBA)","text":""},{"location":"Console-Specific-Tips-es/#mapa-de-memoria","title":"Mapa de Memoria","text":"Algunos rangos de valores significan diferentes cosas en el contexto del hardware del Game Boy, as\u00ed que tener un mapa de lo que te puede resultar \u00fatil puede ayudar a eliminar esos valores que no sirven. As\u00ed es como se desplaya:
Para mas informaci\u00f3n mira: http://gameboy.mongenel.com/dmg/asmmemmap.html
"},{"location":"Console-Specific-Tips-es/#echo-ram","title":"ECHO RAM","text":"Similar que el NES, algunas variables tal vez se muestren mas de una vez cuando te encuentres buscando en el inspector de memoria. El segundo resultado es lo que se le conoce como ECHO RAM, que es un espejo de la memoria actual. Aunque algunos emuladores tienden a ignorar esta \u00e1rea o a emularla incorrectamente, se recomienda NO utilizarla para nada y siempre utilizar el primer resultado.
El Game Boy tiene 8KB de RAM empezando en 0xC000. La ECHO RAM empieza en 0xE000, as\u00ed que si tus direcciones empiezan con una E vas a tener que remplazar el primer car\u00e1cter que no tenga un cero con una C. Recuerda: C es lo correcto, E es la echo!
"},{"location":"Console-Specific-Tips-es/#gbc","title":"GBC","text":"En el GBC, los 4KB de memoria de 0xD000-0xDFFF son un banco para un bloque de memoria mas grande de 32kb que no es directamente accesible por el procesador. Los Bits 0-2 de 0xFF70 indican cual banco esta cargado en el bloque de memoria 0xD000-0xDFFF. Es una \"funci\u00f3n\" utilizada para expandir el almacenamiento de los ROMs del GBC mientras aun se tiene el soporte para ROMs del GB original.
Cambiar de Banco (cambiar el valor de 0xFF70) provoca que la memoria en el rango 0xD000-0xDFFF se actualice. Esto aparece como un flickering/parpadeando en el Visor de Memoria y provoca que la b\u00fasqueda de memoria sea mas complicada. Si estas escribiendo condiciones dependiendo de la memoria que se encuentra en ese bloque, tambi\u00e9n vas a requerir que 0xFF70 tenga un valor en especifico para asegurarte que estas utilizando el banco correcto. Los 4KB de memoria de 0xC000-0xCFFF no se cambian como el banco y pueden ser utilizados sin preocupaciones sin condiciones adicionales.
No es muy recomendable que utilices estas direcciones en tus logros si es que cuentas con al menos una alternativa para no utilizarnos. Desde Enero del 2018, RALibretro solamente muestra el banco de 0x00 a 0xFF70. RetroArch a estado fluctuando los bancos de memoria, pero algunos valores no funcionan de la misma manera que en RAVisualBoyAdvance. Al menos asta que RetroArch reciba una inspector de memoria, logros que utilicen direcciones en 0xD000-0xDFFF solamente van a funcionar en RAVisualBoyAdvance.
"},{"location":"Console-Specific-Tips-es/#gbgbc-bios","title":"GB/GBC BIOS","text":"RALibRetro y RetroArch cuenta con soporte para el BIOS de GB/GBC, que muestra los logos de \"Nintendo\" y \"GameBoy\" antes de empezar el juego. Esto provee aproximadamente cuatro segundo donde la memoria principal ($C000-$DFFF) aun no a sido inicializada, y podr\u00eda provocar que algunos logros se disparen cuando se cargue el juego por algunos usuarios que tienen el BIOS habilitado.
Para habilitar esta caracter\u00edstica, pon el archivo del bios (de nombre gb_bios.bin
o gbc_bios.bin
) en el folder del directorio del sistema ya sea el de RALibRetro o RetroArch. Cuando empieces el juego, vas a ver los logos de \"Nintendo\" y \"GameBoy\" antes de proceder al juego actual.
Si esto te esta causando problemas, tal vez necesites agregar un poco de l\u00f3gica para prevenir que los logros salten cuando se encuentre el jugador en el BIOS, pero seria preferible que agregues l\u00f3gica del juego si es posible (ej. cuando se muestra una pantalla en especifico).
El c\u00f3digo del BIOS es cargado en $0000-$00FF, as\u00ed que identifica ese pedazo de memoria cuando est\u00e9s en el BIOS y haz que lo ignore tu logro. Por ejemplo, los \u00faltimos cuatro bytes del bloque del BIOS del GBC son 3E 11 E0 50
, asi que podr\u00edas agregar esta condici\u00f3n al logro para prevenir que el logro salte cuando el BIOS se encuentra corriendo.
32-bit 0x00FC != 0x50E0113E\n
Despu\u00e9s de que el BIOS se termina, el bloque es rellenado con puras FF's, y es re-asignado para vectores de interrupci\u00f3n. Para mas detalles, mira Un vistazo a la pantalla de inicio del GameBoy.
NOTA: Los \u00faltimos cuatro bytes del BIOS del GB son 3E 01 E0 50
. As\u00ed que la condici\u00f3n para el BIOS seria:
32-bit 0x00FC != 0x50E0013E\n
"},{"location":"Console-Specific-Tips-es/#nintendo-64-rap64","title":"Nintendo 64 (RAP64)","text":""},{"location":"Console-Specific-Tips-es/#utilizando-codigos-gameshark-para-direcciones","title":"Utilizando c\u00f3digos GameShark para Direcciones","text":"Los c\u00f3digos de GameShark pueden ser un valioso recurso para encontrar direcciones que no puedes o sientes que no las puedes encontrar. Estos cuentan con 12 caracteres por linea y son sencillamente f\u00e1ciles de compilar.
[AA][BBBBBB] [CCCC]
[AA] es el tipo de c\u00f3digo. Esta es una peque\u00f1a instrucci\u00f3n para el GameShark que define que hacer con el siguiente valor. Si entiendes que es lo que hace ese c\u00f3digo GameShark puedes utilizar como ayuda para crear una condici\u00f3n.
Aqu\u00ed est\u00e1n algunos ejemplos: * Paper Mario: HP Infinito:
[80][10F292] [0032]
Cambia el valor de 8-bit en 0x10F292 a 0x32 (50). Entonces esto significa que el HP de Mario es un valor de 8-bit en 0x10F292.
[80][74E77C] [0006]
Cambia el valor de 8-bit en 0x74E77C a 6. Entonces esto significa que el personaje el cual estas utilizando ahora es un valor de 8-bit en 0x74E77C.
[D0][18BAB5] [0020] <- Estamos revisando este
[81][18B9E0] [4200]
Checa si el valor de 8-bit en 0x18BAB5 es igual a 0x20. Esto significa que 0x18BAB5 contiene una variable de presionado de bot\u00f3n y el Bit5 (0x20) corresponde a la L.
Anti-GSC y GameHacking los dos son buenos recursos para encontrar c\u00f3digos de GameShark.
"},{"location":"Console-Specific-Tips-es/#neo-geo","title":"Neo Geo","text":""},{"location":"Console-Specific-Tips-es/#proteccion-obligatoria-del-unibios","title":"Protecci\u00f3n Obligatoria del UniBIOS","text":"UniBIOS permite severas opciones de desarrollador, y tambi\u00e9n accesa a la base de datos de cheats de cada juego. Por eso mismo todos los logros para Neo Geo necesitan estar protegidos de esto. La soluci\u00f3n mas simple para hacer esto es desabilitar el uso del UniBIOS completamente, directamente desde el c\u00f3digo de logro.
Afortunadamente la parte de la data del UniBIOS parece ser reflejada en dos cadenas de direcciones en la RAM: 0x00fe30
y 0x00fe50
. Mientras el UniBIOS este activo 0x00fe30
en 32-bit parece mostrar siempre el mismo valor (para cada uno de los juegos de Neo Geo game) que es 80025632
, y no parece que cambie despu\u00e9s que el ROM ya fue cargado. Para cualquier otro BIOS, el valor siempre es 0, (excepto en el momento en el que la RAM es cargada de nuevo en el programa de diagnostico, despu\u00e9s de haber cargado el ROM).
Para proteger tus logros del uso completo del UniBIOS lo \u00fanico que necesitamos hacer es incluir una simple protecci\u00f3n que se va resetear cuando el valor de 32-bit en 0x00fe30
no sea igual a 0
. Esto adicionalmente protege, al logro de que salte durante el proceso de diagnostico de RAM.
As\u00ed es como se deber\u00eda de ver la protecci\u00f3n (seleccionada en el Editor de Logros):
As\u00ed es como se ve la misma regi\u00f3n de la RAM cuando se utilizan otros BIOS (utilizando MSV):
"},{"location":"Console-Specific-Tips-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-23 10:07] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-23 09:59] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-23 09:59] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-22 14:57] eldexterr:
Updated Console Specific Tips es (markdown)[2019-05-22 11:42] eldexterr:
Created Console Specific Tips es (markdown)Link para texto em ingl\u00eas: Console Specific Tips
Ao escavar a mem\u00f3ria desses antigos consoles, ajuda saber em primeiro lugar com o que os criadores originais dos jogos estavam trabalhando. Se voc\u00ea se familiarizar com as peculiaridades do seu console favorito, a configura\u00e7\u00e3o ser\u00e1 mais f\u00e1cil e precisa.
"},{"location":"Console-Specific-Tips-pt_BR/#nes-ranes","title":"NES (RANes)","text":""},{"location":"Console-Specific-Tips-pt_BR/#game-boy-ravba","title":"Game Boy (RAVBA)","text":""},{"location":"Console-Specific-Tips-pt_BR/#mapa-de-memoria","title":"Mapa de mem\u00f3ria","text":"Determinadas variedades de valores significam coisas diferentes no contexto do hardware do Game Boy, portanto, ter um mapa pode ajud\u00e1-lo a eliminar endere\u00e7os in\u00fateis. Aqui est\u00e1 o resumo:
Para mais informa\u00e7\u00f5es, consulte: http://gameboy.mongenel.com/dmg/asmmemmap.html texto em ingl\u00eas
Similarmente ao NES, certas vari\u00e1veis podem aparecer duas vezes ao pesquisar no Memory Inspector. O segundo resultado est\u00e1 no que \u00e9 chamado de RAM ECHO, que \u00e9 um espelho da mem\u00f3ria real. Como alguns emuladores tendem a ignorar essa \u00e1rea ou emular incorretamente, recomenda-se N\u00c3O us\u00e1-la e sempre usar o primeiro resultado.
O Game Boy tem 4KB de RAM a partir de 0xC000. ECHO RAM come\u00e7a em 0xE000, ent\u00e3o se o seu endere\u00e7o come\u00e7ar com um E voc\u00ea vai querer substituir o primeiro caractere diferente de zero por um C. Lembre-se: C est\u00e1 correto, E \u00e9 echo!
"},{"location":"Console-Specific-Tips-pt_BR/#nintendo-64-rap64","title":"Nintendo 64 (RAP64)","text":""},{"location":"Console-Specific-Tips-pt_BR/#usando-codigos-gameshark-para-enderecos","title":"Usando c\u00f3digos GameShark para endere\u00e7os","text":"Os c\u00f3digos GameShark podem ser um recurso valioso para encontrar endere\u00e7os que voc\u00ea n\u00e3o pode ou n\u00e3o deseja encontrar. Eles t\u00eam 12 caracteres por linha e s\u00e3o f\u00e1ceis de analisar.
[AA] [BBBBBB] [CCCC]
[AA] \u00e9 o tipo de c\u00f3digo. Esta \u00e9 uma breve instru\u00e7\u00e3o para o GameShark que define o que fazer com o pr\u00f3ximo valor. Se voc\u00ea entende o c\u00f3digo do GameShark, voc\u00ea pode us\u00e1-lo para ajudar na cria\u00e7\u00e3o de condi\u00e7\u00f5es.
aqui est\u00e3o alguns exemplos:
[80] [10F292] [0032]
Define o valor de 8 bits em 0x10F292 para 0x32 (50). Ent\u00e3o, isso significa que o HP de Mario \u00e9 um valor de 8 bits em 0x10F292.
[80][74E77C] [0006]
Define o valor de 8 bits em 0x74E77C para 6. Portanto, isso significa que o caractere que voc\u00ea est\u00e1 jogando \u00e9 um valor de 8 bits em 0x74E77C.
[D0][18BAB5] [0020] <- Looking at this one
[81][18B9E0] [4200]
Verifica se o valor de 8 bits em 0x18BAB5 \u00e9 igual a 0x20. Isso significa que 0x18BAB5 cont\u00e9m uma vari\u00e1vel de pressionamento de bot\u00e3o e Bit5 (0x20) corresponde a L.
Anti-GSC e GameHacking ambos s\u00e3o bons recursos para encontrar c\u00f3digos de GameShark.
"},{"location":"Console-Specific-Tips-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-10-11 00:47] CoolCanuck:
https[2018-03-29 18:29] KingDice001:
Updated Console Specific Tips pt_BR (markdown)[2018-03-28 21:13] 7Mogami7:
Updated Console Specific Tips pt_BR (markdown)[2018-03-28 20:45] 7Mogami7:
Created Console Specific Tips pt_BR (markdown)When excavating the memory of these old consoles it helps to know what the original creators of the games were working with in the first place. If you familiarize yourself with the quirks of your favorite console then set making will be easier and more accurate.
When using the memory inspector to find variables for NES games, there will be 4 copies of everything you find. If you're wondering \"which one do I use?\" or \"should I check for all of them?\" it's not as complicated as it seems.
This is a feature of the NES that gave developers more ways of looking at memory. Because the NES itself only has 2KB of RAM, the first result (the one below 0x800) should be used for consistency, and applying additional conditions on the others will do nothing.
This applies to RPS and leaderboards as well.
"},{"location":"Console-Specific-Tips/#game-boy","title":"Game Boy","text":""},{"location":"Console-Specific-Tips/#memory-map","title":"Memory Map","text":"Certain ranges of values mean different things in the context of the Game Boy hardware, so having a map of what's where can help you with eliminating useless addresses. Here's the lowdown:
For more info see: http://gameboy.mongenel.com/dmg/asmmemmap.html
"},{"location":"Console-Specific-Tips/#echo-ram","title":"ECHO RAM","text":"Similarly to the NES, certain variables may show up twice when searching in the Memory Inspector. The second result is in what's called the ECHO RAM, which is a mirror of the actual memory. Since some emulators tend to ignore this area or emulate it incorrectly, it's recommended to NOT use it at all and always use the first result.
The Game Boy has 8KB of RAM starting at 0xC000. ECHO RAM starts at 0xE000, so if your address begins with an E you'll want to replace the first non-zero character with a C. Remember: C is correct, E is echo!
"},{"location":"Console-Specific-Tips/#gbc","title":"GBC","text":"On the GBC, the 4KB of memory from 0xD000-0xDFFF is a bank from a larger 32KB memory block not directly accessible by the processor. Bits 0-2 of 0xFF70 indicate which bank is loaded into the 0xD000-0xDFFF memory block. It's a \"feature\" used to expand the storage available to GBC ROMs while still supporting GB ROMs.
Bank switching (changing the value of 0xFF70) causes the memory in the 0xD000-0xDFFF range to update. This appears as flickering in the Memory Viewer and makes tracking down values in that memory range difficult. If you are writing conditions dependent on memory in that block, you should also require that 0xFF70 have a specific value to ensure you are looking at the correct bank. The 4KB of memory from 0xC000-0xCFFF is not bank-switched and can be used safely without additional conditions.
It is not advisable to use these addresses for achievements if there is any alternative to doing so. As of January 2018, RALibretro will only display bank 0x00 at 0xFF70. RetroArch has fluctuating memory banks, but the various addresses do not function in the same manner as RAVisualBoyAdvance. At least until RetroArch receives a memory inspector, achievements using addresses from 0xD000-0xDFFF will only work within RAVisualBoyAdvance.
"},{"location":"Console-Specific-Tips/#gb-and-gbc-bios","title":"GB and GBC BIOS","text":"RALibRetro and RetroArch support the GB/GBC BIOS, which shows the \"Nintendo\" and \"GameBoy\" logo before starting the game. This provides approximately four seconds where the main memory ($C000-$DFFF) hasn't been initialized and can't be trusted, and may cause achievements to trigger while loading the game for a subset of users who have the BIOS enabled.
To enable this feature, put the bios file (named gb_bios.bin
or gbc_bios.bin
) into the system directory of either RALibRetro or RetroArch. When you start the game, you will see the \"Nintendo\" and \"GameBoy\" logos before proceeding into the actual game.
If this is causing you problems, you may need to add logic to prevent the achievements from triggering while the BIOS is executing, but it would be preferable to use in-game logic if possible (i.e. a specific screen is being displayed).
The BIOS code is loaded from $0000-$00FF, so identify some chunk of that memory that's unique while the BIOS is running and ignore it. For example, the last four bytes of the GBC BIOS block are 3E 11 E0 50
, so you could add this condition to the achievement to prevent it from triggering while the BIOS is running.
32-bit 0x00FC != 0x50E0113E\n
After the BIOS completes, the block is blanked out with FF's, and repurposed for interrupt vectors. For more detail, see A Look at the GameBoy bootstrap.
NOTE: The last four bytes of the GB BIOS are 3E 01 E0 50
. So the GB condition would be:
32-bit 0x00FC != 0x50E0013E\n
"},{"location":"Console-Specific-Tips/#game-boy-advance","title":"Game Boy Advance","text":""},{"location":"Console-Specific-Tips/#gba-memory-map","title":"GBA Memory Map","text":"Name Physical Address Range Virtual Address Range Offset (Virtual to Physical) On-chip Working RAM (WRAMC) 0x00000000 - 0x00007fff 0x03000000 - 0x03007fff -0x03000000 On-board Working RAM (WRAMB) 0x00008000 - 0x00047fff 0x02000000 - 0x0203ffff -0x01ff8000 Game Pak SRAM (SRAM) 0x00048000 - 0x00057fff 0x0e000000 - 0x0e00ffff -0x0dfb8000"},{"location":"Console-Specific-Tips/#nintendo-64","title":"Nintendo 64","text":""},{"location":"Console-Specific-Tips/#using-gameshark-codes-for-addresses","title":"Using GameShark Codes for Addresses","text":"GameShark codes can be a valuable resource for finding addresses you can't or don't feel like finding. They have 12 characters per line and are fairly easy to parse.
[AA][BBBBBB] [CCCC]
[AA] is the codetype. This is a short instruction to the GameShark that defines what to do with the next value. If you understand what the GameShark code does you can use it to help with condition-making.
Here are some examples: * Paper Mario: Infinite HP:
[80][10F292] [0032]
Sets the 8-bit value at 0x10F292 to 0x32 (50). So this means Mario's HP is an 8-bit value at 0x10F292.
[80][74E77C] [0006]
Sets the 8-bit value at 0x74E77C to 6. So this means the character you're playing as is an 8-bit value at 0x74E77C.
[D0][18BAB5] [0020] <- Looking at this one
[81][18B9E0] [4200]
Checks if the 8-bit value at 0x18BAB5 is equal to 0x20. This means 0x18BAB5 contains a button press variable and Bit5 (0x20) corresponds to L.
Anti-GSC and GameHacking are both good resources for finding GameShark codes.
"},{"location":"Console-Specific-Tips/#nintendo-ds","title":"Nintendo DS","text":"Pointers always start with a 0x02
. For example, a pointer pointing directly to 0x13f944
will be 0x0213f944
.
UniBIOS allows several debugging options, and also access the database of individual cheats for every game. Therefore all achievements for Neo Geo need to be protected from abusing it. The simpliest solution here is disallowing UniBIOS usage completely, directly from the level of achievement code.
Fortunately part of UniBIOS data seems to be reflected in two address strings in the RAM: 0x00fe30
and 0x00fe50
. While UniBIOS is active 0x00fe30
in 32-bit size seems to always brings the same value (for every Neo Geo game) which is 80025632
, and it doesn't seem to change after the ROM was loaded. For any other BIOS, the value is always 0, (except for the moment the RAM is overloaded by the diagnostic program, after the ROM was loaded).
To protect achievements from using UniBIOS all we need to do is to include a simple protection which will reset when 0x00fe30
in 32-bit size is not equal to 0
. This additionally, eventually protect the achievement from unlocking during RAM diagnostic process.
Here is how the protection should look alike (selected in the Achievement Editor):
Here is how the same RAM region looks when other BIOS are used (here MSV):
"},{"location":"Console-Specific-Tips/#playstation","title":"PlayStation","text":"NOTE: If a core doesn't require a BIOS, this memory may not be initialized.
The RAM from $0000-$FFFF is reserved for the kernel. The boot executable name appears to reliably be placed at $9E18 AND $B8B0. The boot executable name almost always contains the disc serial, which is unique per region, so this can often be used to determine which version of a game the player is using.
Spyro the Dragon SCUS_942.28\n\n9E18 5C 53 43 55 53 5F 39 34 32 2E 32 38 3B 31\n \\ S C U S _ 9 4 2 . 2 8 ; 1\n\nB8B0 63 64 72 6F 6D 3A 5C 53 43 55 53 5F 39 34 32 2E 32 38 3B 31\n c d r o m : \\ S C U S _ 9 4 2 . 2 8 ; 1\n
"},{"location":"Console-Specific-Tips/#playstation-portable","title":"PlayStation Portable","text":"When working with PSP make sure to check if your game has any DLC as this form of content is able to be accessed by players without altered saves or patched versions of the game and will need to be accounted for and in some cases protected against if it provides advantages that you don't want players to exploit.
"},{"location":"Console-Specific-Tips/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-02-26 13:40] Biendeo:
Added a memory map reference for the GBA.[2023-06-06 10:58] televandalist:
Added ToC[2023-05-30 01:46] Riley Nielsen:
Add info about Nintendo DS pointers[2023-05-04 11:44] The Mystical One:
Added information about Nintendo DSi's DSi Mode String.[2023-04-14 11:24] The Mystical One:
Adjusted the miscellaneous GB section because the upper end of that range is okay to use (and some game devs put some data only there).[2023-03-24 20:29] LiquifiedSnow:
Updated Console Specific Tips (markdown)[2023-03-04 14:25] televandalist:
Updated Console Specific Tips (markdown)[2023-03-04 13:58] televandalist:
Added note about US BIOS for PSX Beetle[2020-04-25 09:30] Jamiras:
add note about disc serial for PSX games[2019-05-13 22:03] Jamiras:
small difference in gb vs gbc biosResumiendo las cosas:
La diferencia entre RAwiki y RAdocs es explicada en Como funciona la documentaci\u00f3n de RA.
"},{"location":"Contributing-with-the-docs-es/#markdown","title":"Markdown","text":"Markdown es un lenguaje de marcado extremadamente ligero y f\u00e1cil de aprender con una sintaxis de formateado de texto simple. Para contribuir en nuestro proyecto tienes que m\u00ednimo conocer los b\u00e1sicos de markdown. Aqui hay una buena pagina de referencia: http://commonmark.org/help/, y aqu\u00ed puedes probar 10 minutos del tutorial.
Ademas, esta wiki necesita ser escrita en cierto formato para que as\u00ed se puedan convertir en las bonitas paginas est\u00e1ticas de ya conoces. Esto es debido a que utilizamos mkdocs) y este utiliza el markdown de python y github utiliza el markdown de github, entonces hay algunos peque\u00f1os problemas de formato que se tienen que tomar en cuenta.
"},{"location":"Contributing-with-the-docs-es/#encabezados","title":"Encabezados","text":"Los t\u00edtulos (definidos por un #
) necesitan seguir una progresi\u00f3n natural de la jerarqu\u00eda del contenido de la pagina. Pero tu NO PUEDES dos encabezados de titulo (esos que tienen solamente un s\u00edmbolo de #
). De otra manera no se mostraran en la tabla de contenidos a la derecha de la pagina
Ej.
# Titulo\n## Encabezado principal uno\n### Sub Encabezado uno\n### Sub Encabezado dos\n## Encabezado Principal dos\n
etc.
"},{"location":"Contributing-with-the-docs-es/#enlaces","title":"Enlaces","text":"Los enlaces tienen que seguir la siguiente sintaxis
[Enlace](ruta del enlace.md)\n
Nota: Si este es un enlace a otra pagina de la wiki esto se hace con una ruta relativa:
[Tips y Trucos](Tips-and-Tricks-es.md)\n
NO utilices el URL completo cuando est\u00e9s linkeando a otra pagina de la wiki, como esto (si, este es un ejemplo de lo que NO tienes que llegar a hacer):
[Tips y Trucos](https://github.com/RetroAchievements/docs/wiki/Tips-and-Tricks-es)\n
"},{"location":"Contributing-with-the-docs-es/#imagenes","title":"Im\u00e1genes","text":"Enlaces para im\u00e1genes tienen que seguir la misma sintaxis que el ejemplo de abajo:
![Imagen](http://url/a.png) \n
Nota:: Si quieres llegar a almacenar im\u00e1genes para este proyecto de documentaci\u00f3n, puedes publicarlas en este tema de aqu\u00ed y utilizar el hack de almacenamiento de im\u00e1genes de github.
"},{"location":"Contributing-with-the-docs-es/#tablas","title":"Tablas","text":"Una tabla simple se mira de esta manera:
Primer Encabezado | Segundo Encabezado | Tercer Encabezado\n--------------------- | ---------------------- | ---------------------\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\n
Y se deber\u00eda de renderizar de esta manera:
Primer Encabezado Segundo Encabezado Tercer Encabezado Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la CeldaPuedes especificar una formaci\u00f3n en especifico por cada columna agregando dos puntos a las lineas del separador:
Primer Encabezado | Segundo Encabezado | Tercer Encabezado\n:--------------------- | :----------------------: | ---------------------:\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\nContenido de la Celda | Contenido de la Celda | Contenido de la Celda\n
Resultado:
Primer Encabezado Segundo Encabezado Tercer Encabezado Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda Contenido de la Celda"},{"location":"Contributing-with-the-docs-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 13:43] eldexterr:
Created Contributing with the docs es (markdown)The RetroAchievements Documentation is divided into two parts:
The wiki is where these documents are created and edited. Anyone (with a github account) is able to edit the wiki's content. Then, if you have something to share, please edit the wiki!
The RetroAchievements docs website has (almost) the same content as the wiki, but with a more pleasant look. The content of this website is generated by its maintainers using the wiki's content as input.
When a change is made in the wiki this change is NOT instantaneously reflected in the docs. The conversion is performed by a maintainer from time to time.
"},{"location":"Contributing-with-the-docs/#markdown-caveats","title":"Markdown caveats","text":"Markdown is a lightweight and extremely easy to learn markup language with plain text formatting syntax. In order to contribute in our project you must know at least the basics of markdown. Here is a good one-page reference: http://commonmark.org/help/, and here you can try a 10 minutes tutorial.
Moreover, this wiki needs to be written in a certain format in order to convert cleanly to the pretty static pages. It's because we use mkdocs) and it uses python markdown and github uses github flavoured markdown, so there are some minor issues of formatting that will need to be addressed.
"},{"location":"Contributing-with-the-docs/#headings","title":"Headings","text":"The headings (defined by #
) should follow a natural progression of the hierarchy of the page contents. But you CANNOT have two title headings (those with only one #
symbol). Otherwise they won't show up on the table of contents on the right side of the page
E.G.
# Title\n## Main heading one\n### Sub Heading one\n### Sub heading two\n## Main heading two\n
etc.
"},{"location":"Contributing-with-the-docs/#links","title":"Links","text":"Links should follow this syntax
[Link](path to link)\n
Note: If it is a link to another wiki page it should be a relative path:
[Tips and Tricks](Tips-and-Tricks)\n
Do NOT use complete a full URL when linking to another wiki page, like this (yeah, this is an example of you should NOT do):
[Tips and Tricks](https://github.com/RetroAchievements/docs/wiki/Tips-and-Tricks)\n
"},{"location":"Contributing-with-the-docs/#images","title":"Images","text":"Links to images should follow the same syntax as the example below:
![Image](http://url/a.png) \n
Note:: In order to host images for this documentation project, you can post them in this issue thread here and use the github image hosting hack.
"},{"location":"Contributing-with-the-docs/#tables","title":"Tables","text":"A simple table looks like this:
First Header | Second Header | Third Header\n------------ | ------------- | ------------\nContent Cell | Content Cell | Content Cell\nContent Cell | Content Cell | Content Cell\nContent Cell | Content Cell | Content Cell\n
It should render like this:
First Header Second Header Third Header Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content Cell Content CellYou can specify alignment for each column by adding colons to separator lines:
First Header | Second Header | Third Header\n:----------- |:-------------:| -----------:\nLeft | Center | Right\nLeft | Center | Right\nLeft | Center | Right\n
Results:
First Header Second Header Third Header Left Center Right Left Center Right Left Center Right"},{"location":"Contributing-with-the-docs/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-29 12:15] meleu:
merging \"How RA Documentation Works\" page here[2019-02-14 10:53] meleu:
fix broken link[2018-04-25 07:12] meleu:
new link for radocs[2018-04-04 15:55] meleu:
Updated Contributing with the docs (markdown)[2018-04-04 15:53] meleu:
Updated Contributing with the docs (markdown)[2018-04-03 15:20] meleu:
Updated Contributing with the docs (markdown)[2018-04-03 15:02] meleu:
Updated Contributing with the docs (markdown)[2018-04-02 18:52] meleu:
Updated Editing the Wiki (markdown)WIP Page
When both English and Japanese titles are used in an RA entry's title, the Japanese title should only be first when the game was never officially released in English, making whatever English title used an unofficial title. - Example: Trials of Mana | Seiken Densetu 3
, which is fine because an official English release came much later. Before that, everyone used Secret of Mana 2 as the English title, in which case the RA entry's title would have been Seiken Densetsu 3 | Secret of Mana 2
.
~Demo~
~Hack~
~Homebrew~
~Prototype~
~Test Kit~
~Unlicensed~
In cases where ~Demo~
or ~Prototype~
are used alongside ~Hack~
or ~Homebrew~
, they are to be listed after the latter. - Example: ~Homebrew~ ~Demo~ Bob's Game
instead of ~Demo~ ~Homebrew~ Bob's Game
. The reason for this is that no matter what stage the game is in, it will always be a homebrew or a hack; therefore, those tags should take priority.
In cases where a game is unlicensed and is actually just a hack of another game, then ~Hack~
would be used instead of ~Unlicensed~
- Example: Final Fantasy VII on NES, which is a bootleg/pirate release, but it's actually just a hack of Final Fantasy III that was put on a cartridge. So the RA entry would be Hack Final Fantasy VII.
Since the A/An/The articles are moved to the back of a title (but BEFORE a subtitle), then we should also do this when there is a pipe separator between regional titles. - Example: instead of Garfield Labyrinth | The Real Ghostbusters | Mickey Mouse IV
, which is what it is currently, we use Garfield Labyrinth | Real Ghostbusters, The | Mickey Mouse IV
. The reason for this is because we may eventually have a way to set which titles we view by default.
Bootleg/Pirate games are NOT to be linked to hubs for the series they're ripping off.
"},{"location":"Creating-Entries/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-04 20:34] televandalist:
Updated Creating Entries (markdown)[2023-06-04 20:24] televandalist:
Created Creating Entries (markdown)In this example you will learn how to create an ingame Timer based on the framerate speed of the game.
Every game has an address which is constantly increasing, it functions like a engine in a car which is constantly moving despite what you do and starts as soon you start the game, the game itself is your car and some cars are faster than others.
Please note that PAL Games (50hz) have a lower framerate than NTSC Games (60hz) and aren't compatible with this method. It is recommended to create every Timer based on the NTSC version of the game, unless PAL version is the only version existing and there is no NTSC Patch available.
Addresses
0x19
: Demo Mode: 01
=Active, 00
=Inactive0x1a
: Game Engine (speed based on framerate)0x25
: Game Paused: 01
=Yes. 00
=No0x2c
: Game Progression: 03
=Before Stage starts, 04
=Stage started, 08
=Stage finished0x30
: Stage ID (in this example, Stage 1)Link to Cheevo: Contra Speedrun
YouTube: ResetIfHits Demo: Contra Stage 1 60 seconds Speedrun
Conditions
Activates the Cheevo's 'Hit' when entering a Stage (03
only appears once in each Stage).
Triggers the Cheevo when a Stage has been finished.
Current Stage (in this example, Stage 1).
Paused the Cheevo if the Game is 'Paused' (Stops the Timer in the Cheevo).
Resets the Cheevo if 60
seconds 3600
Hits are reached. 1
second = 60Hits
(NTSC 60fps), 50Hits
(PAL 50fps).
Resets the Cheevo if Demo Mode
is active.
Resets the Cheevos Timer when entering a new Stage.
En este ejemplo vas a aprender como crear un temporizador dentro del juego en base a la velocidad del framerate speed del juego.
Cada juego tiene una variable que esta constantemente aumentando, esta funciona como el motor de un carro, se esta constantemente moviendo sin importar lo que est\u00e9s haciendo y empieza tan pronto como inicias el juego, el juego en si es tu carro y varios carros son mas r\u00e1pidos que otros.
Ten en cuenta que juegos PAL (50hz) tiene un framerate mas bajo a los juegos NTSC (60hz) y no son compatibles con este m\u00e9todo. Es recomendable crear cada temporizador utilizando la versi\u00f3n NTSC del juego, a menos que la versi\u00f3n PAL sea la uncia versi\u00f3n existente y no exista un parche NTSC disponible.
Variables (Addresses)
0x19
: Modo Demo: 01
=Activo, 00
=Inactivo0x1a
: Motor del Juego (velocidad basada en el framerate)0x25
: Juego Pausado: 01
=Si. 00
=No0x2c
: Progresion del Juego: 03
=Antes que empiece el Stage, 04
=Stage iniciado, 08
=Stage terminado0x30
: ID de Stage (en este ejemplo, Stage 1)Link al Logro: Contra Speedrun
YouTube: ResetIfHits Demo: Contra Stage 1 60 segundos Speedrun
Condiciones
Se activa el Hit del Logro cuando se entra al Stage (03
solo aparece una vez por cada Stage).
Salta el Logro cuando un Stage a sido terminado.
Stage Actual (en este ejemplo, Stage 1).
Pausa el logro si el juego esta Pausado' (Pausa el Temporizador en el Logro).
Resetea el logro si se alcanzan 60
segundos (3600
Hits). 1
segundo = 60Hits
(NTSC 60fps), 50Hits
PAL 50fps).
Resetea el logro si el Modo Demo
esta activo.
Resetea el Temporizador del Logro cuando se entra a un nuevo Stage.
Last 10 changes on this page:
[2019-04-16 11:16] eldexterr:
ES title changed to esUn valor Delta
es el valor del fotograma (frame) pasado. Nota: cuando utilizas Delta
es implicito que te refieras a una direccion y no a un valor.
Ejemplos de como puede ser utilizado:
nivel > nivel delta
. A lo que significas \"el nivel actual es mas grande que el nivel encontrado en el fotograma pasado\".salud < salud delta
. Que significa \"la salud actual es mas peque\u00f1a la salud encontrada en el fotograma pasado\". O simplemente puedes poner el antiguo valor del fotograma como un requisito. salud delta = 1
que significa \"el valor de salud tiene que ser 1 en el fotograma pasado para que salte el logro.\"En la seccion de Ejemplos Reales hay algunos buenos ejemplos:
Last 10 changes on this page:
[2019-04-16 15:38] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Delta Values ES (markdown)A Delta
value is the previous frame's value. Note: when you use Delta
it is implicit that you are referring to an address and not a value.
Examples of how it can be used:
level > delta level
. It means \"current level is greater than the previous frame's level\".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.\"In the Real Examples section there are some good examples:
Last 10 changes on this page:
[2023-06-06 10:37] televandalist:
Removed link to a page that doesn't exist[2019-02-18 16:53] meleu:
fix broken links[2019-02-12 09:22] meleu:
Created Delta Values (markdown)This page is intended to address questions asked about the Dev CoC, as well as expand on points made, usually to clarify guidelines concerning \"special cases.\" It's a brand new page, so give it some time!
"},{"location":"Dev-CoC---Frequently-Asked-Questions/#unwelcome-concepts","title":"Unwelcome Concepts","text":""},{"location":"Dev-CoC---Frequently-Asked-Questions/#regarding-unfinished-sets","title":"Regarding Unfinished Sets","text":"Max Earnable Points: 6
This table details earnable points for the SG-1000 DevJam:
Points Set Submission 2 Licensed Games 1 Collaboration\u2022 1 point per dev\u2022 Must be evenly split 1 Subsets, Homebrews, Unlicensed Games 1 Hacks, Prototypes, Demos 1 Late Submissions\u2022 Sets can still qualify up until the following DevJam's launch date!"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#quarterly-goals","title":"Quarterly Goals","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Current quarterly goals:
Point Value Quarterly Goal Details 2 Double the amount of existing sets 26 sets 1 Develop sets for all SG-1000 games with set requests \u2022 Bomb Jack\u2022 Elevator Action\u2022 Flicky\u2022 Q-Bert\u2022 Rock N' Bolt\u2022 Sinbad Mystery\u2022 Yie Ar Kung-Fu\u2022 Yie Ar Kung-Fu II 1 Develop sets for all SG-1000 games released in 1983 \u2022 Borderline\u2022 Champion Baseball\u2022 Champion Golf\u2022 Champion Tennis\u2022 ~Congo Bongo~\u2022 Exerion\u2022 Mahjong\u2022 Monaco GP\u2022 N-Sub\u2022 Pacar\u2022 Pachinko\u2022 Pop Flamer\u2022 Safari Hunting\u2022 ~Sega Flipper~\u2022 Sega-Galaga\u2022 ~Serizawa Hachidan no Tsume Shougi~\u2022 Sindbad Mystery\u2022 ~Space Slalom~\u2022 Star Jacker\u2022 Yamato\u2022 Zippy Race 1 Develop sets for all Othello Multivision Games \u2022 007 James Bond\u2022 Challenge Derby\u2022 Guzzler\u2022 Okamoto Ayako no Match Play Golf\u2022 Othello\u2022 Q-Bert\u2022 San-nin Mahjong\u2022 Space Armor\u2022 Space Mountain"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#stats","title":"Stats","text":"as of 2023-07-01 (start date) - Current number of sets: 26 - 18 licensed games, 4 homebrews, and 4 unlicensed games. - Current number of achievements: 660 worth 5912 points. - Current number of leaderboards: 168
as of 2023-09-30 (end date) - Current number of sets: 88 - 63 licensed games, 1 subset, 14 homebrews, and 10 unlicensed games. - Current number of achievements: 1,644 worth 14,511 points. - Current number of leaderboards: 272
"},{"location":"DevJam-I-%E2%80%90-SG%E2%80%901000/#see-also","title":"See Also","text":"Max Earnable Points: 8
This table details earnable points for the Saturn DevJam:
Points Set Submission 4 Licensed RPGs 3 Other Licensed Games 2 Collaboration\u2022 2 points per dev\u2022 Must be evenly split 2 Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed Games 2 Late Submissions (Licensed Games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Collabs, Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed)"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#quarterly-goals","title":"Quarterly Goals","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the Sega Saturn goals here.
"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#stats","title":"Stats","text":"as of 2023-10-01 (start date) - Current number of sets: 65 - 61 licensed games, 1 subset, 2 homebrews, and 1 demo. - Current number of achievements: 3,505 worth 29,853 points - Current number of leaderboards: 348
as of 2024-01-31 (end date) - Current number of sets: 128 - 117 licensed games, 7 subsets, 2 homebrews, 1 prototype, and 1 demo. - Current number of achievements: 6,370 worth 53,047 points - Current number of leaderboards: 869
"},{"location":"DevJam-II-%E2%80%90-Sega-Saturn/#see-also","title":"See Also","text":"Max Earnable Points: 6
This table details earnable points for the PC Engine | PC Engine CD DevJam:
Points Set Submission 3 Licensed Games 2 Collaboration\u2022 2 points per dev\u2022 Must be evenly split 2 Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed Games 2 Late Submissions (Licensed Games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Collabs, Hacks, Prototypes, Demos, Subsets, Homebrews, Unlicensed)"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#quarterly-goals-wip","title":"Quarterly Goals (WIP)","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the PC Engine and PC Engine CD goals here.
"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#stats","title":"Stats","text":"as of 2024-02-01 (start date) - Current number of sets: - PC Engine: 94 (85 licensed games, 1 unlicensed game, 2 subsets, and 6 homebrews) - PC Engine CD: 38 (35 licensed games, 1 unlicensed game, and 2 homebrews) - Current number of achievements: - PC Engine: 3,222 achievements worth 33,103 points - PC Engine CD: 1,782 achievements worth 15,663 points - Current number of leaderboards: - PC Engine: 225 - PC Engine CD: 91
as of 2024-04-30 (end date) - Current number of sets: - PC Engine: 130 (116 licensed games, 2 unlicensed games, 4 subsets, and 8 homebrews) - PC Engine CD: 62 (57 licensed games, 2 unlicensed games, 1 subset, and 2 homebrews) - Current number of achievements: - PC Engine: 4,330 achievements worth 41,788 points - PC Engine CD: 2,808 achievements worth 23,347 points - Current number of leaderboards: - PC Engine: 439 - PC Engine CD: 163
"},{"location":"DevJam-III-%E2%80%90-PC-Engine-and-PC-Engine-CD/#see-also","title":"See Also","text":"Max Earnable Points: 6
This table details earnable points for the Arcade DevJam:
Points Set Submission 3 Atomiswave and Sega NAOMI games 2 Everything else 2 Collaboration\u2022 1 point per dev\u2022 Must be evenly split 2 Late Submissions (Atomiswave and Sega NAOMI games)\u2022 Sets can still qualify up until the following DevJam's launch date! 1 Late Submissions (Everything else)"},{"location":"DevJam-IV-%E2%80%90-Arcade/#quarterly-goals-wip","title":"Quarterly Goals (WIP)","text":"While the main goal is to promote a bunch of a sets, there are secondary goals that we can work on as a group. If a goal is met, bonus points will be applied to those who helped reach it. Goals that are focused on getting the number of sets to a certain number will grant bonus points to everyone who does a set, even after that goal is met. See the Arcade goals here.
"},{"location":"DevJam-IV-%E2%80%90-Arcade/#stats","title":"Stats","text":"as of 2024-02-01 (start date) - Current number of sets: 323 - Current number of achievements: 13,023 worth 133,339 points - Current number of leaderboards: 1,576
"},{"location":"DevJam-IV-%E2%80%90-Arcade/#see-also","title":"See Also","text":"DevJam is an ongoing developer event that is heavily inspired by our console rollouts: Developers sign up, get locked into developing sets for a specific console, get signed off once completed, and then we release all the sets at once on the launch date. However, with DevJam, the primary focus will be rollouts for supported consoles that did not get them. Some DevJams will focus on a single console. Others may focus on two consoles.
Once we \"break even\" and run out of consoles, the focus will shift to quarterly goals, completing sets for hubs, genre-specific crunch times, etc.
"},{"location":"DevJam/#time-and-duration","title":"Time and Duration","text":"A DevJam lasts three months. Some will go on longer if the situation calls for it (Saturn had an extra month due to site outages and multiple dev events going on at the time). Some may be shorter if all claims are signed off.
"},{"location":"DevJam/#guidelines","title":"Guidelines","text":"Are late submissions still eligible for bonus points from Quarterly Goals? - They wouldn't be quarterly goals then, would they? No.
Can I double-dip with DevQuest, CL100, and other events? - Yes.
Will there be a second badge? - If this goes well and there's enough demand for a 'Round Two' badge, sure.
Can Junior Devs participate? - The nature of the event goes against several aspects of the Junior Dev program so as of now, no. - Junior Devs may feel encouraged to rush a set. - The promotion of Junior Dev sets is a big part of the process so having a set be \"Release Scheduled\" would waste a lot of time. - Code Reviewers would need to work around the DevJam schedule. - The amount of Junior Devs that end up losing the role due to inactivity or do 1-2 sets and disappear far outnumber those who stick around to get full dev. This could result in locked claims!
"},{"location":"DevJam/#devjam-list","title":"DevJam List","text":"Check the links here for console-specific guidelines and info:
Number Time Console(s) Number of Participants Sets Promoted 01 2023-07-01 - 2023-09-30 Sega SG-1000 30 60 02 2023-10-01 - 2024-01-31 Sega Saturn 28 56 03 2024-02-01 - 2024-04-30 PC Engine/PC Engine CD 28 60 04 2024-05-01 - 2024-07-31 Arcade TBA TBA"},{"location":"DevJam/#planned-devjams","title":"Planned DevJams","text":"Solo Console DevJams: - 3DO - PC-8001/8801 - Apple II - MSX - Famicom Disk System
Multi-Console DevJams: - Sega CD | Sega 32X - Master System | Game Gear - Neo Geo Pocket | WonderSwan | Atari Lynx - Atari 2600 | Atari 7800 | Atari Jaguar - ColecoVision | Intellivision
End of the Line for Console-Specific DevJams: - \"Bottom of the Barrel\" (Pokemon Mini, Virtual Boy, Magnavox Odyssey2, PC-FX) - \"The Magnificent Seven\" (Mega Drive, Nintendo 64, SNES, Game Boy, Game Boy Advance, Game Boy Color, NES)
"},{"location":"DevJam/#see-also","title":"See Also","text":"They're achievement development-related quests that developers can take part in at any time. Each one has a specific goal and upon reaching that goal, the achievement developer will earn the badge.
"},{"location":"DevQuests/#general-rules","title":"General Rules","text":"#developer-news
on the RetroAchievements Discord and site news If you want to be an achievement developer, check here how to become a developer.
Every Developer must know and adhere the Developer's Code of Conduct.
Now a brief description some pages you'll see in this section.
How to Become an Achievement Developer: overview of the steps required in obtaining developer status
Getting Started as an Achievement Developer: it's for the very first contact with cheevos development tools (Memory Inspector and other Achievements dialogs). IF YOU ARE A COMPLETE NEWBIE, START HERE!
Achievement Scoring: a guide to deciding point totals for achievements
Memory Inspector Overview: detailed look at one of an achievement developer's most used tools.
Achievement Logic Features: describes the available tools a developer have in order to improve the logic behind the achievements, such as delta values, hit counts, ResetIf, PauseIf, Alt groups, etc.
Real Examples: showing real examples and breaking down the logic behind them. AWESOME LEARNING RESOURCE!
Achievement Templates: some generic templates to get inspiration.
Tips and Tricks: general tips and tricks about memory digging and achievement creation.
Difficulty Scale and Balance: guidelines/suggestions on how to balance the difficulty of your achievement set.
Achievement Design: a guide on how to think about and design good achievements, not the technical side but the conceptual.
Set Development Roadmap: suggestions of steps to take in order to create a really neat achievement set.
Achievement Set Revisions: information on revisions, rescores, and the icon gauntlet.
Subsets: an advanced topic on creating special challenge sets and how to release them.
Badge and Icon Creation: some guidelines and tips about badge/icon creation.
Leaderboards: instructions on how to create Leaderboards for a game.
Rich Presence: how to write Rich Presence Scripts.
Working with the Right ROM: information on using correct ROMs and hashes.
Game Identification: details on the hashing methods used for each system.
Emulator Support and Issues: details on both supported and unsupported cores, testing progress, etc.
Achievements for ROM Hacks: a detailed guide for developers on the proper inclusion (and approval) of ROM Hacks.
Console Specific Tips: knowing the peculiarities of your favorite console can help you with memory digging.
Last 10 changes on this page:
[2023-06-08 03:08] televandalist:
Updated Developer Docs (markdown)[2023-06-08 03:07] televandalist:
Updated Developer docs (markdown)[2017-11-28 08:41] meleu:
Destroyed Developer Docs (markdown)[2017-11-28 08:36] meleu:
Created Developer Docs (markdown)Dev Checked and Relinked MD5s list
Recently game linking has been restricted to developers only. (Something many of us have been requesting for some time.) This creates new solutions, problems and responsibilities for all of us developers.
What needs to happen over time is that every entry is checked that is only has supported ROMs linked to it. Many entries have unsupported ROMs and Trainers linked to them which cause bugs and allow for cheating.
This Shared document linked is how we will keep track of the entries that have been reviewed by a developer, unlinked and then relinked with the correctly entries, when necessary.
"},{"location":"Developer-Projects/#battery-savecode-protection","title":"Battery Save/Code Protection","text":"The goal is implement protections so that no one can unlock groups of achievements from a save file or by using passwords. A list of games that need save protection: Open gSheet master list
"},{"location":"Developer-Resources/","title":"Developer Resources","text":""},{"location":"Developer-Resources/#helpful-website-links","title":"Helpful Website Links","text":"Y \u2013 Address, X \u2013 Value 1-2 digit value will always be 8 bit \u2013 use 2 in front \u2013 22YYYYYY 000000XX 3-4 digit value will always be 16 bit \u2013 use 1 in front \u2013 12YYYYYY 0000XXXX 5-8 digit value will always be 32 bit \u2013 use 0 in front \u2013 02YYYYYY XXXXXXXX This will work for Action replay codes.
For getting addresses out of GameGenie codes use this: (outdated link, getting 404) http://www.d.umn.edu/~bold0070/projects/game_genie_codes/javascript_game_genie_encoders-decoders.html
Turns this:
Into this:
Or get a plugin for Notepad++: - http://jsminnpp.sourceforge.net/ to do similar
Speaking of Notepad++ - https://notepad-plus-plus.org/download/ - One of the best text editors and it's freeware (Windows only).
"},{"location":"Developer-Resources/#achievement-syntax","title":"Achievement Syntax","text":"This is a good reference sheet, it's especially useful for Rich Presence and Leaderboards, getting your deltas and bit labels right. For full size, right click an save image.
A 32bit requires the prefix \"X\" as in 0xX63
"},{"location":"Developer-docs-es/","title":"Intro","text":"Si estas interesado en ser desarrollador, deberias checar aqui, como convertirme en desarrollador.
Todo desarrollador tiene que conocer el codigo de conducta del desarrollador.
Ahora una breve descripcion de algunas de las paginas que encontraras en esta seccion
Empezando como un desarrollador de Logros: el primer contacto con las herramientas de desarrollo de logros (Inspector de Memoria y otros cuadros de dialogos). SI ERES COMPLETAMENTE UN NOVATO, EMPIEZA AQUI!
Caracteristicas en la Logica de Logros: describe las herramientas disponibles con las que un desarrollador cuenta para trabajar la logica detras de un logro, como valores deltas, hit counts, ResetIf, PauseIf, Alt groups, etc.
Ejemplos-Reales: mostrando resultados verdaderos y desglosando la logica detras de los logros. RECURSO INDISPENSABLE PARA APRENDER!
Tips y Trucos: tips generales y trucos sobre como navegar en la memoria y creacion de logros.
Tips especificos por Consola: conociendo las peculiaridades de tu consola favorita puede ayudar mientras nadas en la memoria.
Plantillas para Logros: algunas plantillas genericas para que te inspires.
Escala de Dificultad y Balance: guias/sugerencias en como balancear la dificultad de un set de logros.
Creacion de Medallas e Iconos: algunas guias y tips sobre creacion de medallones/iconos.
Tablas de Clasificaci\u00f3n: instrucciones en como crear tablas de clasificacion para un juego.
Rich Presence: como escribir Scripts para Rich Presence.
Mapa de desarrollo de un Set: pasos a considerar para crear realmente un gran set de logros.
Dise\u00f1o de logros: una guia en como pensar y dise\u00f1ar buenos logros, no el lado tecnico sino el conceptual.
Guia para Set Bonus: un tema avanzado para crear sets con retos especiales y como lanzarlos.
Logros para Hacks de ROMs: una guia detallada para desarrolladores en la inclusion apropiada (y el aprovamiento) para Hacks de ROMs.
Last 10 changes on this page:
[2019-03-12 14:54] meleu:
Updated Developer docs pt_ES (markdown)Estas s\u00e3o as p\u00e1ginas que todos os desenvolvedores novatos deveriam ler e entender primeiro:
Agora uma breve descri\u00e7\u00e3o de cada p\u00e1gina que voc\u00ea ver\u00e1 nesta se\u00e7\u00e3o:
Come\u00e7ando como um desenvolvedor de conquistas: Est\u00e1 aqui para todo primeiro contato com as ferramenta de desenvolvimento de conquistas (Memory Inspector e outros Di\u00e1logos de conquistas). SE VOCE \u00c9 UM COMPLETO INICIANTE, INICIE AQUI!
Recursos de L\u00f3gica para Achievements: Descreve as ferramentas dispon\u00edveis para um desenvolvedor tem em ordem para melhorar a l\u00f3gica por tr\u00e1s das conquistas como os valores desta, contador de Hits, ResetIf, PauseIf, Grupos Alt, etc.
Exemplos Reais: mostrando exemplos reais e quebrando a l\u00f3gica por tr\u00e1s delas. RECURSO DE APRENDIZAGEM INCR\u00cdVEL!
Dicas e Truques: Dicas e truques gerais sobre a escava\u00e7\u00e3o de mem\u00f3ria e cria\u00e7\u00e3o de conquistas.
Dicas espec\u00edficas do Console: sabendo as peculiariedades do seu console (video-game) favorito pode ajudar voc\u00ea com a escava\u00e7\u00e3o de mem\u00f3ria
Modelos de Conquistas: Alguns modelos gen\u00e9ricos para ganhar inspira\u00e7\u00e3o
Escala de Dificuldade e Equilibrio: Sugest\u00f5es de como balancear a dificuldade da conquista de seu set.
Cria\u00e7\u00e3o de \u00cdcone e Emblemas: Algumas sugest\u00f5es e dicas sobre a cria\u00e7\u00e3o de icone
Leaderboards: Instru\u00e7\u00f5es de como criar Leaderboards para um jogo.
Rich Presence: Como criar Scripts Rich Presence
Roteiro de Desenvolvimento do Set: Sugest\u00f5es de passos para conduzir em ordem como criar um set arrumado
Design de Conquistas: Um guia de como pensar e desenvolver boa conquistas, n\u00e3o a parte t\u00e9cnica, mas a parte conceitual.
Guia de Bonus Set: Um t\u00f3pico avan\u00e7ado em criar set especiais de desafios e como lan\u00e7ar eles.
Conquistas para Hack ROM: Um guia detalhado para desenvolvedores sobre a inclus\u00e3o apropriada (e aprova\u00e7\u00e3o) de Hack ROMs
Last 10 changes on this page:
[2018-05-14 14:12] meleu:
typo[2018-05-14 14:11] meleu:
fixed achievement design link[2018-03-28 20:01] meleu:
Revert 3fbd6b9a6ffb69506933a1b1ab0940463f76256c...dfa2f71466a52945a73853134bea13c0068224ad on Developer docs pt_BR[2018-03-28 20:00] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-28 11:08] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-28 11:08] meleu:
Updated Developer docs pt_BR (markdown)[2018-03-24 23:39] meleu:
Created Developer docs pt_BR (markdown)Este documento expone los derechos, responsabilidades y reglas para desarrolladores.
Si tu no eres un desarrollador deberias checar aqui, como me convierto en un desarrollador.
Checa tambien: Codigo de conducta del usuario.
"},{"location":"Developers-Code-of-Conduct-es/#reglas-de-oro","title":"Reglas de Oro","text":"Antes que trabajes en nuevos juegos tienes que resolver todos los tickets con los que cuentes. Una vez que estes libre tickets, entonces adelante.
"},{"location":"Developers-Code-of-Conduct-es/#el-juego-esta-presente-en-la-base-de-datos","title":"El juego esta presente en la base de datos?","text":""},{"location":"Developers-Code-of-Conduct-es/#no","title":"No","text":"Entonces pregunta para que sea agregado por medio de Discord #help-me o en nuestros foros para que algun desarrollador lo agregue por ti. Es esencial que tu elijas el ROM(s) correcto para trabajar. Si quieres trabajar en un hack, checa logros para hacks de ROM doc first.
"},{"location":"Developers-Code-of-Conduct-es/#si","title":"Si","text":"Bien! adelante.
"},{"location":"Developers-Code-of-Conduct-es/#el-juego-ya-cuenta-con-un-set-de-logros","title":"El juego ya cuenta con un set de logros?","text":""},{"location":"Developers-Code-of-Conduct-es/#yes","title":"Yes","text":"Si existe un set, no te rindas. Aun lo puede mejorar, agregando/removiendo/re-trabajando logros, o haz cambios a titulos e imagenes, etc. Sin embargo tendras que pasar por el proceso de revision de tu set.
"},{"location":"Developers-Code-of-Conduct-es/#no_1","title":"No","text":"Busca delicadamente. Algunas veces hay multiples entradas en la base de datos para el mismo juego con diferente titulos. Una vez que este seguro, ahora necesitas checar si hay otro desarrollador trabajando en el juego.
Nota: Solo un set de logros es permitido por el mismo juego y consola. Para detalles mira trabajando con el ROM correcto.
"},{"location":"Developers-Code-of-Conduct-es/#hay-otros-desarrollor-trabajando-en-el-juego","title":"Hay otros desarrollor trabajando en el juego?","text":"Para estar seguro que no hay otro desarrollador trabajando en ese juego, checa el foro oficial del juego (esa es la manera oficial de reservar el juego en el que quieres trabajar). Esto es necesario para evadir conflictos entre multiples desarrolladores trabajando en el mismo juego.
"},{"location":"Developers-Code-of-Conduct-es/#si_1","title":"Si","text":"Podria ser posible que el desarrollor hubiera dejado de trabajar en ellos. Se espera que el desarrollador renueve su reservacion cada dos meses. Mira en las etiquetas de tiempo para ver cuando el desarrollador postio su reservacion de desarrollo. Si el desarrollador no a clarificado o renovado su reservacion despues de que hubieran pasado dos meses puedes asumir que fue abandonado y asi postear tus planes de trabajo.
"},{"location":"Developers-Code-of-Conduct-es/#no_2","title":"No","text":"Perfecto! Adelante! El siguiente paso es anunciar tus planes para desarrollar logros para el juego.
"},{"location":"Developers-Code-of-Conduct-es/#anunciando-tus-planes-para-trabajar-en-un-juego","title":"Anunciando tus planes para trabajar en un juego","text":"Anunciar tus planes para el set de logros se hace en el foro oficial del juego del que tienes en mente crear el set.
Postear tus planes es tu manera de reservar oficialmente un juego, sin embargo hay algunas reglas sobre el apartado sets que tienes que tener en cuenta.
"},{"location":"Developers-Code-of-Conduct-es/#notas-importantes","title":"Notas Importantes","text":"Las siguientes reglas existen para saber facilmente quien esta trabajando en que, definir que es aceptable, prevenir que el desarrollo de juegos no se estanque, proteger a los desarrolladores de indebida presion social.
La unica manera de reservar un juego es posteando tu plan en el foro oficial del juego en un nuevo post. - No otros planes o listas posteadas en cualquier otro luegar son consideradas en esto. - Notas de codigo no reservan un juego (si agregaste notas pero no reservaste el juego en el foro, cualquier desarrollador es libre de trabajar en el).
Numero maximo de juegos reservados a la vez: - Desarrollador Junior: 1. - Desarrollador: 4. - Desarrollador Veterano: 8 (un Desarrollador Veterano es alguien que a sido un desarrollador por minimo 18 meses y a publicado un minimo de 20 sets de logros). - Nota: Trabajar en una revision aprovada o unirte con otro desarrollador en un esfuerzo cooperativo no cuenta para este total.
Solo reserva un juego para desarrollo cuando realmente ya vaz a empezar a trabajar en el. En otras palabras, no reserves juegos simplemenete para blockear otros usuarios en trabajar en ellos.
Puedes renovar tu reservacion cada dos meses (+/- 2 semanas) si no haz terminado tu set aun. - Para renovar tu reservacion, postealo en el foro oficial del juego. - No edites tus antiguas declaraciones, haz un nuevo post hablando del progreso actual. - Evita ignorar un set indefinidamente. Si parece que un desarrollador continua retrasando el desarrollo de un set con poco o sin progreso el staff puede intervenir.
No pidas, presiones o desalentes a nadie en trabajar en cualquier juego, en publico o en privado (claramente, asumiendo que la persona esta siguiendo todos los otros estandartes de este Codigo de Conducta).
Una vez que hubieras posteado tu plan, espera un minimo de 72 hours antes de promover cualquier logro a Core. Esto le da tiempo a la comunidad de renovar tu plan y dar retro-alimentacion. Este periodo de espera empieza despues que tu plan este presente y esta en su forma completa (o mayormente completa).
Tu puedes (y deberias) se lo mas creativo que puedas, pero hay algunos conceptos que NO estan bienvenidos para logros, como: - Requirir el uso de glitches (aceptable en Sets Bonus). - Requieren dos jugadores. - Requiere perfeccion por todo el juego (talvez aceptable in Sets Bonus). - Morir (simplemente), o juega mal sin ningun proposito. - Contenido no apropiado (NSFW) en la imagen o texto. - Logros saltando frecuentemente con poco esfuerzo del jugador (incluyendo multiples logros por hacer la misma tarea, como vencer al jefe y otro por conseguir el item que dejo el jefe , etc.) - Logros obtenibles con zero esfuerzo sin razon alguna (ejemplo: empieza el juego con x personaje, colecciona una moneda). Es acceptable si hay algo divertido/historico/interesante que quieres tocar. - Se requiere grinding repetitivo y excesivo, asi como llega a level 99 en un RPG, sin razon alguna (talvez aceptable en Sets Bonus). - Se basa completamente en suerte, especialmente cuando hay probabilidades realmente bajas. Sin embargo, para juegos que el factor aleatorio es un aspecto importante, podria ser apropiado. - \"Logros Secretos\", cuando los jugadores no tiene indicacion de que es lo que tienen que hacer. Si quieres prevenir spoilers da minimo una pista en el titulo o descripcion. De otra manera los jugadores van a empezar a buscar en la web o van a moverle al editor de Logros/Inspector de Memoria, y en el proceso pueden incluso toparse con peores spoilers.
Con cada regla, hay un excepcion. Esta es especialmente verdad con conceptos no-bienvenidos. Todos los conceptos no-bienvenidos tienen un margen de aprovacion. cuando te encuentres en dudas puedes consultar con el equipo de administradores.
"},{"location":"Developers-Code-of-Conduct-es/#cada-set-de-logros-tiene-que-tener","title":"Cada Set de logros TIENE que tener","text":"Proteccion para situaciones donde los jugadores puedes conseguir logros sin esfuerzo, como:
Tambien mira: Plantillas para logros y Ejemplos reales para algunas tecnicas de proteccion bien conocidas.
"},{"location":"Developers-Code-of-Conduct-es/#cada-set-de-logros-deberia-tener","title":"Cada Set de logros DEBERIA tener","text":"Nota: Rich Presence, Tablas de clasificacion, y paginas del juego imagenes/informacion solo pueden ser agregadas por verdaderos desarrolladores
"},{"location":"Developers-Code-of-Conduct-es/#recomendado-pero-no-requerido-por-cada-set-de-logros","title":"Recomendado pero no requerido por cada Set de logros","text":"[m]
al final del titulo del logro para flaggearlo como perdidiso.Tenemos un We have a mapa que puedes utilizar como guia para crear un buen set de logros. Tambien tenemos una guia de dise\u00f1o de logros en como dise\u00f1ar buenos logros, no el lado tecnico pero si el conceptual. Crear un set balanceado es uno de los aspectos mas dificiles de desarrollo, tenemos una guia de balance de dificultad que te podria ayudar en pensar como crear un set que fluya.
Es preferible y recomendado trabajar en un set a la vez. Pero si tienes mas, ten abiertas posibilidades para trabajar en equipo o incluso delegar la creacion de un set si otro desarrollador te contacta.
"},{"location":"Developers-Code-of-Conduct-es/#revisiones-trabajando-en-sets-que-ya-cuentan-con-logros","title":"Revisiones - Trabajando en Sets que ya cuentan con logros","text":"Revisiones, si estas trabajando en un set que ya cuenta con logros tipicamente requiere aprovacion por la comunidad, presentando tu plan en el foro y en el canal de #revision-voting en Discord. No todos los cambios requieren aprovacion. Mira Revisiones de Sets de Logros para mas detalles.
"},{"location":"Developers-Code-of-Conduct-es/#notas-de-codigo","title":"Notas de Codigo","text":"Deja notas precisas para cada valor que utilizes en un logro. Esto te ayuda a ti y a otros de mantener el set libre de bugs.
Eres libre de agregar todos las notas que quieras en el juego sin incluso a ver declarado tus intenciones en trabajar en ese juego. Simplemente se cuidadoso en no borrar notas de codigo creadas por otros usuarios.
"},{"location":"Developers-Code-of-Conduct-es/#manejo-de-tickets","title":"Manejo de Tickets","text":"Despues que hubieras publicado tus logros preparate para reportes de bugs.
Se supone que tienes que dejar tu trabajo libre de bugs con el manejo de tickets y resolviendolos. Responde a todos los tickets lo mas pronto posible. Mientras mas pronto mejor, porque el problema esta fuera de la mente del jugador y puedes utilizarlo como ayuda para resolver el problema tambien.
Mientras resuelves tickets, deja un peque\u00f1o resumen de lo que hiciste. Si tienes una indicacion o un reporte falso deja un mensaje cuales fueron tus conclusiones, y entonces cierra el ticket. Cerrar/Resolver un ticket sin dejar ningun comentario es una actitud no-bienvenida.
No declares tus planes de trabajar en un juego si cuentas con tickets abiertos.
Si tienes planeado resolver tickets o arreglar bugs en logros hechos por otro desarrollador, siempre es una buena practica intentar contactarlo si aun se encuentra activo antes de modificar su trabajo. Un desarrollador inactivo es alguien que cuenta con 10 o mas tickets abiertos y tienen un minimo de dos meses de antiguedad (puedes ver sus tickets abiertos desde el Ticket Manager).
Si el desarrollador esta activo, puedes simplemente hecharle una ayuda con la solucion.
Si el desarrollador esta inactivo puedes libremente resolverle sus tickets. Sin embargo solamente tienes permitido arreglar el logro con lo que dice en su descripcion; no cambies la intencion de logro sin haber pasado por el proceso de revision.
"},{"location":"Developers-Code-of-Conduct-es/#propiedad-de-los-logros","title":"Propiedad de los logros","text":"Cuando tu publicas tu trabajo tu se lo estas dando a la comunidad para que sea rese\u00f1ado y re-trabajado con el paso del tiempo - mira Revisiones en un Set.
Aunque los logros publicados por un desarrollador no son propiedad de el, el aun es el encargado en terminos de arreglar y dar mantenimiento. Si otro jugador corrige el logro el es el nuevo encargado de ese logro.
"},{"location":"Developers-Code-of-Conduct-es/#retroalimentacion-sobre-el-codigo-de-conducta-del-desarrollador","title":"Retroalimentacion sobre el Codigo de Conducta del Desarrollador","text":"A pesar de que el Codigo de Conducta del Desarrollador es el resultado de un intenso debate, no es un documento absoluto. Si tiene sugerencias para nuevas mejoras, contactanos en nuestro servidor de Discord o manda un mensaje a RAdmin.
"},{"location":"Developers-Code-of-Conduct-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-03-12 14:58] meleu:
Updated Developers Code of Conduct ES (markdown)This document covers developers' rights, responsibilities, and rules for fair play.
If you are not a dev, check how to become a developer.
See Also: Users Code of Conduct.
Revisions, as in working on a set that has existing achievements typically requires community approval by presenting your plan in the forum and in the #revision-voting channel in Discord. Not all changes need approval. See Achievement Set Revisions for details.
"},{"location":"Developers-Code-of-Conduct/#expiration-of-developer-status","title":"Expiration of Developer Status","text":""},{"location":"Developers-Code-of-Conduct/#inactivity","title":"Inactivity","text":"The developer status will expire and account type will be set to [Registered]
if the following conditions are met:
It is important for developers to remember that this is NOT a punishment and is only done for security reasons!
Inactivity as a developer will be defined as: - Has not made or renewed a set claim. - Has not created new achievements. - Has not performed maintenance on existing sets (revisions, rescores, badge changes, etc.) - Has not resolved, closed, or otherwise addressed any open tickets, theirs or otherwise.
"},{"location":"Developers-Code-of-Conduct/#negligence","title":"Negligence","text":"Alternatively, developer status will be removed if the developer has 10 or more tickets that are at least 2 months old. If the developer has any active claims during this period, they will be given an additional 30 days or until the earliest claim renewal (whichever comes first) to resolve all 10 tickets. Not doing so will result in the developer falling into inactive status and the claim(s) being released.
"},{"location":"Developers-Code-of-Conduct/#reinstatement","title":"Reinstatement","text":"If a user's developer status was removed due to inactivity and they wish to have it reinstated, they must contact Dev-Compliance. However, before doing so, it is recommended to review any changes that were made to the Developer Code of Conduct, updates to the achievement creation tools, and have a plan to address open tickets for their achievements, if applicable.
The steps involved in reinstatement will vary from user to user depending on the following: - The amount of time elapsed since developer status was removed. - The amount of tickets that may have been opened on their achievements. - Other QA issues that may have come up since developer status was removed. - Moderation warnings or actions the user may have received.
A user may be required to submit work to code reviewers if more than a year has passed since their developer status was removed or if they initially obtained developer status before the junior developer program existed (July 2018) and did not retroactively obtain the Junior Developer badge.
Note: Achievements edited by other developers will not count against a user seeking reinstatement.
"},{"location":"Developers-Code-of-Conduct/#achievement-ownership","title":"Achievement Ownership","text":"When you publish your work you are giving it over to the community to be reviewed and reworked over time - see Achievement Set Revisions.
While the original developer does not own published achievements, they are still the caretaker in terms of bug fixing and maintenance. If another developer revises the achievement, they are the new caretaker of that achievement.
"},{"location":"Developers-Code-of-Conduct/#changing-accounts","title":"Changing Accounts","text":"If a user with either Developer or Jr. Developer status changes accounts, achievements and tickets under the old account will be re-authored and reassigned to the new account.
"},{"location":"Developers-Code-of-Conduct/#feedback-about-the-developer-code-of-conduct","title":"Feedback about the Developer Code of Conduct","text":"Although the Developer Code of Conduct is the result of an intense debate, it's not an immutable document. If you have suggestions for improvements, contact us on our Discord server or send a message to RAdmin.
"},{"location":"Developers-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-11-25 18:42] Hotscrock:
Adjust on Jr. Developers inactivity rule[2023-06-11 22:48] televandalist:
Updated Developers Code of Conduct (markdown)[2023-06-04 19:49] televandalist:
Removed Code Notes section in favor of the page under Content Guidelines[2023-06-04 19:38] televandalist:
Removed \"Reserving a game for achievement development\" section in favor of the \"Claims System\" page.[2023-06-04 19:11] televandalist:
Reverted the \"Developer and Content Guidelines\" change from the last edit.[2023-06-04 19:05] televandalist:
Golden Rules: \"Developer and Content Guidelines\" -> \"Content Guidelines\" | \"Do not ask, pressure or discourage\" -> \"Do not discourage\"[2023-06-04 18:53] televandalist:
Changed the Golden Rules based on a proposal and vote[2023-06-03 04:00] televandalist:
Removed \"Editing Leaderboards\" section since it has been moved to \"Content Guidelines\"[2023-06-02 20:36] televandalist:
Updated Developers Code of Conduct (markdown)[2023-06-02 20:30] televandalist:
Updated Developers Code of Conduct (markdown)Este documento tiene algunas sugerencias sobre dificultad, balance de un set y sobre mantener un set divertido, amigable, y retador. Lo que estas apunto de ver no son reglas, solamente sugerencias.
Nota: ten encenta el C\u00f3digo de Conducta del Desarrollador
"},{"location":"Difficulty-Scale-and-Balance-es/#escala-de-dificultad","title":"Escala de Dificultad:","text":"Mas detalles sobre estos al final.
En general tiene que a ver un balance de dificultad uniforme. Uno tiene que pensar en la dificultad en general del set mientras los construyes. Uno no tiene que hacer sets excesivamente dif\u00edciles.
Un buen balance en un set de 50 logros en promedio deber\u00eda de tener aproximadamente: 4 regalados, 6 logros f\u00e1ciles, 10 medianos, 10 med-dif\u00edcil, 14 dif\u00edciles, y 6 muy-dificiles, 0 kaizo (super-dif\u00edcil).
Una distribuci\u00f3n de dificultad balanceada recompensa a cada tipo de jugador. Le da a cada nivel de habilidad algo que completar hasta que lo dominas por completo.
Los logros no tienen que ser solamente una palomita por completar el juego, (muy f\u00e1cil) crea nuevas memorias divertidas con el juego (diversidad de logros).
Deja espacio para logros regalados que cuenten con cosas curiosas o divertidas del juego. Se espera la suficiente dificultad para que puedes dominar un set y as\u00ed decir que eres un maestro del juego. Pero tampoco necesita pedir demasiado para el jugador.
Tampoco no tienes que pedirle al jugador que haga tareas interminables y repetitivas solo para que un logro sea dificil. Hacer la misma tarea una y otro y otra vez no es dificil, es tipicamente aburrido. Tambi\u00e9n deber\u00edas de evitar hacer logros estilo marat\u00f3n con una colina hasta el final (aquellos que requiere un proceso largo con poca o repetitiva dificultad y entonces aparece un pico de dificultad enorme al final. No lo hagas!).
Los Sets tienen que ser masterizados por un jugador con habilidad, que puso la dedicaci\u00f3n y esfuerzo necesario.
Un Set tiene que reflejar el contenido del juego. Logros de \u00a8grindear\u00a8 en juegos que requieren grinding son razonables, que en otros cazos podr\u00edan ser inapropiados.
Un Set tambi\u00e9n deber\u00eda de romper lo que se espera de un juego, motivando al jugador a encontrar nuevas soluciones a problemas que ni un jugador veterano hubiera considerado.
"},{"location":"Difficulty-Scale-and-Balance-es/#cantidad-del-set","title":"Cantidad del Set:","text":"La cantidad de logros en un Set realmente no tiene reglas. La Calidad es un factor clave.
La cantidad de logros depende fuertemente en la diversi\u00f3n y retos que un juego puede otorgar. Es por eso que el desarrollador del set tiene que conocer al juego muy bien.
"},{"location":"Difficulty-Scale-and-Balance-es/#variedad-en-el-set","title":"Variedad en el Set:","text":"Mantenlo divertido, entrega variedad, reto al jugador, entrega al jugador nuevas cosas que hacer.
Algunos logros pueden pueden ser muy divertidos para el jugador cuando son como un meta-game. Cuando el jugador tiene que pensar el juego enteramente.
Algunos ejemplos notables:
Tienen casi no esfuerzo para b\u00e1sicamente todo tipo de jugador para conseguirlo OR el jugador lo consigue sin poner consientemente un esfuerzo. El jugador lo obtiene por accidente y salta en la pantalla. Algunas veces el jugador ni siquiera tiene idea de porque lo consigui\u00f3. Algunos logros regalados son buenos algunos son malos.
Ejemplos: Empezar el juego, seleccionar un personaje, coleccionar un \u00edtem facil de conseguir, vencer a tu primer enemigo.
"},{"location":"Difficulty-Scale-and-Balance-es/#1-facil","title":"1 - Facil","text":"La mayor\u00eda de jugadores lo pueden conseguir en su primer intento, Algunos en su segundo o tercero. Raramente los jugadores pueden arruinarlo.
Ejemplo: Progresa en stages f\u00e1ciles, consigue 100 monedas, colecciona una pluma, colecciona 20 anillos. Obt\u00e9n la primer mejora, llega a un mundo secreto bastante conocido. Pelea contra un jefe muy simples: la mayor\u00eda de los jefes en Super Mario World, completa los primeros mundos en Sonic.
"},{"location":"Difficulty-Scale-and-Balance-es/#2-medio","title":"2 - Medio","text":"Varios jugadores pueden conseguir este en su primer intento. Algunos despu\u00e9s de varios intentos. Algunos necesitan practicar. Muy pocos van a batallar mucho con ellos.
Ejemplos: Obt\u00e9n todos los switches de colores en Super Mario World, colecciona todos los items en un stage de Castlevania, obt\u00e9n un bonus en un \u00e1rea escondida, obt\u00e9n lunas en SMW. Vence Contra con el c\u00f3digo Konami.
"},{"location":"Difficulty-Scale-and-Balance-es/#3-medio-dificil","title":"3 - Medio-Dif\u00edcil","text":"Un porcentaje bajo de jugadores pueden conseguirlo en su primer intento. Algunos despu\u00e9s de varios intentos y la mayor\u00eda les va a tomar algo de esfuerzo y practica completar uno de estos. Algunos lo van a encontrar muy retador, y se rendir\u00e1n.
Ejemplos: Obt\u00e9n una de las emeraldas chaos en Sonic 2. Completa Super Mario World.
"},{"location":"Difficulty-Scale-and-Balance-es/#4-dificil","title":"4 - Dif\u00edcil","text":"Muy pocos jugadores pueden conseguir uno en su primer intento, incluso si ya conocen el juego (realmente no es su primer intento o si?) la mayor\u00eda pueden completar estos con un esfuerzo solido, algunos intentos y algo de practica, y algunos necesitan practicar con otros juegos primero.
Ejemplos: Obt\u00e9n todas las esmeraldas Chaos en Sonic 1,2,3. Pasa Contra sin el c\u00f3digo Konami.
"},{"location":"Difficulty-Scale-and-Balance-es/#5-muy-dificil","title":"5 - Muy Dif\u00edcil","text":"Solo los jugados mas extra\u00f1os pueden completar uno de estos en su primer intento. La mayor\u00eda puede completarlo despu\u00e9s de muchos intentos, Muchos jugadores lo van a dejar abandonado y no van a estar dispuestos a completar el set al menos que sean complecionistas o fan\u00e1ticos del juego. Muchos no son capases de completarlo despu\u00e9s de muchos intentos. Usualmente requiere practica significativa, altas habilidades, experiencia, b\u00fasqueda, o gu\u00edas para completarlo.
Ejemplos: Completa Contra en una sola vida. Escapa de Zebes (Super Metroid) en 2 minutos o menos. Vence a los jefes de Megaman sin recibir da\u00f1o. Muchos de completa niveles sin recibir da\u00f1o, depende del juego.
"},{"location":"Difficulty-Scale-and-Balance-es/#6-super-dificil","title":"6 - Super Dif\u00edcil","text":"La mayor\u00eda de los jugadores no son capases de completarlo despu\u00e9s de decenas de intentos. Algunos jugadores tal vez nunca sean capases de completarlo ya que puede requerir noci\u00f3n del mando y el tiempo mas all\u00e1 de lo normal. Los jugadores con mas habilidad inclusive lo consideran bastante dificil. Puede reiniciar esfuerzos de maratones.
Ejemplos: Completa un juego sin conseguir da\u00f1o especialmente si el jugador tiene una barra de vida, retos que restringen al jugador drasticamente y requieren precisi\u00f3n por frame perfecta. Completa Contra dos veces con una vida. Completa Mario Bros sin conseguir monedas. Completa Megaman sin recibir da\u00f1o.
"},{"location":"Difficulty-Scale-and-Balance-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-14 15:34] eldexterr:
Created Difficulty Scale and Balance es (markdown)Link para o texto em ingl\u00eas: Difficulty Scale and Balance
Este documento tem algumas sugest\u00f5es sobre dificuldade, balanceamento do set e manuten\u00e7\u00e3o de um set divertido, e desafiador. O que voc\u00ea ir\u00e1 ver aqui n\u00e3o s\u00e3o regras, apenas sugest\u00f5es.
Nota Seja conciente da C\u00f3digo de Conduta dos Desenvolvedores
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#escala-de-dificuldade","title":"Escala de Dificuldade","text":"Mais detalhes sobre estes no fundo
Em geral, deve haver um equil\u00edbrio est\u00e1vel de dificuldade. Deve-se pensar na dificuldade geral do set ao constru\u00ed-lo. N\u00e3o se deve tornar os set excessivamente dif\u00edceis.
Um bom equil\u00edbrio nas 50 conquistas em um set m\u00e9dio teria aproximadamente: 4 Brindes, 6 super f\u00e1ceis. 10 m\u00e9dios, 10 medianos, 14 dif\u00edceis, 6 Muito dif\u00edceis e 0 kaizo.
Uma distribui\u00e7\u00e3o de dificuldade bem balanceada tem recompensas para todos os tipos de jogadores. Isso se d\u00e1 a cada n\u00edvel de habilidade algo para realizar at\u00e9 a platina.
Conquistas n\u00e3o devem ser apenas uma marca de conclus\u00e3o de um jogo, (muito f\u00e1cil) mas crie divertidas novas mem\u00f3rias para o jogo (diversividade de desafios).
Isto deixa espa\u00e7o para os brindes que est\u00e3o apresentando elementos curiosos ou divertidos dos jogos. Isto lhe espera dificuldade suficiente que, uma vez que voc\u00ea platina o set, voc\u00ea \u00e9 o mestre do jogo. Mas isso n\u00e3o pede muito do jogador.
Tamb\u00e9m n\u00e3o deve ser pedir ao jogador para fazer coisas aparentemente sem fim e repetitivas para fazer um set parecer dif\u00edcil. Fazendo a mesma tarefa denovo e denovo, n\u00e3o \u00e9 dif\u00edcil, \u00e9 tipicamente tedioso. Deve quase sempre evitar fazer tipos de maratonas com uma \"colina\" no final (Aquelas que requer um longo tempo ou dificuldade repetitiva com e depois uma eleva\u00e7\u00e3o de alta dificuldade no final. N\u00e3o fa\u00e7a isso!)
Sets dever\u00e3o ser platin\u00e1veis por um jogador h\u00e1bil que d\u00e1 um esfor\u00e7o dedicado.
Sets dever\u00e3o refletir o conte\u00fado do jogo. Farmar conquistas em jogos que exigem Farm s\u00e3o razo\u00e1veis, em outros lugares eles seriam fequentemente inapropriados
Sets dever\u00e3o tambem quebrar o que \u00e9 esperado de um jogo, impulsionando o jogador a procurar encontrar novas solu\u00e7\u00f5es para problemas que um jogador veterano nunca considerou
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#quantidade-de-conquistas","title":"Quantidade de Conquistas:","text":"A quantidade de conquistas n\u00e3o tem regras t\u00e3o duras. Quantidade \u00e9 um fator chave
A quantidade de um set depende fortemente de o quanto divertido e desafiador o jogo pode oferecer. \u00c9 por isso que o desenvolvedor do set deve conhecer o jogo muito bem.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#variedade-de-conquistas","title":"Variedade de Conquistas:","text":"Mantenha divertido, d\u00ea variedade, desafie o jogador, d\u00ea ao jogador novas coisas para se fazer.
Algumas conquistas podem dar muito mais divers\u00e3o para o jogador do que um jogo de metas. Onde \u00e9 necessario que o jogador repense o jogo inteiramente.
Alguns Exemplos Not\u00e1veis:
N\u00e3o leva quase nenhum esfor\u00e7o para basicamente todos os jogadores para conquistar OU o jogador consegue sem nenhuma consci\u00eancia ou esfor\u00e7o. Al\u00e9m do jogador conseguir por acidente e aparecer na tela. Algumas vezes o jogador n\u00e3o tem nenhuma id\u00e9ia porque ganhou ele. Alguns conquistas brindes s\u00e3o boas e ruins.
Exemplos: Iniciando o jogo, escolhendo um personagem, coletando um item de acesso f\u00e1cil, matando seu primeiro inimigo. Trope\u00e7ando em uma conquista que n\u00e3o levou a premedita\u00e7\u00e3o, mas destaca elementos do jogo
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#1-facil","title":"1 - F\u00e1cil","text":"A maioria dos jogadores consegue estas na primeira tentativa, alguns na segunda ou terceira tentativa. Raramente os jogadores podem se confundir.
Exemplos: Progresso em fases f\u00e1ceis, pegando 100 moedas, coletando uma pena, coletando 20 an\u00e9is. Pegando o primeiro upgrade, indo para uma fase secreta muito conhecida. Lutando com um chefe facil: a maioria dos chefes em Super Mario World, completando fases iniciais em Sonic The Hedgehog.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#2-medio","title":"2 - M\u00e9dio","text":"A Maioria dos jogadores consegue pegar na primeira tentativa. Muitos poderiam depois de algumas tentativas. Alguns ir\u00e3o precisar praticar. Alguns poucos v\u00e3o lutar com eles.
Exemplos: Conseguindo todos os switches coloridos no Super Mario World, coletando todos os itens em uma fase de Castlevania, conseguindo um item b\u00f4nus em uma \u00e1rea mais escondida como as lua em SMW. Zerando Contra com o Konami code
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#3-medianos","title":"3 - Medianos","text":"Uma baixa quantidade de jogadores ir\u00e3o conseguir isso na primeira tentativa. Alguns depois de algumas tentativas e a maioria vai levar algum esfor\u00e7o e pr\u00e1tica para concluir. Alguns ir\u00e3o achar eles muito desafiantes e desistir.
Exemplos: Conseguindo algumas das esmeraldas do caos em Sonic The Hedgehog 2, Zerar Super Mario World
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#4-dificil","title":"4 - Dif\u00edcil","text":"Muitos poucos jogadores ir\u00e3o conseguir na primeira tentativa, possivelmente se ja conhece o jogo (n\u00e3o realmente a primeira tentativa?) Alguns podem completar com algum esfor\u00e7o solido, muitas tentativas e alguma pr\u00e1tica e precisa praticar outros jogos antes.
Exemplos: Conseguindo todas as Esmeraldas do Caos em Sonic 1,2,3. Zerando Contra sem o Komani Code.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#5-muito-dificil","title":"5 - Muito Dif\u00edcil","text":"Apenas o mais raro dos jogadores conseguem estas em uma primeira tentativa. A maioria consegue complet\u00e1-lo depois de muitas tentativas, Muitos jogadores ir\u00e3o desistir aqui e n\u00e3o estar\u00e1 disposto a completar o set a menos que eles s\u00e3o completistas ou f\u00e3s do jogo. Muitos n\u00e3o ser\u00e3o capazes depois de muitas tentativas. Geralmente pega uma pr\u00e1tica significante, altas habilidades, experi\u00eancia, pesquisas ou guias para completar
Exemplos: Zerando Contra com uma vida. Escapando de Zebes (Super Metroid) abaixo de dois minutos. Derrotando muitos chefes de Megaman sem tomar dano. Muitos est\u00e1gios sem danos, dependendo do jogo.
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#6-super-dificil","title":"6 - Super Dif\u00edcil","text":"A Maioria dos jogadores n\u00e3o ser\u00e3o capaz de completar isto depois de d\u00fazias de tentativas. Muitos jogadores nunca ser\u00e3o capazes de complet\u00e1-lo, pois podem exigir velocidades de rea\u00e7\u00e3o al\u00e9m das normais. Os jogadores mais qualificados ainda consideram isso extremamente dif\u00edcil. Pode levar os esfor\u00e7os de maratonas para reiniciar
Exemplos: Completar um jogo sem tomar dano, especialmente se o jogador tiver uma barra de vida, desafios que restringem drasticamente o jogador e exigem precis\u00e3o quase perfeita para o sucesso. Zerar Contra duas vezes com uma vida. Zerando Megaman sem tomar dano. Zerar Super Mario Bros sem coletar power-ups, coletando apenas 2 moedas, e com a pontua\u00e7\u00e3o abaixo de 500
"},{"location":"Difficulty-Scale-and-Balance-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-26 02:38] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:37] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:36] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:35] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-26 02:19] KingDice001:
Updated Difficulty Scale and Balance pt_BR (markdown)[2018-03-25 16:34] KingDice001:
Created Difficulty Scale and Balance pt_BR (markdown)This doc has some suggestions about difficulty, set balance and on keeping a set fun, approachable, and challenging. What you're going to see here are not rules, just suggestions.
Note: be aware of Developers Code of Conduct
"},{"location":"Difficulty-Scale-and-Balance/#difficulty-scale","title":"Difficulty Scale:","text":"More details on these at the bottom.
In general there should be an steady sloping balance of difficulty. One should think of the overall difficulty of a set while building it. One should not make sets excessively difficult.
A good set balance on a 50 cheeves in an average set would have roughly: 4 freebies, 6 easy cheeves, 10 medium, 10 med-hard, 14 hard, and 6 very-hard, 0 kaizo.
A well balanced difficulty distribution has rewards for every type of player. It gives each skill level something to accomplish until mastery.
Achievements should not just be a check-mark of completing a game, (too easy) but create fun new memories for the game (diversity of challenges).
It leaves space for freebies that are featuring curious or fun elements of the game. It expects enough difficulty that once you've mastered the set you are a master of the game. But it doesn't ask too much from the player either.
It also shouldn't ask the player to be doing seemingly endless repetitive grinding to make a set seem harder. Doing the same task over and over isn't hard, it's typically dull. It should almost always avoid making marathon types with a hill at the end (ones that require long setup times with low or repetitive difficulty and then a spike of high difficulty at the end. Don't do it!).
Sets should be mastereable by a skilled player who gives a dedicated effort.
Sets should reflect the content of the game. Grinding cheeves in games that require grinding are reasonable, where in other places they would often be inappropriate.
Sets should also break out of just what is expected from a game, pushing the player to need to find new solutions for problems a veteran player never considered.
"},{"location":"Difficulty-Scale-and-Balance/#set-quantity","title":"Set Quantity:","text":"Set quantity should not have such hard rules. Quality is the key factor.
The set quantity strongly depends on how much fun and challenges the game can give. That's why the set developer must know the game very well.
"},{"location":"Difficulty-Scale-and-Balance/#set-variety","title":"Set Variety:","text":"Keep it fun, give it variety, challenge the player, give the player new things to do.
Some achievements can give much fun to the player when they are like a meta-game. Where the player is required to rethink the game entirely.
Some notable examples:
Takes almost no effort for basically all players to achieve this OR the player gets it without any conscious effort. The player gets these on accident and they pop up on the screen. Sometimes the player will have no idea why they earned them. Some freebies are good some are bad.
Examples: Starting the game, picking a character, collecting an easily accessible item, killing your first enemy. Stumbling on a cheeve that took no forethought but highlights elements of the game.
"},{"location":"Difficulty-Scale-and-Balance/#1-easy","title":"1 - Easy","text":"Most players could get these on their first attempt, Some on their second or third attempt. Rarely players can mess it up.
Examples: Progress on easy stages, getting 100 coins, collecting a feather, collecting 20 rings. Getting the first upgrade, getting to a well known secret stage. Fighting a simple boss: most bosses in Super Mario World, completing early stages in Sonic.
"},{"location":"Difficulty-Scale-and-Balance/#2-medium","title":"2 - Medium","text":"Many players could get this on their first attempt. Many could after a few attempts. Some will need to practice. Very few will struggle with them.
Examples: Getting all the colored switches in Super Mario World, collecting all of the items in a Castlevania stage, getting a bonus item in a more hidden area, like moons in SMW. Beating Contra with the Konami code.
"},{"location":"Difficulty-Scale-and-Balance/#3-medium-hard","title":"3 - Medium-Hard","text":"A low amount of players could get this on their first attempt. Some after a few attempts and most will take some effort and practice to complete these. A few will find them very challenging, and give up.
Examples: Getting some of the chaos emeralds in Sonic 2. Beating Super Mario World.
"},{"location":"Difficulty-Scale-and-Balance/#4-hard","title":"4 - Hard","text":"Very few player can get these on their first attempt, perhaps if they already know the game (not really a first attempt is it?) Most can complete these with a solid effort, many attempts and some practice, and some need to practice other games first.
Examples: Getting all of the Chaos emeralds in Sonic 1,2,3. Beating Contra without the Konami code.
"},{"location":"Difficulty-Scale-and-Balance/#5-very-hard","title":"5 - Very Hard","text":"Only the rarest of players can complete these on a first attempt. Most can complete it after many attempts, Many players will drop off here and won't be willing to complete the set unless they are completionists or fans of the game. Many are not able to complete this after very many attempts. Usually takes significant practice, high skills, experience, research, or guides to complete.
Examples: Beating Contra in one life. Escaping Zebes (Super Metroid) in under two minutes. Beating many of the Megaman bosses without taking damage. Many damagless stages, depending on the game.
"},{"location":"Difficulty-Scale-and-Balance/#6-super-hard","title":"6 - Super Hard","text":"Most players are not able to complete this after dozens of attempts. Many players will never be able to complete it as it could require beyond normal reaction speeds. The top-most skilled players still consider these blisteringly hard. It may take marathon efforts to restart.
Examples: Completing a game without taking damage especially if the player has a lifebar, challenges that drastically restrict the player and require near frame perfect accuracy tor success. Beating contra twice in one life. Penniless plumber. Beating Megaman without taking damage.
"},{"location":"Difficulty-Scale-and-Balance/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-12-02 15:52] monkey-bug:
Fix typos and points in notable examples[2022-10-09 22:11] ScottFromDerby:
/achievement links need to be lowercase to work[2017-11-26 00:26] Kvon:
Changed title from \"Achievement Difficulty Scale and Difficulty Balance\"Last 10 changes on this page:
[2023-06-30 13:04] televandalist:
Updated Docs To Do List (markdown)[2023-06-30 13:01] televandalist:
Updated NEWTEST Overview (markdown)Estos no contienen temas para la Interfaz (Overlay), puedes descargar el est\u00e1ndar y los personalizados en los enlaces a continuaci\u00f3n. Estos enlaces se mantienen actualizados.
Galer\u00eda de vista previa
"},{"location":"Downloads-es/#simple","title":"Simple","text":"Last 10 changes on this page:
[2018-05-30 12:46] ShinyNinetalesTM:
createdA leaderboard's concept/design should not be changed once players have begun submitting entries. Exceptions are as follows:
A. If a leaderboard has a bug in which a correction would result in a discrepancy between between pre and post fix LB submissions, this would be considered a fundamental change and it may be most appropriate to \"retire\" the leaderboard and create a new corrected LB.
B. If a protection needs to be added to the cancel field in a leaderboard, for example to eliminate point farming/leaching (Areas where a game generates an endless number of things, such as items, money, or enemies), it may be preferable to either \u201cretire\u201d or create an additional leaderboard. \"Retiring\" a leaderboard means preventing future submissions.
If a developer wishes to create a new concept for a leaderboard, a new one should be added.
If a developer wants to implement a fundamental change to a leaderboard while keeping it intact, a revision vote is required. \u201cFundamental changes\u201d involve the following:
A. Changes to how players submit scores.
B. Changes to submission requirements that impact difficulty and or strategy.
A Jr. Developer may only change, add, or remove a leaderboard with a code-reviewer that goes through the revision process with them.
Last 10 changes on this page:
[2023-06-03 03:58] televandalist:
Updated WIP Editing Leaderboards (markdown)May be configured via the Config > Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
ESC
(Backspace
to close overlay)Pause
F
Tab
May be configured via the Settings > Hotkeys dialog
F1
(individual slots can be assigned via Hotkeys
> Save State to Slot X
)F3
(individual slots can be assigned via Hotkeys
> Save State to Slot X
)Shift+F2
(prev) / F2
(next)ESC
Space
Hotkeys
> Frame Advance
.
Tab
May be configured via the Settings > Input > Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
ESC
P
;
=
-
F5
F7
F6
(prev) / F8
(next)F12
Ctrl+F12
F2
May be configured via the Config > Map Hotkeys dialog
Shift+F1
- Shift+F10
F1
- F10
Pause
\\
Tab
May be configured via the Options > Configuration dialog (Select Hotkeys > Game playing (windowed))
F5
F7
1
-0
Pause
F4
(Must enable advanced settings: Options
> Configuration
> General Settings
> uncheck Hide advanced settings
)F11
F12
Pause
Shift+Pause
ScrollLock
F12
> Misc > SaveF12
> Misc > LoadF12
> Key > Assign PAUSE
to a function keyF12
> Key > Assign NOWAIT
to a function keyShift+F1
- Shift+F10
F1
- F10
Pause
\\
Tab
Shift+F1
- Shift+F10
F1
- F10
Pause
Ctrl+N
Options
> Key Shortcuts
> Emulation
> Turbo Mode
Last 10 changes on this page:
[2024-01-14 08:20] Jamiras:
Created Emulator Hotkeys for Developers (markdown)More details on BizHawk cores can be found here.
"},{"location":"Emulator-Support-and-Issues/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-29 02:46] James Groom:
Copy BizHawk core names from readme[2024-01-27 11:17] televandalist:
Updated Emulator Support and Issues (markdown)[2024-01-12 16:54] Jamiras:
add mGBA to supported cores for GB/GBC[2023-12-29 03:19] televandalist:
Updated Emulator Support and Issues (markdown)[2023-12-29 03:15] televandalist:
Added Pizza Boy GBA+GBC and PPSSPP standalone. Hopefully fixed the line breaks for the deployed docs (it's not WYSIWYG)[2023-09-19 19:48] Jamiras:
Updated Emulator Support and Issues (markdown)[2023-07-23 17:59] Joe Pizzimenti:
Updated Emulator Support and Issues (markdown)[2023-06-24 07:11] televandalist:
Updated Emulator Support and Issues (markdown)[2023-06-04 16:16] Jamiras:
Updated Emulator Support and Issues (markdown)[2023-06-01 22:08] televandalist:
Updated DSiLast 10 changes on this page:
[2023-04-20 05:46] televandalist:
Fixed links[2022-03-13 21:23] televandalist:
Fix links[2022-02-08 22:56] televandalist:
Added links for DevQuest and Rollouts doc pages[2022-02-08 22:55] televandalist:
Updated Events (markdown)[2022-02-06 02:47] televandalist:
Start Event Page/Directory - will add more laterRetroAchievements.org es una comunidad que colabora y compite para ganar logros personalizados en juegos cl\u00e1sicos a trav\u00e9s de la emulaci\u00f3n. Los logros son hechos por y para la comunidad. Ofrecemos varios emuladores personalizados para su uso, que detectar\u00e1n cuando hayas completado varios desaf\u00edos. Una vez que hayas iniciado sesi\u00f3n, los emuladores publicar\u00e1n los logros que hayas completado en el sitio, para que puedas verificar y comparar tu progreso con el de tus amigos.
Aqu\u00ed hay un ejemplo de RAGens, jugando Streets of Rage 2. Ver\u00e1s dos contadores de intentos de tabla de clasificaci\u00f3n (abajo a la derecha), un logro desbloque\u00e1ndose y finalmente la interfaz (Overlay, presionando ESC):
"},{"location":"FAQ-es/#que-emulador-necesito-usar","title":"\u00bfQu\u00e9 emulador necesito usar?","text":"Los emuladores oficiales de RetroAchievements.org son todos basados en Windows. Para otros sistemas operativos, puedes usar RetroArch. M\u00e1s informaci\u00f3n a continuaci\u00f3n:
"},{"location":"FAQ-es/#emuladores-oficiales-de-retroachievementsorg","title":"Emuladores oficiales de RetroAchievements.org","text":"Descarga el emulador de tu elecci\u00f3n en la p\u00e1gina de descargas, inicia sesi\u00f3n con tu nombre de usuario y contrase\u00f1a (s\u00ed, primero debes crearte una cuenta), luego carga una ROM \u00a1y juega!
"},{"location":"FAQ-es/#como-accedo-a-la-interfaz-overlay-de-logros","title":"\u00bfC\u00f3mo accedo a la interfaz (Overlay) de logros?","text":"Normalmente, esto se configurar\u00e1 en la tecla de teclado 'ESC' o en la funci\u00f3n de pausa del juego. En la mayor\u00eda de los emuladores, un juego debe estar activo para que funcione.
Algunos de los emuladores ya deber\u00edan estar configurados asignando un bot\u00f3n de controlador para ver la interfaz de logros. Generalmente 'ESC' en el teclado debe activarlo, pero si deseas asignarlo a un control, aqu\u00ed hay algunos trucos para algunos de los emuladores oficiales:
Para sistemas operativos que no sean Windows, debes usar el emulador RetroArch.
Actualmente se pueden obtener logros a trav\u00e9s de RetroArch en las siguientes plataformas:
Se puede obtener RetroArch en los siguientes enlaces:
Una vez que lo hayas instalado y hecho la configuraci\u00f3n inicial, sigue esta gu\u00eda para configurar los logros: https://libretro.readthedocs.io/en/latest/guides/retroachievements/
"},{"location":"FAQ-es/#que-nucleo-core-retroarch-deberia-usar","title":"\u00bfQu\u00e9 n\u00facleo (Core) RetroArch deber\u00eda usar?","text":"Hay que tener en cuenta que no todos los n\u00facleos (Core) de RetroArch son compatibles con RetroAchievements. Consulta esta lista para ver cu\u00e1l elegir.
"},{"location":"FAQ-es/#como-puedo-ver-la-insignia-badge-cuando-gano-un-logro-en-retroarch","title":"\u00bfC\u00f3mo puedo ver la insignia (Badge) cuando gano un logro en RetroArch?","text":"Esta funci\u00f3n fue implementada en RetroArch 1.7.7 (May/2019), aunque aun hay algunas plataformas en las que aun no funciona (como en el PS Vita). Simplemente necesitas percatarte que la opci\u00f3n de Menu Widget este habilitada (que usualmente lo esta por default).
"},{"location":"FAQ-es/#retroarchralibretro-no-corre-mi-juego-de-arcade-que-tengo-que-hacer","title":"RetroArch/RALibretro no corre mi juego de arcade. \u00bfQue tengo que hacer?","text":"Primero lo primero: percatate de estar utilizando el n\u00facleo de RetroArch correcto. Checa aqui cual nucleo deberias de utilizar para poder utilizar la funci\u00f3n de RetroAchievements en juegos de arcade: https://libretro.readthedocs.io/en/latest/guides/retroachievements/#arcade
Segundo punto: Los ROMs de Arcade son mas complicados que los de consolas. Hay algunos conceptos y terminologias que necesitas entender y asi todo va a empezar a tener sentido. Aqu\u00ed hay un buen texto en ingles sobre este tema: Demystifying MAME ROMs.
Tip Pro: utiliza tu motor de b\u00fasqueda preferido para buscar un \"set de referencia\" (utilizar ROMs de manera aleatoria de diferentes fuentes es un m\u00e9todo de \"prueba y error\" y lo mas probable es que te frustres demasiado).
"},{"location":"FAQ-es/#sera-retroachievements-compatible-con-playstation","title":"\u00bfSer\u00e1 RetroAchievements compatible con PlayStation?","text":"Respuesta mem\u00e9tica: Cada vez que alguien pregunta sobre los logros de PSX, el desarrollo se retrasa un mes m\u00e1s. Asi que por favor, \u00a1DEJA DE PREGUNTAR!
Respuesta corta: Si, lo ser\u00e1, pero aun no hay una fecha estimada para su llegada.
Respuesta larga: El m\u00e9todo actual de creaci\u00f3n de logros tiene limitaciones que influyen directamente en la calidad de los logros. Los juegos de PlayStation son un poco m\u00e1s complejos que los de las consolas que ya son compatibles aqu\u00ed (excepto quiz\u00e1s, los de Nintendo 64). Y en consecuencia, los logros de los juegos de PS merecen una mayor elaboraci\u00f3n y cuidado. Todos tenemos un gran respeto por la consola de PlayStation, y esa es exactamente la raz\u00f3n por la que queremos implementar mejoras en el kit de herramientas utilizado para crear logros antes de agregar este soporte.
Nota: si encuentras cualquier otro sitio con logros para PlayStation, ten en cuenta que no esta asociado con RetroAchievements.
"},{"location":"FAQ-es/#mi-correo-electronico-de-bienvenida-se-ha-perdido","title":"\u00a1Mi correo electr\u00f3nico de bienvenida se ha perdido!","text":"Lamentablemente, es sabido que algunas veces se pierde el correo electr\u00f3nico de bienvenida. Si esto sucede, inicia sesi\u00f3n con tu nombre de usuario/contrase\u00f1a con el que te registraste, luego visita tu p\u00e1gina de configuraci\u00f3n. En la parte superior, encontrar\u00e1s la opci\u00f3n de volver a enviar tu correo electr\u00f3nico de registro.
"},{"location":"FAQ-es/#donde-puedo-encontrar-roms","title":"\u00bfDonde puedo encontrar ROMs?","text":"Aqu\u00ed no. Lamentablemente, es ilegal alojar o distribuir ROMs con derechos de autor.
"},{"location":"FAQ-es/#por-que-mi-juego-no-esta-cargando-sus-logros","title":"\u00bfPor qu\u00e9 mi juego no est\u00e1 cargando sus logros?","text":"Ya sea:
Una buena pr\u00e1ctica es verificar el tema oficial del foro del juego. Si a\u00fan no tienes una respuesta, consulta esta p\u00e1gina aqu\u00ed para m\u00e1s detalles: Mi juego no esta cargando los logros.
"},{"location":"FAQ-es/#que-es-el-modo-hardcore","title":"\u00bfQu\u00e9 es el modo \"Hardcore\"?","text":"El modo Hardcore es una caracter\u00edstica adicional para separar a los buenos jugadores de los grandes jugadores: el modo Hardcore desactiva toda forma de salvado y cargado (savestates) en el emulador: no podr\u00e1s guardar y volver a cargar en cualquier momento. Tendr\u00e1s que completar el juego y obtener los logros la primera vez, al igual que en la consola original. En recompensa por esto, ganar\u00e1s tanto el logro est\u00e1ndar como el logro en modo Hardcore, en efecto, \u00a1ganando el doble de puntos! \u00a1Un juego que normalmente vale 400 puntos, vale 800 puntos si lo completas exitosamente en el modo Hardcore! Por ejemplo: si completas el juego por completo con 400 puntos, entonces tienes la oportunidad de ganar otros 400 en el modo Hardcore.
Si quieres jugar con el modo Hardcore desactivado (tambi\u00e9n conocido como \"softcore\"), podr\u00e1s tener algunos problemas. M\u00e1s detalles aqu\u00ed: Why you shouldn't use the load state feature
"},{"location":"FAQ-es/#no-obtuve-este-logro-o-lo-obtuve-en-un-momento-equivocado","title":"\u00a1No obtuve este logro! (o lo obtuve en un momento equivocado)","text":"Hay una caracter\u00edstica incorporada solo en los emuladores oficiales (no en RetroArch) que permite informar sobre logros rotos que se obtienen en el momento equivocado, o que no se obtienen del todo. Ir a RetroAchievements -> Report Broken Achievements.
Ejemplo:
.
Tambi\u00e9n hay una forma de informar sobre logros rotos directamente a trav\u00e9s del sitio web. En la p\u00e1gina de cada logro, hay un enlace que dice Report an issue for this achievement
, como en la imagen a continuaci\u00f3n:
Agrega detalles del estado de tu juego, cu\u00e1ndo se activ\u00f3/no se activ\u00f3 el logro, en qu\u00e9 modo de juego ocurri\u00f3, d\u00f3nde estabas cuando sucedi\u00f3/no sucedi\u00f3, si reseteaste el juego recientemente, o cualquier otra cosa que creas que pueda ser relevante para el logro. Esto es necesario para nuestro sistema, para que los desarrolladores sepan d\u00f3nde esta el problema.
"},{"location":"FAQ-es/#complete-un-logro-dificil-pero-no-se-activo-se-me-puede-desbloquear-manualmente","title":"Complet\u00e9 un logro dif\u00edcil pero no se activ\u00f3, \u00bfse me puede desbloquear manualmente?","text":"S\u00ed. Pero debes seguir los siguientes pasos:
Mira la pregunta/respuesta anterior para saber c\u00f3mo enviar un ticket.
1. Si el logro no se registr\u00f3 en el sitio debido a un problema de red, no es necesario que envie un ticket.#help-me
de nuestro Servidor de Discord, mencionando a alg\u00fan @admin u otro usuario con el rol de admin, proporcionando la siguiente informaci\u00f3n: 1. En enlace a la p\u00e1gina del logro 2. En que modo estabas jugando (hardcore/softcore) 3. El enlace a la evidencia (captura de pantalla, video, etc.)\u00a1Es bueno escuchar eso! El mejor lugar para empezar es aqui: Getting Started as an Achievement Developer. Una vez que est\u00e9s familiarizado con el Memory Inspector y otros di\u00e1logos relacionados con los logros, puedes ir al resto de los Developer Docs.
Por favor, no dudes en preguntar si necesitas ayuda, \u00a1no luches! Lo m\u00e1s importante es asegurarte de que est\u00e1s disfrutando lo que sea que est\u00e9s haciendo. Si no te est\u00e1s divirtiendo, no lo hagas. Pero si te sientes frustrado y quieres persistir, simplemente deja caer un mensaje en los foros o en el Servidor de Discord y alguien se comunicar\u00e1 contigo en breve.
"},{"location":"FAQ-es/#que-son-los-puntos-blancos-white-points","title":"\u00bfQue son los Puntos Blancos (White points)?","text":"Los puntos blancos (White points) son secundarios seg\u00fan lo dif\u00edcil que sea un logro. Explicado en detalle aqu\u00ed.
"},{"location":"FAQ-es/#que-se-considera-hacer-trampa-para-el-hardcore-que-pasa-si-encuentro-evidencia-de-un-tramposo","title":"\u00bfQu\u00e9 se considera hacer trampa (para el Hardcore)? \u00bfQu\u00e9 pasa si encuentro evidencia de un tramposo?","text":"Explotaci\u00f3n de conjuntos de logros y alteraci\u00f3n o modificaci\u00f3n deliberada de juego, emulador, memoria, velocidad (avance r\u00e1pido) o conjunto. Cargar bater\u00edas grabadas para obtener logros fuera de lugar sin ganarlos durante el juego normal.
Se prohiben todas las trampas de los juegos, a menos que se especifique en la descripci\u00f3n o los comentarios del logro en la p\u00e1gina del logro.
Vivimos por un c\u00f3digo de honor m\u00e1s que nada. Si encuentras evidencia de un tramposo, env\u00eda la evidencia a RAdmin, o env\u00eda un correo electr\u00f3nico a RAmodmail@gmail.com.
"},{"location":"FAQ-es/#que-pasa-si-obtengo-un-logro-que-no-gane","title":"\u00bfQu\u00e9 pasa si obtengo un logro que no gan\u00e9?","text":"Lo mismo ocurre con no obtenerlo cuando deber\u00eda, en la mayor\u00eda de los casos, querr\u00e1s crear un informe de ticket (ver arriba), dejando una explicaci\u00f3n de lo que sali\u00f3 mal. Tambi\u00e9n querr\u00e1s eliminar estos logros de tu cuenta, para que puedas tener la satisfacci\u00f3n de realmente ganarlos por ti mismo.
Restableciendo logros no ganados.
"},{"location":"FAQ-es/#como-puedo-restablecer-mi-contrasena-si-no-la-recuerdo","title":"\u00bfC\u00f3mo puedo restablecer mi contrase\u00f1a? (Si no la recuerdo)","text":"Justo aqu\u00ed: https://retroachievements.org/resetPassword.php
En el sitio, p\u00e1gina principal, mientras no est\u00e9 conectado:
"},{"location":"FAQ-es/#porque-no-puedo-ver-mi-nueva-foto-de-perfil","title":"\u00bfPorque no puedo ver mi nueva foto de perfil?","text":"Presiona Ctrl + F5
(en la mayor\u00eda de navegadores). Algunas veces despu\u00e9s de haber cambiado tu foto de perfil (tambi\u00e9n conocido como avatar o foto de usuario) necesitas refrescar la cache de tu navegador; en la mayor\u00eda de los navegadores la manera mas r\u00e1pida de hacerlo es con Ctrl + F5
.
En el sitio web vas a obtener un badge que dice \"I helped fund RA!\". En el servidor de discord vas a tener acceso a un canal dedicado. Aunque estamos inmensamente agradecido por los aportes de nuestros Patreons, no hay otro bonus aparte de esos.
Gracias a las contribuciones de Patreon el proyecto de RetroAchievements puede pagar un servidor decente en el sitio web, correr el bot de discord y tambi\u00e9n realizar respaldos cada cierto tiempo (para recuperar informaci\u00f3n en caso de un desastre), y todo esto con una experiencia libre de anuncios. La comunidad entera le merece un gran gracias a los patreons.
"},{"location":"FAQ-es/#retroachievements-esta-haciendo-dinero-por-medio-de-la-emulacion","title":"\u00bfRetroAchievements esta haciendo dinero por medio de la emulaci\u00f3n?","text":"No. RetroAchievements es una comunidad de fans devotos que quieren rendirle homenaje a sus juegos favoritos creando y sacando logros! Aunque tambi\u00e9n aceptamos donaciones por medio de Patreon todo el dinero donado se utiliza para pagar los gastos de los servidores y mantener el sitio completamente libre de anuncios. Todos los programadores y desarrolladores entregan su tiempo a lo mejor para la comunidad a su propio costo.
"},{"location":"FAQ-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-04-21 03:38] luchaos:
update libretro docs links[2019-05-24 10:18] eldexterr:
Added missing information[2019-04-20 15:15] eldexterr:
Changed \"otorgar manualmente\" to \"desbloquear manualmente\"[2019-02-14 10:12] meleu:
fix broken link[2019-02-09 20:19] meleu:
fix broken link[2018-10-11 00:14] CoolCanuck:
https[2018-06-10 09:45] lilbud:
Updated Discord Link[2018-05-09 13:15] ShinyNinetalesTM:
edited the a link to https://github.com/RetroAchievements/docs/wiki/My-game-is-not-loading-achievements-es[2018-05-06 13:19] ShinyNinetalesTM:
fixed several words without accent mark (tilde) and some missing commas and parentheses[2018-05-04 10:33] meleu:
added a title to make it look better after mkdocs conversionRetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit, kt\u00f3ra wsp\u00f3\u0142pracuje i rywalizuje \u017ceby zyska\u0107 w\u0142asne osi\u0105gni\u0119cia do klasycznych gier poprzez emulacje, osi\u0105gni\u0119cia s\u0105 tworzone przez i dla spo\u0142eczno\u015bci. My dajemy specjalnie przystosowane emulatory dla was, kt\u00f3re wykrywaj\u0105 gdy wykonasz jakie\u015b wyzwanie. Gdy si\u0119 zalogujesz, emulator wy\u015ble osi\u0105gni\u0119cia jakie zdoby\u0142e\u015b na stron\u0119, aby\u015b m\u00f3g\u0142 zobaczy\u0107 i por\u00f3wna\u0107 post\u0119p z przyjaci\u00f3\u0142mi
Tutaj jest przyk\u0142ad RAGens, graj\u0105cy w \"Street of Rage 2\", wida\u0107 dwie Tablice Wynik\u00f3w (dolny prawy r\u00f3g), jedno osi\u0105gni\u0119cie wyskakuje, a na ko\u0144cu Nak\u0142adka Osi\u0105gni\u0119\u0107 (Naci\u015bnij Escape
):
Tryb HARDCORE jest dodatkow\u0105 funkcj\u0105 \u017ceby oddzieli\u0107 dobrych graczy od \u015bwietnych graczy: Tryb HARDCORE wy\u0142\u0105cza wszystkie funkcje stanu zapisu z emulatora: Nie b\u0119dziesz m\u00f3g\u0142 zapisywa\u0107 i wczytywa\u0107 kiedy chcesz. B\u0119dziesz musia\u0142 zdoby\u0107 osi\u0105gni\u0119cia za pierwszym razem, tak jak na oryginalnej konsoli. W nagrod\u0119 za to, dostanie standardowe punkty jak i punkty HARDCORE, skutkuj\u0105c w podwojeniu zyskanych punkt\u00f3w! Zwyk\u0142a gra warta 400 punkt\u00f3w, jest teraz warta 800, je\u015bli przejdziesz gr\u0119 ca\u0142kiem w trybie HARDCORE!
Notka: Je\u015bli chcesz gra\u0107 w wy\u0142\u0105czonym trybem HARDCORE (znany r\u00f3wnie\u017c jako SOFTCORE), oczekuj \u017ce mo\u017cesz mie\u0107 pewne problemy. Przeczytaj w tym linku czemu nie powiniene\u015b u\u017cywa\u0107 funkcji wczytania stanu.
"},{"location":"FAQ-pl/#ktorego-emulatora-musze-uzywac","title":"Kt\u00f3rego emulatora musz\u0119 u\u017cywa\u0107?","text":"Oficjalne emulatory RetroAchievements.org s\u0105 bazowane na Windowsie. Dla innych system\u00f3w operacyjnych mo\u017cesz u\u017cy\u0107 Retroarch'a. Wi\u0119cej informacji poni\u017cej:
"},{"location":"FAQ-pl/#oficjalne-emulatory-retroachievementsorg","title":"Oficjalne emulatory RetroAchievements.org","text":"Prosz\u0119 pobierz emulator twojego wyboru z strony pobierania, zalogowa\u0107 si\u0119 u\u017cywaj\u0105c swojego pseudonimu i has\u0142a (tak, musisz pierw stworzy\u0107 konto), potem za\u0142aduj ROM i zacznij gra\u0107!
Co to jest Nak\u0142adka Osi\u0105gni\u0119\u0107 i jak w ni\u0105 wej\u015b\u0107?
Nak\u0142adka Osi\u0105gni\u0119\u0107 jest wbudowanym ekranem RetroAchievements, kt\u00f3ry pokazuje osi\u0105gni\u0119cia kt\u00f3re mo\u017cesz zyska\u0107 i opisy tego co trzeba zrobi\u0107, kt\u00f3re osi\u0105gni\u0119cia zyska\u0142e\u015b, twoje punkty osi\u0105gni\u0119\u0107, szczeg\u00f3\u0142y o najlepszych wynikaj tablicy wynik\u00f3w i wi\u0119cej.
Normalnie, aby w ni\u0105 wej\u015b\u0107, domy\u015blnym przyciskiem jest przycisk Escape
, lub u\u017cywaj\u0105c funkcji pauzy. W wi\u0119kszo\u015bci emulator\u00f3w, gra musi by\u0107 aktywna \u017ceby nak\u0142adka dzia\u0142a\u0142a.
Niekt\u00f3re emulatory maj\u0105 przycisk ustawiony na kontrolerze \u017ceby zobaczy\u0107 nak\u0142adk\u0119 osi\u0105gni\u0119\u0107. Og\u00f3lnie Escape
na klawiaturze powinien j\u0105 w\u0142\u0105czy\u0107, lecz je\u015bli chcesz przywi\u0105za\u0107 przycisk z kontrolera, tutaj jest jak to ustawi\u0107 na paru oficialnych emulatorach:
Dla system\u00f3w nie-Windowsowych musisz u\u017cy\u0107 Retroarcha
aktualnie mo\u017cesz zdoby\u0107 osi\u0105gni\u0119cia za pomocy Retroarcha na podanych platformach:
Mo\u017cesz zdoby\u0107 RetroArch na podanych linkach:
Gdy ju\u017c zainstalowa\u0142\u0119\u015b zrobi\u0142e\u015b wst\u0119pn\u0105 konfiguracj\u0119, pod\u0105\u017caj za poradnikiem, aby ustawi\u0107 osi\u0105gni\u0119cia: https://docs.libretro.com/guides/retroachievements/
Jak mog\u0119 zobaczy\u0107 odznaki gdy zdob\u0119d\u0119 osi\u0105gni\u0119cie na RetroArch?
Ta funkcja zosta\u0142a dodana do RetroArch 1.7.7 (Maj/2019), lecz s\u0105 platformy na kt\u00f3rych to ci\u0105gle nie dzia\u0142a, musisz si\u0119 upewni\u0107 \u017ce opcja Menu Wid\u017ceta jest w\u0142\u0105czona (i jest zwykle w\u0142\u0105czona domy\u015blnie).
"},{"location":"FAQ-pl/#czym-sa-biae-punkty","title":"Czym s\u0105 bia\u0142e punkty?","text":"Bia\u0142e punkty, zwane r\u00f3wnie\u017c jako punkty \"Retro Ratio\", s\u0105 dodatkowymi punktami bazuj\u0105cymi na trudno\u015bci osi\u0105gni\u0119cia, lecz ta funkcja nie jest aktualnie do ko\u0144ca precyzyjna. Wyja\u015bniona jest tu w szczeg\u00f3\u0142ach
"},{"location":"FAQ-pl/#moj-email-powitalny-zagina","title":"M\u00f3j email powitalny zagin\u0105\u0142.","text":"Niestety czasami email powitalny mo\u017ce zagin\u0105\u0107. Je\u015bli tak si\u0119 sta\u0142o, to zaloguj si\u0119 na pseudonim/has\u0142o na kt\u00f3rym si\u0119 zarejestrowa\u0142e\u015b, potem wejd\u017a w ustawienia. Na g\u00f3rze znajdziesz opcj\u0119 aby wys\u0142a\u0107 tw\u00f3j email rejestracyjny ponownie.
"},{"location":"FAQ-pl/#czemu-nie-widze-nowego-zdjecia-profilowego","title":"Czemu nie widz\u0119 nowego zdj\u0119cia profilowego?","text":"Naci\u015bnij Ctrl + F5
(na wi\u0119kszo\u015bci przegl\u0105darek). Czasami po tym jak zmieni\u0142e\u015b zdj\u0119cie profilowe (znane r\u00f3wnie\u017c jako awatar lub zdj\u0119cie u\u017cytkownika) musisz od\u015bwie\u017cy\u0107 pami\u0119\u0107 cache; w wi\u0119kszo\u015bci przegl\u0105darek Ctrl + F5
jest najszybsz\u0105 metod\u0105.
Nie tutaj, jest nielegalne hostowanie lub udost\u0119pnianie ROM\u00f3w. Lecz mamy stron\u0119 o Darmowych Grach gdzie mo\u017cesz znale\u017a\u0107 par\u0119 fajny gier homebrew.
"},{"location":"FAQ-pl/#czemu-moja-gra-nie-wczytuje-osiagniec","title":"Czemu moja gra nie wczytuje osi\u0105gni\u0119\u0107?","text":"Mo\u017ce by\u0107 to:
Dobrym nawykiem mo\u017ce by\u0107 sprawdzenie oficjalnego tematu gry na forum. Je\u015bli ci\u0105gle nie masz odpowiedzi sprawd\u017a t\u0105 stron\u0119 po wi\u0119cej szczeg\u00f3\u0142\u00f3w: Moja gra nie \u0142aduje osi\u0105gni\u0119\u0107.
"},{"location":"FAQ-pl/#retroarchralibretro-nie-uruchamia-mojej-gry-automatowej-co-powinienem-zrobic","title":"RetroArch/RALibretro nie uruchamia mojej gry automatowej. Co powinienem zrobi\u0107?","text":"Najpierw: Upewnij si\u0119 \u017ce u\u017cywasz odpowiedniego rdzenia RetroArch. Kliknij tutaj aby dowiedzie\u0107 si\u0119 jaki rdze\u0144 obs\u0142uguje funkcje RetroAchievements dla gier automatowych.
Potem: ROMy automatowe s\u0105 bardziej skomplikowane ni\u017c ROMy consolowe. Jest pare termin\u00f3w i koncept\u00f3w kt\u00f3re musisz zrozumie\u0107 aby to nabra\u0142o sens. Tutaj jest dobry tekst na ten temat: Obja\u015bnienie ROM\u00f3w MAME.
Szybka rada: U\u017cyj swojej ulubionej przegl\u0105darki i znajd\u017a \"zestaw bazuj\u0105cy\" (u\u017cywanie ROM\u00f3w losowo wzi\u0119tych z r\u00f3\u017cnych \u017ar\u00f3de\u0142 polega na metodzie \"pr\u00f3b i b\u0142\u0119d\u00f3w\" i najprawdopodobniej prowadzi do sporej ilo\u015bci frustracji).
"},{"location":"FAQ-pl/#czy-retroachievements-bedzie-wspierac-ta-albo-tamta-konsole","title":"Czy RetroAchievements b\u0119dzie wspiera\u0107 t\u0105 albo tamt\u0105 konsol\u0119?","text":"Kr\u00f3tka odpowied\u017a: Tak, b\u0119dzie
D\u0142uga odpowied\u017a: Jedyn\u0105 poprawn\u0105 odpowiedzi\u0105 jest \"Kiedykolwiek kto\u015b z umiej\u0119tno\u015bci\u0105 i ch\u0119ci\u0105 kodowania wsparcia to zrobi.\" - Ka\u017cdy tutaj jest ochotnikiem wi\u0119c dodatkowe wsparcie b\u0119dzie si\u0119 dzia\u0142o, kiedy b\u0119dzie si\u0119 dzia\u0142o.
"},{"location":"FAQ-pl/#jak-poprosic-o-zestaw-osiagniec","title":"Jak poprosi\u0107 o zestaw osi\u0105gni\u0119\u0107?","text":"Na ka\u017cdej stronie jest link \"Request set\"
Klikni\u0119cie tego doda twoj\u0105 nazwe do listy os\u00f3b kt\u00f3re prosz\u0105 o zestaw (lub set) osi\u0105gni\u0119\u0107 do tej gry. Klikni\u0119cie ponownie spowoduje usuni\u0119cie pro\u015bby. \u017beby zobaczy\u0107 list\u0119 os\u00f3b prosz\u0105cych o zestaw osi\u0105gni\u0119\u0107 do tej gry, naci\u015bnij link \"Set Requestors for this game\" w sekcji \"More Info\" na dole strony.
Ca\u0142kowita lista pr\u00f3\u015bb jest podliczana i wy\u015bwietlana na stronie Najbardziej proszonych set\u00f3w, kt\u00f3ra mo\u017ce by\u0107 sortowana wed\u0142ug konsoli. Je\u015bli i kiedy set b\u0119dzie stworzony, pro\u015bby powr\u00f3c\u0105 do u\u017cytkownika, aby m\u00f3g\u0142 u\u017cy\u0107 je na innej grze.
Liczba pr\u00f3\u015bb jest ustalana wed\u0142ug nast\u0119puj\u0105cej formu\u0142y:
Notka: Wszyscy tw\u00f3rcy osi\u0105gni\u0119\u0107 s\u0105 ochotnikami, pro\u015bba o set nie gwarantuje powstanie osi\u0105gni\u0119\u0107 do tej gry. Cel tej funkcji jest pokazanie developerom tego, co gracze chc\u0105 najbardziej. Mo\u017cesz r\u00f3wnie\u017c zastanowi\u0107 si\u0119 nad zasugerowaniem osi\u0105gni\u0119\u0107 na temacie gry na forum, aby u\u0142atwi\u0107 zacz\u0119cie tworzenia nowego seta.
"},{"location":"FAQ-pl/#co-robic-gdy-osiagniecia-nie-dziaaja-prawidowo","title":"Co robi\u0107 gdy osi\u0105gni\u0119cia nie dzia\u0142aj\u0105 prawid\u0142owo?","text":"Kiedy pojawi si\u0119 problem z osi\u0105gni\u0119ciami, gdy nie zosta\u0142e\u015b nagrodzony osi\u0105gni\u0119ciem, lub zosta\u0142e\u015b nagrodzony w nieodpowiednim momencie, istnieje rozwi\u0105zanie tego problemu i mo\u017cliwo\u015b\u0107 zostania poprawnie nagrodzonym. Najpierw powiniene\u015b Zg\u0142osi\u0107 popsute osi\u0105gni\u0119cie (Jest to solidny spos\u00f3b aby wnie\u015b\u0107 wk\u0142ad w popraw\u0119 spo\u0142eczno\u015bci!) To stworzy zg\u0142oszenie dla dewelopera osi\u0105gni\u0119\u0107, kt\u00f3ry potem oceni problem i poszuka rozwi\u0105zania.
Je\u017celi nie zosta\u0142e\u015b nagrodzony osi\u0105gni\u0119ciem mo\u017cesz zosta\u0107 nagrodzony r\u0119cznie. B\u0119dziesz potrzebowa\u0142 Zg\u0142oszenie zepsutego osi\u0105gni\u0119cia i Dow\u00f3d jego wykonania
"},{"location":"FAQ-pt_BR/","title":"FAQ (Perguntas Frequentes)","text":"Link para o texto em ingl\u00eas: FAQ
"},{"location":"FAQ-pt_BR/#o-que-e-o-retroachievementsorg","title":"O que \u00e9 o RetroAchievements.org?","text":"RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos cujos membros colaboram para a sua manuten\u00e7\u00e3o e aperfei\u00e7oamento enquanto competem entre si para ganhar conquistas personalizadas em jogos cl\u00e1ssicos por meio da emula\u00e7\u00e3o. Todas as conquistas s\u00e3o criadas e mantidas pela pr\u00f3pria comunidade e s\u00e3o presenteadas para os usu\u00e1rios atrav\u00e9s de emuladores especialmente customizados e disponibilizados em nossa p\u00e1gina. Uma vez logado em nossos emuladores, os programas ir\u00e3o informar \u00e0 central todas as conquistas que voc\u00ea conquistou para que voc\u00ea possa checar e comparar o seu progresso com o de seus amigos atrav\u00e9s do site.
No exemplo a seguir, RAGens (nossa vers\u00e3o personalizada do emulador Gens do Mega Drive) est\u00e1 emulando o jogo Streets of Rage 2. Dois leaderboards especiais podem ser notados no canto inferior direito da tela (eles ir\u00e3o coletar informa\u00e7\u00f5es especiais como a pontua\u00e7\u00e3o, por exemplo). Ao completar uma s\u00e9rie de requisitos, uma conquista \u00e9 desbloqueada pelo jogador que \u00e9 informado sobre o evento atrav\u00e9s de um \"pop-up\" especial. Ao final do exemplo, um menu especial com v\u00e1rias informa\u00e7\u00f5es sobre o jogo (que pode ser ativado ao pressionar a tecla ESC) aparece na tela.
"},{"location":"FAQ-pt_BR/#o-que-e-o-modo-hardcore","title":"O que \u00e9 o modo HARDCORE?","text":"O modo HARDCORE \u00e9 um recurso adicional que separa os bons jogadores dos grandes jogadores! Ao habilitar esse modo, voc\u00ea ficar\u00e1 impossibilitado de carregar um arquivo de \"savestate\" previamente salvo, ou seja: o jogo n\u00e3o mais poder\u00e1 ser salvo e carregado a qualquer momento. Ao habilitar o modo HARDCORE, voc\u00ea dever\u00e1 completar o jogo assim como ele foi projetado em seu console original e ganhar as suas conquistas sem a ajuda de recursos extras. Como recompensa, toda vez que habilitar uma conquista nesse modo, duas vers\u00f5es da mesma conquista ser\u00e3o presenteadas: a sua vers\u00e3o normal (ou SOFTCORE) e a sua vers\u00e3o HARDCORE, cada uma delas somando a mesma quantidade de pontos ao seu placar totalizando o dobro de pontos que iriam ser ganhos com o modo HARDCORE desabilitado. Um jogo com um total de 400 pontos poder\u00e1 lhe conferir 800 pontos caso voc\u00ea ganhe todas as conquistas dispon\u00edveis no modo HARCORE!
Nota: Ao jogar no modo \"SOFTCORE\" e usar as op\u00e7\u00f5es de \"savestate\" para salvar e carregar o seu jogo a qualquer momento, comportamentos inesperados por parte das conquistas poder\u00e3o ser observados. Para mais informa\u00e7\u00f5es, leia o informe em: Why you shouldn't use the load state feature
"},{"location":"FAQ-pt_BR/#qual-emulador-eu-preciso-usar","title":"Qual emulador eu preciso usar?","text":"Os emuladores oficiais do RetroAchiements.org s\u00e3o todos baseados em Windows. Para outros sistemas operacionais, voc\u00ea pode usar o RetroArch. Mais informa\u00e7\u00f5es abaixo:
"},{"location":"FAQ-pt_BR/#emuladores-oficiais-do-retroachievementsorg","title":"Emuladores oficiais do RetroAchievements.org","text":"Por favor, fa\u00e7a o download do emulador da sua escolha na pagina de download, fa\u00e7a login usando o seu username e senha, ent\u00e3o carregue uma ROM e jogue! Veja o v\u00eddeo a seguir para uma demonstra\u00e7\u00e3o:
https://www.youtube.com/watch?v=rKY2mZjurJw
"},{"location":"FAQ-pt_BR/#como-eu-acesso-o-overlay-de-conquista","title":"Como eu acesso o Overlay de conquista?","text":"Normalmente, isso \u00e9 configurado na tecla do seu teclado'ESC', ou na fun\u00e7\u00e3o de pause no jogo. Na maioria dos emuladores, um jogo deve ser ativo para isso ser funcional.
Alguns dos emuladores j\u00e1 devem ser configurados atribuindo um bot\u00e3o do controle para ver o overlay de conquistas. Geralmente ESC no teclado deve ativ\u00e1-lo, mas se voc\u00ea quer associar isto para um controle, veja este link.
"},{"location":"FAQ-pt_BR/#emuladores-retroarch","title":"Emuladores Retroarch","text":"Para sistemas operacionais \"N\u00e3o-Windows\" voc\u00ea deve usar o RetroArch.
Atualmente voc\u00ea pode ganhar conquistas via RetroArch nessas seguintes plataformas:
Voc\u00ea pode conseguir o RetroArch aqui.
Uma vez voce instalado e feito a configura\u00e7\u00e3o inicial, seguindo este guia para configurar as Conquistas: https://libretro.readthedocs.io/en/latest/guides/retroachievements/
Mantenha em mente que nem todos os cores do RetroArch \u00e9 compativel com o RetroAchievements. Confira esta lista para ver qual escolher.
Nota do tradutor: Cores s\u00e3o arquivos que permitem que o RetroArch seja capaz de interpretar emuladores e posteriormente, ROMs.
O RetroArch n\u00e3o tem suporte para esse recurso. Quando voc\u00ea ganha uma conquista, voc\u00ea apenas v\u00ea um texto com o t\u00edtulo da conquista e ent\u00e3o a descri\u00e7\u00e3o. Aqui est\u00e1 um t\u00f3pico sobre isso no rastrador de quest\u00f5es do RetroArch, mas isso n\u00e3o parece ser uma prioridade para qualquer desenvolvedor ativo. Voc\u00ea \u00e9 um programador em C e quer tentar? Qualquer contribui\u00e7\u00e3o \u00e9 muito bem vinda!
"},{"location":"FAQ-pt_BR/#meu-email-de-boas-vindas-sumiu","title":"Meu email de boas-vindas sumiu!","text":"Infelizmente algumas vezes o email de boas-vindas \u00e9 conhecido por sumir. Se isso acontecer, por favor, fa\u00e7a login com o seu username e senha que voc\u00ea registrou, ent\u00e3o visite sua p\u00e1gina de configura\u00e7\u00f5es. No topo voce ir\u00e1 encontrar uma op\u00e7\u00e3o para reenviar o seu email de registra\u00e7\u00e3o.
"},{"location":"FAQ-pt_BR/#onde-eu-posso-encontrar-roms","title":"Onde eu posso encontrar ROMs","text":"Aqui n\u00e3o. Infelizmente \u00e9 ilegal hospedar ou distribuir ROMs com copyright. Para extrair o arquivo de ROM do seus cartuchos, voc\u00ea pode usar uma ferramenta como o Retrode ou algo similar, ent\u00e3o voc\u00ea pode usar o arquivo de ROM nos nossos emuladores. Outros sites hospedam arquivos ROM que voc\u00ea poderia usar com nossos emuladores, mas n\u00e3o aceitamos baixar ou jogar ROMs para jogos que voc\u00ea n\u00e3o possui.
"},{"location":"FAQ-pt_BR/#porque-o-meu-jogo-nao-esta-carregando-as-conquistas","title":"Porque o meu jogo n\u00e3o est\u00e1 carregando as conquistas?","text":"Motivos:
Para mais detalhes leia esta p\u00e1gina: Meu jogo n\u00e3o est\u00e1 carregando conquistas.
Se voc\u00ea \u00e9 um usu\u00e1rio Linux, voc\u00ea pode usar essa ferramenta para checar se sua ROM est\u00e1 OK para o RetroAchievements: https://github.com/meleu/hascheevos
"},{"location":"FAQ-pt_BR/#esta-conquista-nao-ativou-ou-ativou-em-um-momento-errado","title":"Esta conquista n\u00e3o ativou! (ou ativou em um momento errado)","text":"Esta \u00e9 uma fun\u00e7\u00e3o contruida para apenas emuladores oficiais (n\u00e3o no RetroArch) que permique que voc\u00ea reporte conquistas quebradas que ocorram no momento errado, ou nem ativar. V\u00e1 em RetroAchievements -> Report Broken Achievements.
Veja este exemplo:
.
Al\u00e9m disso, aqui est\u00e1 um video detalhado explicando como usar isto: https://www.youtube.com/watch?v=TTHbm700Y-Y V\u00eddeo em ingl\u00eas
Adicionando detalhes do seu estado do jogo quando ativou/n\u00e3o ativou, qual o modo de jogo, onde voc\u00ea estava quando aconteceu/n\u00e3o aconteceu, se voc\u00ea teve que resetar o jogo recentemente, tudo que voc\u00ea acha que pode ser relevante para a conquista. Isto \u00e9 necess\u00e1rio para o nosso sistema, ent\u00e3o os desenvolvedores sabem onde est\u00e1 o problema.
Se voc\u00ea tiver evid\u00eancias de conclus\u00e3o, voc\u00ea pode tambem contatar um administrador e a conquista pode ser premiada manualmente para voc\u00ea. Fa\u00e7a provas e poste em #help-me
no Discord com a tag @admin. ou envie um PM (Mensagem Pessoal) para um usu\u00e1rio com o nivel de administrador.
Provas Qualificadas Capturas de Tela que mostra que est\u00e1 jogando no hardcore e que completou a conquista. Tal como v\u00eddeo (melhor ainda). Exemplos de conquistas que voc\u00ea ganhou que substituem esta conquista, ex. Voc\u00ea conseguiu a conquista por 10 mil pontos mas de 5 mil pontos n\u00e3o ativou.
Aqui est\u00e1 um exemplo perfeito de prova fornecido pelo gr1nya.
"},{"location":"FAQ-pt_BR/#eu-quero-fazer-conquistas","title":"Eu quero fazer conquistas!","text":"Que bom!! O melhor lugar para se iniciar \u00e9 aqui Come\u00e7ando como um desenvolvedor de conquistas. Uma vez que voc\u00ea se familiarizar com o Memory Inspector e outros di\u00e1logos relacionados a conquistas, voc\u00ea pode ir em outros Documentos para Desenvolvedores
Por favor, n\u00e3o hesite em perguntar se voc\u00ea precisa de ajuda, n\u00e3o debata-se! A coisa mais importante \u00e9 ter certeza que est\u00e1 aproveitando qualquer coisa que voc\u00ea esteja fazendo, Se voc\u00ea n\u00e3o est\u00e1 se divertindo, n\u00e3o fa\u00e7a. Mas se voc\u00ea estiver frustrado e quer persistir, apenas mande uma mensagem nos foruns ou no Servidor do Discord e alguem ir\u00e1 lhe responder rapidamente.
"},{"location":"FAQ-pt_BR/#o-que-sao-os-pontos-brancos","title":"O que s\u00e3o os Pontos Brancos?","text":"Pontos brancos s\u00e3o secund\u00e1rios baseados em qu\u00e3o dificil uma conquista \u00e9. Explicado Aqui em detalhes.
"},{"location":"FAQ-pt_BR/#o-que-e-considerado-trapaca-para-o-hardcore-e-se-eu-encontrar-evidencas-de-um-trapaceiro","title":"O que \u00e9 considerado trapa\u00e7a (para o hardcore)? E se eu encontrar evid\u00eancas de um trapaceiro?","text":"A explora\u00e7\u00e3o de set de conquistas e a altera\u00e7\u00e3o ou modifica\u00e7\u00e3o deliberada de jogos, emuladores, mem\u00f3ria, velocidade (fast-forward \u00e9 permitido) ou set. Carregar saves para obter conquistas sem ganh\u00e1-los durante o jogo normal.
Todas as trapa\u00e7as dos jogos n\u00e3o s\u00e3o permitidas a menos que seja especificado na descri\u00e7\u00e3o da conquista ou coment\u00e1rios na p\u00e1gina da conquista.
Nos vivemos por um c\u00f3digo de honra acima de tudo. Se voc\u00ea encontar evid\u00eancias de um trapaceiro, envie a evid\u00eancia para o RAdmin ou para o email RAmodmail@gmail.com.
"},{"location":"FAQ-pt_BR/#e-se-eu-conseguir-uma-conquista-que-eu-nao-ganhei","title":"E se eu conseguir uma conquista que eu n\u00e3o ganhei?","text":"Mesmo que voc\u00ea n\u00e3o consiga, na maioria dos casos, voc\u00ea deve criar um ticket report (veja abaixo), deixando uma explica\u00e7\u00e3o do que foi errado. Voc\u00ea pode tambem remover essas conquistas de sua conta para voc\u00ea ter a satisfa\u00e7\u00e3o de ganhar realmente ganhar elas.
Resetando conquistas n\u00e3o ganhas
"},{"location":"FAQ-pt_BR/#como-eu-redefino-minha-senha-se-eu-nao-lembrar-minha-senha","title":"Como eu redefino minha senha? (Se eu n\u00e3o lembrar minha senha)","text":"Aqui: https://retroachievements.org/resetPassword.php
No site, na pagina frontal, enquanto n\u00e3o estiver logado
"},{"location":"FAQ-pt_BR/#porque-meu-jogo-nao-esta-carregando-as-conquistas","title":"Porque meu jogo n\u00e3o est\u00e1 carregando as conquistas?","text":"Veja: Porque meu jogo nao est\u00e1 carregando as conquistas
"},{"location":"FAQ-pt_BR/#retroachievements-tem-alguma-finalidade-lucrativa","title":"RetroAchievements tem alguma finalidade lucrativa?","text":"N\u00e3o. RetroAchievments \u00e9 uma comunidade de f\u00e3s devotados que dedicam tributos aos seus jogos favoritos criando conquistas e competindo entre si. Embora aceitemos doa\u00e7\u00f5es atrav\u00e9s do Patreon, todo o dinheiro arrecadado \u00e9 destinado \u00e0 manuten\u00e7\u00e3o do servidor e \u00e0s despesas originadas pelo nosso site que se mant\u00e9m inteiramente livre de propagandas. Todos os programadores e desenvolvedores dedicam o seu tempo \u00e0 melhora da comunidade sem nenhum retorno financeiro.
"},{"location":"FAQ-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-04-21 03:38] luchaos:
update libretro docs links[2019-03-24 23:58] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 23:42] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 23:41] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 22:06] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:50] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:49] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-03-24 21:48] MrGaussRA:
Updated FAQ pt_BR (markdown)[2019-02-10 16:05] meleu:
fix broken link[2018-10-11 00:17] CoolCanuck:
httpsFrequently asked questions regarding the RetroAchievements website and RetroAchievements in general: - What is HARDCORE mode? - What are the white points? - Will RetroAchievements support this or that console? - How are game entries added to the site? - How do I request an achievement set? - How do I make achievements? - How can I contribute? - Testing - Creating Tickets - Saves and Save States
Frequently asked questions regarding the emulators, earning achievements, etc.: - Where can I find ROMs? - Why do I get a message that some achievements are unsupported? - What do I do when the achievement isn't working right? - Manual Unlocks - Why are achievements not loading? - Which emulators and/or cores should I use?
Frequently asked questions regarding user accounts. - Why can't I see my new profile picture? - My welcome email has gone missing! - How do I reset my password? (If I don't remember my password) - Will I have any privilege if I become a patron? - How do I delete my account?
"},{"location":"FAQ/#retroachievements-faq","title":"RetroAchievements FAQ","text":""},{"location":"FAQ/#what-is-hardcore-mode","title":"What is HARDCORE mode?","text":"If you want to have a one-to-one replication of how you used to play retro games in the distant past, then HARDCORE mode is what you are looking for. This feature restricts the player from ever loading save states (creating them is allowed for practice/ticket purposes when not playing on HARDCORE), using cheats, and any speed-altering features like rewinding, slow-motion, and advancing the game one frame at a time by using the emulator's built-in functions. Note that the only exception to altering speed is fast-forward which IS allowed. Basically, you are playing the game without the game-altering enhancements emulators come with.
While you will still be able to get achievements in Softcore, playing on HARDCORE mode is the only way to earn a Mastery for a game, displaying your skill- and prowess to your fellow retro achievers and competitors by showing up on the game's page as a master of the game, as well as on the main leaderboard. Playing on HARDCORE will also allow you to set times, scores or participate in miscellaneous challenges on game-specific leaderboards.
Note: If you want to play with the HARDCORE mode disabled (also known as \"Softcore\"), expect to have some issues. Read in this link Why you shouldn't use the load state feature.
"},{"location":"FAQ/#what-are-the-white-points","title":"What are the white points?","text":"White points, known as Retro Ratio points, are secondary points based on how hard an achievement is, however this feature is not very accurate currently. Explained here in detail.
"},{"location":"FAQ/#will-retroachievements-support-this-or-that-console","title":"Will RetroAchievements support this or that console?","text":"Short answer: Yes, it will.
Long answer: The only correct answer to this question is \"Whenever someone with the skills and desire to code support, does just that.\" - Everyone here is a volunteer so additional support and features happen when they happen. In many cases support for a console is dictated by the emulator(core) developer and is outside of Retroachievement's control.
For more information on specific consoles you can check here: System X When?
"},{"location":"FAQ/#how-do-i-request-an-achievement-set","title":"How do I request an achievement set?","text":"On each game's page there is a link to \"Request Set\".
Clicking this will add your name to the list of users who have requested a set for the game. Clicking again will withdraw the request. To see other users who have requested the set, click on the \"Set Requestors\" link below the game's box art.
The total number of requests are tallied and displayed on the Most Requested Sets page which can also be sorted by console. If and when a set is created the user request will be automatically returned to use for another game.
The number of requests available to a user is determined as follows:
Note: All achievement developers are volunteers, requesting a set gives no guarantee that achievements will be made. The purpose of the request feature is to give developers visibility to what players want most. You might also consider making achievement suggestions on a game's forum page to help get a set off the ground.
"},{"location":"FAQ/#emulation-faq","title":"Emulation FAQ","text":""},{"location":"FAQ/#where-can-i-find-roms","title":"Where can I find ROMs?","text":"Not here. It is illegal to host or distribute copyrighted ROMs. However we have a page about Free Games where you can find some really cool homebrews.
"},{"location":"FAQ/#why-do-i-get-a-message-that-some-achievements-are-unsupported","title":"Why do I get a message that some achievements are unsupported?","text":"This message informs the user that some achievements cannot be activated either because their version of RetroArch and/or the core being used does not support some newer logic features, or because required areas of the RAM are not exposed for achievement processing.
In most cases updating to the latest version of RetroArch will correct the problem, alternately updating or using a different supported core will resolve the problem.
"},{"location":"FAQ/#what-do-i-do-when-the-achievement-isnt-working-right","title":"What do I do when the achievement isn't working right?","text":"When problems with achievements occur, either where the achievement wasn't awarded to you or it was awarded at the wrong time, there are solutions to get the problems fixed and for proper credit to be given to you! First you'll want to report the broken achievement. (This is an excellent way to contribute to the betterment of the community!) It creates a ticket report for the achievement developers who will then review the problem and look for a solution.
If the achievement wasn't awarded, you can request a manual-unlock. You'll need to report the broken achievement and provide proof of completion.
"},{"location":"FAQ/#how-do-i-report-a-broken-achievement","title":"How do I report a broken achievement?","text":"There are two ways to report broken achievements. In the emulator title bar go to RetroAchievements \u21d2 Report Broken Achievements:
.
Report an issue for this achievement
, like in the image below:If you use the Official RetroAchevement emulators you can also report problems from the website achievement page, but it is preferred that you use the method built into the emulators.
"},{"location":"FAQ/#what-details-i-have-to-add-to-a-broken-achievement-report","title":"What details I have to add to a broken achievement report?","text":"You have to add those information in order for a developer to recognize an issue:
If possible, in the broken achievement report Comment paste a link to a screenshot or video (even better) of where the problem occurred. It's recommended to post screenshots on imgur and videos on YouTube.
Also add details like:
This is necessary so the achievement developers know where the problem is.
"},{"location":"FAQ/#what-is-an-ra-hash","title":"What is an RA hash?","text":"RA hash is an unique string of 32 hexadecimal numbers, to distinguish different games and versions of them, all of them have one.
"},{"location":"FAQ/#how-do-i-check-the-ra-hash-of-the-game-im-playing","title":"How do I check the RA hash of the game I'm playing?","text":"@manual-unlock http://retroachievements.org/ticketmanager.php?i=9577 HARDCORE Proof: https://youtu.be/uqD-GTkZbLo
@manual-unlock http://retroachievements.org/ticketmanager.php?i=16705 softcore Proof: https://i.imgur.com/83bJE43.png
Hi. I'm requesting a manual unlock. http://retroachievements.org/ticketmanager.php?i=9577 HARDCORE Proof: https://youtu.be/uqD-GTkZbLo
#manual-unlock
channel tagging the @manual-unlock role; if you're not on Discord, send a private message message to the RAdmin user. Your message must have: 1. The link to the ticket url. You can find the ticket here: http://retroachievements.org/ticketmanager.php 2. What mode you were playing (HARDCORE/softcore) 3. Link to your qualified proof of completion. Include proof that the achievement was earned in HARDCORE, if you were playing in HARDCORE.Note: Manual unlocks are intended for players with proof of earning achievements that did not trigger on site due to a bug or network issue.
They are not indented for, and will not be awarded to players who have played the game prior to a set being available, or on an another inherently unsupported platform (original hardware for example).
"},{"location":"FAQ/#what-if-i-got-an-achievement-i-didnt-earn","title":"What if I got an achievement I didn't earn?","text":"Same with not getting it when you should in most cases you'll want to create a ticket report, leaving an explanation of what went wrong. You'll also want to reset these achievements from your earn history so you can get the satisfaction of truly earning them.
"},{"location":"FAQ/#how-do-i-reset-achievements","title":"How do I reset achievements?","text":"There are three ways to do this:
If an achievement doesn't work correctly for you, there is a very good chance it doesn't work for other people. You can check in the achievement's page and look for where it says 'The achievement has 'X' open tickets':
If the game has tickets, click on the 'open tickets' link. There will be a list to show any reports of broken achievements. You can comment on these to add helpful details or say you have a problem with this achievement too.
"},{"location":"FAQ/#account-faq","title":"Account FAQ","text":""},{"location":"FAQ/#why-cant-i-see-my-new-profile-picture","title":"Why can't I see my new profile picture?","text":"Press Ctrl + F5
(on most browsers). Sometimes after you've changed your profile picture (also known as avatar or user pic) and you need to refresh your browser cache; in most browsers Ctrl + F5
is the quickest way to do it.
Unfortunately sometimes the welcome email has been known to go missing. If this happens, please log in with your username/password you registered with, then visit your settings page. At the top you'll find the option to resend your registration email.
"},{"location":"FAQ/#how-do-i-reset-my-password-if-i-dont-remember-my-password","title":"How do I reset my password? (If I don't remember my password)","text":"Right Here: https://retroachievements.org/resetPassword.php
On Site, front page, while not logged in:
"},{"location":"FAQ/#will-i-have-any-privilege-if-i-become-a-patron","title":"Will I have any privilege if I become a patron?","text":"On the website you'll have a badge to mean \"I helped fund RA!\". On the discord server you'll have access to a dedicated channel. Although we are all immensely grateful for the contributions of the patrons, there is no other bonus besides those ones.
Thanks to the Patreon contributions the RetroAchievements project can pay for a decent server to run the website, run the discord bot and also have periodic backups (to recover data in the event of a disaster), and all this with an ad-free experience. The whole community owe a big thank you to the patrons.
"},{"location":"FAQ/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-28 18:47] RALordAndrew:
Softcore request limit was removed in https://github.com/RetroAchievements/RAWeb/pull/1803[2023-08-03 15:50] Nepiki:
Added that players can get a set request from every event badge[2023-06-30 12:53] televandalist:
Updated FAQ (markdown)[2023-06-05 22:04] televandalist:
Added a few placeholder questions[2023-04-20 05:39] televandalist:
Separated into categories (Account, Emulation, and RetroAchievements)[2023-04-20 05:30] televandalist:
Updated the set request images since they were out-of-date and gigantic.[2023-04-20 05:21] televandalist:
Got rid of out-of-date info and sections that have their own dedicated pages.[2023-04-19 23:43] televandalist:
Removed part about getting errors from using words like \"drop\" and \"select\" - it's no longer relevant. Removed part asking if RA profits off of emulation. It's covered in the RA Manifesto.[2023-01-11 22:48] pingus:
Change outdated cores list link from libretro to RADocs.[2022-09-09 12:37] Nepiki:
Updated Hardcore paragraph regarding leaderboards to account for scores/miscellaneous challengesIn this page you can find games that are completely and legally free download and play on your emulators. Many of them have an achievement set at RetroAchievements.org.
"},{"location":"Free-Games/#atari-2600","title":"Atari 2600","text":"AtariAge has plenty of Atari homebrew on their website that you can either purchase physical cartridges of or (most of the time) download from their forums for free with a quick google search.
Some examples of AtariAge Atari 2600 homebrew:
Esta pagina detalla los m\u00e9todos de hashing para cada consola soportada en RA:
"},{"location":"Game-Identification-es/#nes","title":"NES","text":"Si el ROM empieza con NES\\1a
($4E $45 $53 $1A), los primeros 16 bytes son ignorados y lo que queda del archivo es linkeado/hashed. Si el ROM no empieza con NES\\1a
($4E $45 $53 $1A), el archivo entero es linkeado/hashed.
El archivo entero es linkeado/hashed.
NOTA: Como salvar muta la data de los discos, copias locales de las im\u00e1genes cargadas son necesarias para asegurarte que los hashes no cambien entre cesiones de juego.
"},{"location":"Game-Identification-es/#snes","title":"SNES","text":"Si el tama\u00f1o del archivo es de 512 bytes mas que un multiplo de 8K, los primeros 512 bytes son ignorados y lo que queda del archivos es linkeado/hashed. Si el tama\u00f1o del archivo no es de 512 bytes mas que un multiplo de 8K, el archivo entero es linkeado/hashed.
"},{"location":"Game-Identification-es/#n64","title":"N64","text":"El archivo entero es es agregado al hash.
Esto talvez pueda resultar en tres diferentes hashes para cada juego. La extensi\u00f3n z64 es big endian (ABCD). La extensi\u00f3n n64 es little endian (DCBA). Y la extensi\u00f3n v64 es middle endian (BADC).
"},{"location":"Game-Identification-es/#gb","title":"GB","text":"El archivo entero es agregado al hash.
NOTA: Parece que RAVBA hace 0-pad la informaci\u00f3n si el tama\u00f1o especifico del ROM (address $148) es mas grande que el archivo. Aun tengo que encontrar un caso donde esto ocurra.
"},{"location":"Game-Identification-es/#gbc","title":"GBC","text":"El archivo entero es agregado al hash.
NOTA: Parece que RAVBA hace 0-pad la informaci\u00f3n si el tama\u00f1o especifico del ROM (address $148) es mas grande que el archivo. Aun tengo que encontrar un caso donde esto ocurra.
"},{"location":"Game-Identification-es/#gba","title":"GBA","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#virtualboy","title":"VirtualBoy","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#master-system","title":"Master System","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#megadrive-genesis","title":"MegaDrive (Genesis)","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#sega-32x","title":"Sega 32X","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#sega-cd","title":"Sega CD","text":"Cosas que hacer: Se necesita investigar esto mas a fondo. Este sistema es incluso soportado?
Un buffer de 1KB es agregado al hash. Lo primeros 512 bytes del buffer estan en los primeros 512 bytes del track 0. No estoy seguro de lo que se encuentra en los segundos 512 bytes.
"},{"location":"Game-Identification-es/#gamegear","title":"GameGear","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-2600","title":"Atari 2600","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-7800","title":"Atari 7800","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#atari-lynx","title":"Atari Lynx","text":"Si el ROM empieza con LYNX\\0
, los primeros 64 bytes son ignorados y el contenido restante del archivo es agregado al hash. Si el ROM no empieza con LYNX\\0
, el archivo entero es agregado al hash.
El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#neogeo-pocket","title":"NeoGeo Pocket","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#pcengine-turbografx16","title":"PCEngine (TurboGrafx16)","text":"El archivo entero es agregado al hash.
"},{"location":"Game-Identification-es/#pcengine-cd","title":"PCEngine CD","text":"Tareas que hacer: No estoy completamente seguro de ocmo trabaja este. RAPCE linkea/hashes la \"Placa Madre del ROM principal\", pero no puedo lograr que funcione. RALibRetro parece que no linkea nada, y no hay ningun codigo especial en RetroArch, as\u00ed que por lo que parece esta linkeando/hashing el archivo entero, pero cual archivo pero cual archivo? El zup es un bin/cue con m\u00faltiples archivos.
"},{"location":"Game-Identification-es/#fba-arcade","title":"FBA (Arcade)","text":"El string del nombre del archivo sin la extensi\u00f3n es linkeado/hashed (xxx.zip). Detecta min\u00fasculas y may\u00fasculas.
"},{"location":"Game-Identification-es/#pc-8001-pc-8801","title":"PC-8001 / PC-8801","text":"Im\u00e1genes de cintas y discos cargadas en el drive 1 (program disk data) son completamente linkeadas/hashed.
NOTA: Como salvar y otras manipulaciones pueden mutar la informaci\u00f3n del disco, copias locales del disco son requeridas para asegurar que los hashes no han cambiado entre cesiones de juego.
"},{"location":"Game-Identification-es/#apple-ii","title":"Apple II","text":"Im\u00e1genes de Disco (las dos, disquete y disco duro) cargadas en el drive 1 son completamente linkeadas/hashed.
NOTA: Como salvar y otras manipulaciones pueden mutar la informaci\u00f3n del disco, copias locales del disco son requeridas para asegurar que los hashes no han cambiado entre cesiones de juego.
"},{"location":"Game-Identification-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-20 10:49] eldexterr:
Created Game Identification es (markdown)This page details the hashing method used for each supported system.
"},{"location":"Game-Identification/#the-3do-company","title":"The 3DO Company","text":"path/galaga.zip
-> galaga
) is hashed. It is case-sensitive.\\1ATARI7800
, the first 128 bytes are ignored and the remaining file contents are hashed. If the ROM does not start with \\1ATARI7800
, the entire file is hashed.254487b59ab21bc005338e85cbf9fd2f
, it's a common bootloader for homebrew games and the actual game code is located in track 2. If a separate header block containing a new location and size is found in track 2, then that data is loaded and hashed.LYNX\\0
, the first 64 bytes are ignored and the remaining file contents are hashed. If the ROM does not start with LYNX\\0
, the entire file is hashed.\"PC Engine CD-ROM SYSTEM\"
does not exist at 32 bytes into the data, discard as invalid.\"PC-FX:Hu_CD-ROM\"
was not read, discard as invalid.FDS\\1a
, the first 16 bytes are ignored and the remaining file contents are hashed. FDS\\1a
, the entire file is hashed. .z64
) ROMs..v64
) and Little Endian (.n64
) use the MD5 checksum for its Big Endian counterpart.NES\\1a
, the first 16 bytes are ignored and the remaining file contents are hashed.NES\\1a
, the entire file is hashed.IPL.TXT
file is loaded and parsed.\"SEGA SEGAKATANA \"
. If not, discard as invalid.\"SEGADISCSYSTEM \"
for Sega CD or \"SEGA SEGASATURN \"
for Sega Saturn. If not, discard as invalid.\"SEGADISCSYSTEM \"
for Sega CD or \"SEGA SEGASATURN \"
for Sega Saturn. If not, discard as invalid.SYSTEM.CNF
file is loaded and parsed. The primary executable is identified by the BOOT= line within.SYSTEM.CNF
and written to a buffer.SYSTEM.CNF
file is loaded and parsed. The primary executable is identified by the BOOT2= line within.SYSTEM.CNF
and written to a buffer.PSP_GAME\\PARAMS.SFO
file are written to a buffer. This contains the game attributes displayed in the menu, including the name and serial.PSP_GAME\\SYSDIR\\EBOOT.BIN
) are appended to the buffer.Last 10 changes on this page:
[2023-06-04 21:00] televandalist:
Changed to a new format[2023-06-03 02:03] televandalist:
Removed the \"Pending Explanation\" section since it only contained Wii, which is a ways away.[2023-05-25 11:16] Jamiras:
add hash algorithms for Arduboy, GameCube, Jaguar CD and Neo Geo CD[2023-04-11 03:01] televandalist:
Added Amstrad CPC, Arduboy, Atari Jaguar CD, Fairchild Channel F, Game Cube, Intellivision, Magnavox Odyssey 2, Mega Duck, Neo Geo CD, SG-1000, and Wii. Added \"Pending Explanation\" section. Made some naming corrections and some formatting tweaks.[2021-12-16 13:02] Jamiras:
add dreamcast[2021-10-10 11:20] Jamiras:
add psp[2021-04-30 13:05] Jamiras:
Updated Game Identification (markdown)[2020-12-25 00:07] televandalist:
Corrected PC Engine CD name and fixed a minor grammatical error. :bomber:[2020-06-13 17:45] Jamiras:
add PC-FX[2020-06-07 11:41] Jamiras:
update for new systemse.g. beta, work in progress, stable, unstable, incomplete
e.g. Platformer, easy, difficult, long, rpg, jrpg, buggy, etc.
e.g. awards won, game of the month/week, leaderboard of the month
receive updates on changes
would show up on user page
Randomized, grouped, King of the hill (Latest winner goes on top) or are sortable to show all of these.
Possibly allow this video to be turned off from game page.
: possibly could even log how much time you are in a game on hardcore/softcore, and pause when you go to the overlay or are developing.
Strikethrough is for issues that are on RAweb
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/","title":"Primeros pasos como un Desarrollador de Logros","text":"Bienvenido al mundo de Creacion de Logros!
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#conceptos-basicos","title":"Conceptos Basicos","text":"Tecnicamente un logro es un grupo de condiciones que tienen que ser cumplidas en un punto particular en un video juego.
Cuando abres un juego en un emulador con las funciones de RetroAchievements, el emulador esta siempre checando si esas condiciones se cumplen en el punto exacto. Cuando todas las condiciones de un logro en particular son cumplidas, se dispara el logro y el emulador deja de checar las condiciones para ese logro.
El proceso de creaci\u00f3n de un logro basicamente se divide en 3 pasos:
Encontar un lugar en la Memoria RAM del juego donde se almacene la informacion que buscas (ejemplos: nivel, barra de vida, tiempo, monedas, sacar un arma, obtener un item, etc.).
Crear las condiciones que tienen que ser cumplidas para que se dispare el logro.
Probar si tu logro funciona como es debido.
La mayoria de las veces vaz a tener que volver al punto 2 y 3 muchisimas veces para refinar la logica de tu logro.
En este documento vamos a ver como lograr los pasos de arriba.
Una vez que estes seguro que tu logro esta saltando con las condiciones que tu quieres, puedes subirlo al servidor. Vamos a ver mas sobre eso en un momento.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#primeros-pasos","title":"Primeros Pasos","text":"Antes que nada necesitas estar seguro que tienes un emulador de RA de la pagina de descargas de RetroAchievements y tambien haberte creado una cuenta para poder iniciar seccion en el emulador.
En esta guia vamos a utilizar RAGens como demostracion, y el juego Sonic the Hedgehog. Estamos utilizando RAGens pero lo mismo aplica para cualquier otro emulador.
Para empezar abre el ejecutable de RAGens, e inicia seccion cuando salga la venta de inicio. Siguiente, ve a File -> Open y selecciona el ROM del que quieres trabajar los logros.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#inspector-de-memoria","title":"Inspector de Memoria","text":"Ahora deberias tener en tu ventana principal corriendo Sonic. Hay otras 3 ventanas que vamos a estar utilizando, que se pueden encontrar sobre la pesta\u00f1a de RetroAchievements en el menu. Vamos a trabajar con el Inspector de Memoria primero:
El inspector de memoria se puede utilizar para encontrar variables en la RAM que podamos utilizar. Esencialmente estas en una caseria de tesoros por encontrar los lugares en memoria - esta ventana te ayudara a examinar y filtrar la RAM del juego que se encuentra corriendo.
NOTA: Si deseas un video paso por paso explicando como encontra valores en la memoria, este viejo video puede llegar a ser util.
Tambien mira: Un vistaso al Inspector de Memoria y Tips en la busqueda de Memoria.
Para empezar o reiniciar una prueba, haz click en New 8-bit Test en la parte casi superior del medio.
Para manter las cosas simple, vamos a empezar a buscar el valor en memoria que guarda el numero de anillos que hemos recolectado. Nuestros pasos son los siguientes:
Carga el ROM y empieza una nueva partida.
Resetea la ventana de memoria: Haz click en New 8-bit Test.
Regresa al juego y cambia el numero de anillos en la memoria. Por ejemplo, colecciona un anillo
En la ventana de memoria, ahora vamos a filtrar los valores que son 'mas grandes que los antiguos valores' (simbolo >
). Seleccionamos esto y, entonces hacemos click en Filter.
Cuando ya estes haciendo esto por una 3ra y 4ta vez, el numero de posibilidades o 'candidatos' va a ir disminuyendo. Vamos a seguir haciendo esto asta que lleguemos a un numero muy peque\u00f1o (el mas peque\u00f1o que sea posible), puede llegar a tomar entre 4-5 intentos. Ahora podemos hacer click en la ventana de resultados, y monitoriar los valores en memoria, hasta abajo en el visor de memoria. Continua en el juego y deberias de ver como los valores en la memoria cambian cada vez que coleccionas anillos. Si no es asi, o si algo no se ve bien, intenta otro valor. Con el primer Sonic the Hedgehog, el valor en memoria para el numero de anillos deberia de ser 0xfe20
.
=
), o para valores que son diferentes (utiliza 'no igual', simbolo !=
).Cuando encuentres un valor del que te sientes feliz con el, puedes escriber una peque\u00f1a nota de lo que es haciendo click en Save Note, esto lo va a guardar en la base de datos, y va a ser automaticamente cargado la siguiente vez que cargues el visor de memoria para ese juego, donde sea que te encuentres! Nota despues que haces click en 'Save Note', la nota va a ser automaticamente guardada en la base de datos y compartida, la cual todos los desarrolladores tendran acceso a ella. Todos van a descargar esa nota cuando carguen su ROM. Si intentas sobre-escribir una nota, te va a salir una ventana de confirmacion antes de guardarla.
Puedes encontrar mas utiles Tips en Busqueda de Memoria aqui.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#sets-de-logros","title":"Sets de Logros","text":"Ok asi que el valor en memoria para el numero de anillos se encuentra almacenado en 0xfe20
- nota para un no-programador, estamos manejando numeros en el sistema numerico Hexadecimal que puede llegar a ser desalentador, pero no te preocupes, esencialmente simplemente son numeros y letras en vez de solo numeros, y no olvides 0x
al principio para mostrar que es un valor en memoria en hexadecimal. Hemos encontrado un valor en el que estamos interesado y lo hemos guardado con Save Note. Ahora queremos crear un nuevo logro.
Ve a la pesta\u00f1a de RetroAchievements en el menu de tu emulador, escoje Achievement Sets y vas a ver esta ventana:
Aqui agrupamos todos los logros disponibles en tres sets:
Logros Core (los principales, set publico de logros),
Unofficial/User Achievements (publicos, pero no otorgan puntos: para revision),
Local Achievements (personales, en tu PC).
En la venta de Logros, haz click en Local Achievements (superior izquierda), luego en Add New Achievement (superior derecha). Esto va a\u00f1adir una entrada vacia en la lista del centro. Haz doble click en ella: si aun no esta abierta, esto deberia de abrir la ventana del Achievement Editor (editor de logros).
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#editor-de-logros","title":"Editor de Logros","text":"A si es como se ve:
Esta es la ventana final en la que vamos a poner toda la informacion junta. La mayoria de los campos de arriba se explican solos, ejemplo: Titulo, Descripcion, Puntos. La principal seria la parte de 'Requisitos'
Vamos a decir que queremos agregar un logro por coleccionar cierto numero de anillos. Vamos a decir 15 por simplicidad. Despues de llenar los campos de arriba y a ver seleccionado un icono apropiado (en este ejemplo estamos utilizando la medalla del trofeo dorado (00136), pero tu puedes subir una nueva), ocupamos llenar los requisitos. Tenemos un requisito, ese numero de anillos tiene que ser minimo 15. El siguiente click seria en Add New Requirement.
Clickear este boton va a agregar algunos valores por default a la lista de requisitos. Los valores por defaults simplemente se percatan que algo relativamente sensible se agrego a la lista. Por ahora, ignorando el campo 'Special?'. Cuando clickeamos en crear, el valor default en memoria va a ser el ultimo valor que dejaste en la ventana de memoria.
Lo siguiente seria cambiar estos valores a los siguientes:
16-bit
0xfe20
>=
- esta es la comparacion que vamos a hacer. Podemos tener cualquier comparacion aqui, pero es sencible que tengas un \"mayor que e igual a\". Esto es importante porque si tenemos 10 anillos y despues obtenemos 10 anillos de una caja de 10 anillos vamos a tener 20, y vamos a perder el logro ya que tendriamos que tener exactamente 15 anillos.Value
- estamos comparando este valor en memoria con un valor fijo: 15Empty
- Esto es solamente relevante cuando estemos comparando valor en memoria con otro valor en memoria15
- el numero de anillos requirido: el valor del que estamos comparando la memoria0
- ignora esto por ahora, es util cuando necesitas que algo paso un cierto numero de vecesCon esto establecido, no necesitamos ninguna otra condicion que agregar, asi que podemos regresar a Achievements Dialog (Ventana de Logros). Para estar seguros, tenemos que guardar nuestro progreso presionando Save Local! Esto guarda todo localmente para asegurar que no perdamos ningun progreso.
Ahora podemos 'activar' este logro localmente presionando en Activate a mano derecha de la ventana. Esto va a empezar a monitoriar estos valores en memoria y va a entregar el logro una vez que todas las condiciones se hubieran cumplido de manera verdadera. Ahora podemos avanzar y probar si este logro sirve!
Si presionamos Esc
mientras jugamos, vas a ver como se miraria el logro desde la interfaz de RetroAchievements!
A pesar de que el logro funciono bien en nuestras pruebas, un logro con una logica como esa no esta listo para ser oficialmente lanzado. Primero que nada: tiene una sola condicion: \"anillos coleccionados >= 15\". El problema es que ese mismo valor es el mismo que se utiliza para almacenar el numero de anillos cuando el juego corre en \"modo demo\" (Cuando la computadora juega el juego automaticamente cuando duras mucho tiempo en la pantalla de titulo). A si que, si Sonic colecciona 15 anillos en modo demo el logro tambien saldria, que es algo que no queremos.
Checa los tips en la siguiente seccion de abajo para conocer como mejorar la logica de tu logro y hacerlo aceptable para que sea oficialmente lanzado.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#tips-importantes","title":"Tips Importantes","text":"Aqui estan algunos tips que tienes que tener en mente cuando te encuentres creando logros:
Puedes encontrar mas en la pagina de Tips y Trucos.
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#siguientes-pasos","title":"Siguientes pasos","text":"Ahora que ya sabes como utilizar el Inspector de Memoria, y el Editor de Logros. Llego la hora de que aprendas nuevas tecnicas y practiques:
Que te diviertas!
"},{"location":"Getting-Started-as-an-Achievement-Developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:36] meleu:
fix broken links[2019-03-12 14:58] meleu:
Updated Getting Started as an Achievement Developer ES (markdown)Link para o texto em ingl\u00eas: Getting Started as an Achievement Developer
Bem-vindo ao mundo do desenvolvimento de conquisttas!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#conceitos-basicos","title":"Conceitos b\u00e1sicos","text":"Tecnicamente, uma conquista (no contexto de RetroAchievements) \u00e9 um grupo de condi\u00e7\u00f5es que devem ser cumpridas em um determinado frame do jogo.
Quando voc\u00ea inicia um jogo em um emulador com o recurso RetroAchievements, o emulador sempre verifica se essas condi\u00e7\u00f5es s\u00e3o atendidas no frame atual. Quando todas as condi\u00e7\u00f5es para uma conquista particular s\u00e3o atendidas, esta conquista \u00e9 ativada e o emulador deixa de verificar as condi\u00e7\u00f5es para essa conquista.
O processo de cria\u00e7\u00e3o de uma conquista envolve basicamente 3 etapas:
Encontrar um lugar na RAM do jogo onde a informa\u00e7\u00e3o que voc\u00ea deseja \u00e9 armazenada (exemplos: n\u00edvel, barra de vida, tempo, moedas, segurando uma arma, obter um item, etc.).
Criar condi\u00e7\u00f5es que devem ser cumpridas para ativar uma conquista.
Testar se a sua conquista est\u00e1 funcionando como esperado.
Provavelmente voc\u00ea voltar\u00e1 para os passos 2 e 3 muitas vezes para refinar a l\u00f3gica de sua conquista.
Neste documento, veremos como realizar as etapas acima.
Depois de ter certeza de que sua conquista est\u00e1 funcionando nas condi\u00e7\u00f5es desejadas, voc\u00ea pode envi\u00e1-la para o servidor. Veremos mais sobre isso adiante.
Tutoriais em V\u00eddeo: o usu\u00e1rio Thoreau \u00e9 um criador de conquistas experiente e criou uma s\u00e9rie de v\u00eddeos mostrando todo o processo de cria\u00e7\u00e3o de conquistas em portugu\u00eas. Confira os v\u00eddeos no youtube.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#primeiros-passos","title":"Primeiros passos","text":"Antes de come\u00e7ar, certifique-se de ter um emulador RA da p\u00e1gina do RetroAchievements Download Page primeiro e crie uma conta para que voc\u00ea possa fazer login usando o emulador.
Neste guia, estaremos usando RAGens para demonstrar, e o jogo Sonic the Hedgehog. Estamos usando RAGens, mas o mesmo se aplica aos outros emuladores.
Para come\u00e7ar, execute o RAGens e fa\u00e7a o login quando solicitado. Em seguida, use File -> Open e selecione qualquer ROM que voc\u00ea deseja encontrar conquistas.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#memory-inspector","title":"Memory Inspector","text":"Agora voc\u00ea deve ter sua janela principal executando o Sonic. Existem 3 outros di\u00e1logos que usaremos, que podem ser encontrados em RetroAchievements no menu. Em primeiro lugar, tratamos primeiro o Memory Inspector:
O Memory Inspector pode ser usado para encontrar endere\u00e7os na RAM para que possamos usar. Essencialmente, voc\u00ea est\u00e1 em uma ca\u00e7ada ao tesouro para locais de mem\u00f3ria - este di\u00e1logo ir\u00e1 ajud\u00e1-lo a examinar e filtrar a RAM do jogo enquanto o jogo est\u00e1 sendo executado.
NOTA: Se voc\u00ea quer uma explica\u00e7\u00e3o passo a passo de v\u00eddeo para encontrar endere\u00e7os de mem\u00f3ria, este video esse v\u00eddeo pode ser muito \u00fatil. V\u00eddeo em ingl\u00eas
Para iniciar ou reiniciar um teste, clique em New 8-bit Test perto do meio na parte superior.
Para manter as coisas simples, come\u00e7aremos procurando pelo endere\u00e7o de mem\u00f3ria que contenha o n\u00famero de an\u00e9is que coletamos. Nossas etapas ser\u00e3o as seguintes:
Carregue a ROM e comece um novo jogo.
Redefinir a caixa de di\u00e1logo de mem\u00f3ria: clique em New 8-bit Test.
Retorne ao jogo e altere o n\u00famero de an\u00e9is na mem\u00f3ria. Por exemplo, colete um anel.
Na caixa de di\u00e1logo de mem\u00f3ria, agora queremos filtrar por valores que sejam \"maiores do que valores anteriores\" (s\u00edmbolo>). Selecionamos isso, ent\u00e3o, clique em Filter.
Cada vez que voc\u00ea executa 3 e 4, o n\u00famero de possibilidades ou 'candidatos' diminuir\u00e1. Continuaremos a faz\u00ea-lo at\u00e9 que o n\u00famero de candidatos alcance um n\u00famero muito pequeno (o menor poss\u00edvel), pode demorar 4-5 tentativas. Em seguida, podemos clicar na janela de resultados e monitorar o endere\u00e7o de mem\u00f3ria no visor de mem\u00f3ria na parte inferior. Continue usando o jogo e voc\u00ea deve ver os valores em mudan\u00e7a de mem\u00f3ria \u00e0 medida que voc\u00ea coleciona an\u00e9is. Se voc\u00ea n\u00e3o, ou se algo n\u00e3o parece direito, tente outro valor. Com o primeiro Sonic the Hedgehog, o endere\u00e7o da mem\u00f3ria para o n\u00famero de an\u00e9is deve ser 0xfe20.
Quando voc\u00ea encontrou um endere\u00e7o com o qual voc\u00ea est\u00e1 feliz, voc\u00ea pode escrever uma nota curta para o que \u00e9 e clicar em Salvar nota, isso ir\u00e1 armazen\u00e1-lo no banco de dados e ser\u00e1 restaurado automaticamente na pr\u00f3xima vez que voc\u00ea carregar o visor de mem\u00f3ria para isso jogo onde quer que esteja! Note que depois de clicar em \"Salvar nota\", a nota ser\u00e1 armazenada automaticamente no banco de dados, e compartilhada para que todos os desenvolvedores compartilhem o acesso a essas notas de mem\u00f3ria. Todos ser\u00e3o baixados de novo quando voc\u00ea carregar uma ROM. Se voc\u00ea tentar substituir uma nota, verificar\u00e1 com voc\u00ea primeiro antes de enviar.
Voc\u00ea pode encontrar Dicas de Escava\u00e7\u00e3o de Mem\u00f3ria aqui.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#achievement-sets","title":"Achievement Sets","text":"OK para que a localiza\u00e7\u00e3o da mem\u00f3ria para o n\u00famero de an\u00e9is seja armazenada em 0xfe20
- nota para um n\u00e3o programador, estamos lidando com um sistema de numera\u00e7\u00e3o hexadecimal que pode ser assustador, mas n\u00e3o se preocupe, essencialmente s\u00e3o apenas n\u00fameros e letras em vez de apenas n\u00fameros, e n\u00e3o esquecendo 0x
no in\u00edcio para mostrar que \u00e9 uma localiza\u00e7\u00e3o de mem\u00f3ria em hexadecimal. Encontramos um endere\u00e7o em que nos interessamos e armazenamos usando Save Note. Agora queremos criar uma nova conquista.
V\u00e1 para o RetroAchievements no menu, escolha Achievement Sets e voc\u00ea ver\u00e1 esta caixa de di\u00e1logo:
Aqui agrupamos todas as conquistas que conhecemos em tr\u00eas conjuntos:
Core Achievements (o principal, conjunto de conquistas p\u00fablico),
Unofficial/User Achievements (p\u00fablico, mas n\u00e3o ir\u00e1 premiar pontos, \u00e9 apenas para outros desenvolvedores revisarem),
Local Achievements (pessoais no seu PC).
Na caixa de di\u00e1logo Conquistas, clique em Local Achievements (canto superior esquerdo), depois em Add New Achievement (inferior esquerda). Isso ir\u00e1 adicionar uma entrada em branco \u00e0 lista no centro. Clique duas vezes nele: se ainda n\u00e3o est\u00e1 aberto, isso deve selecion\u00e1-lo e abrir a caixa de di\u00e1logo Editor de conquista (Achievement Editor).
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#achievement-editor","title":"Achievement Editor","text":"O Achievement Editor se parece com isso:
Esta \u00e9 a \u00faltima caixa de di\u00e1logo onde reunimos todos os dados juntos. A maioria dos principais campos s\u00e3o auto-explicativos, ou seja, Title, Description, Points. A principal \u00e9 a parte de 'Requirements' (Requisitos).
Digamos que queremos adicionar uma conquista para colecionar um certo n\u00famero de an\u00e9is. Digamos 15 an\u00e9is para simplificar. Depois de preencher os campos na parte superior e selecionar um \u00edcone adequado (neste exemplo, usamos o distintivo de trof\u00e9u de ouro (00136), mas voc\u00ea pode carregar um novo), precisamos preencher os Requisitos. Temos um requisito, que o n\u00famero de an\u00e9is \u00e9 pelo menos 15. O pr\u00f3ximo clique \u00e9 Add New Requirement.
Ao clicar neste bot\u00e3o, ser\u00e3o adicionados v\u00e1rios valores padr\u00e3o \u00e0 lista Requisitos. Esses padr\u00f5es apenas garantem que algo relativamente sens\u00edvel seja adicionado \u00e0 lista. Por enquanto, ignorando o campo 'Special?'. Quando clicamos em criar, o valor de mem\u00f3ria padr\u00e3o ser\u00e1 o valor que voc\u00ea deixou pela \u00faltima vez na caixa de di\u00e1logo de mem\u00f3ria.
Em seguida, alteraremos esses valores para o seguinte:
16 bits
.0xfe20
.>=
- esta \u00e9 a compara\u00e7\u00e3o a fazer. Podemos ter alguma compara\u00e7\u00e3o aqui, mas \u00e9 sensato ter \"maior ou igual\". Isso \u00e9 importante porque, se conseguimos 10 an\u00e9is, ent\u00e3o uma caixa de super anel para ter 20, perder\u00edamos exatamente 15 an\u00e9is.Value
- estamos comparando esse valor de mem\u00f3ria com um valor fixo: 15.Empty
- isso s\u00f3 \u00e9 relevante ao comparar a mem\u00f3ria com a mem\u00f3ria.15
- o n\u00famero de an\u00e9is necess\u00e1rios: o valor com o qual estamos comparando a mem\u00f3ria0
- ignore isso por enquanto, \u00e9 \u00fatil para quando algo precisa acontecer um certo n\u00famero de vezes.Com esse conjunto, n\u00e3o temos mais condi\u00e7\u00f5es para adicionar, ent\u00e3o retornamos \u00e0 caixa de di\u00e1logo Achievements. Para estar seguro, devemos salvar nosso progresso ao clicar em Save Local! Isso salva tudo para arquivar localmente para garantir que n\u00e3o perderemos nenhum progresso.
Agora podemos \"ativar\" essa conquista localmente ao clicar Activate no lado direito. Isso come\u00e7ar\u00e1 a monitorar esses locais de mem\u00f3ria e atribuir\u00e1 a conquista uma vez que todas as condi\u00e7\u00f5es s\u00e3o verdadeiras. Agora, podemos prosseguir e testar para ver se essa conquista funciona!
Se pressionarmos no jogo Esc, voc\u00ea ver\u00e1 a conquista aparecer como uma demonstra\u00e7\u00e3o do que seria semelhante \u00e0 sobreposi\u00e7\u00e3o no jogo!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#evitando-bugs","title":"Evitando bugs","text":"O cheevo (achievement) que criamos neste tutorial \u00e9 muito simples, tem apenas uma condi\u00e7\u00e3o: \"an\u00e9is coletados\" >= 15 \". Mas o endere\u00e7o para gravar o n\u00famero de an\u00e9is coletados tamb\u00e9m \u00e9 usado quando o jogo \u00e9 executado em \"modo de demonstra\u00e7\u00e3o\" (AI jogando o jogo depois de esperar um pouco na tela de t\u00edtulo). Ent\u00e3o, se Sonic coletar 15 an\u00e9is no modo de demonstra\u00e7\u00e3o, essa conquista ir\u00e1 desencadear, o que \u00e9 indesej\u00e1vel.
Ent\u00e3o, aqui est\u00e3o algumas dicas que voc\u00ea sempre deve ter em mente ao criar suas conquistas:
PauseIf
demo mode (modo demonstra\u00e7\u00e3o): Se o jogo tiver um modo de demonstra\u00e7\u00e3o, certifique-se de encontrar o endere\u00e7o para ele e adicionar o modo! = Demo ou algo semelhante em suas conquistas. Mais informa\u00e7\u00f5es sobre PauseIf na p\u00e1gina Caracter\u00edsticas da l\u00f3gica de conquista.PauseIf
usando macetes (cheat codes): se o jogo tiver um c\u00f3digo secreto de macete para aumentar vidas, selecionar fases, etc. Certifique-se de encontrar os endere\u00e7os para isso e adicionar algum tipo de prote\u00e7\u00e3o em suas conquistas. OK, talvez n\u00e3o seja um t\u00f3pico muito b\u00e1sico, mas voc\u00ea deve ter em mente ao criar um conjunto de conquistas real.Depois de testarmos que a conquista funciona localmente, h\u00e1 um processo de confirma\u00e7\u00e3o em duas etapas:
Primeiro, na caixa de di\u00e1logo Conquistas, selecionamos nossa conquista e pressione Commit Selected e concordamos com a caixa de di\u00e1logo. Isso ir\u00e1 empurrar nossa conquista para o servidor e armazen\u00e1-lo em Unofficial User-submitted Achievements
Para que a conquista seja apreciada por muitos, ela deve ser empurrada para o conjunto Core Achievement (Core Achievement set). Para as suas poucas primeiras conquistas, ele deve ser revisado por um membro da equipe antes que possa ser empurrado para o Core. Depois de ter carregado um conjunto de conquistas para o Unofficial, voc\u00ea precisa entrar em contato com um administrador que, usando seu julgamento e padr\u00f5es pessoais de qualidade, aprovar\u00e1 o conjunto e lhe dar\u00e1 um status de desenvolvedor no site (Developer status). Nesse caso, voc\u00ea pode empurrar qualquer conquista para o Core voc\u00ea mesmo.
Naturalmente, \u00e9 melhor enviar apenas conquistas \u00fanicas e interessantes no grupo de conquistas principais. Se houver duplicatas no grupo Core, as duplicatas adicionadas mais recentemente ser\u00e3o manualmente moderadas e exclu\u00eddas. Se voc\u00ea n\u00e3o quer sua conquista no grupo Core, ou voc\u00ea acha que pode n\u00e3o ser apropriado para o grupo Core (ou seja, se est\u00e1 incompleto, ou se \u00e0s vezes ele parece se desencadear quando n\u00e3o \u00e9 suposto, como quando o jogo est\u00e1 mostrando um demo), deixe-o na se\u00e7\u00e3o N\u00e3o oficial / Se\u00e7\u00e3o submetida pelo usu\u00e1rio.
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#proximos-passos","title":"Pr\u00f3ximos passos","text":"Agora que voc\u00ea sabe como usar o Memory Inspector e o Editor de Conquistas. \u00c9 hora de aprender novas t\u00e9cnicas e pr\u00e1ticas:
Diverta-se! Obrigado pela leitura!
"},{"location":"Getting-Started-as-an-Achievement-Developer-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:27] meleu:
fix links[2020-06-20 18:15] meleu:
adicionado link para a playlist do Thoreau[2018-06-10 10:51] lilbud:
Updated Discord Link[2018-03-28 20:09] meleu:
Updated Getting Started as an Achievement Developer pt_BR (markdown)[2018-03-25 01:09] meleu:
Updated Getting Started as an Achievement Developer pt_BR (markdown)[2018-03-23 01:19] meleu:
Updated Getting Started as an Achievement Developer.pt_BR (markdown)Welcome to the world of Achievement Creation!
"},{"location":"Getting-Started-as-an-Achievement-Developer/#basic-concepts","title":"Basic Concepts","text":"Technically an achievement is a group of conditions that must be met in a particular frame of the video game.
When you launch a game on an emulator with the RetroAchievements feature, the emulator is always checking if those conditions are met in the current frame. When all conditions for a particular achievement are met, it is awarded and the emulator stops checking the conditions for that achievement.
The process of creating an achievement basically involves 3 steps:
Finding a place in the game's RAM where the information you want is stored (examples: level, life bar, time, coins, holding a weapon, get an item, etc.).
Create conditions that must be met in order to award an Achievement.
Test if your achievement is working as expected.
Most likely you'll go back to step 2 and 3 many times to refine the logic of your Achievement.
In this doc we'll see how to accomplish the steps above.
After you're sure your achievement is triggering at the conditions you want, you can submit it to the server. We'll see more about it later.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#first-steps","title":"First Steps","text":"Before start ensure you have an RA emulator from the RetroAchievements Download Page first and create an account so you can log in using the emulator.
In this guide we'll be using RALibRetro with the Genesis Plus GX core to demonstrate, and the game Sonic the Hedgehog. We are using RALibRetro but the same applies for the standalone emulators.
To begin, run the RALibRetro executable and login when prompted. If you have not used the Genesis Plus GX core before, you can install it by going to Settings -> Manage Cores -> selecting Sega Genesis in the drop down menu -> clicking Download to the right of the core name. Once the core is installed, go to File -> Select Core -> Sega Genesis -> Genesis Plus GX. Now that you have the core selected, you'll need to load the game. Go to File -> Load Game and select the Sonic the Hedgehog ROM (we recommend using No Intro ROMs by default).
"},{"location":"Getting-Started-as-an-Achievement-Developer/#memory-inspector","title":"Memory Inspector","text":"You should now have your main window running Sonic. There are 3 other dialogs we'll be using, which can be found under RetroAchievements in the menu. We'll be dealing with the Memory Inspector first:
The Memory Inspector can be used to find addresses in RAM for us to use. Essentially you are on a treasure hunt for memory locations - this dialog will help you examine and filter the game's RAM while the game is running.
NOTE: If you want a step-by-step video explanation on finding memory addresses, you can view this updated video. For another video resource, you can view this older video.
See also: Memory Inspector Overview and Memory Digging Tips.
To start or restart a test, click Reset near the top left.
To keep things simple, we'll start by looking for the memory address which holds the number of rings we have collected. Our steps will be the following:
Load the ROM and start a new game.
Reset the memory dialog: click Reset.
Run the first filter: click Filter Once.
Return to the game and change the number of rings in memory. For example, collect a ring.
In the memory dialog, we now want to filter for values that are 'greater than previous values' (symbol >
). We select this, then hit Filter again.
Each time you perform 4 then 5, the number of possibilities or 'candidates' will get smaller. We will continue doing this until the number of candidates reaches a very small number (as few as possible), it can take several attempts. Next we can click in the results window, and monitor the memory address in the memory viewer at the bottom. Continue using the game and you should see the values in memory change as you collect rings. If you don't, or if something doesn't look right, try another value. With the first Sonic the Hedgehog, the memory address for the number of rings should be 0xfe20
.
=
), or values that are different (use 'not equal', symbol !=
). Using the example above, you can collect a ring then use the \">\" filter, take a few steps then use the \"=\" filter (since the number of rings did not change), collect more rings and use the \">\" filter again, etc.When you've found an address you're happy with, you can write a short note for what it is and hit Save Note, this will store it on database, and will be automatically restored next time you load up the memory viewer for this game, wherever you are! Note that after clicking 'Save Note', the note will be automatically stored on the database, and shared so all developers will share access to these memory notes. They will all be downloaded afresh when you load a ROM. If you try to overwrite a note, it will check with you first before submitting.
You can find more useful Memory Digging Tips here.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#achievement-sets","title":"Achievement Sets","text":"So the memory location for the number of rings is stored at 0xfe20
- note to a non-programmer, we're dealing in hexadecimal numeral system which can be daunting, but don't worry, essentially it's just numbers and letters instead of only numbers, and not forgetting 0x
at the start to show that it's a memory location in hex. We've found an address we're interested in and stored it using Save Note. We now want to create a new achievement.
Go to the RetroAchievements in the menu, choose Achievement Sets and you'll see this dialog:
Here we group all the achievements we know about into three sets:
Core Achievements (the main, public Achievement set),
Unofficial/User Achievements (public, but will not award you points: for peer review),
Local Achievements (exclusive to your PC).
In the Achievements dialog, click Local Achievements (top left), then Add New Achievement (top right). This will add a blank entry to the list in the center. Double click on it: if it's not already open, this should select it and open the Achievement Editor dialog.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#achievement-editor","title":"Achievement Editor","text":"This is how it looks:
This is the final dialog where we bring all the data together. Most of the top fields are self explanatory, I.e. Title, Description, Points. The main one is the 'Requirements' part.
Let's say we want to add an achievement for collecting a certain number of rings. Let's say 15 rings for simplicity. After filling out the fields at the top and selecting a suitable icon (in this example we used the gold trophy badge (00136), but you can upload a new one), we need to fill out Requirements. We have one requirement, that the number of rings is at least 15. Next click is Add New Requirement.
Clicking this button will add several default values to the Requirements list. These defaults just ensure that something relatively sensible is added to the list. For now, ignoring the field 'Special?'. When we clicked create, the default memory value will be whatever value you last left in the memory dialog.
Next we will change these values to the following:
16-bit
- we're using 16-bit because the value can exceed 255 (which is 0xff in hex)0xfe20
>=
- this is the comparison to make. We could have any comparison here, but it's sensible to have \"greater than or equal to\". This is important because if we get 10 rings then a super ring box to have 20, we would miss out having exactly 15 rings.Value
- we're comparing this memory value to a fixed value: 15Empty
- this is only relevant when comparing memory to memory15
- the number of rings required: the value we are comparing the memory to0
- ignore this for now, its useful for when something needs to happen a certain number of timesWith that set, we don't have any more conditions to add, so we return to the Achievements Dialog. To be safe, we should save our progress by hitting Save Local! This saves everything to file locally to ensure that we won't lose any progress.
We can now 'activate' this achievement locally by checking the box next to Active on the right-hand side in the Achievement Editor or by selecting the achievement in Achievement Sets and clicking Activate Selected. This will start monitoring these memory locations and will award the achievement once all the conditions are true. Now we can go ahead and test to see if this achievement works!
If we press Esc
in-game, you will see the achievement show up as a demonstration of what it would look like in the in-game overlay!
Although the achievement worked fine in our tests, an achievement with logic like that is not ready to be officially released. First of all, it has only one condition: \"collected rings >= 15\". The problem is that the memory address used to record the number of collected rings is also used when the game runs in \"demo mode\" (AI playing the game after you wait a while on the title screen). So, if Sonic collects 15 rings in demo mode this achievement will trigger, which is unwanted.
Check the tips in the next section below to know how to improve the logic of your achievement and then make it acceptable to be officially released.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#important-tips","title":"Important Tips","text":"Here are some tips you have to keep in mind when creating your achievements:
You can find more in the Tips and Tricks page.
"},{"location":"Getting-Started-as-an-Achievement-Developer/#next-steps","title":"Next Steps","text":"Now that you know how to use the Memory Inspector, and the Achievement Editor. It's time to learn new techniques and practice:
Have fun!
"},{"location":"Getting-Started-as-an-Achievement-Developer/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-01-28 22:59] OvenOverlord:
Added Fridge's video link to the step-by-step video explanation links[2021-07-08 09:31] televandalist:
Fix image links[2020-05-15 02:15] televandalist:
Changed the Save/Load State method to match that of RALib rather than RAGens.[2020-05-15 02:13] televandalist:
Quick typo fix.[2020-05-15 02:04] televandalist:
Reworded instructions to apply to RALibRetro instead of RAGens. Added note about why the 16-bit address was selected in the editor. Fixed multiple typos, grammatical errors, and reworded some 'casual' speak.[2020-05-15 00:05] televandalist:
Recreated the old images with RALib. Old ones were using RAGens and had the old overlay.[2019-02-09 20:44] meleu:
mentioning PauseIf with hitcounts on this doc can lead to confusion (if we had a template/example for this technique it would be OK)[2019-02-08 10:53] meleu:
cosmetic[2019-02-08 02:12] Kvon:
pauseif link, added critical line for adding cheat protection, typically[2019-02-08 02:07] Kvon:
added a link to the demo mode tipsParticipantes de las Tablas de Clasificaci\u00f3n Globales necesitan conseguir sus logros de manera justa y legitima.
En general, un jugador tiene que desbloquear logro de la siguiente manera:
Esta reglas son dise\u00f1adas para mantener a los jugadores honestos en sus partidas y que sean honestos con todos los demas jugadores en la competencia de Tablas Globales.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#tabla-de-contenidos","title":"Tabla de Contenidos","text":"Las tablas globales de RetroAchievements es la competencia principal y oficial. Este incluye un rango \u00fanico del sitio basado en tu suma de puntos de logros en comparaci\u00f3n con todos los dem\u00e1s jugadores rankeados. Cualquier cuenta con puntos mayor a 0 es rankeada autom\u00e1ticamente.
Lo que es considerado como una partida justa y legitima contra lo que se considera que no es justo (cheating) en las tablas globales a ido tomando forma por la comunidad desde sus or\u00edgenes. La reglas de abajo son lo que se espera de cada jugador que participa en en el rankeado global. Cualquier indicaci\u00f3n de que un jugador no este siguiendo las reglas este puede llegar a perder el uso de las tablas globales, tambi\u00e9n conocido como el estatus No Trackeado/Untracked.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#modo-hardcore","title":"Modo Hardcore","text":"El modo Hardcore es una funci\u00f3n donde el emulador desactiva completamente la habilidad de estados de guardado (savestate), rebobinar (rewind) y c\u00e1mara lenta (slow motion). La funci\u00f3n de fast-forward es la \u00fanica excepci\u00f3n aceptada.
Cuando juegas en modo hardcore los puntos que consigas valen el doble. Entonces si el set de logros tiene un valor de 400 puntos y lo terminas en modo hardcore vas a obtener 800 puntos.
Los usuarios que se toman en serio las tablas de clasificaci\u00f3n son mas probables que consigan puntos en modo hardcore.
NOTA: cuando se juega con el modo hardcore desactivado (tambi\u00e9n conocido como \"softcore\"), espera tener algunos problemas. Lee en este enlace porque no deber\u00edas de utilizar la funci\u00f3n de cargado de estado.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#no-trackeadountracked","title":"No Trackeado/Untracked","text":"Una cuenta no trackeada no aparece en el ranking global, sus actividades no aparecen en el feed, no se muestra con todos los dem\u00e1s usuarios que consiguieron alg\u00fan logro (en la pagina del logro) y sus entradas en las tablas de clasificaciones no son publicamente visible.
Sin embargo una cuenta No Trackeada aun puede disfrutar de RetroAchievements y conseguir los emblemas por completar juegos.
Este estatus fue creado para que la gente puede hacer lo que quiera con sus cuentas (como hacer trampa o compartir contenido en sus amigos/familia) sin meterse con el aspecto justo y competitivo de las tablas globales. As\u00ed que, si quieres disfrutar de RetroAchievements pero no quieres competir en las tablas globales puedes solicitar que tu cuenta se deje de trackear. Simplemente manda un mensaje a RAdmin solicitandolo.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#no-permitido","title":"No Permitido","text":"Incluso si \"tu tuviste\" que haber conseguido ese logro. Incluso si el juego estaba buggeado. Incluso si el logro esta completamente roto o removido. Cuando esto es detectado es muy probable que tu cuenta se pase a Untracked.
En los casos en que el logro tuvo que haberse desbloqueado pero no paso o no se registro en el sitio debido a un problema de red, deber\u00e1s de seguir los pasos descritos en el FAQ para solicitar un desbloqueo manual.
NOTA: percatate de utilizar la ultima versi\u00f3n disponible para ese emulador.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#2-no-consigas-logros-en-una-manera-en-la-que-no-fueron-las-intenciones-del-desarrollador-del-logro","title":"2. No consigas logros en una manera en la que no fueron las intenciones del desarrollador del logro.","text":"Si descubres un atajo a un logro esto es un bug. Por favor reporta este bug creando un ticket de reporte.
Tambien mira la regla permitida 2.
Ejemplos:
Incluso si tu archivo esta perdido/corrupto o necesitas un archivo de guardado de cierta parte en el juego por que se te paso algo.
Ejemplos:
Ejemplos:
Programas que pueden potenciar tus poderes en juegos, desbloquear modo de desarrollador, aumentar la velocidad del juego, modificar el c\u00f3digo del juego, etc.
Ejemplos:
Estos ya es scripting avanzado que va mas alla de tareas simples (algunas veces incluso sincronizado con la velocidad de reloj del procesador) para permitir que secciones del juegos que sean jugadas de una manera compleja/\u00fanica/o no-monotona/no-repetitiva y sin interacci\u00f3n humana alguna.
Ejemplos:
Incluyendo tu \"hermano peque\u00f1o\" o tu \"primo\". Tu tienes que conseguir logros por ti mismo. Permitir que otra gente consiga logros en tu cuenta no esta permitido en general y si alguien hace trampa o rompe las reglas en tu cuenta tu vas a ser el responsable por sus acciones.
Ejemplos:
Por medio del foro, Mensajes Privados, Discord, email, etc. Tienes permitido quejarte, solicitar cambios, dejar comentarios/rese\u00f1as negativas y otras criticas de manera respetuosa, pero tu das un nombre muy mal en la comunidad de cazadores de logros cuando hostigas/atacas a desarrolladores debido a lo que hicieron con los logros de su juego.
Ejemplos: Mandar amenazas o insultos a desarrolladores porque agregaron logros a su juego que a ti no te gusta; utilizando una agresividad extrema/excesiva mientras exiges al desarrollador que remueva cambie los logros; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#9-no-crees-o-compartas-metodos-para-hacer-trampa","title":"9. No crees o compartas m\u00e9todos para hacer trampa.","text":"Ejemplos:
El otro lado de la moneda para permitido 2. Cheat codes y modos debug no est\u00e1n permitidos mientras el desarrollador a hecho una nota en la que dice donde y cuando es permitido. Incluso si los logros son conseguibles con cheat codes este usualmente es un comportamiento no permitido, considerando que utilizaste cheats de una manera intencional, deber\u00edas de reportarlo como un bug con el sistema de tickets.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#permitido","title":"Permitido","text":"Incluso en modo hardcore el fast-forward esta permitido, como una conveniencia de la actualidad. Es casi un hecho de que el fast-forward ofrece una partida justa y por eso esta disponible para que todos lo utilicen.
NOTA:en modo softcore savestates, rewind y camara-lenta tambi\u00e9n est\u00e1n permitidos, pero ten en cuenta que podrias llegar a tener algunos problemas. Checa este link de Porque no deber\u00edas de utilizar la funci\u00f3n de cargado de estado.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#2-cuando-dice-explicitamente-en-la-descripcion-de-logro-cheat-codesmodo-dentro-del-juego-estan-permitidos-y-herramientas-de-desarrollodebug-estan-permitidas","title":"2. Cuando dice explicitamente en la descripci\u00f3n de logro, cheat codes/modo dentro del juego est\u00e1n permitidos y herramientas de desarrollo/debug est\u00e1n permitidas.","text":"Este es un complemento a la regla no permitida numero 2.
El desarrollador de logros deber\u00eda de estar capacitado en proteger su trabajo para que estos no se desbloqueen f\u00e1cilmente simplemente ingresando cheat codes. Sin embargo, algunos retos muy cool y divertidos puedes ser creados si tomamos ventaja de los cheats. En estos casos en especifico, utilizar cheats del juego esta permitido.
NOTA: si encuentras logros desbloqueables con uso de cheats y que en estos no este descrito que se puedan utilizar, considera abrir un ticket y reportarlo.
Ejemplos:
Glitches/exploits/tacticas-mon\u00f3tonas esta permitido, aunque los desarrolladores pueden programar sus logros para desactivarlos. Esto es usualmente mencionado en la descripci\u00f3n del logro.
Esto no incluye cuando hay fallas en el c\u00f3digo del logro del desarrollador. En esos casos, por favor crea un ticket de reporte, y consigue el logro como se supone que el desarrollador quer\u00eda que se obtuviera. Tambi\u00e9n mira regla no permitida 2.
Ejemplos:
Ejemplos cuando los desarrolladores lo desabilitan: Megaman (NES) - vence a los jefes sin recibir da\u00f1o sin utilizar el glitch de pausa.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#4-utilizar-guiaswalkthroughs-en-linea-es-permitido","title":"4. Utilizar gu\u00edas/walkthroughs en linea es permitido.","text":"Ejemplos: v\u00eddeo gu\u00edas de youtube; GameFAQs; soluciones de puzzles; lista de coleccionables; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#5-jugar-juegos-en-co-opcompetitivo-con-otro-jugador-o-jugadores-es-permitido","title":"5. Jugar juegos en co-op/competitivo con otro jugador o jugadores es permitido.","text":"Jugar co-op esta permitido, sin embargo los desarrolladores pueden codificar sus logros para desactivarlo. Esto es usualmente mencionado en la descripci\u00f3n del logro.
Tambi\u00e9n mira regla no permitida 2.
Ejemplos: un amigo con experiencia jugando Streets of Rage o Goof Troop contigo; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#6-turbo-esta-permitido","title":"6. Turbo esta permitido.","text":"Turbo es cuando dejas presionado solamente un bot\u00f3n y el bot\u00f3n es autom\u00e1ticamente presionado una y otra vez. Esta funci\u00f3n ya sea que esta integrada en el control, o en el emulador. En los dos de los casos esta permitido.
En casos en los que hay un scripting mas complejo aparte de solamente presionar un bot\u00f3n repetidamente, esto ya no esta permitido. Mira regla No Permitida 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#sanciones-por-hacer-trampa","title":"Sanciones por hacer trampa","text":"Cuando se detecte que se hace trampa, la cuenta va a ser puesta como Untracked. Hay algunos casos en donde la cuenta puede llegar a ser banneada.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#como-limpiar-tu-nombre-y-apelar-el-hacer-trampa","title":"Como limpiar tu nombre y apelar el hacer trampa","text":"La manera mas r\u00e1pida: Resetea todos tus puntos. Si fuiste previamente puesto como untracked y te gustar\u00eda que se te regresara al estado normal por favor informalo con RAdmin para que tomen la acci\u00f3n necesaria.
Si tienes maneras de demostrar que jugabas sin hacer trampa, manda un mensaje a RAdmin, pero ten en cuenta que todo el staff de RA son voluntarios y puede llegar a tomar un tiempo para que revisen tu caso.
Si deseas tener la iniciativa de admitir que hac\u00edas trampa, esto es realmente apreciado y se toma en consideraci\u00f3n durante tu caso.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#si-necesitas-ayuda","title":"Si necesitas ayuda","text":"Si alguna vez tuviste una pregunta, comentario, o sugerencias - si\u00e9ntete libre de contactar a RAdmin o al staff de RA (@mods y @admins) en el servidor de discord.
Estas reglas ser\u00e1n corregidas cada cierto tiempo si esto es requerido.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#agradecimientos-especiales","title":"Agradecimientos Especiales","text":"Este documento esta fuertemente basado en las reglas de caser\u00eda de logros de 100Pals. Aunque esta versi\u00f3n esta un poco mas resumida y modificada con temas relevantes en cuanto al contexto de RetroAchievements.
100Pals es una comunidad con cazadores de logros experimentados que existe desde que los logros fueron implementados en Steam por primera vez en 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:28] meleu:
fix link[2019-06-03 10:27] meleu:
fix broken link[2019-05-31 10:09] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-31 10:08] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-31 10:05] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-30 10:50] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-29 11:34] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-27 11:41] eldexterr:
Updated Global Leaderboard and Achievement Hunting Rules es (markdown)[2019-05-26 15:27] eldexterr:
Created Global Leaderboard and Achievement Hunting Rules es (markdown)Les participants du Classement global doivent gagner leurs succ\u00e8s de mani\u00e8re l\u00e9gitime et dans les r\u00e8gles.
De mani\u00e8re g\u00e9n\u00e9rale, un joueur doit d\u00e9bloquer des succ\u00e8s :
Ces r\u00e8gles ont \u00e9t\u00e9 con\u00e7ues pour maintenir une comp\u00e9tition dans le Classement global dont l'objectif est de maintenir une honn\u00eatet\u00e9 envers soi-m\u00eame et ses capacit\u00e9s de jeu et envers tous les autres joueurs.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#table-des-matieres","title":"Table des mati\u00e8res","text":"Le classement global de RetroAchievements est la comp\u00e9tition officielle \u00e0 laquelle participe toute la communaut\u00e9. Cela se traduit sur le site par un unique rang au sein de la communaut\u00e9 bas\u00e9 sur la somme des points des succ\u00e8s acquis. Chaque compte dont les points sont sup\u00e9rieurs \u00e0 500 est concern\u00e9.
Au sein du classement global, ce qui est consid\u00e9r\u00e9 comme l\u00e9gitime et dans les r\u00e8gles par opposition \u00e0 ill\u00e9gitime (tricherie) a \u00e9t\u00e9 fa\u00e7onn\u00e9 continuellement par la communaut\u00e9 depuis les origines. Il est attendu que les r\u00e8gles ci-dessous doivent \u00eatre respect\u00e9es par tous les joueurs souhaitant participer au syst\u00e8me de classement global. Tout indice menant \u00e0 la conclusion qu'un joueur n'aurait pas respect\u00e9 ces r\u00e8gles entra\u00eenera la bascule du compte parmi les Non class\u00e9s.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#mode-hardcore","title":"Mode Hardcore","text":"Le mode Hardcore est une fonctionnalit\u00e9 qui permet \u00e0 l'\u00e9mulateur de d\u00e9sactiver TOUS les retours en arri\u00e8res, ralentissements et sauvegardes d'\u00e9tat. La fonctionnalit\u00e9 d'acc\u00e9l\u00e9ration est la seule exception accept\u00e9e.
Lorsque vous jouez en mode Hardcore, vous gagnez le double des points initialement pr\u00e9vus pour le succ\u00e8s. Donc si une s\u00e9rie de succ\u00e8s vaut 400 points et que vous la compl\u00e9tez en mode Hardcore, vous gagnerez 800 points.
Les joueurs qui prennent le classement global au s\u00e9rieux compl\u00e8teront sans aucun doute les s\u00e9ries de succ\u00e8s en mode Hardcore pour obtenir plus de points.
NOTE : si vous d\u00e9sactivez le mode Hardcore (ce qu'on appelle le mode \"softcore\"), attendez-vous \u00e0 avoir des probl\u00e8mes. Consultez le lien : Pourquoi il ne faut pas utiliser le chargement d'\u00e9tat.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#non-classes","title":"Non class\u00e9s","text":"Un compte non class\u00e9 n'appara\u00eet plus dans le classement global, son activit\u00e9 dispara\u00eet du fil et il n'est plus list\u00e9 parmi les joueurs ayant acquis chaque succ\u00e8s (sur la page du succ\u00e8s). Tout ce qui le concerne n'est plus public.
Cependant, un compte non class\u00e9 peut encore profiter de RetroAchievements et gagner des badges pour avoir compl\u00e9t\u00e9 des jeux.
Ce statut a \u00e9t\u00e9 cr\u00e9\u00e9 pour que chacun puisse faire ce qu'il veut avec son compte (comme tricher, partager son compte avec des amis ou de la famille) sans pour autant fausser l'aspect comp\u00e9titif du classement global. Donc, si vous appr\u00e9ciez RetroAchievements mais ne souhaitez pas participer \u00e0 la comp\u00e9tition du classement global, vous pouvez demander \u00e0 basculer votre compte en non class\u00e9. Il suffit d'envoyer un message \u00e0 RAdmin.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#interdit","title":"Interdit","text":"M\u00eame si vous \"auriez d\u00fb\" le d\u00e9bloquer. M\u00eame si le jeu est bogu\u00e9. M\u00eame si le succ\u00e8s est retir\u00e9 ou qu'il ne fonctionne plus. Lorsque c'est d\u00e9tect\u00e9, le compte incrimin\u00e9 bascule dans les comptes Non class\u00e9s.
Si vous deviez d\u00e9bloquer un succ\u00e8s, mais que \u00e7a n'a pas \u00e9t\u00e9 le cas, ou que l'enregistrement sur le site Internet n'a pas eu lieu \u00e0 cause de probl\u00e8me r\u00e9seau, vous devez suivre la proc\u00e9dure d\u00e9crite dans la FAQ pour d\u00e9bloquer un succ\u00e8s manuellement.
NOTE : Assurez-vous de bien utiliser la derni\u00e8re version en date de l'\u00e9mulateur approuv\u00e9.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#2-ne-pas-gagner-le-succes-dune-maniere-qui-na-pas-ete-prevue-par-le-developpeur-de-succes","title":"2. Ne pas gagner le succ\u00e8s d'une mani\u00e8re qui n'a pas \u00e9t\u00e9 pr\u00e9vue par le d\u00e9veloppeur de succ\u00e8s.","text":"Si vous d\u00e9couvrez une porte d\u00e9rob\u00e9e pour accomplir un succ\u00e8s, signalez-la en envoyant un rapport.
Consultez aussi Ce qui est permis 2.
Exemples :
\u00c0 l'occasion, un d\u00e9veloppeur peut \u00e9ventuellement fournir une sauvegarde ou un mot de passe afin de d\u00e9bloquer un succ\u00e8s. C'est appropri\u00e9 dans le sens o\u00f9 c'est le d\u00e9veloppeur qui l'a d\u00e9cid\u00e9 ainsi.
Exemples :
Exemples :
Les logiciels qui peuvent augmenter votre puissance en jeu, d\u00e9bloquer les modes d\u00e9bogage, acc\u00e9l\u00e9rer le jeu, modifier le code du jeu, etc.
Exemples :
Il s'agit de scripts avanc\u00e9s pour le jeu qui vont bien au-del\u00e0 de la simple fonction (parfois li\u00e9e \u00e0 l'horloge interne) qui permettent de maintenir une activit\u00e9 complexe et unique en jeu sans interaction humaine et qui ne suivent pas un sch\u00e9ma r\u00e9current.
Exemples :
M\u00eame votre \"petit fr\u00e8re\" ou votre \"cousin\". Vous devez d\u00e9bloquer les succ\u00e8s par vous-m\u00eame. Laisser d'autres personnes d\u00e9bloquer des succ\u00e8s sur votre compte n'est pas permis et si quelqu'un d'autre que vous triche ou enfreint les r\u00e8gles sur votre compte, c'est vous qui serez tenu pour responsable.
Exemples :
Via forums, MPs, discord, courriel, etc. Vous n'\u00eates pas autoris\u00e9 \u00e0 vous plaindre, solliciter des changements, poster des analyses ou commentaires n\u00e9gatifs ou tout autre critique irrespectueuse. En attaquant, harcelant les d\u00e9veloppeurs au sujet de leur travail sur les succ\u00e8s, c'est notre image au sein de la communaut\u00e9 des chasseurs de succ\u00e8s que vous salissez.
Exemples : Poster des menaces ou des insultes flagrante envers un d\u00e9veloppeur pour avoir ajouter \u00e0 un jeu un succ\u00e8s que vous n'aimez pas. Faire preuve d'incivilit\u00e9 en demandant \u00e0 un d\u00e9veloppeur de retirer ou modifier un succ\u00e8s, etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#9-ne-creez-et-partagez-aucune-methode-de-tricherie","title":"9. Ne cr\u00e9ez et partagez aucune m\u00e9thode de tricherie.","text":"Exemples :
Le c\u00f4t\u00e9 face de Ce qui est permis 2. Les codes de tricherie et les modes de d\u00e9bogage ne sont pas permis \u00e0 moins que le d\u00e9veloppeur n'ait indiqu\u00e9 le contraire et dans quelles conditions. M\u00eame si les succ\u00e8s sont d\u00e9blocables via un code de tricherie, il ne s'agit pas d'un comportement attendu et consid\u00e9r\u00e9 comme de la tricherie si intentionnel. Cela doit \u00eatre signal\u00e9 en tant que bogue via le syst\u00e8me de signalement.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#ce-qui-est-permis","title":"Ce qui est permis","text":"M\u00eame en mode hardcore, l'acc\u00e9l\u00e9ration du jeu est autoris\u00e9e en tant que commodit\u00e9 moderne. Il est commun\u00e9ment admis que l'acc\u00e9l\u00e9ration ne pr\u00e9sente pas de risque de fausser le classement. Elle est donc disponible pour tous.
NOTE : en mode softcore les sauvegardes d'\u00e9tat, les retours en arri\u00e8re et les ralentissements sont autoris\u00e9s, mais attendez vous \u00e0 des probl\u00e8mes. Read in this link Why you shouldn't use the load state feature.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#2-lorsque-la-description-du-succes-lindique-explicitement-les-codesmodes-de-tricherie-et-les-outils-de-debogage-sont-autorises","title":"2. Lorsque la description du succ\u00e8s l'indique explicitement, les codes/modes de tricherie et les outils de d\u00e9bogage sont autoris\u00e9s.","text":"Vient en compl\u00e9ment de Interdit 2.
Les d\u00e9veloppeurs de succ\u00e8s ont pour instruction de prot\u00e9ger leur travail de telle sorte que le succ\u00e8s ne puisse \u00eatre simplement d\u00e9bloqu\u00e9 par un code de tricherie. Toutefois, quelques challenges cools et funs peuvent \u00eatre cr\u00e9\u00e9s en exploitant des m\u00e9thodes de tricherie. Dans ce cas particulier, les m\u00e9thodes de tricherie sont autoris\u00e9es.
NOTE: si vous d\u00e9couvrez qu'un succ\u00e8s est d\u00e9blocable en trichant sans que ce soit indiqu\u00e9 dans son descriptif, proc\u00e9dez \u00e0 un signalement.
Examples :
Utiliser des glitchs, exploits ou des strat\u00e9gies non pr\u00e9vues mais efficaces est permis, cependant les d\u00e9veloppeurs peuvent l'emp\u00eacher dans le code. C'est g\u00e9n\u00e9ralement indiqu\u00e9 dans la description du succ\u00e8s.
Cette r\u00e8gle n'est pas valable dans le cas de pr\u00e9sence de failles dans le code du d\u00e9veloppeur. Dans ce cas pr\u00e9cis, proc\u00e9dez \u00e0 un signalement et d\u00e9bloquez le succ\u00e8s comme pr\u00e9vu initialement par le d\u00e9veloppeur. Consultez aussi Interdit 2.
Exemples :
Exemple pour lequel les d\u00e9veloppeurs l'emp\u00eachent: Megaman (NES) - battre les boss sans prendre de d\u00e9g\u00e2ts sans utiliser le glitch de la pause.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#4-utiliser-un-guide-en-ligne-est-permis","title":"4. Utiliser un guide en ligne est permis..","text":"Exemples: guides vid\u00e9o sur Youtube; GameFAQs; solutions d'enigmes; listes d'objets \u00e0 collectionner.
Pr\u00e9cision d'honn\u00eatet\u00e9: Utiliser un r\u00e9solveur pour sudoku/picross est consid\u00e9r\u00e9 comme de la tricherie. De la tricherie qu'on ne peut punir et donc tol\u00e9r\u00e9e mais de la tricherie tout de m\u00eame.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#5-jouer-a-un-jeu-competitifco-op-avec-un-ou-plusieurs-joueurs-est-autorise","title":"5. Jouer \u00e0 un jeu comp\u00e9titif/co-op avec un ou plusieurs joueurs est autoris\u00e9.","text":"Jouer \u00e0 un jeu en co-op est autoris\u00e9. Cependant, les d\u00e9veloppeurs peuvent l'emp\u00eacher dans le code du succ\u00e8s. C'est g\u00e9n\u00e9ralement indiqu\u00e9 dans la description du succ\u00e8s.
Consultez aussi Interdit 2.
Exemples : un ami talentueux qui joue \u00e0 Streets of Rage ou Goof Troop avec vous; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#6-le-turbo-est-autorise","title":"6. Le Turbo est autoris\u00e9.","text":"Le Turbo, c'est quand vous pressez un bouton et qu'il est automatiquement press\u00e9 de nouveau de mani\u00e8re r\u00e9p\u00e9titive et rapide. Le Turbo est soit inclus avec une manette soit logiciel avec l'\u00e9mulateur. Dans les deux cas, c'est autoris\u00e9.
Dans le cas o\u00f9 un script plus complexe (plus qu'un bouton) est r\u00e9p\u00e9t\u00e9, ce n'est pas autoris\u00e9. Consultez Interdit 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#sanctions-pour-tricherie","title":"Sanctions pour tricherie","text":"Aussit\u00f4t qu'une tricherie aura \u00e9t\u00e9 d\u00e9tect\u00e9e, le compte sera bascul\u00e9 dans la cat\u00e9gorie Non class\u00e9. Dans certains cas, le compte sera banni.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#comment-effacer-lardoise-ou-faire-appel-de-tricherie","title":"Comment effacer l'ardoise ou faire appel de tricherie","text":"Le moyen le plus rapide : remise \u00e0 0 de tous vos points. Si votre compte a \u00e9t\u00e9 bascul\u00e9 dans les non class\u00e9s et que vous souhhaitez l'annuler, merci d'informer Radmin de votre action.
ATTENTION : d\u00e9bloquer des succ\u00e8s en utilisant des m\u00e9thodes non support\u00e9es par l'\u00e9mulateur entra\u00eene le basculement du compte dans les non class\u00e9s. Quand cela arrive, la seule solution pour revenir dans le classement global est de supprimer l'int\u00e9gralit\u00e9 des succ\u00e8s de votre compte. Il n'y aura pas ni recours ni exceptions.
Si vous avez des preuves que vous avez jou\u00e9 sans tricher, envoyez un message \u00e0 RAdmin, mais gardez \u00e0 l'esprit que l'\u00e9quipe RA sont tous volontaires et que cela peut prendre du temps pour que votre situation soit \u00e9tudi\u00e9e.
Si vous voulez aller de l'avant et admettre d'avoir trich\u00e9, un tel comportement sera grandement appr\u00e9ci\u00e9 et nous en tiendrons compte pour la d\u00e9cision.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#besoin-daide","title":"Besoin d'aide","text":"Si vous avez des questions, un commentaire, des suggestions n'h\u00e9sitez pas \u00e0 contacter RAdmin ou l'\u00e9quipe RA (@mods and @admins) sur notre serveur Discord.
Ces r\u00e8gles seront modifi\u00e9es \u00e0 l'occasion quand le besoin s'en fera sentir.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules-fr-%5BIn-progress%5D/#remerciements-speciaux","title":"Remerciements sp\u00e9ciaux","text":"Ce document est fortement inspir\u00e9 de 100Pals Unified Achievement Hunting Rules. Cette version a \u00e9t\u00e9 adapt\u00e9e au contenu de RetroAchievements.
100Pals est une communaut\u00e9 de chasseurs de succ\u00e8s exp\u00e9riment\u00e9s qui existe depuis la sortie des premiers succ\u00e8s sur Steam en 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/","title":"Global Leaderboard and Achievement Hunting Rules","text":""},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#tldr-golden-rules","title":"TL;DR - Golden Rules","text":"Participants of the Global Leaderboard are required to earn their achievements fairly and legitimately.
In general, a player must unlock achievements: - Uusing the latest release version of an approved supported emulator; - Inside of a game by in-game actions; - By their own control; - Without outside-modifying game files or game code; - Without using another player\u2019s save files or passwords, and; - Without using outside cheat programs.
These rules are designed to keep players honest in their gameplay and honest towards each other in Global Leaderboard competition.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#table-of-contents","title":"Table of Contents","text":"The RetroAchievements global leaderboard is the main official community competition. This includes a unique site rank based on the sum of achievement points earned in comparison with every other ranked player. Each account with points greater than 0 is ranked by default.
What is considered fair and legitimate play versus unfair (cheating) on the global leaderboard has been shaped continually by the community since it's inception. The rules below are what we expect from every player who would like to participate in the ranking system. Any indication of a player's failure to follow the rules herein may lose use of the global leaderboard, also known as Untracked status.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#hardcore-vs-softcore","title":"Hardcore vs Softcore","text":"There are two modes of play: Hardcore and Softcore. - Hardcore mode is a feature where the emulator disables save state loading, rewind and slow motion. The fast-forward feature is the only accepted exception. Users who take the global leaderboard seriously will most likely earn achievements in hardcore. Also, events will almost always require achievements to be earned in Hardcore. - Note: Creating save states is allowed in hardcore and can be done to help practice an area later on in softcore, or help developers resolve tickets. - Softcore mode allows for emulator features such as save states, rewind, slow motion, emulator cheats, etc. This mode is much less competitive and is geared toward players who just want to do their own thing. This mode can be somewhat problematic when it comes to achievement processing; therefore, error reports are often taken with a grain of salt.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#untracked","title":"Untracked","text":"Users who have the Untracked status are omitted from all rankings. Their activity is hidden from view outside of their user page and their unlocks do not affect achievement statistics. This status is for users who share their accounts, have zero interest in hardcore and softcore rankings, are suspected of cheating, or actually are cheating. Untracked users can still earn achievements how they normally would, obtain mastery badges, etc.
Voluntary untracks can be reversed by resetting all progress and contacting RAdmin.
Involuntary untracks are generally the result of being flagged for suspicious timestamps. If your account becomes untracked, you can contact RAdmin to find out the cause and how to get it reversed.
If you notice a player has become untracked: do not harass them, accuse them of cheating, make a public scene, etc. Do not ask moderators or admin why a user was untracked. It is none of your business.
WARNING: Unlocking achievements using methods outside supported emulators results in having your account set as untracked. When this happens, the only way to be on the global leaderboard again is by doing a full reset of all achievements on your profile. There are no exceptions and no appeals. Severe cases of this can also result in a ban.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#not-allowed","title":"Not Allowed","text":"Even if you \"should have\" unlocked the achievement. Even if the game is bugged. Even if the achievement is removed or broken entirely. When it's detected, it will lead the account to be Untracked.
In the cases where you should have unlocked the achievement but it didn't trigger or it didn't get registered in the site due to a network problem, you should follow the steps described in FAQ to request a manual unlock.
NOTE: make sure you are using the latest release version of an approved supported emulator.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#2-do-not-earn-achievements-in-a-way-that-contradicts-what-the-description-asks","title":"2. Do not earn achievements in a way that contradicts what the description asks.","text":"If you discover a back-door to an achievement, it is a bug. Please report this bug using a ticket report.
See also the allowed rule 2.
Examples:
Occasionally a developer might provide a save file or password for you to use to earn certain achievements. This is appropriate according to the judgement of the set developer.
Examples:
Examples:
Programs which can boost your powers in games, unlock debug modes, speed the game up, modify game code, etc.
Examples:
These are all advanced scripting of a game far beyond simple tasks (sometimes even synced to clockspeed) to allow complex, unique, and/or non-monotonous/non-repetitive sections of a game to be played without human interaction.
Examples:
Including your \"little brother\" or your \"cousin\". You must earn your achievements yourself. Letting people earn achievements on your account is not allowed in general and if anyone cheats or breaks the rules on your account, you will still be held accountable.
Examples:
Via forums, PMs, discord, email, etc. You\u2019re allowed to complain, ask for changes, leave negative reviews/comments and other such respectful criticisms, but you give all of us in the achievement hunting community a really bad name when you harass/attack developers because of what they did to their game\u2019s achievements.
Examples: Issuing threats or flagrant insults to devs because they added achievements to their game that you do not like; using extreme/excessive rudeness while demanding a developer remove or change achievements; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#9-do-not-create-or-share-cheating-methods","title":"9. Do not create or share cheating methods.","text":"Examples:
The other side of the coin for allowed 2. Cheat codes and debug modes are not allowed unless the developer has made note of which and when it is allowed. Even if the achievements are earnable with cheat codes, this is usually unintended behavior, considered cheating if done intentionally, and should be reported as a bug via the ticket system.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#allowed","title":"Allowed","text":"Even in hardcore mode fast-forward is allowed, as a modern convenience. It's almost a consensus that fast-forward offers no risk to the fairplay and then it's available for everyone to use it.
NOTE: in softcore mode savestates, rewind and slow motion are also allowed, but expect to have some issues. Read in this link Why you shouldn't use the load state feature.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#2-when-explicitly-said-in-achievements-description-in-game-cheat-codesmodes-and-in-game-debug-tools-are-allowed","title":"2. When explicitly said in achievement's description, in-game cheat codes/modes and in-game debug tools are allowed.","text":"This is a complement to the not allowed rule 2.
The achievement developers are instructed to protect their work so the achievements can't be unlocked easily by simply using a cheat code. However, some cool and fun challenges can be created taking advantage of some cheats. In these specific cases, using in-game cheats are allowed.
NOTE: if you find achievements unlockable by using in-game cheats with no pertinent description, consider opening a ticket and reporting it.
Examples:
In-game glitches/exploits/cheesy tactics are allowed, however developers can code their achievements to disallow them programatically. It's usually mentioned in the achievement's description.
This does not include when there are flaws in the achievement developer's code. In such cases, please create a ticket report, and earn the achievement as intended by the developer. See also not allowed rule 2.
Examples:
Examples where developers disallow it: Megaman (NES) - beat bosses damageless without using the pause glitch.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#4-using-online-guideswalkthroughs-is-allowed","title":"4. Using online guides/walkthroughs is allowed.","text":"Examples: youtube video guides; GameFAQs; puzzle solutions; collectible lists; etc.
A note on honesty: Using solvers for sudoku/picross is considered cheating. Unenforceable tolerated cheating but cheating nonetheless.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#5-playing-co-opcompetitive-games-with-another-player-or-players-is-allowed","title":"5. Playing co-op/competitive games with another player or players is allowed.","text":"Playing co-op is allowed, however developers can code their achievements to disallow it programatically. It's usually mentioned in the achievement's description.
See also not allowed rule 2.
Examples: a skilled friend playing Streets of Rage or Goof Troop with you; etc.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#6-turbo-is-allowed","title":"6. Turbo is allowed.","text":"Turbo is where you hold a single button down and the button is automatically re-pressed again and again quickly. Turbo is either built into controllers, or into emulation software. In either case it is allowed.
In cases where there is any more complex scripting than repeating the same button in quick succession, this is not allowed. See Not allowed 6.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#special-thanks","title":"Special Thanks","text":"This document is heavily based on the 100Pals Unified Achievement Hunting Rules. This version is trimmed down and tailored with topics that are relevant to the RetroAchievements context.
The 100Pals is a community with experienced achievement hunters that exist since achievements were first released on Steam in 2007.
"},{"location":"Global-Leaderboard-and-Achievement-Hunting-Rules/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-11 21:04] The Mystical One:
Updated notes about save states in hardcore to clarify that creating save states is allowed.[2023-06-30 12:55] televandalist:
Updated Global Leaderboard and Achievement Hunting Rules (markdown)[2023-04-20 02:01] televandalist:
Removed \"high-ranking\" from \"If you notice a high-ranking player has become untracked:\" - doesn't matter what their rank is.[2023-04-20 01:39] televandalist:
Added \"Severe cases of this can also result in a ban.\" in the last paragraph of the Untracked section.[2023-04-20 01:37] televandalist:
Removed info about Hardcore being worth double. Replaced with a brief explanation of Hardcore vs Softcore. Expanded on info about Untracked users.[2022-05-14 23:42] Jendrej:
grammar[2022-03-09 15:34] StingX2:
\"Do not earn achievements in a way that is unintended by the achievement developer.\" into something along the lines of \"Do not earn achievements in a way that is opposite of what the description asks\" suggested by DanielARP[2021-05-15 23:11] meleu:
do not unlock achievements outside supported emulators[2021-04-26 13:29] meleu:
fix link[2020-02-07 00:49] televandalist:
Added an example to point 3 of \"Not Allowed\" to include loading saves in Hardcore that were created in Softcore.This page is for terms used around RetroAchievements. Some of these are technical terms encountered when developing a set, and others are slang and jargon among users and players, like \"set\" and \"cheevo\".
This page is still a work-in-progress. Please add definitions and fix errors as you see fit.
"},{"location":"Glossary-of-Developer-Terms/#16-bit","title":"16-bit","text":"Processors that work on two byte word lengths. More bits usually mean more addressable memory for more complex games. Also used to describe the fourth generation of consoles, when 16-bit processors were common. A typical 16-bit processor includes the Motorola 68k series (Sega Genesis, Atari Jaguar (as one of its processors), early Macintosh).
"},{"location":"Glossary-of-Developer-Terms/#32-bit","title":"32-bit","text":"Processors that work on four byte word lengths. More bits usually mean more addressable memory for more complex games. Also used to describe the fifth generation of consoles, where 32-bit processors were common. Processors this complex tend to be custom designed; 32-bit consoles include the PlayStation and the Sega Saturn.
"},{"location":"Glossary-of-Developer-Terms/#8-bit","title":"8-bit","text":"Processors that work on one byte word lengths. Can also be used to describe the second or third generations of consoles, where 8-bit processors were common. Common 8-bit processors include the Z80 (many golden age arcade games, the Sega Master System and Game Gear, and the Game Boy) and the 6502 (Atari 2600, Apple II, NES).
"},{"location":"Glossary-of-Developer-Terms/#achievement","title":"achievement","text":"A defined challenge in a game that rewards an RA user with points and an achievement badge when completed.
"},{"location":"Glossary-of-Developer-Terms/#achievement-id","title":"achievement ID","text":"A unique number associated with an achievement. This can be seen in various places, most notably the end of the URL for the achievement page. The \"100% all goals, stats, and decks with Tony Hawk\" achievement for Tony Hawk's Pro Skater 3 on the PS2 has an achievement ID of 261676.
"},{"location":"Glossary-of-Developer-Terms/#achievement-editor","title":"achievement editor","text":""},{"location":"Glossary-of-Developer-Terms/#achievement-of-the-week-aotw","title":"Achievement of the Week (\"AOTW\")","text":"A site event where a new achievement is selected weekly for an entire year, and users attempt to unlock ones for as many weeks as they can. Awards and a leaderboard for most unlocks are presented at the end of the year.
"},{"location":"Glossary-of-Developer-Terms/#achievement-of-the-month-aotm","title":"Achievement of the Month (\"AOTM\")","text":"An addition to the Achievement of the Week event, featuring larger achievements that are presented once a month instead of once a week. AOTM points count towards the final AOTW leaderboard.
"},{"location":"Glossary-of-Developer-Terms/#achievement-page","title":"achievement page","text":"A page on the site for a specific achievement, showing a list of people who have unlocked it, and a history of any tweaks in logic or status, and a wall for discussing the achievement.
"},{"location":"Glossary-of-Developer-Terms/#achievement-processing-or-simply-processing","title":"achievement processing (or simply \"processing\")","text":""},{"location":"Glossary-of-Developer-Terms/#achievement-sets","title":"achievement sets","text":"A collection of achievements that pertain to a specific game.
"},{"location":"Glossary-of-Developer-Terms/#addhits","title":"AddHits","text":""},{"location":"Glossary-of-Developer-Terms/#address","title":"address","text":""},{"location":"Glossary-of-Developer-Terms/#addsource","title":"AddSource","text":""},{"location":"Glossary-of-Developer-Terms/#admin","title":"admin","text":""},{"location":"Glossary-of-Developer-Terms/#alt-group","title":"alt group","text":""},{"location":"Glossary-of-Developer-Terms/#api","title":"API","text":""},{"location":"Glossary-of-Developer-Terms/#api-key","title":"API key","text":""},{"location":"Glossary-of-Developer-Terms/#author","title":"author","text":"The original developer who published an achievement.
"},{"location":"Glossary-of-Developer-Terms/#badge","title":"badge","text":"The image associated with an achievement. It's square and is 64x64 at full size.
"},{"location":"Glossary-of-Developer-Terms/#binary","title":"binary","text":"A way to notate numbers using entirely two states, on or off (colloquially 1's and 0's). While computers use binary, more commonly developers use hexadecimal to read the same information.
"},{"location":"Glossary-of-Developer-Terms/#big-endian-be","title":"big endian (\"BE\")","text":"A type of endianness where the most significant digit in a word is stored in memory first. In other words, big endian stores the word forwards, as you'd read it on its own. Big endian consoles include the Sega Genesis and the Neo Geo.
"},{"location":"Glossary-of-Developer-Terms/#bit","title":"bit","text":"The smallest discrete memory unit. Represented in binary. Rarely addressed directly on consoles.
"},{"location":"Glossary-of-Developer-Terms/#bonus-set","title":"\"bonus\" set","text":"A subset for a game featuring additional, more difficult or more esoteric challenges.
"},{"location":"Glossary-of-Developer-Terms/#byte","title":"byte","text":"A unit of memory with a length of eight bits. Often the smallest addressable unit of memory.
"},{"location":"Glossary-of-Developer-Terms/#cancel-leaderboard","title":"cancel (leaderboard)","text":""},{"location":"Glossary-of-Developer-Terms/#checksum","title":"checksum","text":""},{"location":"Glossary-of-Developer-Terms/#cheevo","title":"cheevo","text":"Colloquial shorthand for \"achievement\".
"},{"location":"Glossary-of-Developer-Terms/#claim","title":"claim","text":"When a developer declares their intent to work on a set for a game. Developers can only make a limited number of claims at a time. Unless it's a collaborative set, no other developer can work on that game while the claim is active.
"},{"location":"Glossary-of-Developer-Terms/#code-note","title":"code note","text":"A chunk of memory annotated with its purpose for use in achievement developing, a memory location \"bookmark\" of sorts. Each game has a freely-accessible page of code notes associated with it.
"},{"location":"Glossary-of-Developer-Terms/#code-reviewer","title":"code reviewer","text":""},{"location":"Glossary-of-Developer-Terms/#commit-selected","title":"commit selected","text":""},{"location":"Glossary-of-Developer-Terms/#completion-trophy","title":"completion trophy","text":"The award given to a user who has finished every achievement in a set in Softcore mode.
"},{"location":"Glossary-of-Developer-Terms/#core-achievement","title":"core achievement","text":"An achievement that's part of the main set for a game and is able to be unlocked by most players.
"},{"location":"Glossary-of-Developer-Terms/#crc-32","title":"CRC-32","text":""},{"location":"Glossary-of-Developer-Terms/#the-cutting-room-floor-tcrf","title":"The Cutting Room Floor (\"TCRF\")","text":"A website dedicated to unused content in games. This can be disabled features, hidden assets, localization changes, or materials in prototypes or prerelease media that changed by the time of the final release.
"},{"location":"Glossary-of-Developer-Terms/#demotion","title":"demotion","text":""},{"location":"Glossary-of-Developer-Terms/#decimal-dec","title":"decimal (\"dec\")","text":"A way to notate numbers, using only 0-9 for ten possible values. Prevalent in everyday use, though less so in computing.
"},{"location":"Glossary-of-Developer-Terms/#developer-dev","title":"developer (\"dev\")","text":"A user on RetroAchievements who digs into a game's behavior with the intent of creating achievements for it. Developers are also responsible for the upkeep of their sets, in case bugs are found.
"},{"location":"Glossary-of-Developer-Terms/#developing-achievements","title":"developing achievements","text":"A process of setting various checks on memory locations that fire when a player completes a task in a game. Achievement logic can be very complex and achievements are reviewed and tested rigorously before sets are released.
"},{"location":"Glossary-of-Developer-Terms/#discord","title":"Discord","text":"A chat platform commonly used by gaming communities, including RetroAchievements. Discord servers (or simply \"Discords\") often feature one or many text channels where users can post messages, images, and videos, and voice channels where users can stream video and audio.
"},{"location":"Glossary-of-Developer-Terms/#dynamic-link-library-dll","title":"dynamic link library (\"DLL\")","text":"A file type common on Windows computers for sharing code and resources between programs. DLLs are used in the standalone RetroAchievements emulators for all the site-specific functionality, like logging in and listening for achievement logic.
"},{"location":"Glossary-of-Developer-Terms/#dynamic-memory","title":"dynamic memory","text":""},{"location":"Glossary-of-Developer-Terms/#endianness","title":"endianness","text":"The order in which a series of bytes are stored in memory. Generally comes in two flavors, little endian and big endian. See those entries elsewhere in this document.
"},{"location":"Glossary-of-Developer-Terms/#event-set","title":"\"event\" set","text":""},{"location":"Glossary-of-Developer-Terms/#flag-achievement-field","title":"flag (achievement field)","text":""},{"location":"Glossary-of-Developer-Terms/#flag-memory","title":"flag (memory)","text":""},{"location":"Glossary-of-Developer-Terms/#forum","title":"forum","text":"RetroAchievements has a forum that facilitates development of sets and communication between users and admins, as well as general banter.
"},{"location":"Glossary-of-Developer-Terms/#game-icon","title":"game icon","text":""},{"location":"Glossary-of-Developer-Terms/#game-entry-or-simply-entry","title":"game entry (or simply \"entry\")","text":""},{"location":"Glossary-of-Developer-Terms/#game-id","title":"game ID","text":"A unique number associated with a game. This can be seen in various places, most notably the end of the URL for the game page. Vib-Ribbon for the PlayStation has a game ID of 8953.
"},{"location":"Glossary-of-Developer-Terms/#game-page","title":"game page","text":"A page on the site for a specific game, listing the achievements for it, completion percentages, users who have mastered the game, leaderboards, and a wall for discussing the game and set, among other things.
"},{"location":"Glossary-of-Developer-Terms/#github","title":"GitHub","text":"A website for publishing repositories of code for programs and websites. RetroAchievements uses GitHub to maintain its emulator projects, the website, and the site documentation.
"},{"location":"Glossary-of-Developer-Terms/#global-leaderboard","title":"global leaderboard","text":"The ranking of all players on the site based on the number of Hardcore and Softcore points they have.
"},{"location":"Glossary-of-Developer-Terms/#hack-set","title":"\"hack\" set","text":"A set developed for a ROM hack of a game.
"},{"location":"Glossary-of-Developer-Terms/#hardcore-mode","title":"Hardcore mode","text":"A setting in RA-equipped emulators that disables save states and speed controls, effectively forcing the player to play like they would on the real console. When a player unlocks an achievement in Hardcore, they get double the points for it, and mastery trophies are awarded for unlocking all achievements in that set in Hardcore.
"},{"location":"Glossary-of-Developer-Terms/#hash","title":"hash","text":"A string of data used to identify a specific version of a game. Hashes are used to ensure all players are using the same version, as differently-localized or earlier/later editions of a game can have differing memory locations that break achievement sets. For some consoles, the entire game image is hashed; for others, only a chunk of the image is hashed.
"},{"location":"Glossary-of-Developer-Terms/#hash-links-log","title":"#hash-links-log","text":""},{"location":"Glossary-of-Developer-Terms/#hexadecimal-hex","title":"hexadecimal (\"hex\")","text":"A way to notate numbers using 0-9 and the letters A-F, providing 16 possible values. Universal in computing thanks to its compactness and 16 being a power of two (decimal notation only has 10 possible values, 10 not being a power of two).
"},{"location":"Glossary-of-Developer-Terms/#hits","title":"hits","text":""},{"location":"Glossary-of-Developer-Terms/#homebrew","title":"homebrew","text":"Games and software developed for a console by hobbyists, as opposed to traditional game companies. Homebrew games tend to be adaptations of games for other platforms, though original homebrew certainly exists.
"},{"location":"Glossary-of-Developer-Terms/#homebrew-set","title":"\"homebrew\" set","text":""},{"location":"Glossary-of-Developer-Terms/#issue","title":"issue","text":""},{"location":"Glossary-of-Developer-Terms/#junior-developer","title":"junior developer","text":"A new developer with certain extra restrictions on their account, like the number of games they can claim at once.
"},{"location":"Glossary-of-Developer-Terms/#json","title":"JSON","text":""},{"location":"Glossary-of-Developer-Terms/#leaderboard","title":"leaderboard","text":"A ranking of players based on their scores, times, or another count (like the Tarzan leaderboard on Pitfall!, for the most vine swings without changing direction) on a game or on a particular stage of a game. Set developers have the option of creating as many leaderboards as they want for their game.
"},{"location":"Glossary-of-Developer-Terms/#little-endian-le","title":"little endian (\"LE\")","text":"A type of endianness where the least significant digit in a word is stored in memory first. In other words, little endian stores the word backwards from how you'd read it on its own. Little endian consoles include the NES and the PlayStation.
"},{"location":"Glossary-of-Developer-Terms/#local-achievements","title":"local achievements","text":"Achievements that only exist on the developer's computer and have not been pushed to unofficial or core achievement status.
"},{"location":"Glossary-of-Developer-Terms/#localization","title":"localization","text":"The act of translating a game from one language to another. Localization is common as many games originate in Japan, and are played in Western countries where Japanese isn't often spoken.
"},{"location":"Glossary-of-Developer-Terms/#logic-comparison-or-simply-comparison","title":"logic comparison (or simply \"comparison\")","text":""},{"location":"Glossary-of-Developer-Terms/#lower4","title":"lower4","text":""},{"location":"Glossary-of-Developer-Terms/#md5","title":"MD5","text":"A hashing algorithm. RetroAchievements uses this on its game hashes.
"},{"location":"Glossary-of-Developer-Terms/#mastery-trophy","title":"mastery trophy","text":"The award given to a user who has finished every achievement in a set in Hardcore mode.
"},{"location":"Glossary-of-Developer-Terms/#memory","title":"memory","text":"Usually refers to RAM, an address space that can be written to by the software at will and gets erased when the console is powered off. Most achievement development works by checking values in memory.
"},{"location":"Glossary-of-Developer-Terms/#memory-achievement-editor","title":"memory (achievement editor)","text":""},{"location":"Glossary-of-Developer-Terms/#memory-bookmarker","title":"memory bookmarker","text":""},{"location":"Glossary-of-Developer-Terms/#memory-inspector","title":"memory inspector","text":""},{"location":"Glossary-of-Developer-Terms/#memval","title":"mem/val","text":""},{"location":"Glossary-of-Developer-Terms/#multi-set","title":"\"multi\" set","text":""},{"location":"Glossary-of-Developer-Terms/#pauseif","title":"PauseIf","text":""},{"location":"Glossary-of-Developer-Terms/#pointers","title":"pointers","text":""},{"location":"Glossary-of-Developer-Terms/#points","title":"points","text":""},{"location":"Glossary-of-Developer-Terms/#prototype-set","title":"\"prototype\" set","text":"A set for a game that was never finished or published, or theoretically, a set for a prototype of a game that's massively different from its final version, enough to make another set not redundant.
"},{"location":"Glossary-of-Developer-Terms/#promote-to-core","title":"promote to core","text":"Making an achievement an official part of a set after development so players can attempt it.
"},{"location":"Glossary-of-Developer-Terms/#retroachievements-ra","title":"RetroAchievements (\"RA\")","text":"A site for creating and unlocking achievements in older games, generally the mid-2000s and before. Players are ranked based on the number of points they accumulate for unlocking achievements.
"},{"location":"Glossary-of-Developer-Terms/#radocs","title":"RADocs","text":"A set of documentation and instructions associated with the RetroAchievements platform.
"},{"location":"Glossary-of-Developer-Terms/#raemus","title":"RAEmus","text":"Short for \"RetroAchievements emulators\", or standalone emulators equipped with RA functionality. This generally only applies to emulators that have been unofficially forked to add RA functionality, and not to all-in-one emulation frontends like RetroArch or BizHawk, or emulators where RA support is official like DuckStation and PCSX2.
"},{"location":"Glossary-of-Developer-Terms/#requirement","title":"requirement","text":""},{"location":"Glossary-of-Developer-Terms/#resetif","title":"ResetIf","text":"flag
"},{"location":"Glossary-of-Developer-Terms/#reservation","title":"reservation","text":""},{"location":"Glossary-of-Developer-Terms/#retro-ratio","title":"retro ratio","text":"A metric to gauge the relative difficulty of the achievements a player has unlocked. A higher retro ratio means the player has unlocked more uncommon (and presumably difficult) achievements. As of yet, the retro ratio is still not well-defined.
"},{"location":"Glossary-of-Developer-Terms/#retroarch","title":"RetroArch","text":"An all-in-one emulator frontend for the Libretro project. RetroArch users install cores that each emulate a specific piece of hardware, allowing for the one program to run games from many systems. Has been ported to many, many consoles and operating systems. RetroArch is one of the main ways of playing RetroAchievements sets, due to many of the cores implementing RA functionality.
"},{"location":"Glossary-of-Developer-Terms/#revision","title":"revision","text":"When a set is updated after its initial release to add, remove, or edit achievements, or to update point values.
"},{"location":"Glossary-of-Developer-Terms/#revision-voting","title":"revision voting","text":""},{"location":"Glossary-of-Developer-Terms/#rich-presence-script-rps","title":"rich presence script (\"RPS\")","text":"A script that gives detailed information on-site about where a player is in a game, what items they've collected, who they're playing as, and other such data that updates while the player is playing.
"},{"location":"Glossary-of-Developer-Terms/#random-number-generator-rng","title":"random number generator (\"RNG\")","text":"Code that generates a seemingly random number, used to make gameplay less predictable and more interesting (though occasionally more frustrating as well). RNG is very rarely truly random, usually taking a number like the game clock and using it as a \"seed\". Poorly implemented seeds can have their \"randomness\" manipulated by players who know how to.
"},{"location":"Glossary-of-Developer-Terms/#read-only-memory-rom","title":"read-only memory (\"ROM\")","text":"Refers to an address space that can't be written to. This is usually where the game instructions and assets are stored. \"ROM\" also refers to a copy of the information on a game's ROM chips stored in a file, usually called an \"image\", for play on emulators or for use in hacking or datamining.
"},{"location":"Glossary-of-Developer-Terms/#rom-hack-or-simply-hack","title":"ROM hack (or simply \"hack\")","text":"A fanmade modification of a game to add new content and features, often totally converting the game in the process. Usually applies to simpler games that were stored on ROM cartridges; more complex and newer games are simply \"modded\" instead.
"},{"location":"Glossary-of-Developer-Terms/#romhackingnet","title":"romhacking.net","text":"A website that hosts guides and utilities for ROM hacking and game modding, as well as the ROM hacks themselves.
"},{"location":"Glossary-of-Developer-Terms/#set","title":"set","text":"A group of achievements associated with a game. Sets are usually developed and maintained by one or two people each who inspect the game's memory, define achievements and what points they're worth, and respond to tickets on achievements not working as intended. Completing all achievements in a set awards a trophy, depending on if the achievements were unlocked in Hardcore or Softcore mode.
"},{"location":"Glossary-of-Developer-Terms/#set-cap","title":"set cap","text":"The former limit on how many points are allowed in a set of achievements. This used to be 400, but there is currently no cap on points in sets.
"},{"location":"Glossary-of-Developer-Terms/#size-achievement-editor","title":"size (achievement editor)","text":""},{"location":"Glossary-of-Developer-Terms/#softcore-mode","title":"Softcore mode","text":"Playing with Hardcore mode disabled, allowing for save states and speed controls. Softcore does not give the player double points for unlocking achievements like Hardcore does, and does not award mastery trophies (instead awarding completion trophies).
"},{"location":"Glossary-of-Developer-Terms/#stage-id","title":"stage ID","text":""},{"location":"Glossary-of-Developer-Terms/#start-leaderboard","title":"start (leaderboard)","text":"To begin a run that's eligible for leaderboard ranking. A run will fail if it's not completed correctly (player death, restart, pause, or other developer-definable criteria).
"},{"location":"Glossary-of-Developer-Terms/#static-memory","title":"static memory","text":""},{"location":"Glossary-of-Developer-Terms/#submit-leaderboard","title":"submit (leaderboard)","text":"To have a score or a time ranked on one of the leaderboards.
"},{"location":"Glossary-of-Developer-Terms/#subsource","title":"SubSource","text":""},{"location":"Glossary-of-Developer-Terms/#ticket","title":"ticket","text":""},{"location":"Glossary-of-Developer-Terms/#ticket-manager","title":"ticket manager","text":""},{"location":"Glossary-of-Developer-Terms/#trigger","title":"trigger","text":""},{"location":"Glossary-of-Developer-Terms/#trophy","title":"trophy","text":"An award given to a player for completing a set or participating in a site event.
"},{"location":"Glossary-of-Developer-Terms/#type-memdeltavalue","title":"type (mem/delta/value)","text":""},{"location":"Glossary-of-Developer-Terms/#unofficial-achievement","title":"unofficial achievement","text":"An achievement published on-site, but not part of the main set. This usually needs additional testing before it can become a core achievement.
"},{"location":"Glossary-of-Developer-Terms/#unlicensed-set","title":"\"unlicensed\" set","text":""},{"location":"Glossary-of-Developer-Terms/#unlock-in-reference-to-achievements-also-called-earning-achievements","title":"unlock (in reference to achievements, also called \"earning\" achievements)","text":"Completing the steps needed to make an achievement fire. The achievement is then displayed on the user's page and elsewhere and they earn the points for having done so.
"},{"location":"Glossary-of-Developer-Terms/#upper4","title":"upper4","text":""},{"location":"Glossary-of-Developer-Terms/#user-motto","title":"user motto","text":"A short, user-definable snippet of text on a user page. This is usually silly and in-jokey.
"},{"location":"Glossary-of-Developer-Terms/#user-page","title":"user page","text":"The profile associated with a user on-site. This contains their account status (registered/junior developer/developer/moderator/etc), points accrued, completion percentage, trophies, the last five games the user was seen playing, and a wall for others to leave comments on, among other widgets.
"},{"location":"Glossary-of-Developer-Terms/#value","title":"value","text":""},{"location":"Glossary-of-Developer-Terms/#value-field-leaderboardrps","title":"value field (leaderboard/rps)","text":""},{"location":"Handling-Tickets/","title":"Handling Tickets","text":""},{"location":"Handling-Tickets/#handling-your-own-tickets","title":"Handling Your Own Tickets","text":"After you've published your achievements, be prepared for bug reports. You're expected to keep your work bug free by appropriately resolving tickets. Respond to all tickets as soon as possible. The sooner you respond the better, because the problem is fresh in the player's mind and you can use them to help you to resolve the problem.
"},{"location":"Handling-Tickets/#can-i-claim-a-set-if-i-have-an-open-ticket","title":"Can I Claim a Set If I Have an Open Ticket?","text":"To be allowed to make a primary or collaboration claim on a set, you must not have any unaddressed tickets.
cores.json
in RALibretro to remove the \"platforms\": \"none\"
line from a core\u2019s definition in order to download and use the core.You may resolve tickets for another developer under the following guidelines:
"},{"location":"Handling-Tickets/#if-the-developer-is-active","title":"If the Developer is Active","text":"You may assist them in the resolution. The developer should still implement any code changes needed, but you are allowed to suggest logic and help find the causes.
Tickets belonging to active Junior Developers should only be handled by members of the Code Reviewer team. If you are asked by a Junior Developer to close or resolve their ticket, please refer them to a Code Reviewer.
"},{"location":"Handling-Tickets/#if-the-developer-is-inactive","title":"If the Developer is Inactive","text":"You can work on their tickets on your own.
You may place a soft claim on ticket investigation and resolution by commenting your intent in a ticket comment.
Who handles tickets for achievements edited while the developer is Inactive?
If an inactive developer becomes active again, they are still responsible for their achievements that have been fixed by other developers.
Last 10 changes on this page:
[2024-03-12 17:03] Andrew Comer:
Added handling of Jr. Dev tickets.[2024-03-11 14:11] Andrew Comer:
Updated Handling Tickets (markdown)[2024-03-11 14:08] Andrew Comer:
Updated Handling Tickets (markdown)[2024-03-11 14:03] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:57] Andrew Comer:
Bullet formatting fixes.[2024-01-14 10:07] The Mystical One:
Cleaned up the \"Handling Tickets for Other Developers\" section so it flows better.[2024-01-14 08:31] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-14 08:27] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-13 23:04] The Mystical One:
Updated Handling Tickets (markdown)[2024-01-13 23:03] The Mystical One:
Updated Handling Tickets (markdown)Every ROM that is linked to an achievement set should be clearly identified and labeled. These labels help players know which versions of a game are compatible as well as if there are any translation patches, bug fixes, cosmetic hacks, quality of life hacks, etc. that they can use.
"},{"location":"Hash-Labels/#info-for-linked-hashes","title":"Info for Linked Hashes","text":"Manage Hashes
automatically.main
Sometimes used to show the primary ROM used by the set developer(s) rapatches
Used when the hash requires a patch hosted on RAPatches nointro
The most common for cartridge-based games redump
The most common for disc-based games wozaday
Apple II preservation group tosec
fbneo
Mostly used for Arcade cleancpc
Amstrad preservation project 4amcrack
Used for Apple II neokobe
Mostly for PC-8001 and PC-8801 homebrew
Used for, you guessed it: Homebrews! atariage
Popular site for Homebrews itchio
Popular site for Homebrews msu1
Used to mark SNES ROMs with MSU-1 patches snesmini
egg
ROMs purchased from Project Egg, typically Japanese PC games. steam
ROMs purchased from Steam. mamesl
MAME Software List smwcentral
Popular repository for Super Mario World hacks. rhdn
Popular repository for ROM hacks goodtools
nongood
offlinelist
"},{"location":"Hash-Labels/#examples","title":"Examples","text":""},{"location":"Hash-Labels/#deja-vu-nes","title":"Deja Vu (NES)","text":"Deja Vu (USA) (Uncensored) (v1.0) (usertheloset).nes
, which follows the RAPatches naming scheme. The labels used are nointro
and rapatches
.To see how this will look for the majority of users, go to the game entry page and click on \"Linked Hashes.\"
As you can see below, nointro
became and rapatches
became .
We'll skip the manage hashes example for this one. Let's go straight to \"Linked Hashes\" on the game entry page:
The hashes labeled with redump
, rhdn
, and rapatches
require patches that are available on both romhacking.net and in the RAPatches repository.
Input Text:
[b]Suikoden (Europe) (De) (v1.01) (Twisted Phoenix Game Translation)[/b]\n[b]Suikoden (Europe) + [url=https://www.romhacking.net/translations/5736/]German Patch[/url][/b] [img=Images/labels/rhdn.png]\nor\n[b]Suikoden (Europe) + [url=https://github.com/RetroAchievements/RAPatches/raw/main/PS1/Translation/German/11255-Suikoden-GermanTranslation.7z]German Patch[/url][/b] [img=Images/labels/rapatches.png]\n[i]RA Checksum: [/i]f0c5ec0696aa2ec2d6e5b731fbe07491\n
[img=Images/labels/rapatches.png] [img=Images/labels/rhdn.png]\nDownload the patch from RHDN [url=https://www.romhacking.net/translations/5736/]here[/url].\nRAPatches Mirror [url=https://github.com/RetroAchievements/RAPatches/raw/main/PS1/Translation/German/11255-Suikoden-GermanTranslation.7z]here[/url].\n
"},{"location":"Hash-Labels/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-01 22:23] televandalist:
Updated Hash Labels (markdown)[2023-12-14 12:59] televandalist:
Updated Hash Labels (markdown)[2023-07-05 23:08] televandalist:
rndn -> rhdn[2023-06-03 02:30] televandalist:
Updated WIP Hash Labels (markdown)En el Editor de Logros (Achievement Editor), el campo de hasta la derecha es el Contador de Golpes (Hit Count).
Por default es Cero, que significa que la condicion tiene que ser verdadera para qeu el logro se dispare.
Si agregas un contador de golpes (hit count), por ejemplo 5, significa que la condicion tiene va a ser verdadera hasta que se cumplan esos fotogramas (frames), y no se necesitan volver a cumplir de nuevo en cualquier otro momento.
PORFAVOR, NOTA: si una condicion tiene cero hit count, y llega al numero requirido, esta condicion ya no esta siendo buscada. Sigue permaneciendo como verdadera, ALMENOS que tengas un ResetIf
, que discutiremos mas abajo.
Condiciones con Reset If
y PauseIf
tambien pueden tener hits. Sigue los links para mas informacion.
En la seccion de Ejemplos de Verdad hay dos buenos ejemplos:
Last 10 changes on this page:
[2019-04-16 15:39] meleu:
fix broken links[2019-03-12 14:59] meleu:
Updated Hit Counts ES (markdown)In the Achievement Editor, the field on the far right side is Hit Count.
The default is Zero, which means the condition must be true for the achievement to trigger.
If you set a target hit count, like 5, it means the condition must be true for at least that many frames, and once that hit count target is met, it doesn't need to be met again at any other time.
PLEASE NOTE: if a condition has a non-zero hit count, and reaches the number required, this condition is no longer tested. It remains true, UNLESS you have a ResetIf
, which we will discuss below.
Conditions with Reset If
and PauseIf
flags can also have hits. Follow the links for details.
In the Real Examples section there are two examples good examples:
When the emulator is reset, all hits are immediately zeroed out and the achievement is set back to Waiting. However, an emulator reset does not clear out memory, so it's possible for the hits to reaccumulate before the game reinitializes the memory. As such, you should not rely on the hits being cleared out by the emulator reset.
Similarly, when the emulator first \"powers on\", the state of memory is not guaranteed to be consistent as true hardware does not initialize its memory. Instead, the software sets some initial state when it claims portions of memory. Some games actually rely on the random nature of the uninitialized memory to seed their random number generators.
For both cases, you should have an explicit reset for some piece of knowable logic, like the player being on the title screen.
"},{"location":"Hit-Counts/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-07-27 19:31] Searo:
Page doesn't exist and we don't care what softcore users do anymore[2021-07-17 07:27] Jamiras:
Updated Hit Counts (markdown)[2021-07-17 07:27] Jamiras:
add section detailing behavior at reset/power on[2019-02-18 17:01] meleu:
fix broken links[2019-02-12 13:10] meleu:
fix broken links[2019-02-12 09:23] meleu:
Updated Hit Counts (markdown)[2019-02-12 09:21] meleu:
Created Hit Counts (markdown)Bienvenido a la Documentaci\u00f3n de RetroAchievements!
Lo primero que tienes que conocer es el manifiesto de RetroAchievements y seguir el c\u00f3digo de conducta de usuario.
Si est\u00e1s buscando documentos sobre creaci\u00f3n de logros, comprueba nuestra secci\u00f3n de documentos para desarrolladores.
Animamos a todos los miembros de la comunidad a unirse a nuestro servidor de Discord, lo usamos para la mayor\u00eda de las comunicaciones.
La lista completa de p\u00e1ginas se encuentran en la barra lateral, pero aqu\u00ed hay una breve descripci\u00f3n de algunas de ellas:
Puedes ayudar a mejorar los documentos editando/creando p\u00e1ginas en la wiki de RetroAchievements.
"},{"location":"Home-es/#traducciones","title":"Traducciones","text":"Last 10 changes on this page:
[2024-04-08 15:46] Germ\u00e1n Boquizo S\u00e1nchez:
Removed the RA logo from the top since the link was broken and minor fixes[2020-09-18 08:01] meleu:
enlace para el Manifiesto[2019-04-17 13:49] meleu:
using partial URI[2019-04-17 09:04] ShinyNinetalesTM:
fixed punctuation in several words, fixed some typos and rewrited some phrases to emphatize context[2019-04-17 08:48] ShinyNinetalesTM:
fixed link to Download-es[2019-04-16 12:07] eldexterr:
fixed typos[2019-04-16 12:05] eldexterr:
Updated Home es (markdown)[2019-04-16 15:48] meleu:
original versionBienvenue sur la documentation de RetroAchievements!
Dans un premier temps, vous devez lire et adh\u00e9rer au Code de conduite des utilisateurs. (en cours de traduction)
Si vous cherchez de la documentation sur la cr\u00e9ation d'achievements, jetez un oeil \u00e0 la documentation pour d\u00e9veloppeurs. (en cours de traduction)
Nous vous encourageons \u00e0 rejoindre notre serveur Discord, nous l'utilisons pour communiquer la plupart des informations.
La liste compl\u00e8te des pages est disponible dans la barre lat\u00e9rale mais voici une rapide description : - FAQ: les questions fr\u00e9quemment pos\u00e9es (comme quelle version de RetroArch je devrais utiliser?). (en cours de traduction)
Vous pouvez \u00e9diter/ajouter de la documentation sur le wiki de RetroAchievements.
"},{"location":"Home-fr/#translations","title":"Translations","text":"Bem-vindo ao Projeto de documenta\u00e7\u00e3o do Retroachievements!
Rec\u00e9m chegados, por favor iniciem pelo Manifesto RetroAchievements e com o FAQ.
N\u00f3s encorajamos todos os membros da comunidade a se juntar ao nosso Servidor do Discord, n\u00f3s usamos isto para maior comunica\u00e7\u00e3o.
Voc\u00ea pode aprender como criar suas pr\u00f3prias conquistas lendo nossos Documentos para Desenvolvedores.
Voc\u00ea pode ajudar a melhorar esses documentos editando/criando as p\u00e1ginas no RetroAchievements wiki.
"},{"location":"Home-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-04-08 15:46] Germ\u00e1n Boquizo S\u00e1nchez:
Removed the RA logo from the top since the link was broken[2021-04-22 07:52] meleu:
https[2020-09-10 01:43] meleu:
Updated Home pt_BR (markdown)[2020-09-10 01:04] meleu:
Updated Home pt_BR (markdown)[2019-02-10 16:01] meleu:
remove broken link[2018-06-10 10:44] lilbud:
Updated Discord Link[2018-03-25 10:14] meleu:
Updated Home pt_BR (markdown)[2018-03-25 11:56] KingDice001:
Updated Home pt_BR (markdown)[2018-03-25 11:42] KingDice001:
Updated Home pt_BR (markdown)[2018-03-24 23:38] meleu:
Updated Home pt_BR (markdown)RetroAchievements belgelerine ho\u015f geldiniz!
Her \u015feyden \u00f6nce, Kullan\u0131c\u0131 Davran\u0131\u015f Kurallar\u0131n\u0131 bilmeli ve bunlara uymal\u0131s\u0131n\u0131z.
Ba\u015far\u0131 olu\u015fturma hakk\u0131nda dok\u00fcmanlar ar\u0131yorsan\u0131z, Geli\u015ftirici dok\u00fcmanlar\u0131 b\u00f6l\u00fcm\u00fcm\u00fcz\u00fc inceleyin.
T\u00fcm topluluk \u00fcyelerini Discord Sunucumuza kat\u0131lmaya te\u015fvik ediyoruz, bunu \u00e7o\u011fu ileti\u015fim i\u00e7in kullan\u0131yoruz.
Sayfalar\u0131n tam listesi kenar \u00e7ubu\u011fundad\u0131r, ancak bunlardan baz\u0131lar\u0131n\u0131n k\u0131sa bir a\u00e7\u0131klamas\u0131:
Bu dok\u00fcmanlar\u0131 RetroAchievements wiki'de sayfalar\u0131 d\u00fczenleyerek / olu\u015ftururken daha iyi hale getirebilirsiniz.
"},{"location":"Home-tr_TR/#ceviriler","title":"\u00c7EV\u0130R\u0130LER","text":"Welcome to the RetroAchievements documentation!
The docs are currently under heavy construction so be sure to check back often! Each section appears in the sidebar, but here is a brief explanation of the categories:
We encourage all community members to join our Discord Server; we use this for most communication.
Translations
Last 10 changes on this page:
[2023-11-28 14:29] televandalist:
Removed the RA logo from the top since the link was broken[2023-06-30 12:36] televandalist:
Updated Home (markdown)[2023-06-30 12:14] televandalist:
Updated Home (markdown)[2023-06-06 10:35] televandalist:
Fix broken link[2023-04-13 15:08] televandalist:
Removed the links to pages that deal with specific support questions. They should/will be merged with a support section or the FAQ to declutter the home page.[2023-04-13 14:51] televandalist:
Removed link to \"Free Games\" section. While they are free homebrews, the downloads are typically on site if they actually have a set. If they aren't, they should be.[2022-08-23 20:22] Jazerus:
grammar fixes[2022-02-18 21:24] televandalist:
Add Event page link[2021-04-21 10:23] meleu:
french docs are yet incomplete[2020-09-07 09:06] meleu:
add ManifestoEste proyecto de documentaci\u00f3n de RetroAchievements junta las gu\u00edas, tutoriales, tips y trucos sobre el desarrollo de RetroAchievements y cualquier otra informaci\u00f3n interesante para la comunidad.
Antes de que se empezara este proyecto la informaci\u00f3n sobre el desarrollo de logros estaba esparcida en varios posts del foro en RetroAchievements.org, haciendo la experiencia de aprendizaje mas complicada para el desarrollador novato. Este proyecto comenz\u00f3 trayendo el material de los posts del foro hacia aqu\u00ed, pero en un orden mas ordenado y coherente.
La Documentaci\u00f3n de RetroAchievements se divide en dos partes:
La wiki es donde los documentos son creados y editados. Cualquiera (con una cuenta de github) es capaz de editar el contenido de la wiki. As\u00ed que, si tienes algo que compartir, por favor edita la wiki!
El sitio web de los documentos de RetroAchievements tiene (la mayor\u00eda) el mismo contenido que la wiki, pero con un look mas placentero. El contenido de este sitio web es generado por sus moderadores utilizando el contenido de la wiki como su m\u00e9todo de entrada.
Cuando un cambio es hecho en la wiki este cambio NO es instant\u00e1neamente reflejado en los documentos. La conversi\u00f3n es realizada por un moderador cada cierto tiempo.
"},{"location":"How-RA-Documentation-Works-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 14:02] eldexterr:
Created How RA Documentation Works es (markdown)Este documento describe todos los pasos que cualquier aspirante a desarrollador de logros tiene que seguir antes de conseguir estatus de Desarrollador. Estos requisitos tambi\u00e9n son una lista para los Rese\u00f1adores de C\u00f3digo (desarrolladores que inspeccionan el c\u00f3digo de nuevos desarrolladores).
Cualquiera puede convertirse en un desarrollador en RetroAchievements si pone el suficiente esfuerzo.
Opcional pero fuertemente recomendado: \u00fanete a nuestro servidor de Discord y pregunta a un moderador darte el rol de jr-dev
. Utiliza los canales #help-me y #devs cada vez que cuentes con alguna pregunta.
Cada desarrollador tiene que m\u00ednimo conocer los conceptos b\u00e1sicos y t\u00e9cnicas mostradas en estos dos documentos:
Cualquier aspirante a desarrollador tiene que demostrar seguir y entender los siguientes conceptos:
=
, por ejemplo >
, <
, !=
Nota: Tu no necesitas el dominio total de todos estos conceptos para tener un set publicado, pero si los necesitas para obtener un rol como desarrollador completo.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#conceptos-avanzados","title":"Conceptos Avanzados","text":"Aqu\u00ed hay una lista de algunos conceptos/t\u00e9cnicas. No son requisito para convertirte en un Desarrollador, pero est\u00e1n en listadas aqu\u00ed para mostrar al desarrollador jr. (jr-dev) las posibilidades de la l\u00f3gica de los logros.
Valor en Memoria > Valor Delta
Contador)Los Ejemplos Reales y las Plantillas de Logros son paginas \u00fatiles para ver como estas t\u00e9cnicas funcionan.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#practicando","title":"Practicando","text":"En orden para que se te conviertan familiares todas estas t\u00e9cnicas b\u00e1sicamente tienes que practicar. Puedes utilizar cualquier juego para practicar, incluso esos que ya cuentan con logros. Simplemente ten estas reglas en mente:
Sigue los Reglamentos en el C\u00f3digo de Conducta del Desarrollador para as\u00ed encontrar un juego en el cual trabajar. B\u00e1sicamente lo que primero necesitas es declarar tus planes de trabajo sobre el juego en el que quieras trabajar en el foro del mismo, y mientras vallas trabajando en el juegos a\u00f1adir tus planes mas detallados en el mismo foro.
Tip: para tu primer set de logros es recomendable que escojas un juego que aun no tiene logros y que no es muy popular.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#planeando-tu-set-de-logros","title":"Planeando tu Set de Logros","text":"Una vez que encuentras un juego el cual trabajar necesitas planificar tu Set de Logros.
Ten en cuenta conocer lo suficientemente bien el juego para as\u00ed hacer un buen set. Checa su pagina de GameFAQs o algo parecido, intenta aprender mas sobre el videojuego, sus secretos y detalles. Aqu\u00ed hay una buena gu\u00eda que te podr\u00eda servir de ayuda con esto: Mapa de Desarrollo del Set.
Postea tus planes en el foro oficial del juego, para que as\u00ed la comunidad pueda dejar sugerencias y retroalimentacion. Esta actitud es requerida para todo tipo de desarrolladores y desarrolladores jr. (jr-dev).
IMPORTANTE!: estate abierto en recibir retroalimentacion y sugerencias.
Tambi\u00e9n mira: Dise\u00f1o de Logros, es una gu\u00eda extensiva en como dise\u00f1ar buenos e interesantes logros. No sobre el lado t\u00e9cnico sino el conceptual.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#publica-tus-logros-en-unofficial-para-revision","title":"Publica tus logros en Unofficial para revisi\u00f3n","text":"Despues de haber creado varios logros, promuebelos a Unofficial y despu\u00e9s contacta a un @mod o aun @code-reviewer en nuestro servidor de Discord (si no utilizas Discord, manda un mensaje a RAdmin) y pregunta por alguien que pueda rese\u00f1ar tu trabajo.
Otra vez, es extremadamente importante que est\u00e9s abierto a recibir critica constructiva y ayuda de parte de la comunidad en cualquier momento.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#estoy-listo-para-conseguir-estatus-de-desarrollador","title":"Estoy listo para conseguir estatus de Desarrollador?","text":"Una vez que los Rese\u00f1adores de C\u00f3digo han inspeccionado el c\u00f3digo de tus logros y conceptos, ellos y el administrador van a utilizar el \"Conocimiento Requerido\" en la lista de requisitos de arriba para determinar si estas listo. Si no estas completamente calificado para ser un desarrollador pero tu set esta completo y estable el set va a ser publicado. Puedes preguntar que conceptos aun necesitas para demostrar tu capacidad para obtener tu estatus como desarrollador.
Los m\u00e9ritos para que un desarrollador jr. (jr-dev) reciba un estatus de desarrollador dependen en:
Una vez que hubieras conseguido tu estatus como desarrollador, tu TIENES que adherirte a el C\u00f3digo de Conducta del Desarrollador. Eso es extremadamente importante para crear un ambiente justo entre los Desarrolladores de Logros.
"},{"location":"How-to-Become-an-Achievement-Developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:30] meleu:
fix links[2019-04-17 17:26] eldexterr:
Find some typos[2019-04-16 14:50] meleu:
page title en espa\u00f1ol[2019-04-16 14:42] meleu:
fix broken links[2019-03-12 14:58] meleu:
Updated How to Become an Achievement Developer ES (markdown)This document describes all the steps that any aspiring achievement developer must follow before getting Developer status. These requirement are also a checklist for Code Reviewers (developers who inspect the code of new developers).
Anyone can become a RetroAchievements developer if they put in the effort.
Strongly recommended: join our Discord server so you can get in contact with other achievement developers who can show you the ropes and help you along. If you already know what game you want to work on, go ahead and ask for the Jr-Dev
role in #role-request
forum by creating a post tagged as Jr-Dev
, posting your set plan for the game (you can use one of these templates), and pinging @QA-Maintainer
(Make sure to first get your account verified by following instructions in #welcome
if you haven't already). This gives you access to the #jr-devs
channel, where you can talk to code reviewers and ask any development related questions.
Follow the guidelines on the Developer's Code of Conduct to find a game to work on achievements for it. To claim a game, it must have a forum topic. If it doesn't have one already, you can ask a Code Reviewer to make one in the #jr-dev-forum
in our Discord server. Feel free to declare your plans to work on the game in the topic, and post updates as you proceed.
Tip: for your first achievement set it's recommended to choose a game that doesn't yet have achievements and is not very popular.
"},{"location":"How-to-Become-an-Achievement-Developer/#planning-your-achievement-set","title":"Planning your Achievement Set","text":"Once you find a game to work on you need to plan your Achievement Set.
Be sure you know enough about the game to make a good set. Check the GameFAQs or something, try to learn more about the game, its secrets and details. Here is a good guide to help you with this: Set Development Roadmap.
It's recommended that you post your plans on the official game's forum topic, so the community can leave suggestions and provide feedback.
IMPORTANT!: be open to receive feedback and suggestions.
See also: Achievement Design, it's an extensive guide on how to design good and interesting achievements. It's not about the technical side but the conceptual.
"},{"location":"How-to-Become-an-Achievement-Developer/#required-knowledge","title":"Required Knowledge","text":"Every developer must know at least the basic concepts and techniques shown in these two docs:
Any aspiring dev must demonstrate understanding of the following concepts:
=
, such as >
, <
, !=
Note: You do not need mastery of all these concepts to have a set published, but you do need them to have the full Developer role.
"},{"location":"How-to-Become-an-Achievement-Developer/#advanced-concepts","title":"Advanced Concepts","text":"Here is a list of some advanced concepts/techniques. They are not required to become a Developer, but are listed here to let the jr-dev know the possibilities of the Achievement's logic.
Mem > Delta
Counter)The Real Examples and Achievement Templates pages are useful resources to see how those techniques work.
"},{"location":"How-to-Become-an-Achievement-Developer/#code-notes","title":"Code Notes","text":"Junior developers can create and delete code notes that they have created, but they cannot delete or edit any notes created by others. Developers CAN edit and remove notes by other users, and these changes are site-wide.
"},{"location":"How-to-Become-an-Achievement-Developer/#practicing","title":"Practicing","text":"In order to become familiar to those techniques you must practice. You can use any game to practice, even those that already have achievements. Just be aware about these rules:
After creating some achievements, upload them to Unofficial and then create a post in #jr-dev-forum
on our Discord server (if you don't use Discord, send a message to RAdmin) and ask them to find someone to review your work.
Do NOT ask another developer to promote your achievements to the Core without a proper review.
Again, it's extremely important that you are open to receive constructive criticism and helpful advice from the community at any time.
"},{"location":"How-to-Become-an-Achievement-Developer/#am-i-ready-to-get-the-developer-status","title":"Am I ready to get the Developer status?","text":"Once the Code Reviewers have inspected your achievement's code and concepts, they and the admin will use the \"Required Knowledge\" checklist above to determine if you're ready. If you're not fully qualified to be a developer yet, but your set is complete and stable, the set will get published. You can then ask which concepts you still need to demonstrate proficiency in to be given developer status.
The merit of a jr-dev receiving developer status depends on:
Once you get your Developer status, you MUST adhere to the Developer's Code of Conduct. That is extremely important to create a fair environment between the Achievement Developers.
"},{"location":"How-to-Become-an-Achievement-Developer/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-05-01 13:08] tomojira:
Updated instructions for Jr. Dev applicants[2023-06-06 10:41] televandalist:
Fix broken link[2023-03-29 21:18] Searo:
Typo[2023-03-29 20:56] Searo:
Update jr request wording after #help-me channel changed to #tech-support[2023-02-15 13:25] Riley Nielsen:
Updated How to Become an Achievement Developer (markdown)[2022-05-14 21:53] Searo:
Update QA-Team to QA-Maintainer[2022-05-02 17:52] RALordAndrew:
Updated How to Become an Achievement Developer (markdown)[2021-11-28 14:47] Searo:
Clarification on channel and team to ask for jr-dev role on Discord[2021-05-01 07:27] meleu:
fix link to AddHits page[2021-04-26 13:33] meleu:
fix linksIn \"Window Capture\" mode, OBS Studio will not capture the popups. The popups are rendered using a \"Layered Window\", and OBS Studio removed support for capturing layered windows
If you want to include the popups in your stream, you have two options: change to \"Display Capture\" mode, or add a second \"Window Capture\" for the \"TransparentOverlayWindow\". This page will attempt to walk you through doing the second.
Add a second \"Window Capture\" source to the Scene. In the popup dialog, select the \"TransparentOverlayWindow\".
You'll probably notice the window is pink.
Add a filter to the second \"Window Capture\"
Add a \"Color Key\" filter, set the Key Color Type to \"Custom Color\", then use the Select Color dialog to enter #FF01FE
as the color. Decrease the similarity to 1 and the opacity to 90.
Finally, if you still have a bit of a pink border showing up, enable a Scale Filter. They all seem to eliminate the remnant, so choose whichever you like best.
"},{"location":"How-to-configure-OBS-Studio-to-see-the-popups/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-06-30 17:06] Jamiras:
Created How to configure OBS Studio to see the popups (markdown)Incluso si tu no sabes como crear logros aun hay varias maneras para contribuir con la comunidad de RetroAchievements. Aqu\u00ed se encuentran algunos ejemplos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportar-logros-rotos","title":"Reportar logros rotos","text":"Si tu logro se disparo en el momento equivocado o no se disparo del todo, por favor reportalo. Sabemos que a muchos usuarios le gustan los puntos gratis, pero por favor, incluso si un logro se disparo en el momento equivocado, reportalo!
Otra situaci\u00f3n que tambi\u00e9n merece ser reportada es cuando un logro se dispara por medio del uso de un cheat en el juego (ej. c\u00f3digo de selecci\u00f3n de stages), o cargando un archivo de guardado.
Hay dos maneras para reportar un logro roto: directamente desde el emulador o por medio de la pagina web. En los dos casos, agrega detalles del estado de tu juego, cuando se disparo/no se disparo, cual modo de juego, donde estabas cuando paso/no paso, si reseteaste el juego recientemente, cualquier cosa que pienses que podr\u00eda resultar relevante para el logro. Esto es necesario para que los desarrolladores encuentren donde esta el problema.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportando-por-medio-del-emulador","title":"Reportando por medio del emulador","text":"Ve a RetroAchievements -> Report Broken Achievements, esta funci\u00f3n solamente esta disponible en emuladores oficiales (no en RetroArch).
Mira este ejemplo:
.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#reportar-por-medio-del-sitio-web","title":"Reportar por medio del sitio web","text":"En la pagina de cada logro podr\u00e1s ver un link que dice Report an issue for this achievement
, como en la imagen de abajo:
Si conoces un juego bastante bien, probablemente tal vez tengas algunas ideas muy cool sobre retos para el juego. Postea tus ideas en el foro del juego.
Tenemos una gu\u00eda en como pensar y dise\u00f1ar buenos logros, no el lado t\u00e9cnico sino el conceptual. Que incluso los que no son desarrolladores pueden llegar a conseguir un poco de inspiraci\u00f3n de ese documento.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#la-retro-alimentacion-es-siempre-bienvenida","title":"La retro-alimentaci\u00f3n es siempre bienvenida","text":"Deja retro-alimentaci\u00f3n en los foros sobre que te gusta o que te disgusta sobre un set de logros. Se especifico y deja cada detalle.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#haz-iconosemblemas-para-logros","title":"Haz iconos/emblemas para logros","text":"Si te gusta jugar con gr\u00e1ficos puedes crear alg\u00fan arte para los emblemas o iconos de juegos. Utilizando la opci\u00f3n de captura de pantalla del emulador puede llegar a ser \u00fatil para esto, y entonces puedes editarlo para hacer llegar a hacer algo muy cool.
Puedes encontrar mas informaci\u00f3n en la pagina de creaci\u00f3n de Badges e Iconos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#ayuda-con-la-documentacion","title":"Ayuda con la documentaci\u00f3n","text":"Si cuentas con una cuenta de github y conoces lo b\u00e1sico del Markdown, puedes ayudar con la documentaci\u00f3n. Corregir errores ortogr\u00e1ficos, gramaticales o informaci\u00f3n err\u00f3nea.
Hecha un vistazo a esta pagina para conocer los detalles: Contribuyendo con los documentos
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#participa-en-los-eventos-de-la-comunidad","title":"Participa en los eventos de la comunidad","text":"Como Logro de la Semana, Tabla Clasificatoria de la Semana u otros eventos que suceden en nuestro servidor de discord.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-26 13:00] eldexterr:
Created How to contribute if you are not a developer es (markdown)Link para o texto em ingl\u00eas: How to contribute if you're not a developer
Mesmo que voc\u00ea n\u00e3o saiba como criar conquistas existem muitas formas de contribuir com a comunidade RetroAchievements. Aqui est\u00e3o alguns exemplos.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#reportar-conquistas-quebradas","title":"Reportar conquistas quebradas","text":"Se uma conquista ativar em um tempo errado ou n\u00e3o ativar, por favor reporte.
Outra importante situa\u00e7\u00e3o que precisa ser reportada \u00e9 uma conquista ativando por usar algum tipo de trapa\u00e7a no jogo (ex. c\u00f3digo de sele\u00e7\u00e3o de fase), ou por carregar um jogo salvo (arquivos de save)
Para reportar uma conquista quebrada, v\u00e1 em RetroAchievements -> Report Broken Achievements, esse recurso s\u00f3 est\u00e1 dispon\u00edvel em emuladores oficiais (n\u00e3o no RetroArch).
Veja este exemplo:
.
Detalhes adicionais do estado do seu jogo, quando ativa/n\u00e3o ativa, que modo de jogo, onde voc\u00ea est\u00e1 quando aconteceu/n\u00e3o aconteceu, se voc\u00ea teve que resetar o jogo recentemente, qualquer outra coisa que voc\u00ea acha que pode ser relevante para a conquista. Isso \u00e9 necess\u00e1rio para o nosso sistema, para que os desenvolvedores saibam onde est\u00e1 o problema.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#sugerir-conquistas-legaisdesafios","title":"Sugerir conquistas legais/desafios","text":"Se voce conhece um jogo muito bem, voc\u00ea provavelmente pode ter algumas ideias interessantes de desafios para o jogo. Poste suas ideias no forum relacionado ao jogo.
Nos temos um guia sobre como pensar e projetar boas conquistas, n\u00e3o o lado t\u00e9cnico, mas o conceitual. Entao at\u00e9 os n\u00e3o-desenvolvedores podem ter alguma inspira\u00e7\u00e3o a partir daquela informa\u00e7\u00e3o.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#feedback-e-sempre-bem-vindo","title":"Feedback \u00e9 sempre bem-vindo","text":"Dar Feedback (coment\u00e1rios) nos foruns sobre qual voc\u00ea gosta ou n\u00e3o gosta sobre a lista de conquista. Seja espec\u00edfico e deixe detalhes
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#faca-icones-para-as-conquistas","title":"Fa\u00e7a \u00edcones para as conquistas","text":"Se voc\u00ea gosta de brincar com gr\u00e1ficos, voc\u00ea pode criar algumas artes para os \u00edcones das conquistas ou os \u00edcones para os jogos. Usando o recurso de screenshot (captura de tela) do emulador em si pode ajudar com isso, e entao voc\u00ea pode editar para fazer algo legal.
Voc\u00ea pode ver mais informa\u00e7\u00f5es sobre a P\u00e1gina de Cria\u00e7\u00e3o de Icones.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#participe-em-eventos-da-comunidade","title":"Participe em eventos da comunidade","text":"Como a \"Conquista da Semana\" (Achievement of the Week), Ranking da semana (Leaderboard of the Week) ou outros eventos que acontecem no nosso servidor do Discord.
"},{"location":"How-to-contribute-if-you-are-not-a-developer-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-06-10 10:56] lilbud:
Uploaded new gif showing reporting broken achievements[2018-06-10 10:43] lilbud:
Updated Discord Link[2018-04-02 19:02] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-28 20:11] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-25 12:00] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-25 11:45] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 22:15] meleu:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 21:02] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 21:02] KingDice001:
Updated How to contribute if you are not a developer pt_BR (markdown)[2018-03-23 20:53] KingDice001:
Created How to contribute if you are not a developer-pt_BR (markdown)To be done...
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/","title":"HowTo Scrape Achievement List to CSV for Rescore and Revision Updates","text":"This is a fast and easy method to scrape all Achievements, Descriptions or other useful information from RetroAchievements into a CSV format which can be posted in Forums and Discord for sharing Rescore and Revision Update plans.
(!) you can change the scraping content manually in the appearing box below 'propertyName1'.
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/#for-rescoring-updates-scrape-achievements-only","title":"For Rescoring Updates - scrape Achievements only","text":"div.achievemententry div.achievementdata a
.achievementdata a
div.achievemententry div.achievementdata
.achievementdata
(!) Scraped Achievements with Descriptions can be seperated by splitting the columns with '\\n'.
"},{"location":"HowTo-Scrape-Achievement-List-to-CSV-for-Rescore-and-Revision-Updates/#upload-and-split-into-columns-in-google-sheets","title":"Upload and split into columns in Google Sheets","text":"A
(must be marked) and choose 'Data' then 'Split text to columns', 'custom' and insert \\n
.Please check Achievement-Set-Revisions for more information regards Recore and Revision Updates.
"},{"location":"Leaderboard-bug-list-and-improvement-ideas/","title":"Leaderboard bug list and improvement ideas","text":""},{"location":"Leaderboard-bug-list-and-improvement-ideas/#bugs","title":"Bugs","text":"Idea for on screen notification and an expansion on the idea: \"Add an option to display popup text that's not for any leaderboard. Allow for control of how long the popup will stay\"
The point is to help the player track their progress on certain types of achievements.
Using something similar to the leaderboard, when selected by the developer, allow hits to be displayed on screen. It could perhaps show hits, or the sum of hits from multiple conditions.
Also, maybe with a similar text info as rich presence, where on screen it would display 4/9 Goomba's stomped. or 20/100 seconds survived or 9 items collected, etc.
Beyond that, achievements with this type OSD info built in, they could either be turned on and off individually from the overlay. )Where they would always be off if the achievement was complete.) OR have a manual start and stop similar to leaderboards.
This could be used to display failed attempts. For example a ResetIf could be marked as a failstate, when the reset happens OSD would show Escaping the cave without being seen: failed.
"},{"location":"Leaderboards-es/","title":"Tablas de Clasificaci\u00f3n","text":"Actualmente las Tablas de Clasificaci\u00f3n pueden ser editadas por desarrolladores desde el sitio web. Es una interfaz bastante tosca y un trabajo algo complicado hacer que una tabla funcione de manera correcta. As\u00ed que en este documento vamos a intentar a entender como funciona.
"},{"location":"Leaderboards-es/#visiones-generales","title":"Visiones Generales","text":"Asi es como se ve una lista de Tablas de Clasificaci\u00f3n de un juego en el sitio web:
En el centro puedes llegar a ver cada Tabla que a sido creada, y en la columna de la derecha puedes llegar a ver las Notas de C\u00f3digo del Juego. Las Notas est\u00e1n all\u00ed para ayudar en algunas de las condiciones que se encuentran aqu\u00ed abajo.
Aqu\u00ed hay una breve explicaci\u00f3n de cada campo que se encuentra en una Tabla de Clasificacion:
Puntuaci\u00f3n
, Tiempo (Frames)
, Tiempo (Milisegundos)
o Valor
. Se utiliza para distinguir que tipo de tabla es (vamos a ver mas sobre esto mas abajo).Nota: Una tabla valida TIENE que tener todas estas cuatro condiciones.
Esos \u00faltimos 4 campos son realmente importantes y se tiene que tomar MUCHO cuidado de acuerdo a los datos que vas a introducir en ellas. Es por eso que requieren una explicaci\u00f3n a continuaci\u00f3n:
La condici\u00f3n STA o Start son una serie de valores, como un logro, que tienen que llegar a ser verdad en orden para que la tabla empieza a buscar una entrada para la tabla. Una vez que STA es verdadero, el juego va a activar las otras tres constantemente.
Si la condici\u00f3n Cancel (CAN) es verdadera, entonces esta va a cancelar la tabla y no se va a subir la entrada a la misma.
Si la condici\u00f3n Submit (SUB) es verdadera, entonces la puntuaci\u00f3n entrara en las tablas. NOTA: Cancel tiene mas prioridad que Submit. Si las dos se convierten verdaderas en el mismo frame, la puntuaci\u00f3n no sera ingresada.
Finalmente, Value (VAL) es un caso especial, y va a ser tomado de la memoria utilizando la formula que se ingreso en la entrada de Value. Esta es la puntuaci\u00f3n que se muestra cuando la Tabla esta activa, y el valor que es ingresado en las tablas si SUB es verdadero.
NOTA: Una vez que una tabla activa es cancelada o ingresada, esta no puede ser re-activada asta que la condici\u00f3n Start se convierta en falsa, y verdadera de nuevo. Esto previene a la tabla de ser re-activada inmediatamente que se ingreso un valor o se cancelo.
"},{"location":"Leaderboards-es/#formato-de-direcciones","title":"Formato de Direcciones","text":"Las direcciones de memoria para STA/CAN/SUB/VAL tienen el siguiente formato:
localizaci\u00f3n/tama\u00f1o prefijo (las letras pueden ser en min\u00fasculas) ejemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Leaderboards-es/#ejemplo","title":"Ejemplo","text":"La mejor manera de empezar es hecharle un vistazo a una de las tablas ya existentes https://retroachievements.org/leaderboardList.php y abrirla para ver como funciona. Vamos a utilizar la tabla de Green Hill Act 1 (Sonic the Hedgehog) para este ejemplo. Entonces veamos como funciona:
El Titulo/Descripci\u00f3n son algo obios.
El Type es \"Time (Frames)\". En Sonic cada 60 frames es un 1 segundo, entonces vamos a monitoriar los segundo utilizando frames.
La caja de Lower Is Better esta marcada, entonces aquel que consiga el tiempo mas corto sera el #1.
Ahora vamos a desglosar las partes mas importantes.
"},{"location":"Leaderboards-es/#condiciones-de-start","title":"Condiciones de Start","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: Si la direcci\u00f3n de 16-bit 0xfe10 en la RAM es equivalente a 0000 en hex,_
: Y,0xhf601=h0c
: Si la direcci\u00f3n de 8-bit 0xf601 en la RAM es equivalente a 0c en hex,_
: Y,d0xhf601!=h0c
: Si la misma direcci\u00f3n anterior (0xf601) NO es equivalente a 0c en hex,_
: Y,0xfff0=0
Si la direcci\u00f3n de 16-bit 0xfff0 en la RAM es equivalente a 0.Esto puede parecer desalentador, porque no sabes que significan esta direcciones. Es por eso que las Notas de C\u00f3digo en la columna de la derecha son bastante \u00fatiles! Tu puedes llegar a ver como estas direcciones son mostradas en memoria. En nuestro ejemplo tenemos:
0xfe10
es el nivel, y se espera que sea 0
(el primer nivel).0xf601
es una direccion en memoria de 8-bit, y utilizamos el prefijo 0xh
en vez de 0x
. 0xf601
es el modo de la pantalla. La segunda y terceras partes de las condiciones para empezar estan diciendo \"el modo actual tiene que ser ingame (0c
), y el modo en el frame anterior NO tiene que ser ingame\". Nota: ese prefijo d
en la direcci\u00f3n representa delta, o \"el valor en el frame anterior\". Sum\u00e1ndole a esto: ejecuta STA si ACABAMOS de llegar a un nivel, (para empezar a checar el tiempo).0xfff0
sea equivalente a 0
, ya que esta direcci\u00f3n se utiliza para demo mode, y no queremos que la tabla se active cuando esta el modo demo activado!Tip: el error mas com\u00fan cuando creamos tablas de clasificaci\u00f3n es olvidarnos de la h
cuando tratamos de hacer referencia a un valor en memoria de 8-bit.
Pro-tip: STA, CAN, y SUB soportan toda la logica que se encuentra disponible en el editor de logros. La manera mas facil es asegurarte que escribiste todo correctamente es crear logros locales que capturen estos eventos, y entonces extraer los valores ingresados en el archivo \"XXX-User.txt\" asociado al juego en el cual te encuentras trabajando.
"},{"location":"Leaderboards-es/#condiciones-para-cancelar","title":"Condiciones para Cancelar","text":"CAN: 0xhfe13<d0xhfe13
La condici\u00f3n de cancelaci\u00f3n checa si el contador de VIDAS alguna vez se decrementa. Literalmente dice \"Cancela si el valor ACTUAL en 0xfe13 es menor al valor ANTERIOR en 0xfe13\". Queremos hacer esto porque puedes llegar al ultimo checkpoint, morir y resetear tu tiempo a 0:00. Y no queremos que se pueda hacer esto, ya que no es la manera correcta de completar el nivel. As\u00ed que si el jugador muere, se va a resetear el progreso de la tabla. Finalmente, si conectas dos condiciones de cancelaci\u00f3n con una s
, la tabla se va a cancelar si cualquiera de las condiciones es verdadera.
SUB: 0xf7cc!=0_d0xf7cc=0
La secci\u00f3n de submit checa si en el frame actual se encuentra la bandera de 'endlevel' como verdadera (o !=0
, 'no es un cero'), y el frame anterior (delta) lo tiene como falso (o =0
, 'cero'). Esto sugiere que el jugador a llegado al final del nivel.
Tip: puede llegar a ser \u00fatil observar como trabajan estos valores en memoria, y conocer que tipo de valor se utilizan en diferente circunstancias.
"},{"location":"Leaderboards-es/#interpretador-de-valores","title":"Interpretador de Valores","text":"Tambi\u00e9n mira: C\u00f3digo Binario Formateado en Decimal
VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Finalmente, valor. Una vez que el jugador a llegado a la condici\u00f3n de inicio, se mostrara una notificaci\u00f3n en pantalla, mostrando el progreso del jugador en tiempo real. Si es una una tabla sobre tiempo, va a ver un reloj, y si es una puntuaci\u00f3n se mostrara simplemente el valor. Si ellos llegan a cumplir la condici\u00f3n de cancelaci\u00f3n, se mostrara un mensaje diciendo que fallaron, y la notificaci\u00f3n sera removida. Si ellos cumplen la condici\u00f3n de submit exitosamente, el valor actual se va a tomar y se va a subir una entrada, aparecer\u00e1 una notificaci\u00f3n informando al jugador sobre su posici\u00f3n en las tablas.
La condiciones en value son especiales en cierto aspectos. Es evaluada constantemente y se muestra en pantalla en tiempo real cuando una tabla esta activada. No trabaja como otras condiciones, interpreta las direcciones de la siguiente manera:
direcci\u00f3n*modificador
(direcci\u00f3n veces modificador)
y usa al _
operador guion bajo como 'mas'. El asterisco *
significa 'multiplicar', entonces en el valor
0xhfe24*1_0xhfe25*60_0xhfe22*3600
representa:
8-bit 0xfe24 1 vez, MAS 8-bit 0xfe25 60 veces, MAS 8-bit 0xfe22 3600 veces
La raz\u00f3n de esto es que los valores de cada una de estas direcciones significan frames, segundos, y minutos respectivamente. Cuando agregamos estos valor juntos, obtenemos un total de frames que ingresamos a la base de datos.
Recuerdas que el campo de 'Formato' pod\u00eda ya ser Puntuaci\u00f3n, Tiempo (Frames), Tiempo (Milisegundos) o Valor? Tiempo (Frames) es el mas com\u00fan de todos, y representa 'frames'. Time (Milisegundos) espera un valor que pueda convertir en milisegundos (Super Mario Kart utiliza esto). Sin embargo para convertir un valor en frames a un formato que sea humanamente entendible tenemos que dividir el valor por 60 para conseguir una interpretaci\u00f3n certera de los segundos, y un valor en milisegundos deber\u00eda estar dividido por 100 para conseguir el numero de milisegundos. Esto se utiliza ya sea en el sitio web y en los programas para mostrar el valor apropiadamente, y es importante que se distinga ya que podemos estar seguros que estamos consiguiendo el valor mas acertado del emulador, utilizando el formato que sea necesario para capturar el tiempo.
Tambi\u00e9n hay un s\u00edmbolo que solamente funciona en este campo. Conecta dos valores condicionales con un $
y esto va a provocar que solamente se utilice el valor con tenga el valor mas alto.
NOTA: Tiempo (Milisegundos) son actualmente centenas de segundo, no mil\u00e9simas de segundo. por ejemplo: un valor de 6234 deber\u00eda de ser 62.34 segundos, no 6.234 segundos.
Tip: el modificador usa valores decimales, entonces si por ejemplo quieres divir entre dos, puedes multiplicar por 0.5: 0xhfe24*0.5
Desafortunadamente hay MUCHAS maneras de llegar a hacer este proceso de la manera equivocada, entonces si llegas a tener alg\u00fan problema si\u00e9ntete libre de pedir ayuda en nuestro Servidor de Discord.
Si quieres practicar, es bastante recomendable que crees tu tabla e intentes algo en un juego nuevo, en vez de utilizar una tabla ya existente.
Por favor ten en cuenta que estos archivos son arrastrados directamente a la partida de alguien cuando abra el juego, y un valor de memoria mal ingresado o un comando puede causar que el emulador se crashee, as\u00ed que por favor testea el c\u00f3digo de tu tabla!
"},{"location":"Leaderboards-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 13:35] meleu:
fix link[2019-05-17 10:24] eldexterr:
Updated Leaderboards es (markdown)[2019-05-16 11:31] eldexterr:
Updated Leaderboards es (markdown)[2019-05-16 10:56] eldexterr:
Updated Leaderboards es (markdown)[2019-05-15 10:21] eldexterr:
Updated Leaderboards (markdown)Link para o texto em ingl\u00eas: Leaderboards
Atualmente Leaderboards podem ser editadas por desenvolvedores no site. \u00c9 uma interface bastante confusa e um trabalho dif\u00edcil para fazer com que uma leaderboard funcione corretamente. \u00c9 realmente necess\u00e1rio cuidado e aten\u00e7\u00e3o para obter uma boa leaderboard, ent\u00e3o, neste documento n\u00f3s vamos tentar entender como isto funciona.
"},{"location":"Leaderboards-pt_BR/#visao-geral","title":"Vis\u00e3o Geral","text":"Isto \u00e9 como uma lista de Leaderboard de um jogo aparece no site
No centro voc\u00ea pode ver todas as Leaderboard feitas, e na coluna direita voc\u00ea pode ver as Code Notes (Notas de C\u00f3digo). As Code Notes est\u00e3o aqui para ajudar com algumas condi\u00e7\u00f5es que veremos abaixo.
Aqui est\u00e1 uma breve explica\u00e7\u00e3o de cada campo de uma Leaderboard:
Score
, Time (Frames)
, Time (Milliseconds)
ou Value
. \u00c9 usado para distinguir que tipo de leaderboard \u00e9 (j\u00e1 vamos falar disso abaixo)Nota: Uma leaderboard v\u00e1lida NECESSITA ter todas as quatro condi\u00e7\u00f5es.
Esses 4 \u00faltimos campos s\u00e3o realmente importantes e MUITOS cuidados devem ser tomados na entrada de qualquer caracter dentro dessas linhas. \u00c9 por isso que eles merecem uma explica\u00e7\u00e3o mais na frente:
A condi\u00e7\u00e3o STA ou Start \u00e9 uma s\u00e9rie de condi\u00e7\u00f5es, como uma conquista, que devem ser verdadeiras para come\u00e7ar a a Leaderboard. Uma vez que o STA for verdadeiro, o jogo ir\u00e1 come\u00e7ar a monitorar as condi\u00e7\u00f5es CAN, SUB e VAL.
Se a condi\u00e7\u00e3o Cancel (CAN) for verdadeira, ela ir\u00e1 cancelar todo o progresso relativo ao envio da leaderboard. Se no entanto a condi\u00e7\u00e3o Submit (SUB) for verdadeira, ent\u00e3o, o placar gerado na leaderboard ser\u00e1 enviado
Finalmente, o Valor (VAL) \u00e9 um caso especial, e ir\u00e1 ser obtido da mem\u00f3ria usando a f\u00f3rmula iniciada na caixa de mem\u00f3ria (memory box)
"},{"location":"Leaderboards-pt_BR/#formato-do-endereco","title":"Formato do Endere\u00e7o","text":"O Endere\u00e7o de mem\u00f3ria para STA/CAN/SUB/VAL tem o segunte formato:
localiza\u00e7\u00e3o/tamanho prefixo (pode ser min\u00fasculo) exemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Leaderboards-pt_BR/#exemplo","title":"Exemplo","text":"O melhor lugar para iniciar \u00e9 olhando uma das leaderboards existentes http://retroachievements.org/leaderboardList.php e desmontar para ver como funciona. N\u00f3s iremos usar o Green Hill Act 1 (Sonic the Hedgehog) Leaderboard para este prop\u00f3sito. Vamos ver como fica:
Os campos Title e Description s\u00e3o um pouco \u00f3bvios.
O Type \u00e9 \"Time (Frame)\". Em Sonic cada 60 frames equivale a 1 segundo, ent\u00e3o vamos monitorar o tempo usando os frames.
A checkbox Lower Is Better est\u00e1 marcada, entao aquele que fizer o tempo mais curto ser\u00e1 o #1.
Agora nos vamos explicar as partes mais importantes.
"},{"location":"Leaderboards-pt_BR/#condicoes-de-inicio","title":"Condi\u00e7\u00f5es de In\u00edcio","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: Se o endere\u00e7o da RAM 0xfe10 \u00e9 equivalente hex 0000,_
: E,0xhf601=h0c
: Se o endere\u00e7o da RAM 8-bits 0xf601 \u00e9 equivalente para hex 0c,_
: E,d0xhf601!=h0c
: Se o endere\u00e7o da RAM 8-bits anterior 0xf601 N\u00c3O \u00e9 equivalente ao 0c,_
: E,0xfff0=0
Se o endere\u00e7o da RAM 0xfff0 \u00e9 equivalente ao 0.Esto parece ser intimidador, porque nos n\u00e3o sabemos o que esse endere\u00e7o diz. \u00c9 por isso que o Code Note na coluna direita \u00e9 de bastante ajuda! Voc\u00ea pode ser como esses endere\u00e7os est\u00e3o classificados na mem\u00f3ria. Em nosso exemplo nos temos:
0xfe10
\u00e9 o nivel, e espera-se que seja 0
(o primeiro nivel).0xf601
\u00e9 um endere\u00e7o de mem\u00f3ria de 8 bits, e nos usamos o prefixo 0xh
em vez de 0x
para significar isso. 0xf601
\u00e9 o modo de tela. A segunda e a terceira parte desta Condi\u00e7\u00e3o de In\u00edcio est\u00e1 dizendo \"o modo atual deve ser ingame (0c
), e o modo no frame anterior N\u00c3O deve ser ingame\". Nota: O prefixo \"d\" no endere\u00e7o representa delta, ou \"o valor do frame anterior\". Resumindo: ative o leaderboard imediatamente ap\u00f3s iniciar uma fase (a partir da\u00ed vamos come\u00e7ar a medir o tempo).0xfff0
seja aquivalente a 0
, porque 0xfff0
\u00e9 o modo de demonstra\u00e7\u00e3o e n\u00f3s n\u00e3o queremos enviar pontua\u00e7\u00f5es para a leaderboard quando a demo estiver ativa!CAN: 0xhfe13<d0xhfe13
0xfe13
\u00e9 o numero de vidas.A se\u00e7\u00e3o de cancelamento checa se o contador de VIDAS do jogador se tormar menor. Literalmente, isto diz \"Cancela se o ATUAL valor em 0xfe13 \u00e9 menor que o valor ANTERIOR em 0xfe13. N\u00f3s queremos que fa\u00e7a isso porque voce pode alcan\u00e7ar o checkpoint final e correr fora do tempo, resetando seu contador para 0:00. Nos n\u00e3o queremos permitir isso, porque isto n\u00e3o \u00e9 a forma correta de completar o nivel. Ent\u00e3o, se o jogardor morrer, n\u00f3s resetamos o progresso do leaderboard dele.
"},{"location":"Leaderboards-pt_BR/#condicoes-de-envio","title":"Condi\u00e7\u00f5es de envio","text":"SUB: 0xf7cc!=0_d0xf7cc=0
0xf7cc
isto \u00e9 a bandeira de final de fase, n\u00e3o-interativo.A se\u00e7\u00e3o de envio checa se o frame atual tem o marcador de 'endlevel' (fim de fase) for para verdadeiro (ou !=0
, 'naozero'), e o frame anterior (delta) tem isto para ser falso (ou =0
, 'zero'). Isto sugere que o jogador chegou ao fim do nivel, e provou ser um benchmark bastante robusto
Dica: isto pode ser \u00fatil para observar estes valores na mem\u00f3ria para ver como eles executam, e que tipo de valores eles terminam em diferentes circunst\u00e2ncias.
"},{"location":"Leaderboards-pt_BR/#interpretador-de-valores","title":"Interpretador de Valores","text":"VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Finalmente, valores. Uma vez que o jogador chegou ao inicio da condi\u00e7\u00e3o, eles ir\u00e3o ser mostrados em uma caixa quue permanece na tela, aparecendo o progresso deles at\u00e9 agora. Se \u00e9 uma leaderboard de tempo, ser\u00e1 um rel\u00f3gio, e se for uma pontua\u00e7\u00e3o, ser\u00e1 apenas o valor. Se eles cumprirem a condi\u00e7\u00e3o de cancelamento, eles ser\u00e3o informados de que eles falharam, e o pop-up ser\u00e1 removido. Se caso o jogador chegar com sucesso \u00e0 condi\u00e7\u00e3o de envio, o valor atual ser\u00e1 pego e submetido como pontua\u00e7\u00e3o. o pop-up ingame ir\u00e1 informar o jogador o t\u00e3o longe da leaderboard, e a posi\u00e7\u00e3o deles na leaderboard.
A condi\u00e7\u00e3o de valor \u00e9 especial em poucas maneiras. Ele \u00e9 avaliado constantemente e exibido na tela o tempo todo quando a leaderboard est\u00e1 ativa. Isto n\u00e3o funciona como as outras condi\u00e7\u00f5es. Isto espera endere\u00e7os da seguinte maneira:
endere\u00e7o*modificador
(endere\u00e7o tempo modificador)
e usa o _
sublinhado como um 'plus'. O *
asterisco significa 'm\u00faltiplo', ent\u00e3o no valor
0xhfe24*1_0xhfe25*60_0xhfe22*3600
representa:
8-bit 0xfe24
vezes 1, MAIS 8-bit 0xfe25
vezes 60, MAIS 8-bit 0xfe22
vezes 3600
A raz\u00e3o para isso \u00e9 que os valores em cada um desses endere\u00e7os significam frames, segundos e minutos respectivamentes. Quando nos adicionamos esses valores juntos, n\u00f3s conseguimos um grande total em frames que vamos enviar para o \"Banco de dados\".
Lembre que o campo 'Formato' pode ser Pontua\u00e7\u00e3o, Tempo (Frames), Tempo (Milisegundos) ou Valor. Tempo(Frames) \u00e9 o mais comum, e representa 'frames'. Tempo (Milisegundos) espera um valor que nos podemos converter diretamente para milisegundos. (Super Mario Kart usa isso). No entanto, para converter um valor em frame dentro de um formato \"para ser lidos por humanos\", nos devemos dividiu o valor por 60 para uma representa\u00e7\u00e3o de segundos correta, e um valor em milisegundos deve ser dividido por 100 para conseguir o numero de segundos. Isso \u00e9 usado no site e no aplicativo para exibir o valor apropriadamente, e \u00e9 importante para distinguir, para que possamos ter certeza de obter o valor mais preciso do emulador, usando qualquer formato que eles usem para registrar o tempo.
"},{"location":"Leaderboards-pt_BR/#ajuda-adicional","title":"Ajuda Adicional","text":"Infelizmente h\u00e1 MUITAS maneiras de este processo dar errado, ent\u00e3o, se voce tiver algum problema, sinta-se livre pra pedir ajuda em nosso servidor do Discord.
Se voc\u00ea quer praticar, \u00e9 altamente recomendado criar sua pr\u00f3pria leaderboard e tentar alguma coisa em um novo jogo, melhor que usar uma leaderboard existente
Por favor, lembre-se que esses arquivos s\u00e3o puxados diretamente para o jogo de algu\u00e9m se eles decidirem jog\u00e1-lo, e uma m\u00e1 forma\u00e7\u00e3o de endere\u00e7o de mem\u00f3ria ou linha pode causar um crash no emulador, ent\u00e3o por favor, teste seu c\u00f3digo da leaderboard!
"},{"location":"Leaderboards-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-28 11:35] meleu:
Updated Leaderboards pt_BR (markdown)[2018-03-28 03:15] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:56] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:55] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:49] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:44] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:38] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:37] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:36] KingDice001:
Updated Leaderboards pt_BR (markdown)[2018-03-28 02:35] KingDice001:
Updated Leaderboards pt_BR (markdown)This is how a game's Leaderboard List looks like on the website:
In the center you can see every already made Leaderboard, and in the right column you can see the Code Notes for the game. The Code Notes are here to help with some conditions we'll see below.
And now you can also create and edit Leaderboards through the GUI just like achievements by selecting Leaderboards from the Assets List:
Here's a brief explanation of each field of a single Leaderboard:
Note: A valid leaderboard MUST have all four of these conditions, even if they're set to always be true (1=1
) or always be false (0=1
).
Those last 4 fields are really important and LOTS of care must be taken over the entry of any characters into these strings. That's why they deserve a further explanation:
The Start (STA) condition is a series of values, like an achievement, that must be true in order to start looking for a leaderboard submission.
If a Cancel (CAN) condition is true, then it will cancel the leaderboard and no score will be submitted. NOTE: Cancel is given priority over Start. If both become true in the same frame, the leaderboard will not start.
If the Submit (SUB) condition is true, then the leaderboard score will be submitted. NOTE: Cancel is given priority over Submit. If both become true in the same frame, the score will not be submitted.
Finally, the Value (VAL) is a special case, and will be taken from memory using the formula stated in the memory box. This is the score that gets displayed while the leaderboard is active, and the value that's submitted if SUB is true.
Memory addresses for STA/CAN/SUB/VAL have the format defined here.
NOTE: Once an active leaderboard is cancelled or submitted, it cannot be reactivated until the Start condition becomes false, then true again. This prevents the leaderboard from immediately reactivating after submission/cancel.
"},{"location":"Leaderboards/#example","title":"Example","text":"The best place to start is to look at existing leaderboards and break it down to see how it works. We're going to use the Green Hill Act 1 (Sonic the Hedgehog) Leaderboard for this purpose. Then let's see how it looks:
The Title/Description fields are quite obvious.
The Type is \"Time (Frames)\". The value we're tracking updates once a frame, and the Genesis runs at 60 frames per second. (see not below for systems that run at other speeds)
The Lower Is Better flag is checked, then the one who makes the shortest time will be the #1.
Now we're going to break down the most important parts.
"},{"location":"Leaderboards/#start-conditions","title":"Start Conditions","text":"STA: 0xfe10=h0000_0xhf601=h0c_d0xhf601!=h0c_0xfff0=0
0xfe10=h0000
: If 16-bit RAM address 0xfe10 is equivalent to hex 0000,_
: AND,0xhf601=h0c
: If 8-bit RAM address 0xf601 is equivalent to hex 0c,_
: AND,d0xhf601!=h0c
: If the previous 8-bit RAM address 0xf601 is NOT equivalent to hex 0c,_
: AND,0xfff0=0
If 16-bit RAM address 0xfff0 is equivalent to 0.This might seem daunting, because we don't know what these addresses mean. That's why the Code Notes in the right column are pretty handy! You can see how these addresses are labeled in memory. In our example we have:
0xfe10
is the level, and is expected to be 0
(the first level).0xf601
is an 8-bit memory address, and we use the prefix 0xh
instead of 0x
to signify this. The 0xf601
is the screen mode. The second and third parts of the start statement are saying \"the current mode should be ingame (0c
), and the mode on the previous frame should NOT be ingame\". Note: that d
prefix on the address represents delta, or \"the previous frame's value\". Summing up: trigger this if we've JUST arrived in a level (the start of the level, when we want to start testing their time).0xfff0
to be equivalent to 0
, because this address is used for demo mode, and we don't want to award a leaderboard entry when the demo is active!Tip: the most common mistake when creating leaderboards through the site editor is forgetting the h
when trying to reference an 8-bit memory address.
Note: You can use HitCounts in the Start/Submit/Cancel triggers, but you are responsible for resetting them. These triggers are evaluated every frame, and the state of the leaderboard is dependent on which ones are true. As such, the HitCount will increment even when the leaderboard is not active unless you have an explicit ResetIf condition.
"},{"location":"Leaderboards/#cancel-conditions","title":"Cancel Conditions","text":"CAN: 0xhfe13<d0xhfe13
The cancel section checks if the player's LIVES counter ever becomes lower. Literally, it says \"Cancel if the CURRENT value at 0xfe13 is less than the PREVIOUS value at 0xfe13\". We want to do this because you could reach the final checkpoint and run out of time, resetting your timer to 0:00. We don't want to allow this, because it's not the correct way of completing the level. So if the player dies, we reset their leaderboard progress. Finally, if you connect two cancel conditions with s
, the leaderboard will cancel when either one of them are true.
SUB: 0xf7cc!=0_d0xf7cc=0
The submit section checks if the current frame has the 'endlevel' flag set to true (or !=0
, 'nonzero'), and the previous frame (delta) has it set to false (or =0
, 'zero'). This suggests that the player has reached the end of the level, and has proven to be a fairly sturdy benchmark.
Tip: it can be useful to watch these values in memory to see how they perform, and what sort of values they end up at in different circumstances.
"},{"location":"Leaderboards/#value","title":"Value","text":"Finally, value. Once the player has reached the start condition, they will be shown a popup which remains on-screen, showing their progress so far. If it's a time leaderboard, it will be a clock, and if it's a score, it will just be the value. If they fulfill the cancel condition, they will be told that they have failed, and the popup will be removed. If they successfully reach the submit condition, the current value will be taken and submitted as their score, and on successful submission, an in game popup will inform the player of the leaderboard so far, and their position in the leaderboard.
For more information on the value format, see Value Definition.
NOTE: The value calculation is performed using 32-bit signed integers. As such, the maximum value is 2147483647 and the minimum value is -2147483648. Values above the maximum will wrap around and register as very negative numbers.
"},{"location":"Leaderboards/#value-format","title":"Value Format","text":"'Format' can be any of the available formats, but the editor currently only provides Score, Time (Frames), Time (Milliseconds) and Value. Time (Frames) is the most common one, and represents a time derived from a value that increments every frame. It does this by multiplying by 100 (to convert to hundredths of a second) and dividing by 60 (the number of frames per second).
NOTE: If you're using a system that doesn't run at 60Hz, you have to use \"Time (millisecs)\" and multiply by some value to do the conversion yourself (50Hz = *2
[100/50], 60Hz = *1.666666
[100/60], 75Hz =*1.333333
[100/75]).
NOTE: Time (Milliseconds) is actually hundredths of a second, not thousandths of a second. i.e. a Value of 6234 would be 62.34 seconds, not 6.234 seconds.
"},{"location":"Leaderboards/#design-tips","title":"Design Tips","text":"Leaderboards can sometimes get pretty spammy and take up a lot of screen space when starting or depending on how many are active at once. It is generally good practice to try and eliminate this as much as possible when you can. You can do this by taking advantage of the fact that you can start and submit a leaderboard on the same frame by setting the start condition to what you would normally use as the submit and then setting the submit condition so something that is always true like 1=1.
If a game tracks a score or time that you are using to directly call for your value then consider starting and submitting the leaderboard on the same frame so that only one popup is called (for the submission) and the screen won't have extra clutter. There are still cases where it can be useful for players to have the values up on display if they are hidden in menus so use your best judgement.
In games where levels are short and retries are quick you really don't want to have it start/cancel/submit repeatedly after each start/retry when you can help it as the popups can start stacking together and clutter the screen well past the actual attempts are over. These are a prime candidate for starting and submitting on the same frame when possible.
"},{"location":"Leaderboards/#score-wrapping","title":"Score Wrapping","text":"In games where the high score wraps around back to 0 it is actually possible to account for this and keep your leaderboard tracking the score! You can do this by using Alt Groups combined with MeasuredIf to track which loop you are on and will use one Alt per loop.
As an example lets take a look at Balloon Fight on NES where the score wraps around after 999,990. Here is the original leaderboard:
And an updated version which will continue tracking after each loop: Core needs to have a Measured statement in it so just put something that is never true and also a ResetIf for resetting the MeasuredIf statements in the Alt Groups when needed (in this case on the title screen)
The first Alt will contain the normal logic for high score
The next Alt will contain a MeasuredIf that is true after the first loop which will allow this value to be used. You will also add an extra condition to AddSource in the total score from the first loop which will be 1,000,000 in this case. This value will now be used since MeasuredIf is true and the value is the highest of the Alt Groups
For the next Alt we increment the number of hits used in the loop detection as well as the value we multiply the total score added by for each loop
"},{"location":"Leaderboards/#further-help","title":"Further Help","text":"There are unfortunately MANY ways to get this process wrong, so if you are having any trouble feel free to ask for help in our Discord server.
If you want to practice, it's highly recommended to create your own leaderboard and attempting something on a new game, rather than using an existing leaderboard. Just remember to clean up any test leaderboards that you push to the site afterwards.
Please remember that these files are pulled directly into someone's game if they decide to play it, and a badly formed memory address or string could cause their emulator to crash, so please test your leaderboard code!
"},{"location":"Leaderboards/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-06 11:08] televandalist:
Added ToC[2022-05-30 18:49] Searo:
Cleanup[2022-05-30 18:45] Searo:
Typos[2022-05-30 18:35] Searo:
Misc updates[2022-02-04 17:36] Jamiras:
extract memory sizes[2022-02-04 16:47] Jamiras:
extract Value Definition to separate page[2021-10-23 12:28] Jamiras:
Updated Leaderboards (markdown)[2021-06-08 10:07] Jamiras:
Updated Leaderboards (markdown)[2021-04-26 13:35] meleu:
fix link[2020-11-13 16:36] Jamiras:
Updated Leaderboards (markdown)Measured
marks a condition for tracking progress. It adds a progress bar to the achievement overlay to inform the user how close they are to completing an achievement. As the user expects an achievement to trigger when the progress bar is full, it is expected that any other conditions in the achievement should be true most of the time.
Measured
should not be used to track things that are clearly visible to the user. If you have an achievement for getting 500,000 points, you don't need to Measure it if the score is displayed on the screen. Similarly, there's no need to use Measured
in an achievement for having 100 of something in the inventory if the player can see a count of how many they have just by opening the inventory.
If placed on a condition with a required HitCount, the target value is the required HitCount and the current value is the current HitCount. AddHits
can be used.
If placed on a condition without a HitCount, the target value is the constant on the right side of the condition and the current value is the evaluation of the left side of the condition. AddSource
and SubSource
can be used.
If multiple conditions are marked as Measured
and have the same target value, the current value will be the maximum of all the Measured
conditions.
If multiple conditions are marked as Measured
and have different target values, a Parse Error -22 will occur.
Note that progress for Measured
values is reported at the time of examination and may actually go down depending on the current value (Hit Count could be reset, or comparison value decreases).
To limit the scope of a Measured
condition, you can add a MeasuredIf
condition. A MeasuredIf
condition must be true for the Measured
value to be non-zero (and for the achievement to trigger). You can use MeasuredIf
to create achievements that require playing as a certain character, or just to prevent bogus data from showing up if the player is in the wrong part of the game. If any MeasuredIf
condition in a group is false, the Measured
value for the group is automatically 0.
Since PauseIf
has precedence over Measured
, the Measured
value will be captured when a group becomes paused, and the captured value will be returned until the group is unpaused and Measured
can be evaluated again. If another Measured
exists in a non-paused group, its value will be returned even if it is lower than the captured value.
Last 10 changes on this page:
[2022-09-10 11:56] Jamiras:
Updated Measured Flag (markdown)[2022-09-10 11:56] Jamiras:
Updated Measured Flag (markdown)[2022-03-19 07:21] Jamiras:
add note about behavior when Paused[2021-05-01 07:28] meleu:
fix link to AddHits page[2020-05-17 14:14] Jamiras:
add MeasuredIf[2019-11-14 19:42] Jamiras:
Created Measured Flag (markdown)Aqui un vistazo del Inspector de Memoria y sus caracteristicas. Esta herramienta se puede encontrar en la pesta\u00f1a de \"RetroAchievements\" en cualquier emulador integrado con RA.
Tambien mira: Tips en la Busqueda de Memoria.
"},{"location":"Memory-Inspector-Overview-es/#ventana-del-inspector-de-memoria","title":"Ventana del Inspector de Memoria","text":""},{"location":"Memory-Inspector-Overview-es/#1-reset-to-resetear-en","title":"1. Reset to (Resetear en)","text":"Haz click en uno de los botones para empezar una nueva pruba. Por lo general pruebas en 8-bit es lo mas apropiado.
"},{"location":"Memory-Inspector-Overview-es/#2-filter-values-filtrar-valores","title":"2. Filter Values (Filtrar Valores)","text":"Usualmente vas a filtrar ya sea en =
(igual a) el ultimo valor conseguido o !=
(diferente que) el ultimo valor conseguido. Si conoces el valor exacto que deseas buscar, puedes utilizar Given Value
(Valor entregado), o si estas convencido que el valor tuvo que haber incrementado, puedes intentar >
(mayor que) o <
(menor que).
Cada vez que presiones este boton, estas filtrando los valores que no concuerdan en memoria entre el ultimo testeo y el de ahora.
"},{"location":"Memory-Inspector-Overview-es/#4-ventana-de-resultados","title":"4. Ventana de Resultados","text":"Despues de haber filtrado los resultados miraras en la ventana exactamente que es lo que paso, cuantos valores has conseguido y cuantos estan fuera. Algunos puntos a tener en cuenta:
Highlights
, si asi lo prefieres.<<
) o hacia adelante (>>
) por medio de las busquedas anteriores. Ten en cuenta que si empiezas una nueva busqueda (una New 8-bit Test
), tu historial va a ser borrado.Cualquier valor que se encuentre aqui va a ser observado en el Visor de Memoria y se mostraran sus notas de codigo a la derecha. La direccion tiene que ser 0x
(Un cero, y despues una letra x), seguido de digitos hexadecimales.
Cualquier variable que se este observando y las variables que tiene alrededor se muestran en esta ventana. Puedes ver mas informacion a continuacion, en la seccion de Leyendo informacion en el Visor de Memoria.
"},{"location":"Memory-Inspector-Overview-es/#7-notas-de-codigo","title":"7. Notas de Codigo","text":"Una vez que hubieras encontrado un valor en memoria del que quieras hacer una nota, serciorate que el valor este introducido en la caja que dice 'Watching' (Observando). Ahora puedes escribir una peque\u00f1a descripcion en la caja de texto, y hacer click en Save Note
(Salvar Nota). Esto va a mandar el valor en memoria y su descripcion a la base de datos, para que puede ser compartida con todos los desarrolladores que trabajen con este juego.
Haz click en la fleca hacia abajo para ver cuales valores en memoria han sido encontrados hasta ahora, junto con su descripcion, la cual te dice para que sirve esa variable.
Intenta mantener tus descripciones limpias y simples, para que sean facil de entender. Para re-escribir una nota, seleccionala en la lista desglozable, actualiza la descripcion, y haz click en Save Note
(Salvar Nota). Una ventana va a salir confirmando sobre-escribir la nota existente - checa si esta bien el cambio, y haz click en OK.
Si deseas remover una nota, seleccionala en el menu desglozable, y haz click en Remove
(Remover).
Cuando haces click en el boton Open Memory Bookmarker
(Abrir Marcadores de Memoria) vas a ver esta ventana:
Con esto, puedes ver multiples variables designadas al mismo tiempo en vez de estar moviendote por todo el Inspector.
Los marcadores pueden ser renombrados haciendo doble-click en su descripcion. Si haces doble click en la variable, te puedes mover directamente a ella en el Inspector de Memoria.
Valores agregados al marcador se van a mostrar en el inspector de memoria de color verde. Desde aqui tambien puedes Freezear (Congelar) cualquier marcador.
Esto es util para cosas como vida o consumibles. Congelar variables puede ser manipulado directamente desde el inspector. Ten en mente que, el congelamiento ocurre 1 frame despues del gameplay. Esto significa que incluso cuando este congelada, el valor no va a cambiar al menos que pase un frame para que pueda congelarse la variable. Esto siempre se va a mostrar como amarillo.
"},{"location":"Memory-Inspector-Overview-es/#leyendo-informacion-en-el-visor-de-memoria","title":"Leyendo informacion en el Visor de Memoria","text":""},{"location":"Memory-Inspector-Overview-es/#notaciones-decimales-binarias-y-hexadecimales","title":"Notaciones Decimales, Binarias y Hexadecimales","text":"Para trabajar bien con el Visor de Memoria, es importante entender minimo lo basico de los numeros binarios y hexadecimal. Aqui hay algunos recursos de informacion sobre este tema sin irnos a detalles muy extremos:
Los digitos utilizados en el sistema binario son 0
y 1
. Un digito binario tambien es conocido como un bit. Ocho bits tambien se le conocen como un byte.
Los digitos utilizados en el sistema hexadecimal son 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, A
, B
, C
, D
, E
y F
. La notacion hexadecimal tambien se le conoce como hex.
La razon principal para estas 2 notaciones, mas alla del sistema decimal tradicional, son:
La siguiente table muestra las direntes notacion para sus valores equivalentes.
Decimal Hexadecimal Binario0
0x0
0000
1
0x1
0001
2
0x2
0010
3
0x3
0011
4
0x4
0100
5
0x5
0101
6
0x6
0110
7
0x7
0111
8
0x8
1000
9
0x9
1001
10
0xA
1010
11
0xB
1011
12
0xC
1100
13
0xD
1101
14
0xE
1110
15
0xF
1111
Mas datos sobre las diferentes notaciones:
0x
: 0x10 = 16
, 10 = 10
.0
y 255
. 0
y 65535
.0
y 4294967295
.La parte de hasta abajo del Inspector de Memoria es lo que llamamos visor de Memoria:
Puedes ver la informacion en el Visor de Memoria utilizando los modos 8, 16 y 32-bit.
"},{"location":"Memory-Inspector-Overview-es/#modo-8-bit","title":"Modo 8-bit","text":"Por defecto, el Visor de Memoria muestra la informacion en modo de 8-bit. Esto muestra cada byte de memoria como un valor de dos-caracteres hexadecimales por separado. Cada byte tiene su propia direccion.
Dieciseis bytes son mostrados por linea. La direccion de un byte se puede determinar a\u00f1adiendo la posicion de la fila (mostrada a la izquierda del vizor) a la posicion de la columna (mostrada arriba del visor). Usando la imagen de arriba como un ejemplo, el cursor esta en 0x002a7
(0x002a0
+ 7
).
Antes de que hables del modo de 16-bit mode y 32-bit, es importante saber sobre el endianness (extremidad):
Valores que necesitan mas de 8-bits (en otras palabras: mas grandes que 255) necesitan estar almacenado en multiples bytes. Inclusive, los sistemas emulados que utilizamos almacenan valores de multiples-bytes en orden little-endian.
En la imagen del Visor de Memoria de arriba puedes ver que en la direccion 0x0002c0
tenemos el valor hexadecimal ce
y en 0x0002c1
el valor es 39
. Cuando cambias el visor a modo de 16-bit, los valores ce
y 39
se agrupan en 0x0002c0
y son mostrados como 39ce
. Esto pasa porque automaticamente agrupa cada dos bytes y los muestra como valos hexadecimales de 16-bit.
NOTA: Mientras que los valores de 16-bits se alinean generalmente a direcciones pares, este no siempre es el caso. De hecho hay un valor de 16-bit que no se muestra en 0x0002c1
. Ya que el valor en 0x0002c1
es 39
y el valor en 0x0002c2
es 29
, el valor de 16-bit value en la direccion 0x0002c1
es 0x2939
.
Similarmente en, el modo de 32-bit, los cuatro bytes de 0x0002c0
a 0x0002c3
se muestran como un solo valor de 32-bit 0x252939ce
en la direccion 0x0002c0
, pero tambien hay valores de 32-bit en 0x0002c1
, 0x0002c2
, and 0x0002c3
.
Se describe como Endianness el orden en el que una secuencia de bytes se encuentra almacenada en memoria de una computadora. Los dos tipos mas comunes son: Big-Endian (tambien conocido como BE) y Little-Endian (tambien conocido como LE).
En el orden Big-Endian la \"big end\" (extremidad) de un numero (el valor mas significativo en secuencia) es almacenado primero (posicionado en la direccion mas peque\u00f1a). En la imagen de abajo puedes ver el numero 0x12345678
almacenado en la direccion 0x100
en el sistema big-endian. Ten en cuenta que el byte mas significativo 0x12
se encunetra en la direccion 0x100
:
En el orden Little-Endian el \"little end\" (extremidad) de un numero (el valor menos significativo en secuencia) es almacenado primero (posicionado en la direccion mas grande). En la imagen de abajo puedes ver el numero 0x12345678
almacenado en la direccion 0x100
en orden little-endian. Ten en cuenta que el byte menos significativo 0x78
se encuentra en la direccion 0x100
:
En addicion al 8-bit, 16-bit y 32-bit los tama\u00f1os descritos arriba, existen tama\u00f1os adicionales que pueden ser utilizados al momentos que estemos creando logros (en el editor de Logros (Achievement Editor)).
"},{"location":"Memory-Inspector-Overview-es/#single-bits","title":"Single bits","text":"En el visor de memoria cuando un valor de 8-bit es seleccionado vas a ver algo como la imagen de abajo (en la imagen: un byte con valor 6f
es seleccionado; los bits estan resaltados con un circulo naranja):
Es muy comun almacenar informacion importante en un solo bit. Ya que un bit solo puede tener dos posibles valores (1
o 0
), algunas veces se utiliza para significarn \"si\" o \"no\", \"encendido\" o \"apagado\", \"tiene un item\" o \"no item\", etc. Algunos juegos, especialmente aquellos que tienen espacio muy limitado en memoria, utilizan bit como botones bastante.
Importante: Puedes referirte a cada uno de esos bits indidualmente en el Editor de Logros (Achievement Editor).
Significados mas comunes de botones de bit en la memoria de un juego:
En el visor de memoria solo puedes ingresar valores hex, entonces es importante conocer la importancia entre valores con notacion hexadecimal y binaria. Puedes ver en la tabla de \"Notaciones Decimales, Binarias y Hexadecimales\" , pero lo usual es usar una calculadora (la calculadora default de MS Windows en modo programador puede hacer el trabajo)
"},{"location":"Memory-Inspector-Overview-es/#upper4-y-lower4","title":"Upper4 y Lower4","text":"Upper4 son los cuatro bits superiores de un byte (bit: 7, 6, 5, 4), mostrados como un solo caracter hexadecimal. Lower4 son los cuatro bits inferiores de un byte (bit: 3, 2, 1, 0), mostrados como un solo caracter hexadecimal.
Observando el diagrama de tama\u00f1o de memoria de abajo, un byte en la direccion 0x00a274
es seleccionado (valor 0x23
). El primer caracter, 2
es el valor Upper4. El segundo characterr 3
es el valor Lower4.
Ocasionalmente solo vas a estar interesado en trabajar con solo un digito hexadecimal. Utilizando el diagrama de tama\u00f1o de memoria como un ejemplo, como una condicion de un logro donde Upper4 0x00a274 = 0x2
seria verdadera. Una condicion dondeLower4 0x00a274 = 0x3
seria verdadera.
Last 10 changes on this page:
[2019-05-24 20:18] meleu:
add link to spanish doc[2019-03-12 14:59] meleu:
Updated Memory Inspector Overview ES (markdown)Here is an overview of the Memory Inspector and its features. This tool can be found on \"RetroAchievements\" menu on any emulator integrated with RA.
See also: Memory Digging Tips.
This is the first thing you must do when you're looking for something in memory.
The first drop down allows you to quick select All memory, System RAM, or Cartridge RAM. The field below the first drop down lets you type in a custom range (i.e. 0x10000-0x100FF).
The second drop down specifies the size of the data you're interested in finding.
The Reset
button clears out any previously captured results (part 3 of the dialog) and captures the current memory state.
Filters the memory state in an attempt to locate a specific memory address.
The first drop down allows you to specify the comparison to use. The second drop down is what you're comparing against. Most of the time you're going to be filtering on != Last Value
, which eliminates any results where the memory has not changed.
The available comparisons are:
Constant
- comparison is made against the value entered in the field below the drop down.Last Value
- comparison is made against the value captured by the last applied filter, or the initial value if no filter has been appliedLast Value Plus
- comparison is made against the Last Value plus the value entered in the field below the drop down. If the value were 3, the comparison would me made against a number which is three higher than the Last Value for each value captured by the last applied filter.Last Value Minus
- the same as Last Value Plus, except the value entered in the field below the drop down is subtracted from each value captured by the last applied filter.Initial Value
- comparison is made against the value captured when the New Search was begun.The Filter Once
button immediately applies the selected filter and updates the Results.
The Continuous Filter
button applies the selected filter repeatedly until stopped. The fewer the results, the more frequently the filter is applied. The filter is only applied once every N ms, where N is the number of results / 1000. If there are less than 1000 results, it's applied every frame. If there are 50000 results, it's applied every 500ms (twice a second). If there are 1000000 results, it's only applied every 10 seconds.
As filtering is applied, the list of potential matches will appear here.
On the left side is information about the results, including the number of matches, the filter applied, and how many filters have been applied. If you believe you have applied a filter incorrectly, or the filter results in no matches, you can use the <<
button to return to the previous set of results. You can do this all the way back to the initial results. Similarly, you can use the >>
button to return to results you have backed out of. Once you apply a new filter, the forward filters are discarded and the >>
button is disabled.
Below the result information are two buttons. The first allows you to manually remove the selected items from the result set. You can use Ctrl and Shift to select multiple items. The second lets you create a bookmark for an item in the result set. It will appear in the Bookmarks dialog.
The items in the result set show the address of the match, the current value, and a brief description of the memory at the address. If a code note exists for the address, it will be shown. Otherwise, a general classification of the address will be shown.
Additionally, items in the result set can be colored.
Clicking on a row will set the selected address to the associated item.
"},{"location":"Memory-Inspector-Overview/#4-code-notes","title":"4. Code Notes","text":"Provides detailed information about the selected address, and allows the user to annotate addresses found by the search process. Try to keep your descriptions simple and clear, so they can be easily understood. Clear notes are important for debugging if a problem with an achievement occurs.
The text field shows the currently selected address from the memory view (part 5 of the dialog). You can manually type in any address, or use the up and down arrows to jump to the next or previous address that have a code note.
Just to the right of the text field is a button that opens the Code Notes dialog, which allows you to browse and search through the code notes.
Below the text field is a button that will create a bookmark from the selected address.
The large text area is where you can modify the code note for the selected address. NOTE: the changes are not saved unless you press the Save Note button. If you change the selected address without saving, the changes will be lost.
Save Note
and Delete
immediately attempt to update the server - either with the modified note text, or by clearing out the note text.
Allows direct browsing of the memory. The memory updates once per frame as the emulator runs.
The currently selected address appears in red. Addresses with code notes show up blue, and addresses associated to bookmarks show up green.
You can click on any piece of data in the memory viewer to jump to the associated address. You can also use the keyboard to navigation around in memory (up/down/left/right/pgup/pgdn/home/end).
When the memory viewer is focused, a cursor will be visible. You can type any hexadecimal character to change the character at the cursor to another value. This immediately changes the value for the emulator, and may cause unexpected behavior, so use at your own risk. Additionally, modifying memory (through any of the tools) prevents achievements from being unlocked on the server as an anti-cheat mechanism.
"},{"location":"Memory-Inspector-Overview/#memory-bookmarks","title":"Memory Bookmarks","text":"You can open the Memory Bookmarks dialog from the RetroAchievements menu. It will also automatically open when adding a bookmark from either of the buttons on the Memory Inspector dialog.
With this, you can view multiple designated addresses at once instead of having to shuffle around in the Inspector. Bookmarked addresses will show in the Memory Inspector as green.
If you double-click on an address, you can move straight to that address in the Memory Inspector.
The bookmarks can be renamed by clicking their description. This does not update the code note for the associated address.
You can change the size or format of a bookmark by clicking on the field and selecting a new value from the dropdown. Clicking on the value field will allow you to enter a new value for the bookmark. It will automatically be written to the memory.
From here you can also Freeze any bookmarks. This is helpful for things like health or consumables. Keep in mind, freezing occurs 1 frame after gameplay. This means that even when frozen, the value will change for at least one frame before returning to the frozen value. Frozen bookmarks will be displayed as yellow.
"},{"location":"Memory-Inspector-Overview/#reading-data-in-the-memory-viewer","title":"Reading Data in the Memory Viewer","text":""},{"location":"Memory-Inspector-Overview/#decimal-binary-and-hexadecimal-notations","title":"Decimal, Binary, and Hexadecimal Notations","text":"To work well with the Memory Viewer, it's important to understand at least the basics of binary and hexadecimal numeral notations. Here are good sources of information about this matter without going into extreme details:
The digits used in binary system are 0
and 1
. A binary digit is also known as bit. Eight bits is also known as one byte.
The digits used in hexadecimal system are 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, A
, B
, C
, D
, E
and F
. The hexadecimal notation is also known as hex.
The main reasons for the existence of these 2 notations, besides the traditional decimal notation, are:
The table below shows the different notations for equivalent values.
Decimal Hexadecimal Binary0
0x0
0000
1
0x1
0001
2
0x2
0010
3
0x3
0011
4
0x4
0100
5
0x5
0101
6
0x6
0110
7
0x7
0111
8
0x8
1000
9
0x9
1001
10
0xA
1010
11
0xB
1011
12
0xC
1100
13
0xD
1101
14
0xE
1110
15
0xF
1111
More facts about the different number notations:
0x
is used: 0x10 = 16
, 10 = 10
.0
to 255
. 0
to 65535
.0
to 4294967295
.The bottom part of the Memory Inspector is what we call the Memory Viewer:
You can see data in Memory Viewer using 8, 16 or 32-bit modes.
"},{"location":"Memory-Inspector-Overview/#8-bit-mode","title":"8-Bit Mode","text":"By default, the Memory Viewer shows data in 8-bit mode. This displays each byte of memory as a separate two-character hexadecimal value. And each byte has its own address.
Sixteen bytes are shown per line. The address of a byte can be determined by adding the row index (displayed to the left of the viewer) to the column index (displayed above the viewer). Using the image above as an example, the cursor is at 0x002a7
(0x002a0
+ 7
).
Before we talk about 16-bit mode and 32-bit mode, it's important to know about endianness:
Values that need more than 8-bits (in other words: larger than 255) have to be stored in multiple bytes. However, the emulated systems we use store multi-byte values in little-endian order.
In the image of the Memory Viewer above you can see that at address 0x0002c0
we have the hex value ce
and in 0x0002c1
the value is 39
. When you switch the viewer to 16-bit mode, the ce
and 39
values are grouped at 0x0002c0
and get displayed as 39ce
. This happens because it automatically groups every two bytes and displays them as 16-bit hex values.
NOTE: While 16-bit values are usually aligned to even addresses, that's not always the case. There's actually a non-displayed 16-bit value at 0x0002c1
. Since the value at 0x0002c1
is 39
and the value at 0x0002c2
is 29
, the 16-bit value at 0x0002c1
address is 0x2939
.
Similarly, in 32-bit mode, the four bytes from 0x0002c0
to 0x0002c3
are displayed as a single 32-bit value 0x252939ce
at address 0x0002c0
, but there are also 32-bit values at 0x0002c1
, 0x0002c2
, and 0x0002c3
.
Endianness describes the order in which a sequence of bytes are stored in computer systems memory. The two most common types are: Big-Endian (also known as BE) and Little-Endian (also known as LE).
In the Big-Endian order the \"big end\" of the number (most significant value in the sequence) is stored first (placed at the lowest address). In the image below you see the number 0x12345678
stored at the address 0x100
in the big-endian order. Notice that the most significant byte 0x12
is at the address 0x100
:
In the Little-Endian order the \"little end\" of the number (least significant value in the sequence) is stored first. In the image below you see the number 0x12345678
stored at the address 0x100
in the little-endian order. Notice that the least significant byte 0x78
is at the address 0x100
:
In addition to the 8-bit, 16-bit and 32-bit sizes described above, there are additional sizes that can be used when writing achievements (in the Achievement Editor).
"},{"location":"Memory-Inspector-Overview/#single-bits","title":"Single Bits","text":"In the memory viewer when an 8-bit address is selected you will see something like the image below (in the image: a byte with the value 6f
is selected; the bits are highlighted with an orange circle):
It is very common in games to store important information as a single bit. As a bit can only have two possible values (1
or 0
), sometimes it's used to mean \"yes\" or \"no\", \"on\" or \"off\", \"have item\" or \"no item\", etc. Some games, specially those with limited memory space, use bit switches a lot.
Important: You can refer to each one of those bits individually in the Achievement Editor.
Common meaning of bit switches in a game memory:
In the memory viewer you can only input hex values, then it's important to know equivalence of values between hex and binary notations. You can see the table in the \"Decimal, Binary and Hexadecimal notations\" section, but the usual is to use a calculator (the default calculator on MS Windows on the programmer view can do the job).
"},{"location":"Memory-Inspector-Overview/#upper4-and-lower4","title":"Upper4 and Lower4","text":"Upper4 is the upper four bits of a byte (bit: 7, 6, 5, 4), displayed as a single hexadecimal character. Lower4 is the lower four bits of a byte (bit: 3, 2, 1, 0), displayed as a single hexadecimal character.
Looking at the memory size diagram below, a byte at address 0x00a274
is selected (value 0x23
). The first character, 2
is the Upper4 value. The second character 3
is the Lower4 value.
Occasionally you will only be interested working with a single hexadecimal digit. Using the memory size diagram as an example, an achievement condition where Upper4 0x00a274 = 0x2
would be true. A condition where Lower4 0x00a274 = 0x3
would be true.
Last 10 changes on this page:
[2024-04-10 12:20] Alex Gabriel:
Fix typo in 16 and 32-bit Mode section.[2023-06-06 11:27] televandalist:
Added ToC[2022-07-11 16:49] timenoe:
Small typo corrected concerning != Last Value
filter[2021-08-25 19:10] meleu:
fix markdown format[2020-06-11 07:34] Jamiras:
add details about Continuous Filter backoff algorithm[2020-05-17 21:48] Jamiras:
update for new memory inspector dialog[2019-03-14 00:37] Keltron3030:
Updated Memory Inspector Overview (markdown)[2019-03-14 00:35] Keltron3030:
Added some additional info to memory viewer features as requested by Jr developer.[2019-02-14 21:56] meleu:
bitfields image[2019-02-14 21:45] meleu:
test2Know good techniques? Add to this page.
"},{"location":"Minimum-Required-Versions-for-Logic-Features-es/","title":"Versiones M\u00ednimas Requeridas para Funciones en la L\u00f3gica","text":"A veces es \u00fatil saber cuando una funci\u00f3n fue agregada/modificada y las implicaciones de esos cambios, especialmente si estas trabajando en un ticket. Compara la etiqueta de tiempo del ticket con los lanzamientos del toolkit para determinar con que comportamiento el jugador se ve\u00eda afectado.
Funci\u00f3n RA_Integration RetroArch ResetIf/PauseIf HitCount 0.073(31-Ago-2018) 1.7.4(30-Ago-2018) Tablas de Clasificaci\u00f3n Cancelar Y (Leaderboard Cancel AND) 0.073(31-Ago-2018) 1.7.0(25-Dic-2017) Tablas de Clasificaci\u00f3n \u00d3 (Leaderboard OR) 0.073(31-Ago-2018) 1.7.4(30-Ago-2018) Soporte para valores Completos de 32-bit 0.073(31-Ago-2018) 1.7.0(25-Dic-2017) Retrasar procesamiento de logros por los primeros 100 frames de cargar el ROM 0.073(31-Ago-2018) (ver la linea de abajo) Remplazar el retraso de 100 frames con la l\u00f3gica de activaci\u00f3n de retraso (delayed activation logic) 0.075(04-Feb-2019) 1.6.3(28-Jul-2017)"},{"location":"Minimum-Required-Versions-for-Logic-Features-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 11:13] eldexterr:
ES title changed to esSometimes it's useful to know when a feature was added/changed and the implications of these changes, specially if you are working on a ticket. Compare the ticket timestamp to the toolkit releases to determine which behavior the player would have been subject to.
Feature RA_Integration RetroArch rcheevos Leaderboard Cancel AND 0.073(31 Aug 2018) 1.7.0(25 Dec 2017) n/a Full 32-bit value support 0.073(31 Aug 2018) 1.7.0(25 Dec 2017) n/a ResetIf/PauseIf HitCount 0.073(31 Aug 2018) 1.7.4(30 Aug 2018) n/a Leaderboard OR 0.073(31 Aug 2018) 1.7.4(30 Aug 2018) n/a Delay achievement processing for 100 frames on load 0.073(31 Aug 2018) n/a n/a Replace 100 frame delay with delayed activation logic 0.075(04 Feb 2019) 1.6.3(28 Jul 2017) n/a AndNext 0.76(21 Jun 2019) 1.7.7(7 May 2019) 8.0(4 May 2019) Prior 0.76(21 Jun 2019) 1.7.7(7 May 2019) 8.0(4 May 2019) 24-bit read 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.0.1(18 Jun 2019) AddAddress 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Measured 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Measured syntax for leaderboard values 0.77(30 Nov 2019) 1.8.2(25 Dec 2019) 8.1(21 Nov 2019) Detect and report Unsupported achievements 0.79(22 May 2021) 1.8.2(25 Dec 2019) n/a OrNext 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) BitCount 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) MeasuredIf 0.78(18 May 2020) 1.8.7(17 May 2020) 9.0(9 May 2020) Trigger 0.79(22 May 2021) 1.8.7(17 May 2020) 9.0(9 May 2020) Include hits in save states 0.073(31 Aug 2018) 1.9.1(28-Mar 2021) 9.0(9 May 2020) SubHits 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) ResetNextIf 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Ranges in rich presence lookups 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Maxof($) for Measured leaderboard values 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) ResetIf/PauseIf support for Measured leaderboard values 0.79(22 May 2021) 1.9.4(29 May 2021) 10.0(15 May 2021) Big Endian memory reads 1.0(29 Jan 2022) 1.9.9(5 Sep 2021) 10.2(27 Aug 2021) Measured raw/percent flag 1.0(29 Jan 2022) 1.9.9(5 Sep 2021) 10.2(27 Aug 2021) Floating point memory reads 1.0(29 Jan 2022) 1.10.1(6 Mar 2022) 10.3(14 Jan 2022) Built-in macros for rich presence 1.0(29 Jan 2022) 1.10.1(6 Mar 2022) 10.3(14 Jan 2022) MBF32 LE memory read 1.1(15 Nov 2022) 1.13.0(19 Nov 2022) 10.5(12 Nov 2022) XOR modifier 1.1(15 Nov 2022) 1.13.0(19 Nov 2022) 10.5(12 Nov 2022) Float BE memory reads 1.3(TBD) 1.17.0(3 Feb 2024) 11.0(2 Nov 2023) FixedN leaderboard/RP sizes 1.3(TBD) 1.17.0(3 Feb 2024) 11.1(21 Jan 2024) Double32 memory reads 1.3(TBD) TBD 11.2(31 Mar 2024)"},{"location":"Minimum-Required-Versions-for-Logic-Features/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-31 12:08] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2024-02-27 14:12] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2023-11-29 18:27] Jamiras:
stub for Float BE[2023-07-19 09:37] Jamiras:
update RetroArch versions for rcheevos 10.5 features[2022-11-15 14:46] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-11-12 07:15] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-03-06 10:44] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-29 11:05] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-13 09:14] Jamiras:
Updated Minimum Required Versions for Logic Features (markdown)[2022-01-08 09:59] Jamiras:
add 0.80 DLL featuresAlterar os discos no Playstation exige que voc\u00ea crie um arquivo playlist (.m3u) para seus discos. Isso pode soar intimidador, mas na verdade \u00e9 bem simples.
Passo 1: Coloque seus arquivos .bin e .cue na localiza\u00e7\u00e3o desejada.
Passo 2: Abra o Bloco de notas.
Passo 3: Digite no bloco de notas o nome dos arquivos .cue da mesma forma que eles est\u00e3o no arquivo original. Quando voc\u00ea terminar, seu documento de texto vai estar parecido com algo mais ou menos assim:
Quando terminar, salve o documento de texto, na mesma localiza\u00e7\u00e3o que o disco do jogo, com o nome que voc\u00ea quiser.
Passo 4: Renomeie o documento, mudando sua extens\u00e3o de .txt para .m3u
ATEN\u00c7\u00c3O: Se voc\u00ea n\u00e3o consegue ver a extens\u00e3o .txt no final do t\u00edtulo do seu documento de texto voc\u00ea precisar\u00e1 alterar as configura\u00e7\u00f5es para que extens\u00f5es sejam vis\u00edveis. No Windows 10 isso \u00e9 muito simples, voc\u00ea consegue encontrar essa op\u00e7\u00e3o na sua pasta em \"View\" e marcar a caixa \"File name extensions\".
E... pronto! Simples, n\u00e3o? A partir de agora, quando voc\u00ea for iniciar o jogo, abra ele pelo arquivo .m3u que voc\u00ea acabou de criar.
ATEN\u00c7\u00c3O: Se voc\u00ea j\u00e1 jogou o primeiro disco do jogo e seus saves n\u00e3o est\u00e3o mais l\u00e1, voc\u00ea pode resgatar eles indo at\u00e9 a pasta \"saves\" do seu emulador, encontrando os arquivos de save e renomeando eles para igualar com o arquivo .m3u que voc\u00ea criou. Por exemplo:
'Metal Gear Solid (v1.1) (Disc 1).mcr' > 'Metal Gear Solid (v1.1).mcr'
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#alterando-discos-no-ralibretro","title":"Alterando discos no RAlibretro","text":"Para alterar os discos no RAlibretro, quando o jogo solicitar a troca, v\u00e1 para o menu \"File\" e siga esses passos
Passo 1: File > CD-ROM > Open Tray
Passo 2: File > CD-ROM > Desired Disc
Passo 3: File > CD-ROM > Close Tray
E \u00e9 isso!
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#alterando-discos-no-retroarch","title":"Alterando discos no Retroarch","text":"Voc\u00ea ir\u00e1 encontrar a op\u00e7\u00e3o em \"Quick Menu > Disk Control\"
Passo 1: Selecione \"Disk Cycle Tray Status\" (ATEN\u00c7\u00c3O: Se voc\u00ea tem a op\u00e7\u00e3o \"Pause when menu activated\" ativada, voc\u00ea precisar\u00e1 sair e entrar no menu novamente para que o jogo saiba que a tampa do disco foi aberta)
Passo 2: Selecione \"Disk Index\" (Esquerda e direita para alterar os discos)
Passo 3: Selecione \"Disk Cycle Tray Status\" novamente
E pronto!
"},{"location":"Multi-Disc-Games-Tutorial-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-01-10 11:36] Hyze01:
Updated Multi Disc Games Tutorial pt_BR (markdown)[2020-01-10 11:35] Hyze01:
Updated Multi Disc Games Tutorial pt_BR (markdown)[2020-01-10 11:23] Hyze01:
Ajudado com a tradu\u00e7\u00e3o.[2020-01-10 10:31] meleu:
Created Multi-Disc Games Tutorial-pt_BR (markdown)Changing discs on Playstation requires creating a playlist file (.m3u) for your discs. This may sound intimidating but it's actually very simple.
Step 1: Place your .bin and .cue files in the desired location.
Step 2: Open Notepad
Step 3: Type the names of your .cue files exactly as they're named on your files. When you're finished your text document should look something like this:
When you're finished save the text document in the same location as your game discs with whatever name you like.
Step 4: Rename the document, changing the extension from .txt to .m3u
NOTE: If you can't see the .txt extension at the end of your text document title you need to change your settings to show known file extensions. In Windows 10 it's very simple, you can find that on your folder under 'View' and a checkbox reading 'File name extensions'
Now you're done! Simple, huh? From here on out, when you start the game, load it using the .m3u file you've just created.
NOTE: If you have already played the first disc of a game and find your saves no longer there, you can retrieve them by navigating to your emulators 'saves' folder, finding the save for your first disc and renaming it to match the .m3u you've created. for example:
'Metal Gear Solid (v1.1) (Disc 1).mcr' > 'Metal Gear Solid (v1.1).mcr'
"},{"location":"Multi-Disc-Games-Tutorial/#changing-discs-in-ralibretro","title":"Changing Discs in RAlibretro","text":"To change discs on RAlibretro, when the game prompts you, go to the file menu and follow these steps
Step 1: File > CD-ROM > Open Tray
Step 2: File > CD-ROM > Desired Disc
Step 3: File > CD-ROM > Close Tray
And that's it!
"},{"location":"Multi-Disc-Games-Tutorial/#changing-discs-in-retroarch","title":"Changing Discs in Retroarch","text":"You'll find the option in Retroarch under 'Quick Menu > Disk Control'
Step 1: Select 'Disk Cycle Tray Status' (Note: If you have the 'Pause when menu activated' option on, you'll need to turn the menu off and on again so that the game knows the disc tray has been opened)
Step 2: Select 'Disk Index' (Left and right to change discs)
Step 3: Select 'Disk Cycle Tray Status' again
And you're done!
"},{"location":"Multi-Disc-Games-Tutorial/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-31 09:42] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-31 11:01] meleu:
add proper headings and other cosmetics[2019-12-29 12:26] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 12:22] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:58] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:57] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:56] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:53] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:52] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)[2019-12-29 11:51] wilhitewarrior:
Updated Multi Disc Games Tutorial (markdown)Quiz\u00e1s cargaste tu juego, pero ves una ventana emergente: Luego miras la interfaz (usualmente con 'ESC') y ves:
O tal vez obtuviste estos mensajes:
y
Cuando ocurre cualquiera de estas situaciones es por que, ya sea el juego a\u00fan no tiene logros, o es probable que tengas la ROM incorrecta.
Solo para estar seguro, busca el nombre del juego y verifica los resultados que coincidan.
Si el juego tiene logros pero tu ROM no est\u00e1 en nuestro sistema, necesitar\u00e1s encontrar la ROM correcta, u obtener soporte para tu ROM.
Verifica el primer post del hilo oficial del juego en el foro. El enlace para ello se encuentra en la parte inferior de la lista de logros, en las respectivas p\u00e1ginas de los juegos. Ejemplo para Super Mario Bros.:
Probablemente el primer post del hilo oficial del juego en el foro tenga una lista de ROM v\u00e1lidas para el juego, y tambi\u00e9n el \"checksum\" de las ROM.
Nota: el \"checksum\" es un n\u00famero usado para confirmar si dos copias de un archivo son id\u00e9nticas. En RA, lo usamos para asegurar que el jugador est\u00e9 usando la misma ROM que el desarrollador de los logros.
Tambi\u00e9n verifica los \u00faltimos posts del hilo oficial del juego en el foro y los comentarios en la p\u00e1gina del juego en busca de pistas sobre qu\u00e9 ROM necesitas. Si el nombre correcto de la ROM y el \"checksum\" a\u00fan no se encuentran en la lista, deber\u00e1s solicitarlo (por favor, NO PIDAS ENLACES PARA DESCARGAR EL ROM, solo el nombre del archivo y el \"checksum\"). Puedes solicitarlo en la p\u00e1gina del juego en el foro, o pedir ayuda en Discord o en el chat del sitio en la p\u00e1gina principal.
Tambi\u00e9n puedes contribuir a la comunidad obteniendo soporte para tu ROM, si es que es compatible. Publica el \"checksum\" de tu ROM existente en el foro de ese juego y tambi\u00e9n el nombre exacto que tienes para el ROM, y un desarrollador lo revisar\u00e1 contigo para ver si es compatible.
Como encontrar el \"checksum\" de tu ROM.
Para obtener m\u00e1s informaci\u00f3n sobre el \"checksum\" y los hashes, puedes leer este articulo (en Ingl\u00e9s): https://datacrystal.romhacking.net/wiki/Hashes
"},{"location":"My-game-is-not-loading-achievements-es/#listas-completas-de-la-mayoria-de-los-juegos-en-la-base-de-datos-de-retroachievements","title":"Listas completas de la mayor\u00eda de los juegos en la base de datos de RetroAchievements","text":"El usuario caricatur hizo un gran trabajo al compilar algunas listas de ROM vinculadas a los juegos que tenemos en la base de datos en RetroAchievements. Aqu\u00ed est\u00e1n los enlaces a las publicaciones del foro respectivas:
Last 10 changes on this page:
[2019-04-16 15:56] meleu:
fix markdown format[2018-10-11 00:26] CoolCanuck:
https[2018-06-10 09:47] lilbud:
Updated Discord Link[2018-05-30 12:27] ShinyNinetalesTM:
added link to \"comprehensive list\" for NES, as well as done for the english version[2018-05-09 13:13] ShinyNinetalesTM:
Created My game is not loading achievements-es (markdown)Maybe you loaded up your game but you see a popup: Then you check the overlay (typically ESC) and see:
Or maybe you got these messages:
and
When any of these situations happens, either your game doesn't have achievements yet or more likely you have the incorrect ROM.
Just to be sure, search for the game name and check matching results.
If your game has achievements but your ROM isn't in our system either you'll need to find the correct ROM or get support for your ROM.
"},{"location":"My-game-is-not-loading-achievements/#how-do-i-know-if-my-rom-is-compatible","title":"How do I know if my ROM is compatible?","text":"If your ROM has the same checksum/hash as those linked to the website, then it is compatible.
Note: a \"checksum\" or \"hash\" is a number used to confirm if two copies of a file are identical. On RA we use it to assure the player is using the same ROM as the achievement developer.
There are two ways of checking what checksums/hashes are linked to a game:
"},{"location":"My-game-is-not-loading-achievements/#check-the-linked-hashes-page-associated-with-the-game","title":"Check the Linked Hashes page associated with the game","text":"Example for Super Mario Bros. NOTE: You must be logged in to view linked hashes.
You can access this page by clicking the \"Hashes linked to this game\" button in the \"More Info\" section on the game page.
It takes you to a page like this:
"},{"location":"My-game-is-not-loading-achievements/#check-the-top-post-of-the-official-games-forum-thread","title":"Check the top post of the official game's forum thread","text":"The link for it can be found at the bottom of the achievement list on game pages OR in the More Info section. Example for Super Mario Bros.:
The first post of the official game's forum thread usually has a list of valid ROMs for the respective game and also the checksum of the ROMs.
If your ROMs name and checksum aren't listed yet, then you'll need to ask for it (please, do NOT ask for links to download the ROM, only the filename and the checksum). You can request it in the game's forum page or ask for help in Discord or on the site chat on the front page.
Once you make a request, a developer will review it and make sure it works. Then they will add the hash to the 'compatible hashes page.'
"},{"location":"My-game-is-not-loading-achievements/#how-to-find-the-checksum-of-your-rom","title":"How to find the checksum of your ROM:","text":"In the menu bar RetroAchievements
> Get ROM Checksum
For more details about checksum and hashes, read here: https://datacrystal.romhacking.net/wiki/Hashes
"},{"location":"Naming-Conventions/","title":"Naming Conventions","text":""},{"location":"Naming-Conventions/#naming-conventions","title":"Naming Conventions","text":"\u00e9
in Pokemon, as they currently break a few things (like feed). They are also not visible in search without the special character. Same for UTF-8 Universal Emoji codes. Allowed exception: Rich Presence Scripts.Last 10 changes on this page:
[2023-11-28 15:27] televandalist:
Created Naming Conventions (markdown)Before working on new games you must address all open tickets you have. Once you're free of tickets, then go ahead. Tickets are addressed when they are either resolved/closed for a valid reason with a comment on the ticket, or when transferred to reporter and awaiting further information (such as more details, reproduction steps, or save states).
"},{"location":"New-Achievement-Set-Checklist/#2-is-the-game-present-on-the-database","title":"2. Is the game present on the database?","text":""},{"location":"New-Achievement-Set-Checklist/#no","title":"No","text":"Then ask for it to be added on Discord #help-me or on our forums and some dev will add it for you. It's essential you choose the right ROM(s) to work with. If you want to work on a ROM hack, check the achievements for ROM hacks doc first.
"},{"location":"New-Achievement-Set-Checklist/#yes","title":"Yes","text":"Good! Go ahead.
"},{"location":"New-Achievement-Set-Checklist/#3-does-the-game-already-have-an-achievement-set","title":"3. Does the game already have an achievement set?","text":""},{"location":"New-Achievement-Set-Checklist/#yes_1","title":"Yes","text":"If there is an existing set, don't give up. You can still improve it, by adding/removing/reworking achievements, or make changes to titles and images, etc. However you'll need to go through the set revision process.
"},{"location":"New-Achievement-Set-Checklist/#no_1","title":"No","text":"Look deeper. Often there are multiple entries in the database for the same game under different titles. Once you're sure, you'll need to check if there's another dev working on the game.
Note: Only one achievement set is allowed per game per console. For details see working with the right ROM.
"},{"location":"New-Achievement-Set-Checklist/#4-is-another-developer-working-on-the-game","title":"4. Is another developer working on the game?","text":"To be sure if there's another dev working on a game, check the game's claims on the game page. This is needed to avoid conflicts between multiple developers working on the same game.
"},{"location":"New-Achievement-Set-Checklist/#yes_2","title":"Yes","text":"If this is the case, you may not work on the game unless the developer(s) with the claim agree to a collaboration. Do not make a collaboration claim without approval the developer(s) working on the set.
Developers are expected to renew their reservation every three months. Look at the time stamps on the claims history to see when the developer posted a reservation for development. If the developer has not stated or renewed their reservation on the game after three months the claim will expire and then you can make a claim and post your plans to work.
"},{"location":"New-Achievement-Set-Checklist/#no_2","title":"No","text":"Great! You're free to go ahead! The next step is to announce your plans to develop achievements for the game.
"},{"location":"Overlay-Themes/","title":"Overlay Themes","text":"Preview gallery
Default theme file showing all available settings. Must be named theme.json
when placed in overlay
subdirectory.
Last 10 changes on this page:
[2023-04-13 14:56] televandalist:
Renamed \"Downloads\" page to \"Overlay Themes\" since that's all that was left - :lel:Un PauseIf
(PausarSi) puede ser seleccionado en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Mientras sea verdadero, el PauseIf
pausa la actividad de todas las condiciones en el mismo grupo. No pausa condiciones en otros grupos (mas sobre Grupos Alternos (Alt Groups) abajo).
Nota: ten en menta que todas las condiciones en la oracion anterior incluye condiciones ResetIf
! En otras palabras Un ResetIf
no va a funcionar si un PauseIf
esta activo.
Un PauseIf
es usualmente para prevenir hit counts en una situacion especifica (como pausar el juego). Tambien se utiliza cuando quieres mantener los contadores de hits (hit counts) capturados anteriormente, pero no se quiere incrementar o reseatear mientras este sucediendo algo.
PauseIf
con hit counts","text":"Una condicion PauseIf
con un contador de hits (hit count) especifico solo se va a disparar cuando el numero de hits se cumplan. Una vez que el contador de hits (Hit Counts) se cumpla, el grupo se mantiene pausado asta que un ResetIf
en otro grupo sea verdadera o hasta que se reinicie el juego. Un PauseIf
sin un contador de hits (Hit Count) se va a terminar de pausar cuando la condicion ya no sea verdadera.
Last 10 changes on this page:
[2019-03-12 15:00] meleu:
Updated PauseIf Flag ES (markdown)The PauseIf
flag can be chosen in the Flag column of the Achievement Editor.
PauseIf
is usually used to prevent hit counts from going up during a specific situation (like when the game is paused). It's used when you want to keep previously earned hit count, but don't want to increment it or reset it while something else is going on.
When a group is processed, first all PauseIf
are evaluated in order. As soon as any PauseIf
is true, the group stops processing. This means that any PauseIf
s after the true PauseIf
will not be evaluated. This allows one PauseIf
to prevent another PauseIf
from collecting hits, but it's usually better to write the second PauseIf
with an AndNext
to limit when it collects hits.
This also means that any ResetIf
s in the group will not be processed while the group is paused. To reset the hit count on a PauseIf
, you must place the ResetIf
in an alt group or attach a ResetNextIf
to the PauseIf
.
Delta values are not affected by paused groups. The value returned by a delta read will still be from the previous frame, not from the frame just before the group was paused.
"},{"location":"PauseIf-Flag/#pauseif-with-hit-counts","title":"PauseIf
with hit counts","text":"A PauseIf
condition with a hit count target will only trigger when the hit count target is met. Once the hit count target is met, the group remains paused until the hit count is reset by a ResetIf
in another group or a ResetNextIf
attached to the PauseIf
. You may hear this referred to as a PauseLock.
A PauseIf
without a hit count will automatically unpause when the condition is no longer true.
Last 10 changes on this page:
[2022-05-24 18:58] Jamiras:
Updated PauseIf Flag (markdown)[2021-08-07 17:00] Dimedime:
updated interaction with ResetNextIf[2019-02-12 13:13] meleu:
typo[2019-02-12 13:13] meleu:
fix broken link[2019-02-12 09:36] meleu:
Updated PauseIf (markdown)A Prior
value is the previous value at an address. It is similar to Delta, except it's only updated when the current values changes, whereas Delta is updated every frame. Note: when you use Prior
it is implicit that you are referring to an address and not a value.
Examples of how it can be used:
prior level = 6
would only be true if the player isn't currently on level 6, but hasn't been anywhere except the current level since being on level 6. If they came straight from the menu prior level
would likely be 0.Delta is always one frame behind Mem. Prior is only updated when Mem changes.
"},{"location":"Prior-Values/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-01-10 16:03] meleu:
fix markdown link[2021-01-05 10:53] tofof:
fix busted link[2019-06-21 19:03] Jamiras:
Updated Prior Values (markdown)[2019-06-21 19:03] Jamiras:
initial documentationProgression and Win Type conditions are assigned to achievements in a set and used to designate when a game has been beaten. A game is considered when all the following statements are true:
Typing core sets is required for set release. Subsets should not be typed.
"},{"location":"Progression-and-Win-Condition-Guidelines/#how-to-add-types-to-achievements","title":"How To Add Types to Achievements","text":"The following types of achievements are not considered for progression type marking:
These genres often lack standard progression, so have additional guidelines here. They may also feature multiple game modes; see the guidelines above for how to mark Progression for these.
"},{"location":"Progression-and-Win-Condition-Guidelines/#arcade","title":"Arcade","text":"Use the first of the following that is applicable:
Last 10 changes on this page:
[2023-11-17 08:43] Andrew Comer:
Updated Progression and Win Condition Guidelines (markdown)[2023-11-17 08:19] The Mystical One:
Added details on how to apply types to the achievements.[2023-11-06 17:25] Andrew Comer:
More formatting fixes[2023-11-06 17:20] Andrew Comer:
Formatting fixes[2023-11-05 16:36] Andrew Comer:
Remove duplicate bullet points[2023-11-03 14:34] Etron:
Added game links to each example[2023-11-03 08:05] The Mystical One:
Initial Creation based on Progression Typing DraftLast 10 changes on this page:
[2023-11-17 08:43] Andrew Comer:
Updated Progression and Win Condition Guidelines (markdown)[2023-11-17 08:19] The Mystical One:
Added details on how to apply types to the achievements.[2023-11-06 17:25] Andrew Comer:
More formatting fixes[2023-11-06 17:20] Andrew Comer:
Formatting fixes[2023-11-05 16:36] Andrew Comer:
Remove duplicate bullet points[2023-11-03 14:34] Etron:
Added game links to each example[2023-11-03 08:05] The Mystical One:
Initial Creation based on Progression Typing DraftLogging things to be mentioned in the next \"year in review\" article.
"},{"location":"RA-In-Review/#2021","title":"2021","text":""},{"location":"RA-In-Review/#january","title":"January","text":"Developer: RetroS3xual \ud83d\udce5 Download \ud83c\udfa5 Tutorial
Custom Layout: YES Game Information: YES User Information: YES Maintained: YES
"},{"location":"RA-Trackers/#retreon","title":"Retreon","text":"Developer: glacia \ud83d\udce5 Download
Custom Layout: YES Game Information: YES User Information: NO Maintained: NO
"},{"location":"RA-Trackers/#missing-tracker","title":"Missing Tracker","text":"If you have made or use a tracker which is not listed here you can contact the moderation team on the RetroAchievements Discord Server or send a private message to RAdmin including the name of the tracker and the creator of it.
"},{"location":"RABot%2C-the-RA-Discord-Robot/","title":"RABot, the RA Discord Robot","text":"RABot is the the official RetroAchievements Discord robot. Therefore, to interact with him, you need to be a member of the RA Discord server.
RABot has many cool and useful commands and in this page you'll see some examples of how some of them can be used.
RABot is powered by JavaScript, Node.js, discord.js and Commando.
Special thanks: the DragonFire's Xiao bot is a great source of inspiration for many of the cool commands we have in RABot, like !bulbapedia
, !manga
, !translate
, !define
and others.
!help
","text":"This command makes the RABot send a DM with the list of commands available.
If you need help about a specific command use !help command_name
.
!docs
","text":"Provide links to RetroAchievements documentation.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#rarch","title":"!rarch
","text":"Provide basic info about RetroArch.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#rules","title":"!rules
","text":"Show the rules, or a specific one.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#about","title":"!about
","text":"Show info about the RABot.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#panic","title":"!panic
","text":"What to do when the site is down.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#creating-polls","title":"Creating polls","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#poll","title":"!poll
","text":"Creates a simple poll. People can vote adding reactions, but they can also vote with unlisted reactions. See !tpoll
if you are interested in a more advanced and serious poll.
!tpoll
","text":"Creates a timed poll. In this kind of poll only the first reaction is considered a vote, and if people react with an unlisted reaction then the vote is voided.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#dealing-with-numbers","title":"Dealing with numbers","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#hex","title":"!hex
","text":"Converts a non-negative integer from decimal (or binary) to hexadecimal (or vice-versa).
"},{"location":"RABot%2C-the-RA-Discord-Robot/#bin","title":"!bin
","text":"Converts a non-negative integer from decimal (or hexadecimal) to binary (or vice-versa).
"},{"location":"RABot%2C-the-RA-Discord-Robot/#calculator","title":"!calculator
","text":"Alias: !calc
Evaluates the given math expression and responds with the result.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#getting-retroachievementsorg-infolinks","title":"Getting RetroAchievements.org info/links","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#ragame","title":"!ragame
","text":"Alias: !game
Google for a game at RetroAchievements.org and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#tickets","title":"!tickets
","text":"Return the URL for the open tickets page of the given game name.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#whatgame","title":"!whatgame
","text":"Alias: !wg
Responds with a random game that has achievements.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#whatcheevo","title":"!whatcheevo
","text":"Responds with a random achievement.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#random-facts","title":"Random facts","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#funfact","title":"!funfact
","text":"Responds with a retrogaming fun fact.
Note: you can suggest more fun fact entries here.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#memefact","title":"!memefact
","text":"Alias: !meme
Responds with a RetroAchievements meme fact.
Note: you can suggest more meme fact entries here, but keep these 2 simple rules in mind 1) you can't suggest your own quote; and 2) when suggesting a quote, be sure to get an approval from the author and/or the person being mentioned.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#getting-gaming-related-info","title":"Getting gaming related info","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#gamefaqs","title":"!gamefaqs
","text":"Aliases: !gamefaq
, !gfaq
Google for a game at GameFAQs and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#longplay","title":"!longplay
","text":"Aliases: !lplay
, !lp
Search for a longplay video on youtube and post the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#vgmaps","title":"!vgmaps
","text":"Alias: !vgmap
Searches vgmaps.com for a video game's map.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#howlongtobeat","title":"!howlongtobeat
","text":"Alias: !hltb
Google for a game at howlongtobeat.com and show the link.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#miscellaneous","title":"Miscellaneous","text":""},{"location":"RABot%2C-the-RA-Discord-Robot/#define","title":"!define
","text":"Aliases: !dictionary
, !dict
Defines a word.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#translate","title":"!translate
","text":"Alias: !tr
Translates text to a specific language. Powered by https://translate.yandex.com/
"},{"location":"RABot%2C-the-RA-Discord-Robot/#urban","title":"!urban
","text":"Defines a word, but with Urban Dictionary.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#wikipedia","title":"!wikipedia
","text":"Alias: !wp
Searches Wikipedia for your query.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#youtube","title":"!youtube
","text":"Alias: !yt
Search for a video on youtube and post the first one found.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#bulbapedia","title":"!bulbapedia
","text":"Searches Bulbapedia for your query.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#movie","title":"!movie
","text":"Searches TMDB for your query, getting movie results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#manga","title":"!manga
","text":"Searches AniList for your query, getting manga results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#anime","title":"!anime
","text":"Searches AniList for your query, getting anime results.
"},{"location":"RABot%2C-the-RA-Discord-Robot/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-01-16 03:48] meleu:
Akinator is :ded:[2019-11-17 22:11] meleu:
akinator command is ded[2019-02-16 13:12] meleu:
remove faq[2019-02-14 11:15] meleu:
typo[2019-01-17 22:36] meleu:
added some aliases[2019-01-17 11:11] meleu:
fixed caps in the page's title!! This page is wildly out-of-date
RALibretro is a multi-emulator that can be used to develop RetroAchievements.
The \"multi-emulation\" feature is only possible because it uses libretro cores to do the actual emulation. What RALibretro does is to connect the emulation to the tools used to create RetroAchievements.
"},{"location":"RALibretro/#warning","title":"WARNING","text":"RALibretro is a Work-in-Progress!!!
Currently the development is going on this repo: https://github.com/RetroAchievements/RALibretro
Here's a list of known issues (feel free to report new issues if you find one): https://github.com/RetroAchievements/RALibretro/issues
"},{"location":"RALibretro/#installation-instructions","title":"Installation Instructions","text":"Just download RALibretro from the Downloads page and unzip it.
"},{"location":"RALibretro/#basic-usage","title":"Basic Usage","text":"File
> Load System
, and click on the system you want to emulateFile
> Load Game
and choose your ROM. Note: RALibretro currently doesn't accept zipped files!NOTE: some systems may require system (BIOS) files in the System
directory in order to load games correctly.
Here is a list of the systems supported currently:
neogeo.zip
BIOS file on the same directory as the ROMs.Note: the buttons for CPS1/2/3 games vary for each game.
"},{"location":"RALibretro/#keyboard-shortcuts","title":"Keyboard Shortcuts","text":"Esc
p
;
(automatically pauses emulation)=
-
(minus signal)PrintScreen
Backspace
F11
F1
, F2
, ..., F9
, F10
shift
+F1
, shift
+F2
, ..., shift
+F9
, shift
+F10
shift
+-
shift
++
0
, 1
, 2
,..., 9
To make AES BIOS emulation mode work in your emulator:
Make sure your emulator works correctly.
Put neogeo.zip
to System
directory (RALibretro), or a folder you keep your NeoGeo ROMs (RetroArch).
Make sure the neogeo.zip
consist of at least files you can see here:
If you keep only those files, AES mode will be automatically forced for any NeoGeo game (recommended).
Important! The files which are highlighted on this picture (neo-epo.bin
and neo-po.bin
) are the only one actually related to AES mode, and you probably will need to include them in your archive to make AES mode work for you. neo-po.bin
is necessary for japanese-only titles or to make the japanese versions to work, but due to emulation issue it also forces japanese language as default, that's why you will need to remove it to display english in some games.
In RaLibretro: Settings->Emulation->Force Neo Geo Mode->AES
In RetroArch: Command->Menu Toggle->Options->Force Neo Geo Mode->AES
"},{"location":"RATools/","title":"RATools","text":""},{"location":"RATools/#about-ratools","title":"About RATools","text":"RATools is a standalone executable designed to assist developers of the retroachievements.org community. It's primary purpose is to provide a scripting language for achievement development.
The user Etron writes an ongoing series of RATools tutorials, which appear in RANews each month.
Many achievement developers' RAScripts are publicly available and are a great resource in becoming more familiar with it: - AlmightyXor - AuburnRDM - Bartis1989 - BenGhazi - Bilalscape12 - Bryan1150 - Etron - FRAN269 - gde - Guinea - Jamiras - lordpsycho - meleu - pinguupinguu - Searo - Sines - SlashTangent - Snow - soopercool101 - suXin - televandalist - theanxietybuster - tomojin - WCopeland - wolfman2000 - zxmega
"},{"location":"RATools/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-09 07:03] televandalist:
Updated RATools (markdown)[2023-06-05 22:55] televandalist:
Created RATools (markdown)Uno de los mejores m\u00e9todos para aprender es ver ejemplos reales. En esta secci\u00f3n vamos a ver profundamente varios logros y vamos a desglosar la l\u00f3gica detr\u00e1s de cada uno de ellos.
- Utilizar Hit Counts como un Temporizador - Utilizando Valores Delta y Hit Counts para detectar un Incremento - Simple Ejemplo de Como Evadir el Abuso de Estados de Guardado (Load State) - Evitar el Problema de que un Contador Incremente Dos Veces en el mismo Frame - Creando un Temporizador con Hits de un ResetIf en base a la velocidad de un Juego
"},{"location":"Real-Examples-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-16 15:37] meleu:
fix broken links[2019-04-16 11:13] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Real Examples
Um dos melhores recursos de aprendizagem est\u00e1 em analisar alguns exemplos reais. Nesta se\u00e7\u00e3o, analisaremos profundamente alguns achievements e quebraremos a l\u00f3gica por tr\u00e1s deles.
- Usando Hit Counts e ResetIf - Usando Delta Values e ResetIf - Exemplo Simples de Como Evitar o abuso de Load State
"},{"location":"Real-Examples-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2018-03-25 12:04] KingDice001:
Updated Real Examples pt_BR (markdown)[2018-03-25 11:47] KingDice001:
Updated Real Examples pt_BR (markdown)[2018-03-23 22:16] meleu:
Updated Real Examples pt_BR (markdown)[2018-03-23 01:20] meleu:
Updated Real Examples.pt_BR (markdown)One of the best learning resource is looking at some real examples. In this section we will look deep into some achievements and break down the logic behind them. - Using Hit Counts as a Timer - Using Delta Values and Hit Counts to Detect an Increment - Circumvent the Problem of a Counter Incrementing Twice in the Same Frame - Creating a Timer with Reset If Hits based on the Speed of the Game - Using Add Source and Deltas for Collectibles and Similar Achievements
"},{"location":"Real-Examples/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-09-27 15:42] televandalist:
Updated Real Examples (markdown)[2022-02-07 09:42] televandalist:
Corrected typo (wil -> will) - Removed link to the save state abuse example since it doesn't exist[2021-04-27 01:34] televandalist:
ToC fix[2021-01-10 08:33] televandalist:
Added link to Add Source/Delta example[2019-02-18 16:51] meleu:
fix broken links[2018-08-31 21:36] meleu:
Updated Real Examples (markdown)[2018-09-01 01:26] magusLOGS:
Updated Real Examples (markdown)[2018-01-29 10:20] meleu:
added links to the examples[2018-01-29 10:17] meleu:
this page is just a disclaimer, the real examples now have each one its own page[2017-12-11 10:23] meleu:
Updated Real Examples (markdown)If you would like to add support for another region (e.g. adding support for a European ROM when the set was made with the USA ROM) to a set, please note the following: * For the majority of consoles, PAL-region games run at 50hz whereas NTSC runs at 60hz. Without a 60Hz patch, some achievements could be easier to obtain due to the decreased frame-rate. This is especially important for achievements that use frames-as-time in their logic and for leaderboards in general. * Some regions have different cheats. There are many cases where cheat codes were altered or removed upon localization. These should be accounted for. * If there are enough differences between versions, an entirely separate set might be the best option. For more information on this, please see localization differences.
"},{"location":"Reporting-a-Broken-Achievement/","title":"Reporting Broken Achievements","text":"To report a broken achievement, go to the achievement's page. Directly under the players won statistic, you'll see a link reading \"Report an issue for this achievement.\" Click that link to take you to the \"Report Broken Achievement\" form
"},{"location":"Reporting-a-Broken-Achievement/#report-broken-achievement-form","title":"Report Broken Achievement Form","text":"When reporting a broken achievement, please fill out all the fields to the best of your ability. The more information we have on the issue, the better our chances of figuring out what went wrong.
"},{"location":"Reporting-a-Broken-Achievement/#issue","title":"Issue","text":"Select either \"Triggered at wrong time\" or \"Doesn't trigger.\" These are the only two valid reasons for submitting a ticket. If you have criticisms about an achievement, you can post those in the comments. Please Note: If you're submitting a manual unlock request for a network error, there's no need to file a ticket at all. Message RAdmin or post your request in the #Manual-Unlocks channel of our discord, specify that it was a network error and no actual problem with the achievement and we will take care of it for you.
Triggered at wrong time: Select this option if an achievement popped at a time when it shouldn't have.
Doesn't trigger: Select this option if you completed the requirements listed in the description but the achievement didn't trigger.
"},{"location":"Reporting-a-Broken-Achievement/#emulator","title":"Emulator","text":"Select the emulator used in this drop-down menu. If using RetroArch or RALibRetro please also include information about the core used while playing. Checksum: Select your game's checksum here. \"But I don know dis.\" It's very simple. The checksum is like your game's signature. It's how the emulator determines what game and what version of the game you're using. When you have it, you should find it on this drop-down menu. This can be extremely important when looking into a problem so please always try to include this information.
To find your Checksum in RetroArch: Go to the Quick Menu, and scroll down to \"Information.\" Under Information, you should see a line reading \"RetroAchievements Hash.\" That long list of numbers and letters you see is your Checksum.
To find your Checksum in RALibRetro or other RA standalone emulators: Under the \"RetroAchievements\" menu, the very last item on the list is \"Get ROM Checksum.\" Simply click that and it will spit it out at you clear as day.
"},{"location":"Reporting-a-Broken-Achievement/#description","title":"Description","text":"This is the most important field of all. Tell us what happened in as much detail as you possibly can. The less information provided here, the more difficult it is for us to figure out what went wrong. Even details that might seem insignificant to you could be very significant to us. The more you can tell us, the better our chances of being able to figure out why it happened. In other words, \"Dis no werk!\" isn't much help to us in figuring out what the problem was.
"},{"location":"ResetIf-Flag-es/","title":"Bandera ResetIf","text":"Un ResetIf
(ResetearSi) puede ser elegido en la columna de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Si la condicion asociada es verdad, todos los hit counts en el logro se van a resetear a 0. Esto incluye hit counts en otros grupos (mas sobre eso en Alt Groups (Grupos Alternos) mas abajo).
El logro no se va a disparar si uno o mas condiciones ResetIf
son verdaderas, incluse si no hay condiciones que necesitan hit counts (contadores de golpes).
Puedes encontrar muchos ejemplos de ResetIf
en la pagina de Ejemplos Reales.
ResetIf
con hit counts","text":"Una condicion Reset If
con un contador de golpes (hit count) solo se va a cumplir cuando el numero de hits necesarios se cumpla.
Nota: Si otra condicion ResetIf
se cumple, todas las condiciones, incluido el ResetIf
con su hit count se van a reinisiar sus contadores de golpes (hit count) a 0.
Es muy comun utilizar una condicion con un hit count de 1 como proceso para empezar a hacer un logro, y utilizar un ResetIf
para cancel el logro antes de la condicion se cumpla. Un ejemplo comun es un logro sin recivir da\u00f1o: \"Desde el principio de el (nivel/combate), resetear si sea recivido da\u00f1o, que salte el logro al final de el (nivel/combate)\". Cuando la condicion para empezar el nivel es verdadera, un hit count es capturado. Si aun sigue capturado cuando la condicion del final es verdadera, el logro va a saltar. Si la condicion del ResetIf
se dispara, el hit count en la condicion de empezar se va a regresar a zero, lo cual hace la condicion falsa cuando quiera evaluar si ya se cumplio la condicion final, y el logro no va a saltar.
Last 10 changes on this page:
[2019-04-16 15:29] meleu:
fix broken links[2019-03-12 15:00] meleu:
Updated ResetIf Flag ES (markdown)The ResetIf
can be chosen in the Flag column of the Achievement Editor
If the associated condition is true, all hit counts in the achievement will be reset to 0. This includes hit counts in other groups (more about it in Alt Groups below).
The achievement will not trigger if one or more ResetIf
conditions is true, even if there are no conditions with hit count targets.
You can see many examples of ResetIf
in the Real Examples page.
ResetIf
with hit counts","text":"A Reset If
condition with a hit count will only trigger when the hit count target is met.
Note: If another ResetIf
condition is met, all conditions, including the ResetIf
with the hit count will have their hit counts reset to 0.
It is very common to use a condition with a hit count of 1 as a start marker for an achievement, and use a ResetIf
to cancel the achievement before the end condition is met. A common example is a damageless achievement: \"From start of (level/battle), reset if damage taken, trigger at end of (level/battle)\". When the start condition is true, a hit count is captured. If it's still set when the end condition is true, the achievement triggers. If the ResetIf
condition triggers, the hit count on the start condition is set back to zero, which makes the condition false when evaluating the state when the end condition is true, and the achievement will not trigger.
Last 10 changes on this page:
[2019-02-12 13:11] meleu:
fix broken links[2019-02-12 09:36] meleu:
Updated ResetIf (markdown)The ResetNextIf
Flag is a special version of the [[ResetIf Flag]] that only resets the hit count of the following condition.
ResetNextIf
has the same priority as the condition that it's attached to. If followed by a PauseIf
, it can be used to reset that specific PauseIf
without needing an alt. If attached to a standard condition, it will not be processed if the achievement is paused.
AddAddress
, AddSource
, and SubSource
are combining modifier conditions and are not considered as the following condition. The ResetNextIf
will apply to the next non-modified condition.
AndNext
and OrNext
are combining logical conditions and will have their hit counts reset, as well as whatever condition follows them.
All other condition flags, including AddHits
and SubHits
, will cause processing of the ResetNextIf
behavior to stop.
Last 10 changes on this page:
[2021-08-12 10:28] Jamiras:
Updated ResetNextIf Flag (markdown)[2021-04-30 12:21] Jamiras:
Created ResetNextIf Flag (markdown)Este es el Manifiesto de RetroAchievements del cual todo miembro de la comunidad deber\u00eda ser consciente
Desde los primeros d\u00edas de RetroAchievements, esto es lo que tenemos en nuestro FAQ como la respuesta de \u00bfQue es RetroAchievements.org?
RetroAchievements.org es una comunidad sin animo de lucros que colabora y compite para ganar logros personalizados en juegos cl\u00e1sicos a trav\u00e9s de la emulaci\u00f3n. Los logros son hechos por y para la comunidad. (...)
En este manifiesto exploraremos esa respuesta de manera mas profunda.
"},{"location":"RetroAchievements-Manifesto-es/#retroachievements-es-una-comunidad-sin-animo-de-lucro","title":"RetroAchievements es una comunidad sin animo de lucro.","text":"Tenemos un enlace de donaciones en la pagina principal pero aun seguimos siendo una una comunidad sin animo de lucro.
Nuestros patrocinadores contribuyen con literalmente un dolar al mes, y afortunadamente tenemos suficiente para pagar el servidor sin necesitar anuncios molestos
Sin embargo, queremos dejar bien claro que obtener donaciones no es nuestro modelo de negocios, exactamente debido a que \u00a1RetroAchievements no es un negocio!
Organizaciones de negocios esperan ansiosamente la llegada de nuevos clientes. Siempre hacen todo lo posible por complacer a la clientela para seguir obteniendo mas y mas. Pero ac\u00e1, en RetroAchievements, no somos un negocio, Somos una comunidad.
No tenemos clientes, tenemos miembros de la comunidad.
Somos un grupo de personas apasionadas a los juegos retro. Y si compartes nuestra misma pasi\u00f3n, eres bienvenido a un\u00edrtenos.
E incluso aunque recibamos a todos, no estamos rogando desesperadamente por la llegada de mas y mas usuarios. La decisi\u00f3n es tuya: Si te gusta lo que ofrecemos \u00a1Toma tu control y juguemos algunos cl\u00e1sicos!
"},{"location":"RetroAchievements-Manifesto-es/#los-logros-son-hechos-por-y-para-la-comunidad","title":"Los logros son hechos por y para la comunidad.","text":"Esta relacionado con lo que dijimos mas arriba. No ofrecemos servicios a forasteros. Las cosas que creamos en esta comunidad son hechas para la misma. Eres bienvenido a permanecer con nosotros, pero va de tu parte decidir si quieres ser parte de ella.
Mientras seas parte de esta comunidad, siempre ten en mente las siguientes declaraciones:
1. Lo mas importante que tenemos son los logros.
2. Las personas mas importantes que tenemos son los creadores de logros.
\u00bfQue significa esto?
"},{"location":"RetroAchievements-Manifesto-es/#lo-mas-importante-que-tenemos-son-los-logros","title":"Lo mas importante que tenemos son los logros.","text":"A todos nos encantan las medallas en nuestro perfil, \u00bfno? Tanto as\u00ed que causa frustraci\u00f3n cuando el set de respectiva medalla obtiene una revisi\u00f3n. Pero es importante tener en mente que este proyecto siempre esta evolucionando.
Hacemos revisiones de sets de logros con la calidad en mente, y para demostrar que respetamos el juego. Tambi\u00e9n respetamos los premios que has obtenido, pero mejorar la calidad general del proyecto toma precedencia sobre perfiles individuales y/o la cantidad de puntos.
Otra cosa, sino eres capaz de hacerle \"mastered\" a un set de logros, eso no autom\u00e1ticamente significa que el set necesita ser hecho mas f\u00e1cil/degradado/convertirse en bonus. Si otros jugadores lo han obtenido, es muy probable que tu tambi\u00e9n puedas. Pero incluso si no puedes, no pasa nada. No necesitas desbloquear todos los logros para divertirte con juegos antiguos
Si aun as\u00ed piensas que alg\u00fan logro en el set tiene conceptos no bienvenidos, puedes hacer un post de tus argumentos en el foro del juego en cuesti\u00f3n. Simplemente aseg\u00farate de ser respetuoso. Lo que nos lleva al siguiente punto...
"},{"location":"RetroAchievements-Manifesto-es/#las-personas-mas-importantes-que-tenemos-son-los-creadores-de-logros","title":"Las personas mas importantes que tenemos son los creadores de logros.","text":"\u00a1No se malentienda! En el ecosistema de RetroAchievements hay muchas personas cumpliendo una buena cantidad de roles diferentes a crear logros, y todos son importantes. Pero los creadores de logros son el pilar de este proyecto. Sin ellos, este seria solamente un sitio web jugando a ser anticuado con un manojo de \"bugs\".
Crear logros es un proceso que toma mucho tiempo. Las personas que lo hacen dedican una muy buena parte de su tiempo libre para producir contenido beneficioso para toda la comunidad
A todas estas, incluso si no eres capaz/estas interesado en crear logros y solamente quieres jugar, tambi\u00e9n eres importante para nosotros. De hecho tenemos una cantidad incontable de jugadores que son miembros invaluables
Mientras mas involucrado est\u00e9s, mas valioso eres para la comunidad.
Por ultimo pero no menos importante, si tienes criticas hacia el trabajo de un creador de logros, se respetuoso. Demostrar amargura hacia ellos esta muy mal visto. Ser irrespetuoso hacia ellos har\u00e1 que definitivamente no seas bienvenido aqu\u00ed.
"},{"location":"RetroAchievements-Manifesto-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-09-20 18:35] meleu:
estan -> son[2020-09-16 12:36] meleu:
cambiando un poquito[2020-09-11 02:49] Pelouch:
Updated RetroAchievements Manifesto es (markdown)[2020-09-11 02:43] Pelouch:
Updated RetroAchievements Manifesto es (markdown)[2020-09-10 04:24] meleu:
Created RetroAchievements Manifesto es (markdown)Ceci est le manifeste de Retroachievements. Chaque membre de cette communaut\u00e9 devrait en prendre connaissance.
Depuis les premiers jours de RetroAchievements, la r\u00e9ponse \u00e0 la question de ce qu\u2019est Retroachievements.org se trouve dans notre FAQ.
RetroAchievements.org est une communaut\u00e9 \u00e0 but non lucratif qui promeut le travail collaboratif et l\u2019esprit de comp\u00e9tition dans le but d\u2019obtenir des succ\u00e8s faits soi-m\u00eame via la sc\u00e8ne de l\u2019\u00e9mulation. Les succ\u00e8s sont cr\u00e9\u00e9s pour et par la communaut\u00e9. (\u2026)
\u00c0 travers ce manifeste, nous allons r\u00e9pondre de mani\u00e8re plus pr\u00e9cise \u00e0 cette question.
"},{"location":"RetroAchievements-Manifesto-fr/#retroachievementsorg-est-une-communaute-a-but-non-lucratif","title":"RetroAchievements.org est une communaut\u00e9 \u00e0 but non lucratif.","text":"Nous disposons d'un syst\u00e8me de donations sur la page principal du site, mais nous restons avant tout une communaut\u00e9 \u00e0 but non lucratif.
Les m\u00e9c\u00e8nes participent \u00e0 hauteur d\u2019un seul et unique dollar par mois et heureusement, nous en avons suffisamment pour payer les serveurs sans avoir besoin de mettre en place un syst\u00e8me p\u00e9nible de publicit\u00e9s.
Cependant, nous voulons \u00eatre clair sur un point. Recevoir des donations n\u2019est pas notre business model, justement car RetroAchievements n\u2019est pas un business !
Une entreprise commerciale est toujours d\u00e9sireuse de capter toujours plus de clients. Elle fait le maximum pour les satisfaire pour en ramener toujours plus. Mais ici, chez RetroAchievements, nous ne sommes pas une entreprise, nous sommes une communaut\u00e9.
Nous n\u2019avons pas de clients, nous sommes les membres d\u2019une communaut\u00e9.
Nous sommes tout un tas de passionn\u00e9s de jeux vid\u00e9o r\u00e9tro. Et si vous partagez cette m\u00eame passion, alors vous \u00eates plus que le bienvenu pour nous rejoindre.
Bien que nous accueillions quiconque le souhaite, nous ne courrons pas d\u00e9sesp\u00e9r\u00e9ment apr\u00e8s de nouveaux membres. C\u2019est \u00e0 votre demande : si vous aimez ce que nous avons \u00e0 offrir, attrapez votre manette et jouez \u00e0 des classiques !
"},{"location":"RetroAchievements-Manifesto-fr/#les-succes-sont-faits-par-et-pour-la-communaute","title":"Les succ\u00e8s sont faits par et pour la communaut\u00e9.","text":"Tout ceci pour dire que nous ne sommes pas l\u00e0 pour offrir un service \u00e0 des tiers. Les choses que nous cr\u00e9ons au sein de cette communaut\u00e9 ne concernent que cette communaut\u00e9. Vous \u00eates le bienvenu, mais c\u2019est \u00e0 vous de d\u00e9cider d\u2019en faire partie.
Et tant que nous parlons de communaut\u00e9, gardez \u00e0 l\u2019esprit ces quelques points :
La chose la plus importante ici sont les succ\u00e8s.
Les personnes les plus importantes sont les cr\u00e9ateurs de succ\u00e8s.
Qu\u2019est-ce que cela signifie ?
"},{"location":"RetroAchievements-Manifesto-fr/#la-chose-la-plus-importante-ici-sont-les-succes","title":"La chose la plus importante ici sont les succ\u00e8s.","text":"Nous adorons tous ces badges sur notre profil, non ? Un tel attachement peut engendrer parfois de la frustration lorsqu\u2019une modification est apport\u00e9e \u00e0 une s\u00e9rie de succ\u00e8s. Mais il est important de garder \u00e0 l\u2019esprit que ce projet est en constante \u00e9volution.
Nous apportons des modifications aux s\u00e9ries de succ\u00e8s avec un objectif de qualit\u00e9 et pour faire preuve de respect envers le jeu. Nous respectons \u00e9galement les r\u00e9compenses que vous avez obtenues, mais am\u00e9liorer la qualit\u00e9 globale du projet prend le pas sur les profils individuels et ou le total de points de chacun.
\u00c9galement, si vous ne ma\u00eetrisez pas une s\u00e9rie de succ\u00e8s, cela ne veut pas forc\u00e9ment dire que le niveau de difficult\u00e9 doit \u00eatre abaiss\u00e9 ou les succ\u00e8s retir\u00e9s ou bascul\u00e9s dans une s\u00e9rie bonus. Si d\u2019autres joueurs sont capables de les avoir, il est probable que vous le puissiez aussi. Mais si ce n\u2019est pas le cas, ce n\u2019est pas grave non plus. Il n\u2019est pas n\u00e9cessaire de d\u00e9bloquer tous les succ\u00e8s existants pour prendre du plaisir avec les jeux r\u00e9tro.
Si vous pensez tout de m\u00eame qu\u2019un succ\u00e8s rel\u00e8ve d\u2019un concept qui n\u2019est pas le bienvenu, vous pouvez poster vos arguments sur le forum d\u00e9di\u00e9 \u00e0 ce jeu. Faites simplement preuve de respect dans votre formulation. Ce qui nous am\u00e8ne au prochain point\u2026
"},{"location":"RetroAchievements-Manifesto-fr/#les-personnes-les-plus-importantes-sont-les-createurs-de-succes","title":"Les personnes les plus importantes sont les cr\u00e9ateurs de succ\u00e8s.","text":"Ne vous trompez pas ! L\u2019\u00e9cosyst\u00e8me Retroachievements dispose de beaucoup de gens, jouant chacun des r\u00f4les diff\u00e9rents du cr\u00e9ateur de succ\u00e8s, et ils sont tous aussi importants. Mais le cr\u00e9ateur de succ\u00e8s est l\u2019\u00e9pine dorsale du projet. Sans lui, il s\u2019agit juste d\u2019un site Internet archa\u00efque et plein de bugs.
Cr\u00e9er des succ\u00e8s est une activit\u00e9 extr\u00eamement chronophage. Les personnes qui s\u2019en occupent, consacrent une part non n\u00e9gligeable de leur temps libre \u00e0 produire du contenu au b\u00e9n\u00e9fice de la communaut\u00e9 tout enti\u00e8re.
Quoi qu\u2019il en soit, m\u00eame si vous n\u2019\u00eates pas capable/int\u00e9ress\u00e9 par la cr\u00e9ation de succ\u00e8s et souhaitez juste jouer, vous \u00eates tout aussi important \u00e0 nos yeux. En fait, de nombreux simples joueurs sont de pr\u00e9cieux membres de notre communaut\u00e9. Le point important ici \u00e9tant d\u2019\u00eatre impliqu\u00e9 et agr\u00e9able.
Plus vous vous impliquerez, plus vous serez pr\u00e9cieux aux yeux de la communaut\u00e9.
Enfin et surtout, si vous deviez \u00e9mettre des critiques \u00e0 l\u2019\u00e9gard du travail d\u2019un cr\u00e9ateur, faites-le dans le respect. \u00catre acerbe avec eux est tr\u00e8s mal vu. Manquez-leur de respect et vous ne serez d\u00e9finitivement plus le bienvenu.
"},{"location":"RetroAchievements-Manifesto-pl/","title":"RetroAchievements Manifesto pl","text":"To jest Or\u0119dzie RetroAchievements, kt\u00f3re ka\u017cdy cz\u0142onek spo\u0142eczno\u015bci powinien zna\u0107
Od pocz\u0105tku istnienia RetroAchievements to jest nasza odpowied\u017a z FAQ na temat Czym jest RetroAchievements.org?
RetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit, kt\u00f3ra wsp\u00f3\u0142pracuje i rywalizuje \u017ceby zyska\u0107 w\u0142asne osi\u0105gni\u0119cia do klasycznych gier poprzez emulacje, osi\u0105gni\u0119cia s\u0105 tworzone przez i dla spo\u0142eczno\u015bci. (...)
W tym Or\u0119dziu zobaczymy w g\u0142\u0105b tej odpowiedzi
"},{"location":"RetroAchievements-Manifesto-pl/#retroachievementsorg-jest-spoecznoscia-non-profit","title":"RetroAchievements.org jest spo\u0142eczno\u015bci\u0105 non-profit","text":"Mamy link do dotacji na stronie g\u0142\u00f3wnej, lecz ci\u0105gle jeste\u015bmy spo\u0142eczno\u015bci\u0105 non-profit
Patroni daj\u0105 dos\u0142ownie jednego dolara miesi\u0119cznie, a na szcz\u0119\u015bcie mamy wystarczaj\u0105co patron\u00f3w aby op\u0142aci\u0107 serwer bez polegania na irytuj\u0105cych reklamach
Lecz, chcemy aby to by\u0142o oczywiste, \u017ce zdobywanie dotacji to nie nasz model biznesowy, poniewa\u017c RetroAchievements.org to nie jest biznes!
Organizacje s\u0105 zawsze ch\u0119tne zyska\u0107 nowych klient\u00f3w. Robi\u0105 co chc\u0105 aby zadowoli\u0107 klienta, aby zyskiwa\u0107 ich wi\u0119cej i wi\u0119cej, lecz tu na RetroAchievements nie jeste\u015bmy organizacj\u0105, My jeste\u015bmy spo\u0142eczno\u015bci\u0105.
My nie mamy klient\u00f3w, my mamy cz\u0142onk\u00f3w spo\u0142eczno\u015bci.
Jeste\u015bmy grupk\u0105 ludzi z pasj\u0105 to gier retro. Je\u015bli masz tak\u0105 sam\u0105 pasj\u0119, ciep\u0142o cie przywitamy.
Mimo i\u017c przyjmujemy wszystkich, nie b\u0142agamy desperacko o nowych u\u017cytkownik\u00f3w. To tw\u00f3j wyb\u00f3r, je\u017celi podoba ci si\u0119 oferta kt\u00f3r\u0105 mamy, chwy\u0107 za pada i zagrajmy w klasyki!
"},{"location":"RetroAchievements-Manifesto-pl/#osiagniecia-stworzone-sa-przez-i-dla-spoecznosci","title":"Osi\u0105gni\u0119cia stworzone s\u0105 przez i dla spo\u0142eczno\u015bci.","text":"To jest powi\u0105zane z tym to by\u0142o podane powy\u017cej. Nie oferujemy us\u0142ugi dla os\u00f3b z zewn\u0105trz. Rzeczy kt\u00f3re tworzymy w tej spo\u0142eczno\u015bci nale\u017c\u0105 do tej samej spo\u0142eczno\u015bci. Mo\u017cesz z nami zosta\u0107, ale to tw\u00f3j wyb\u00f3r, czy chcesz by\u0107 jej cz\u0119\u015bci\u0105.
Podczas bycia cz\u0119\u015bci\u0105 tej spo\u0142eczno\u015bci, pami\u0119taj poni\u017csze o\u015bwiadczenia:
1. Najwa\u017cniejsz\u0105 rzecz\u0105 jak\u0105 tu mamy s\u0105 osi\u0105gni\u0119cia.
2. Najwa\u017cniejszymi osobami s\u0105 tw\u00f3rcy osi\u0105gni\u0119\u0107.
Co to znaczy?
"},{"location":"RetroAchievements-Manifesto-pl/#najwazniejsza-rzecza-jaka-tu-mamy-sa-osiagniecia","title":"Najwa\u017cniejsz\u0105 rzecz\u0105 jak\u0105 tu mamy s\u0105 osi\u0105gni\u0119cia.","text":"Wszyscy kochamy te odznaki na naszej stronie profilowej, racja? Te przywi\u0105zanie do odznaki czasem powoduje irytacje kiedy szczeg\u00f3lny zestaw osi\u0105gni\u0119\u0107 przejdzie przez rewizje. Wa\u017cne jest pami\u0119ta\u0107 \u017ce ten projekt ci\u0105gle ewoluuje.
Robimy Rewizje do zestaw\u00f3w osi\u0105gni\u0119\u0107 z my\u015bl\u0105 o jako\u015bci, i \u017ceby odda\u0107 szacunek grze. Szanujemy r\u00f3wnie\u017c nagrody kt\u00f3re posiadasz, lecz polepszanie jako\u015bci projektu jest wa\u017cniejsze od naszych stron profilowych lub liczby punkt\u00f3w.
R\u00f3wnie\u017c, je\u015bli nie jeste\u015b zdolny opanowa\u0107 zestaw osi\u0105gni\u0119\u0107, to nie znaczy \u017ce automatycznie powinien by\u0107 u\u0142atwiony/zdj\u0119ty/przeniesiony do bonusowego zestawu. Je\u017celi innym graczom si\u0119 uda\u0142o, jest prawdopodobne \u017ce ci si\u0119 te\u017c mo\u017ce uda\u0107. Lecz je\u015bli nie mo\u017cesz, jest okej. Nie musisz odblokowa\u0107 ka\u017cdego osi\u0105gni\u0119cia aby mie\u0107 frajd\u0119 z starych gier.
Je\u017celi ci\u0105gle my\u015blisz \u017ce zestaw osi\u0105gni\u0119\u0107 ma niechciany koncept, mo\u017cesz napisa\u0107 swoje argumenty w temacie gry na forum. Tylko pisz z szacunkiem, co prowadzi nas do kolejnego punktu...
"},{"location":"RetroAchievements-Manifesto-pl/#najwazniejszymi-osobami-sa-tworcy-osiagniec","title":"Najwa\u017cniejszymi osobami s\u0105 tw\u00f3rcy osi\u0105gni\u0119\u0107.","text":"Nie przyjmij tego \u017ale! Ekosystem RetroAchievements ma wiele os\u00f3b, kt\u00f3rzy maj\u0105 inne role ni\u017c tw\u00f3rca osi\u0105gni\u0119\u0107 i s\u0105 oni wszyscy wa\u017cni. lecz tw\u00f3rcy osi\u0105gni\u0119\u0107 s\u0105 podstaw\u0105 tego projektu. Bez nich, to jest tylko stara i zbugowana strona.
Tworzenie osi\u0105gni\u0119\u0107 to proces zajmuj\u0105cy mas\u0119 czasu. Osoby dedykuj\u0105 spor\u0105 cz\u0119\u015b\u0107 swojego wolnego czasu produkuj\u0105c zawarto\u015b\u0107 na korzy\u015b\u0107 ca\u0142ej spo\u0142eczno\u015bci
Nawet je\u015bli nie jeste\u015b zdolny lub nie chcesz tworzy\u0107 osi\u0105gni\u0119\u0107, a chcesz tylko sobie pogra\u0107, jeste\u015b r\u00f3wnie\u017c wa\u017cny dla nas. Mamy wielu graczy kt\u00f3rzy s\u0105 warto\u015bciowymi cz\u0142onkami. Punktem kluczowym jest bycie mi\u0142ym i staranie si\u0119
Tym bardziej si\u0119 przyk\u0142adasz, tym bardziej jeste\u015b warto\u015bciowy dla naszej spo\u0142eczno\u015bci.
Na koniec, je\u015bli masz krytyk\u0119 na temat pracy tw\u00f3rcy osi\u0105gni\u0119\u0107, uszanuj ich. okazywanie rozgoryczenia jest nie mile widziane. Gdy b\u0119dziesz niemi\u0142y wobec nich, za d\u0142ugo tu nie zostaniesz
"},{"location":"RetroAchievements-Manifesto-pt_BR/","title":"O Manifesto RetroAchievements","text":"Este \u00e9 o Manifesto RetroAchievements e todo membro desta comunidade DEVE estar ciente disso.
Desde os prim\u00f3rdios do RetroAchievements, isto \u00e9 o que temos no nosso FAQ como resposta para O que \u00e9 o RetroAchievements.org?
RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos que colabora e compete para ganhar conquistas personalizadas em jogos cl\u00e1ssicos atrav\u00e9s de emula\u00e7\u00e3o. As conquistas s\u00e3o criadas pela e para a comunidade. (...)
Neste manifesto n\u00f3s vamos nos aprofundar nessa resposta.
"},{"location":"RetroAchievements-Manifesto-pt_BR/#retroachievementsorg-e-uma-comunidade-sem-fins-lucrativos","title":"RetroAchievements.org \u00e9 uma comunidade sem fins lucrativos","text":"N\u00f3s temos um link de doa\u00e7\u00f5es na nossa p\u00e1gina principal, mas ainda assim n\u00f3s somos uma comunidade sem fins lucrativos.
Os patronos contribuem com, literalmente, um d\u00f3lar (1 USD) por m\u00eas e, felizmente, n\u00f3s temos patronos suficiente para pagar o servidor sem que precisemos recorrer aos an\u00fancios irritantes.
No entanto, queremos deixar bem claro que obter doa\u00e7\u00f5es n\u00e3o \u00e9 o nosso modelo de neg\u00f3cio pelo exato motivo de que RetroAchievements n\u00e3o \u00e9 um neg\u00f3cio!
Organiza\u00e7\u00f5es de neg\u00f3cios est\u00e3o sempre ansiosas para obter mais e mais clientes. Elas fazem o que elas podem para agradar os clientes e continuar obtendo cada vez mais. Mas aqui, no RetroAchievements, n\u00f3s n\u00e3o somos um neg\u00f3cio, n\u00f3s somos uma comunidade.
N\u00e3o temos clientes, n\u00f3s temos membros da comunidade.
N\u00f3s somos um grupo de pessoas apaixonadas por retrogames. E se voc\u00ea compartilhar da mesma paix\u00e3o, voc\u00ea \u00e9 muito bem vindo a se juntar a n\u00f3s!
Embora estejamos de portas abertas para receber bem qualquer um, n\u00f3s n\u00e3o estamos desesperadamente implorando por mais usu\u00e1rios. Cabe a voc\u00ea decidir: se voc\u00ea gosta do que n\u00f3s temos a oferecer, pegue o seu joystick e vamos jogar alguns cl\u00e1ssicos!
"},{"location":"RetroAchievements-Manifesto-pt_BR/#conquistas-sao-feitas-pela-e-para-a-comunidade","title":"Conquistas s\u00e3o feitas pela e para a comunidade","text":"Isto est\u00e1 relacionada com o que foi dito acima. N\u00f3s n\u00e3o estamos oferecendo um servi\u00e7o para pessoas de fora. As coisas que criamos nesta comunidade s\u00e3o para esta mesma comunidade. Voc\u00ea \u00e9 bem-vindo a ficar com a gente, mas cabe a voc\u00ea decidir se quer ser parte disso.
E enquanto fizer parte desta comunidade, tenha sempre em mente as seguintes afirma\u00e7\u00f5es:
1. A coisa mais importante que n\u00f3s temos aqui s\u00e3o as conquistas.
2. As pessoas mais importantes que n\u00f3s temos aqui s\u00e3o os criadores de conquistas.
E o que isso significa? Abaixo, abordaremos de forma mais detalhada cada conceito e os motivos de serem t\u00e3o fundamentais:
"},{"location":"RetroAchievements-Manifesto-pt_BR/#a-coisa-mais-importante-que-nos-temos-aqui-sao-as-conquistas","title":"A coisa mais importante que n\u00f3s temos aqui s\u00e3o as conquistas","text":"N\u00f3s todos amamos aquelas ins\u00edgnias na nossa p\u00e1gina do perfil, certo? Tal apego aquela ins\u00edgnia, \u00e0s vezes, causa frustra\u00e7\u00e3o quando a respectiva cole\u00e7\u00e3o de conquistas recebe uma revis\u00e3o, mas \u00e9 importante ter em mente que este projeto est\u00e1 constantemente evoluindo.
N\u00f3s fazemos revis\u00f5es nas conquistas tendo em mente a qualidade e para mostrar verdadeiro respeito pelo jogo. Tamb\u00e9m respeitamos os trof\u00e9us que voc\u00ea obteve, mas melhorar a qualidade geral do projeto tem preced\u00eancia sobre nossas p\u00e1ginas de perfil e/ou quantidade de pontos.
Al\u00e9m disso, se voc\u00ea n\u00e3o for capaz de obter todas as conquistas de um jogo, isso n\u00e3o significa automaticamente que elas precis\u00e3o ser suavizadas/removidas/se tornarem conquistas b\u00f4nus. Se outros jogadores obtiveram aquelas conquistas, \u00e9 prov\u00e1vel que voc\u00ea tamb\u00e9m consiga. Contudo, se voc\u00ea n\u00e3o consegue, est\u00e1 tudo bem tamb\u00e9m. Voc\u00ea n\u00e3o precisa desbloquear todas as conquistas para continuar se divertindo com jogos antigos.
Se ainda assim voc\u00ea acha que a cole\u00e7\u00e3o de conquistas possui conceitos indesej\u00e1veis, voc\u00ea pode postar seus argumentos no f\u00f3rum no t\u00f3pico do jogo. Apenas certifique-se de ser respeitoso em suas palavras. O que nos leva ao pr\u00f3ximo ponto...
"},{"location":"RetroAchievements-Manifesto-pt_BR/#as-pessoas-mais-importantes-que-nos-temos-aqui-sao-os-criadores-de-conquistas","title":"As pessoas mais importantes que n\u00f3s temos aqui s\u00e3o os criadores de conquistas","text":"N\u00e3o nos entenda mal! O ecossistema do RetroAchievements tem muitas pessoas executando muitos papeis diferentes de criar conquistas \u2014 e elas s\u00e3o todas importantes. Os criadores de conquistas s\u00e3o a espinha dorsal desse projeto. Sem eles, isso aqui \u00e9 apenas um site bugado e antiquado.
Cria\u00e7\u00e3o de conquistas \u00e9 uma atividade que consome muito tempo. As pessoas que fazem isso dedicam uma grande parte do seu tempo livre produzindo conte\u00fado em prol de toda a comunidade.
De qualquer forma, mesmo que voc\u00ea n\u00e3o consiga ou n\u00e3o esteja interessado em criar conquistas e queira apenas jogar, voc\u00ea tamb\u00e9m \u00e9 importante para n\u00f3s! Na verdade n\u00f3s temos in\u00fameros jogadores que s\u00e3o membros muito valiosos. O ponto-chave aqui \u00e9: envolva-se e seja legal.
Quanto mais voc\u00ea se envolve, mais valioso voc\u00ea \u00e9 para a comunidade.
Por \u00faltimo, mas n\u00e3o menos importante, se voc\u00ea tiver cr\u00edticas sobre o trabalho dos criadores de conquistas, seja respeitoso. Demonstrar hostilidade em rela\u00e7\u00e3o a eles \u00e9 fortemente desaprovado. Seja desrespeitoso com eles e voc\u00ea definitivamente n\u00e3o ser\u00e1 bem-vindo aqui.
"},{"location":"RetroAchievements-Manifesto-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-04-26 08:14] meleu:
fix links[2020-09-16 12:32] meleu:
reverting small changes[2020-09-16 12:29] meleu:
Revert 4f2de8f85aecad218d3d7bb533c9b7eb343de796...c175774b3077e1d3bc3d0e794e126a8febb143ff on RetroAchievements Manifesto pt_BR[2020-09-10 04:12] Alexandre Gadelha:
Movido a se\u00e7\u00e3o 3 como item 4 da se\u00e7\u00e3o 2.[2020-09-10 04:05] Alexandre Gadelha:
Pequena edi\u00e7\u00e3o final[2020-09-10 04:04] Alexandre Gadelha:
Adi\u00e7\u00e3o do item 3 na se\u00e7\u00e3o 2 (Conquistas s\u00e3o feitas pela e para a comunidade). Adi\u00e7\u00e3o da se\u00e7\u00e3o 3. Melhorias quanto a ortografia.[2020-09-10 02:55] Alexandre Gadelha:
Pequenas edi\u00e7\u00f5es[2020-09-10 02:43] Alexandre Gadelha:
Arrumado os erros de ortografia e erros de digita\u00e7\u00e3o[2020-09-10 01:47] meleu:
Updated The RetroAchievements Manifesto pt_BR (markdown)[2020-09-10 01:47] meleu:
Destroyed RetroAchievements Manifesto pt_BR (markdown)This is the RetroAchievements Manifesto and every member of this community should be aware of this.
Since the early days of RetroAchievements, this is what we have in our FAQ as the answer for What is RetroAchievements.org?
RetroAchievements.org is a zero profit community who collaborate and compete to earn custom-made achievements in classic games through emulation. Achievements are made by and for the community. (...)
In this manifesto we're going to go deeper into that answer.
"},{"location":"RetroAchievements-Manifesto/#retroachievementsorg-is-a-zero-profit-community","title":"RetroAchievements.org is a zero profit community","text":"We do have a donation link on our frontpage, but we're still a zero profit community.
The patrons contribute with literally one dollar per month, and fortunately we have enough patrons to pay for server expenses without needing to rely on annoying adverts.
However, we want to make very clear that getting donations is not our business model, exactly because RetroAchievements is not a business!
Business organizations are always eager to get more customers. They do what they can to please the customers and keep getting more and more of them. But here, at RetroAchievements, we are not a business, we are a community.
We don't have customers, we have community members.
We are a bunch of people passionate about retrogames. And if you share the same passion, you're very welcome to join us.
Although we're welcoming anyone, we're not desperately begging for more and more users. It's your call: if you like what we have to offer, pick your gamepad and let's play some classics!
"},{"location":"RetroAchievements-Manifesto/#achievements-are-made-by-and-for-the-community","title":"Achievements are made by and for the community.","text":"It's related to what was said above. We are not offering a service for outsiders. The things we create in this community are for this very same community. You're welcome to stay with us, but it's up to you to decide if you want to be part of it.
And while being part of this community, always keep in mind the following statements:
1. The most important thing we have here are the achievements.
2. The most important people we have here are the achievement creators.
What does that mean?
"},{"location":"RetroAchievements-Manifesto/#the-most-important-thing-we-have-here-are-the-achievements","title":"The most important thing we have here are the achievements.","text":"We all love those badges on our profile page, right? Such attachment to that badge sometimes causes frustration when the respective achievement set get a revision. But it's important to keep in mind that this project is constantly evolving.
We make achievement set revisions with quality in mind, and to show actual respect for the game. We also have respect for the awards you got, but improving the overall quality of the project has precedence over our individual profile pages and/or our amount of points.
Also, if you're not able to master an achievement set it doesn't automatically mean that it needs to be nerfed/demoted/turned into a bonus set. If other players got that, it's probable you can get that too. But if you can't, it's OK too. You don't need to unlock every achievement to keep having fun with old games.
If you still think the achievement set has unwelcome concepts, you can post your arguments in the game's forum topic. Just be sure to be respectful in your words. Which brings us to the next point...
"},{"location":"RetroAchievements-Manifesto/#the-most-important-people-we-have-here-are-the-achievement-creators","title":"The most important people we have here are the achievement creators.","text":"Don't get it wrong! The RetroAchievements ecosystem has a lot of people, playing many different roles than creating achievements, and they are all important. But the achievement creators are the backbone of this project. Without them, this is just a buggy and old fashioned website.
Achievement creation is a very time consuming activity. The people doing it dedicate a big portion of their free time producing content for the benefit of the whole community.
Anyways, even if you're not able to/interested in creating achievements and just want to play, you're also important to us. In fact we have countless players that are very valuable members. The key point here is: get involved and be nice.
The more you get involved, the more valuable you are to the community.
Last but not least, if you have criticism about achievement creators' work, be respectful. Showing bitterness towards them is strongly frowned upon. Be disrespectful with them and you're definitely not welcome here.
"},{"location":"RetroAchievements-Manifesto/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-04-19 23:45] televandalist:
Slight grammar fix about server expenses.[2020-09-17 14:44] meleu:
the you are valuable -> the more valuable you are[2020-09-08 07:45] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 19:39] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 09:10] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 08:48] meleu:
Updated RetroAchievements Manifesto (markdown)[2020-09-07 08:45] meleu:
Created RetroAchievements Manifesto (markdown)Rich Presence (RP) es un breve resumen de lo que est\u00e1n haciendo los jugadores activos en su partida. Para tener RP en un juego necesitas un Script de Rich Presence (RPS) que este es creador por desarrolladores. El Script checa la memoria del juego y ya sea como esta fue programada reporta los valores de ciertas direcciones con definiciones asignadas por el desarrollador as\u00ed como en que stage se encuentra el jugador, cuantas vidas tienes, si el juego esta en pausa, que modo de juego se encuentra jugando, lo que a logrado el jugador, etc. Esta informacion es reportada de vuelta al sitio. Cada juego publicado deber\u00eda de tener m\u00ednimo un RPS b\u00e1sico.
Ejemplo de RP en acci\u00f3n:
Para ver la RP en tiempo real haz clic en el menu de RetroAchievements en tu emulador y despu\u00e9s en Rich Presence Monitor. Una peque\u00f1a ventana deber\u00eda de mostrar tu RP actual. (Bueno para realizar pruebas)
La mejor manera de entender Rich Presence es observar varios ejemplos de juegos, mira las direcciones que fueron utilizadas a mira como el texto es mostrado en el monitor y en el sitio.
"},{"location":"Rich-Presence-es/#como-funciona","title":"Como funciona?","text":"Cada vez que un juego es lanzado, guarda los logros del juego en un archivo de 'ruta' donde el ROM detalla todos los logros y valores en memoria (y tablas clasificatorias) que puede llegar a rastrear. Tambi\u00e9n va a solicitar un Script de Rich Presence para el ROM que se encuentre actualmente cargado. El emulador va a reportar al sitio web cada 120 segundos. Similarmente, cada 120 segundos o parecido, la caja de 'active players' en la pagina de inicio se va a refrescar, detallando la ultima actividad conocida por todos los jugadores activos. Si no hay un Script de rich presence entregado, el texto sera 'earning achievements' Si se esta jugando un juego con logros, 'playing [game]' si se juega un juego sin logros, o 'developing achievements' si la ventaba de memoria esta abierta y es visible.
El RPS de cada juego puede ser encontrado en la secci\u00f3n de desarrollo en cada pagina de juego:
"},{"location":"Rich-Presence-es/#ejemplo-super-mario-bros","title":"Ejemplo (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
El RSP se compone de objetos de Lookup, objectos de Formato y un objeto de Display.
"},{"location":"Rich-Presence-es/#lookups","title":"Lookups","text":"Los Lookups se definen de la siguiente manera:
Lookup:NombreDelLockup\nValor1=Texto cuando este valor este activo\nValor2=Texto cuando este otro valor\n...\n
Le damos un valor al Lookup, consistiendo de una serie de direcciones de memoria y modificador. Encontraras mas sobre esto mas adelante.
"},{"location":"Rich-Presence-es/#formato","title":"Formato","text":"Las Tablas de Formato se definen de la siguiente manera:
Format:Score\nFormatType=VALOR\n
Empezamos con Formato:
, y despu\u00e9s con el nombre del tipo de formato. En la siguiente linea, escribe FormatType=
, y entonces uno de los siguientes valores: VALUE
, SCORE
(o POINTS
), TIME
(o FRAMES
), SECS
, MILLISECS
, o OTHER
.
VALUE
: valor gen\u00e9rico, no se agregan ceros. SCORE
/POINTS
: \"000130 puntos\" TIME
/FRAMES
: este valor describe el numero de frames consecuentes, y se va a mostrar como 00:00.00 SECS
: este valor describe el numero de segundos que han pasado, y se va a mostrar como 00:00 MILLISECS
: este valor describe el numero de centenas de segundo que han pasado, y se va a mostrar como 00:00.00 Display es la string que se muestra en la caja de 'Active Players' en la pagina de inicio del sitio web. Para referirte a un Lookup o aun Format previamente definidos se utiliza simplemente un '@'. Y entonces se agrega el nombre que le diste al lookup o al format (distingue may\u00fasculas y min\u00fasculas!), e inmediatamente despu\u00e9s de eso, en brackets, sigue la serie de valores en memoria que especifican que sera enviado a ese lookup y format.
@Powerup(0xh756)
Eso significa que vas a utilizar el Lookup o Format que se llama Powerup
, y entrega cualquier valor que se encuentre actualmente en 0xh756.
@Mode(0xh770)
- Un Lookup para la direcci\u00f3n que muestra si el juego se encuentra en modo demo o si un mundo a sido completado. @Paused(0xh776)
- Un Lookup para la direcci\u00f3n que muestra si el juego se encuentra en pausa (Se utilizan 3 valores, dos de ellos son para pausar y despausar). @Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Un Lookup para la direcci\u00f3n que muestra si Mario tiene la Estrella. Mas sobre esto mas adelante. @Powerup(0xh756)
- Un Lookup para la direcci\u00f3n que muestra si Mario es Peque\u00f1o, grande o cuenta con la habilidad de fuego. Mario in
- Texto est\u00e1tico para unir los objetos format y lookup. @Digit(0xh75f_v1)
- Digit
es un objeto format definido como un valor. La direcci\u00f3n 0xh75f es Mundo menos 1 (porque cuenta con base 0, y este empieza a contar desde cero). _v1
Significa + valor 1. _v+1
tambi\u00e9n es correcto. -
- Mas texto est\u00e1tico para separar el mundo y el nivel. como en el juego Mundo 1-1. @Digit(0xh75c_v1)
- Otro uso del objeto Digit
format . Esta vez se encuentra rastreando el Stage. Mundo 1-X. @Swimming(0xh704)
- Un Lookup para la direcci\u00f3n que muestra si el jugador se encuentra nadando. @Status(0xhe)
- Un Lookup para la direcci\u00f3n que muestra el estatus de Mario, como por ejemplo descendiendo de un tubo. , \ud83d\udeb6:
- Mas texto est\u00e1tico. \ud83d\udeb6 es el s\u00edmbolo para vidas. @Digit(0xh75a_v1)
- Tercer uso del objeto Digit
format. Esta vez checa la direcci\u00f3n de vidas del jugador. ,
- Texto est\u00e1tico. @Quest(0xh7fc)
Un lookup para ver si el jugador se encuentra en modo normal o en la 2da vuelta (modo dificil). Quest
- Texto est\u00e1tico. Para especificar el tama\u00f1o de la direcci\u00f3n que te encuentras utilizando, hay varios caracteres que se utilizan para esto. (se ignora si es may\u00fascula o min\u00fascula)
h
(o H
). En 0xh10 la direcci\u00f3n es un byte - 8 bits. xxxx xxxx
u
(o U
). En 0xu10 la direcci\u00f3n es un nibble - 4 bits. xxxx 0000
l
(o L
). En 0xl10 la direcci\u00f3n es un nibble - 4 bits. 0000 xxxx
m
(o M
). En 0xm10 la direcci\u00f3n es un bit, el bit mas bajo: 0000 000x
n
(o N
). En 0xn10 la direcci\u00f3n es un bit, el segundo bit: 0000 00x0
o
(o O
). En 0xo10 la direcci\u00f3n es un bit, el tercer bit: 0000 0x00
p
(o P
). En 0xp10 la direcci\u00f3n es un bit, el cuarto bit: 0000 x000
q
(o Q
). En 0xq10 la direcci\u00f3n es un bit, el quinto bit: 000x 0000
r
(o R
). En 0xr10 la direcci\u00f3n es un bit, el sexto bit: 00x0 0000
s
(o S
). En 0xs10 la direcci\u00f3n es un bit, el s\u00e9ptimo bit: 0x00 0000
t
(o T
). En 0xt10 la direcci\u00f3n es un bit, el bit mas alto: x000 0000
x
(o X
). En 0xx10 la direcci\u00f3n es de cuatro bytes y 32 bits.Resumiendolo en una tabla:
localizaci\u00f3n/tama\u00f1o prefijo (las letras pueden ser en min\u00fasculas) ejemplo bit00xM
0xM01234
bit1 0xN
0xN01234
bit2 0xO
0xO01234
bit3 0xP
0xP01234
bit4 0xQ
0xQ01234
bit5 0xR
0xR01234
bit6 0xS
0xS01234
bit7 0xT
0xT01234
Lower4 0xL
0xL01234
Upper4 0xU
0xU01234
8bit 0xH
0xH01234
16bit 0x
0x01234
32bit 0xX
0xX01234
"},{"location":"Rich-Presence-es/#display-con-strings-condicionales","title":"Display con Strings Condicionales","text":"Display:\n?0x 000085=0?Pantalla de Titulo\n?0xT00007c=1?Mapa Personalizado en @Zona(0xH00016c)\nJugando Batalla @Batalla(0x 00007c*0.2) en @Zona(0xH00016c)\n
El marcador Display:
se sigue utilizando para indicar el principio del bloque de Display. Si la siguiente linea empieza con un signo de interrogaci\u00f3n, se considera como un display con una string condicional. La parte de la linea que se encuentra entre los dos signos de interrogaci\u00f3n es la clausula de la condici\u00f3n. Si la clausula de la condici\u00f3n se eval\u00faa y esta es verdadera, entonces la siguiente parte de la linea se utiliza como el string del display. Si esta no se eval\u00faa como verdadera, entonces se procede a la siguiente linea. Si esta empieza con un signo de interrogaci\u00f3n, entonces el mismo proceso se repite. Si este no empieza con un signo de interrogaci\u00f3n, la linea entera se utiliza como el string default para el display.
NOTA: Se requiere una string default en caso de que ninguna de tus strings condicionales sean verdaderas. Si solamente cuentas con strings condicionales, el script no va a hacer nada.
Observando este ejemplo, si el valor de 16-bit en $0085 es igual a 0, el string del display sera Title Screen
. Si no, la siguiente linea es examinada. Si el 7mo bit de $007C es igual a 1, el string del display sera Mapa Personalizado en @Zona(0xH00016c)
. Si no entonces, como linea final no cuenta con una clausula condicional esta es utilizada.
Strings de Display asociados con una clausula condicional soportan todo la misma sintaxis que el string de display predeterminado. En este ejemplo, puedes ver que el lookup @Zona
se utiliza en los dos strings condicionales y en el string predeterminado.
La frase condicional soporta todos los asesores de direcciones previamente mencionados as\u00ed como la l\u00f3gica de los AND (_) y OR (S). Nota: las clausulas OR aun requieren un grupo 'core', as\u00ed como en los logros.
?0xH1234=32_0xH2345=0?ejemplo y
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $2345 is 0, muestra ejemplo y
?0xH1234=32S0xH2345=1S0xH2345=2?ejemplo o
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $2345 es 1 o 2, muestra ejemplo o
?0xH1234=32_0xH5678=33S0xH2345=1S0xH2345=2?ejemplo y/o
si el valor de 8-bit en $1234 es 32 y el valor de 8-bit en $5678 es 33 y el valor de 8-bit en $2345 es 1 o 2, muestra ejemplo y/o
BCD es cuando cuando los valores son almacenados en una direcci\u00f3n del 0-9 (un d\u00edgito) o 0-99 (dos d\u00edgitos). ten en mente que la mayor\u00eda de las veces los valores son almacenados en hexadecimal, pero algunas veces los juegos los almacenan de esta manera y aqu\u00ed esta el mejor m\u00e9todo para trabajar con este tipo de valores en tu display.
BCD decodifica cada car\u00e1cter hexadecimal como un d\u00edgito decimal. Si el inspector de memoria muestra un 86 (en hex), el resulta de BCD decodificando el valor seria un 86 (en decimal).
Para objectos con estos valores puedes utilizar le prefijo BCD, como aqu\u00ed b0xh1234
. Esto tambi\u00e9n funciona con valores en tablas de clasificaci\u00f3n. Ten en cuenta que tambi\u00e9n vas a necesitar especificar el tama\u00f1o de la direcci\u00f3n BCD en memoria. b0x1234
lee un valor de 16-bit. b0xh1234
lee un valor de 8-bit y b0xX1234
lee un valor de 32-bit. NOTA: Soporte para decodificacion BCD de 16-bit y 32-bit es una funci\u00f3n para el kit de desarrollo 0.075.
Esto es usualmente usado para puntuaciones y tiempo, pero algunas veces tambi\u00e9n para otros tipos de valores.
"},{"location":"Rich-Presence-es/#limites","title":"Limites","text":"0x
. Esto significa 1
== 0x1
, 2
== 0x2
, 9
== 0x9
, 10
== 0xa
, 100
== 0x64
, etc. @test(0x1234)
el cual no va a encontrar \"Format:Test\"@test(0x1234)
no va a encontrar \"Format:test \" o \"Format: test\"Esta es una prueba @test(0x1234).
va a salir como Esto es una .
si test
no puede ser encontrado.//
) indica que la parte restante de la linea va a ser ignorada cuando se procese el script. Nota: los comentarios tambi\u00e9n aplican para el tama\u00f1o m\u00e1ximo de caracteres del script.0xh0001
puede ser acortado a 0xh1
).Lookup
o Format
puede ser cargado m\u00faltiples veces con las mismas o diferentes direcciones. Puedes definir un solo Format:Number FormatType=VALUE
en vez de definir valores individuales para las vidas, Puntuaci\u00f3n, Nivel, etc.@Pause
, @Star
, @Swimming
, y @Mode . Cuando utilizamos objetos lookup y format @object()
es posible combinar y hacer c\u00e1lculos. Esto puede ser utilizado para mostrar una puntuaci\u00f3n correctamente, tiempo del juego, etc. o hacen lookups avanzados.
Ejemplo @Puntuaci\u00f3n(0x28*10_0x29*1000_0x26*100000) puntos
Esto significa utiliza el lookup o Format Puntuaci\u00f3n
, y entrega la suma de: - 0x28 10 veces, AGREGA - 0x29 1000 veces, AGREGA - 0x26 100000 veces
_
agregas las direcciones mutuamente. 0x28_v10
. Esto agrega un 10 a tu total, as\u00ed como el valor de 0x28
+ 10 puede ser mostrado. Tambi\u00e9n se puede hacer lo mismo pero restando 0x28_v-10.
0x29*-1
. 0x29
es ahora negativo. 0x26*.5
. 0x26
va a mostrar el valor 1/2 de 0x26
. 0x28*10_0x29*-1_0x26*.625_v-10
.Sin ninguna duda puedes utilizar estos s\u00edmbolos en rich presence.
\u258c\u258c=Pausa \ud83d\udd01=Continues \u23f0=Tiempo de la Partida/Reloj del Juego \ud83d\udd11=Llaves \ud83d\udca3=Bombas \u2764\ufe0f o \u2764=En un juego con corazones (ej. Zelda) \ud83d\udcb0=Dinero \ud83d\udea9=Nivel/Stage
Cuando te encuentres desarrollando Rich Presence tienes que hacegurarte que te estas comunicando de una manera completamente clara. Si no estas utilizando s\u00edmbolos estandarizados tal vez tengan sentido para ti pero tal vez sea completamente confusos para otros. Cuando utilices s\u00edmbolos no estandarizados, checalo con otro usuario o con alguna otra gente para ver si los s\u00edmbolos que estas utilizando tienen sentido. Si no lo tienen, utiliza mejores s\u00edmbolos, o utiliza texto o s\u00edmbolos junto con texto.
Para unicode/emojis personalizados ShapeCatcher es un excelente recurso, puedes ponerte a dibujarlos y la AI va a buscar resultados similares. Simplemente ten cuidado de no utilizar unicode que sea demasiado oscuro, ya que no se va a mostrar correctamente en todos los sistemas.
Toma nota en la preferencia de la comunidad en cuanto a displays:
"},{"location":"Rich-Presence-es/#desarrollando-rich-presence","title":"Desarrollando Rich Presence","text":"La herramienta de desarrollo actualmente no cuenta con editor de Rich Presence integrado, pero puedes hacer pruebas locales antes de guardar algo en el servidor. Una vez que hubieras empezado un juego y el Rich Presence actual a sido descargado del servidor, puedes llegar a encontrar en RACache\\Data\\XXX-Rich.txt
donde XXX es el ID del juego.
El Monitor de Rich Presence (ejecutable desde el menu de RetroAchievments) lee este archivo y muestra el valor actual cada segundo mientras la ventana se encuentre abierta.
Si haces cambios al archivo XXX-Rich.txt
, y vuelves a reseleccionar la opci\u00f3n de monitor del menu, este va a leer los nuevos cambios para aqu\u00ed as\u00ed puedas hacer pruebas inmediatamente sin tener que aplicar cambios al servidor. Continua haciendo cambios y vuelve a seleccionar la opci\u00f3n en el menu asta que el script trabaje como esperas que lo haga, una vez que hubieras terminado copia el contenido del archivo a la pagina del servidor para que est\u00e9n los cambios disponibles para todos los dem\u00e1s jugadores.
NOTA: El archivo XXX-Rich.txt
es sobre-escrito con la informaci\u00f3n actual del servidor cada vez que el juego es abierto. Mientras aun tengas el archivo abierto en un editor, siempre vas a poder guardar tus cambios a pesar de re-abrir el juego.
Last 10 changes on this page:
[2019-05-24 20:02] meleu:
fix broken link[2019-05-19 15:48] eldexterr:
Updated Rich Presence es (markdown)[2019-05-19 15:42] eldexterr:
Updated Rich Presence es (markdown)[2019-05-17 11:03] eldexterr:
Created Rich Presence es (markdown)link para texto em ingl\u00eas: Rich Presence
"},{"location":"Rich-Presence-pt_BR/#introducao","title":"Introdu\u00e7\u00e3o","text":"O Estado de Presen\u00e7a (RP - Rich Presence, pela sigla em ingl\u00eas), \u00e9 uma breve vis\u00e3o geral do que os jogadores est\u00e3o fazendo atualmente em seu jogo. Para ter RP em um jogo, voc\u00ea precisa de um Script do Estado de Presen\u00e7a (ou Rich Presence Script - RPS - pela sigla em ingl\u00eas). O Script verifica a mem\u00f3ria do jogo do jogador e como programado relata os valores de certos endere\u00e7os com defini\u00e7\u00f5es atribu\u00eddas pelo Desenvolvedor, como em qual est\u00e1gio o jogador est\u00e1, quantas vidas eles t\u00eam, se o jogo est\u00e1 em pausa, que modo de jogo eles est\u00e3o jogando, o que o jogador realizou, etc. Esta informa\u00e7\u00e3o \u00e9 reportada de volta ao site.
Exemplo de RP em a\u00e7\u00e3o:
Para ver o RP ao vivo em um jogo, clique no menu RetroAchievements no seu emulador e clique em Rich Presence Monitor. Uma pequena janela mostrar\u00e1 seu RP ativo. (Bom para depura\u00e7\u00e3o)
A melhor maneira de entender o Estado de Presen\u00e7a \u00e9 olhar para v\u00e1rios exemplos no jogo, olhar para os endere\u00e7os usados e ver como o texto \u00e9 exibido no Rich Presence Monitor e no site.
"},{"location":"Rich-Presence-pt_BR/#como-funciona","title":"Como funciona?","text":"Toda vez que um jogo \u00e9 iniciado, ele busca os achievements em um arquivo 'patch' para a ROM, que detalha todos os achievements e endere\u00e7os de mem\u00f3ria (e leaderboards) que podem ser observados. Ele tamb\u00e9m solicitar\u00e1 um Rich Presence Script para a ROM atualmente carregada. O emulador informar\u00e1 o site a cada 120 segundos. Da mesma forma, a cada 120 segundos mais ou menos, a caixa de 'jogadores ativos' na frontpage ser\u00e1 atualizada, detalhando a \u00faltima atividade conhecida de todos os jogadores ativos. Se n\u00e3o houver um script do estado de presen\u00e7a, o texto estar\u00e1 \"ganhando achievements\" se estiver jogando um jogo com achievements, \"jogando [jogo]\" se estiver jogando sem achievements ou \"desenvolvendo achievements\" se a caixa de di\u00e1logo de mem\u00f3ria estiver aberta e vis\u00edvel.
O RPS para cada jogo pode ser encontrado na se\u00e7\u00e3o de desenvolvimento na p\u00e1gina de cada jogo:
"},{"location":"Rich-Presence-pt_BR/#exemplo-super-mario-bros","title":"Exemplo (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
Ele se divide em uma s\u00e9rie de objetos de pesquisa, objetos de formato e um objeto de exibi\u00e7\u00e3o.
"},{"location":"Rich-Presence-pt_BR/#pesquisas","title":"Pesquisas","text":"Pesquisas s\u00e3o definidas assim:
Lookup:NameOfLookup\nValue1=Text When This Value\nValue2=Text When Another Value\n...\n
N\u00f3s damos ao Lookup (pesquisa) um valor, consistindo de uma s\u00e9rie de endere\u00e7os de mem\u00f3ria e modificadores. Falaremos mais sobre isso depois.
"},{"location":"Rich-Presence-pt_BR/#formato","title":"Formato","text":"Tabelas de formato s\u00e3o definidas assim:
Format:Score\nFormatType=VALUE\n
Comece com Format
: e depois o nome do tipo de formato. Na pr\u00f3xima linha, forne\u00e7a FormatType =
e, em seguida, um dos seguintes: VALUE
, SCORE
(ou POINTS
), TIME
(ou FRAMES
), SECS
, MILLISECS
ou OTHER
.
VALUE
: valor gen\u00e9rico, sem zeros \u00e0 esquerda.SCORE
/ POINTS
: \"000130 pontos\"TIME / FRAMES
: o valor descreve o n\u00famero de quadros transcorridos e ser\u00e1 transformado em 00: 00.00SECS
: valor descreve o n\u00famero de segundos decorridos e ser\u00e1 transformado em 00:00MILLISECS
: value descreve o n\u00famero de milissegundos decorridos e ser\u00e1 transformado em 00: 00.00A exibi\u00e7\u00e3o ser\u00e1 uma string exibida na caixa \"Players ativos\" na primeira p\u00e1gina. Refere-se aos objetos Lookup e Format definidos anteriormente usando um \u00fanico '@'. Em seguida, ele especifica um nome para a pesquisa ou formato (diferencia mai\u00fasculas de min\u00fasculas) e, imediatamente depois, entre colchetes, uma s\u00e9rie de valores de mem\u00f3ria que especificam o que enviar para esse objeto de pesquisa ou formato.
@Powerup (0xh756)
Isso significa usar o Lookup ou o Formato chamado Powerup
, e dar a ele qualquer valor que esteja em 0xh756.
@Mode (0xh770)
- pesquisa o endere\u00e7o que mostra se o jogo est\u00e1 no modo de demonstra\u00e7\u00e3o ou se um mundo foi conclu\u00eddo.@Paused (0xh776)
- pesquisa o endere\u00e7o que mostra se o jogo est\u00e1 em pausa (s\u00e3o utilizados 3 valores, dois deles s\u00e3o para pausa e pausa).@Star (0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Procura o endere\u00e7o de se Mario tem a estrela de invencibilidade. Mais sobre isso depois.@Powerup (0xh756)
- Procura pelo endere\u00e7o que mostra se o Mairo \u00e9 Pequeno, grande ou tem poder de fogo.Mario in
- Texto est\u00e1tico para pesquisar string e formatar objetos juntos.@Digit (0xh75f_v1)
- D\u00edgito \u00e9 um objeto de formato definido como um valor. O endere\u00e7o 0xh75f \u00e9 o mundo menos 1 (porque \u00e9 baseado em 0, j\u00e1 que come\u00e7a a contar em 0). _v1 significa + valor 1. _v + 1 tamb\u00e9m est\u00e1 correto.-
- Mais texto est\u00e1tico para dividir o mundo e o n\u00edvel. como no hypen no mundo 1-1.@Digit (0xh75c_v1)
- Outro uso do objeto de formato de d\u00edgito. Desta vez est\u00e1 olhando para o est\u00e1gio. Mundo 1-X.@Swimming (0xh704)
- pesquisa o endere\u00e7o que mostra se o jogador est\u00e1 nadando.@Status (0xhe)
- pesquisa o endere\u00e7o que mostra o status de Mario, como passar por canos., \ud83d\udeb6:
- Mais texto est\u00e1tico. \ud83d\udeb6 \u00e9 um s\u00edmbolo para vidas.@Digit (0xh75a_v1)
- Terceiro uso do objeto de formato de d\u00edgito. Desta vez, est\u00e1 verificando o endere\u00e7o do jogador.,
- texto est\u00e1tico.@Quest (0xh7fc)
Uma pesquisa para ver se o jogador est\u00e1 em normal ou na segunda miss\u00e3o, hardmode.Quest
- Texto Est\u00e1tico.Para especificar o tamanho do endere\u00e7o que voc\u00ea est\u00e1 verificando, existem v\u00e1rios caracteres usados. (capitaliza\u00e7\u00e3o \u00e9 ignorada)
h
(ou H
). Em 0xh10, o endere\u00e7o \u00e9 um byte - 8 bits. xxxx xxxx
u
(ou U). Em 0xu10, o endere\u00e7o \u00e9 um nibble - 4 bits. xxxx 0000
l
(ou L). Em 0xl10 o endere\u00e7o \u00e9 um nibble - 4 bits. 0000 xxxx
m
(ou M
). Em 0xm10 o endere\u00e7o \u00e9 um bit, o bit mais baixo: 0000 000x
n
(ou N
). Em 0xn10 o endere\u00e7o \u00e9 um bit, o segundo bit: 0000 00x0
o
(ou O
). Em 0xn10 o endere\u00e7o \u00e9 um bit, o terceiro bit: 0000 0x00
p
(ou P
). Em 0xp10 o endere\u00e7o \u00e9 um bit, o quarto bit: 0000 x000
q
(ou Q
). Em 0xq10 o endere\u00e7o \u00e9 um bit, o quinto bit: 000x 0000
r
(ou R
). Em 0xr10 o endere\u00e7o \u00e9 um bit, o sexto bit: 00x0 0000
s
(ou S
). Em 0xs10 o endere\u00e7o \u00e9 um bit, o s\u00e9timo bit: 0x00 0000
t
(ou T
). Em 0xt10 o endere\u00e7o \u00e9 um bit, o bit superior: x000 0000
x
(ou X
). Em 0xx10 o endere\u00e7o \u00e9 de quatro bytes e 32 bits.Resumindo em uma tabela:
"},{"location":"Rich-Presence-pt_BR/#strings-de-exibicao-condicional","title":"Strings de exibi\u00e7\u00e3o condicional","text":"Display:\n?0x 000085=0?Title Screen\n?0xT00007c=1?Custom Map in @Landscape(0xH00016c)\nPlaying Battle @Battle(0x 00007c*0.2) in @Landscape(0xH00016c)\n
O Display
: marker existente ainda \u00e9 usado para indicar o in\u00edcio do bloco de exibi\u00e7\u00e3o. Se a pr\u00f3xima linha come\u00e7ar com um ponto de interroga\u00e7\u00e3o, ela ser\u00e1 considerada uma sequ\u00eancia de exibi\u00e7\u00e3o condicional. A parte da linha entre os dois pontos de interroga\u00e7\u00e3o \u00e9 a cl\u00e1usula condicional. Se a cl\u00e1usula condicional avaliar que \u00e9 verdadeiro (true), a parte restante da linha ser\u00e1 usada como a sequ\u00eancia de exibi\u00e7\u00e3o. Se n\u00e3o avaliar true, o processamento prosseguir\u00e1 para a pr\u00f3xima linha. Se come\u00e7ar com um ponto de interroga\u00e7\u00e3o, o mesmo processo ser\u00e1 repetido. Se n\u00e3o come\u00e7ar com um ponto de interroga\u00e7\u00e3o, a linha inteira ser\u00e1 usada como a sequ\u00eancia de exibi\u00e7\u00e3o padr\u00e3o.
Olhando para este exemplo, se o valor de 16 bits em $ 0085 for 0, a seq\u00fc\u00eancia de exibi\u00e7\u00e3o \u00e9 Title Screen
. Se n\u00e3o, a pr\u00f3xima linha \u00e9 examinada. Se o s\u00e9timo bit de $ 007C for 1, a cadeia de exibi\u00e7\u00e3o ser\u00e1 Custom Map em @Landscape (0xH00016c)
. Se n\u00e3o, a linha final n\u00e3o tem uma cl\u00e1usula condicional e \u00e9 usada.
As cadeias de exibi\u00e7\u00e3o associadas a uma cl\u00e1usula condicional suportam a mesma sintaxe que a cadeia de exibi\u00e7\u00e3o padr\u00e3o. Neste exemplo, voc\u00ea pode ver que a pesquisa @Landscape
\u00e9 usada na seq\u00fc\u00eancia de exibi\u00e7\u00e3o condicional e na sequ\u00eancia de exibi\u00e7\u00e3o padr\u00e3o. A pesquisa em si s\u00f3 precisa ser definida uma vez.
A frase condicional suporta todos os assessores de endere\u00e7o mencionados anteriormente, bem como a l\u00f3gica AND (_) e OR (S). Note que cl\u00e1usulas OR ainda requerem um grupo 'core', da mesma forma que as conquistas.
? 0xH1234 = 32_0xH2345 = 0? and example
se o valor de 8 bits em $ 1234 for 32 e o valor de 8 bits em $ 2345 for 0, display and example
? 0xH1234 = 32_0xH2345 = 1S0xH2345 = 2? or example
se o valor de 8 bits em $ 1234 for 32 e o valor de 8 bits em $ 2345 for 1 ou 2, exibir or example
DBC \u00e9 quando os valores s\u00e3o armazenados em um endere\u00e7o de 0 a 9 (um d\u00edgito) ou 0 a 99 (dois d\u00edgitos). Na maioria das vezes os valores s\u00e3o armazenados em hexadecimal, mas em algum momento os jogos ir\u00e3o armazen\u00e1-los desta maneira e aqui est\u00e1 a melhor maneira de lidar com esses endere\u00e7os no seu monitor.
Para objetos de valor, voc\u00ea pode usar o prefixo DBC, como em b0x1
. Um endere\u00e7o DBC \u00e9 considerado 8bit, h \u00e9 desnecess\u00e1rio, mas tamb\u00e9m n\u00e3o causar\u00e1 problemas. Outros prefixos de caracteres funcionam? (n\u00e3o testado). Quando voc\u00ea usa o prefixo b e o endere\u00e7o \u00e9 armazenado como um DBC, sua sa\u00edda para um endere\u00e7o de 10 ser\u00e1 10 em vez de 16 (que \u00e9 10 em hexadecimal).
Isso \u00e9 mais comumente usado para pontua\u00e7\u00e3o e tempo, mas geralmente outros tipos de valores de exibi\u00e7\u00e3o.
"},{"location":"Rich-Presence-pt_BR/#limites","title":"Limites","text":"&
no texto cortar\u00e1 o script ap\u00f3s o &
+
n\u00e3o ser\u00e1 exibido0x00001
== 0x1
, 0xh0000245
== 0xh245, 0x0a
== 0xa
.0x
. Isso significa 1
== 0x1
, 2
== 0x2
, 9
== 0x9
, 10
== 0xa
, 100
== 0x64
, etc.@Pause
, @Star
, @Swimming
e @Mode
.Ao usar objetos de pesquisa e formata\u00e7\u00e3o @object ()
, \u00e9 poss\u00edvel combinar e executar c\u00e1lculos. Isso pode ser usado para exibir corretamente uma pontua\u00e7\u00e3o, em tempo de jogo, etc. ou fazer pesquisas mais avan\u00e7adas.
Exemplo `@Score (0x28 * 10_0x29 * 1000_0x26 * 100000) points``
Isso significa usar a pesquisa ou pontua\u00e7\u00e3o de formato e dar a soma de:
_
adiciona os endere\u00e7os juntos.0x28_v10
. Isso adiciona 10 ao seu total, como em qualquer que seja o valor de 0x28
+ 10 ser\u00e1 exibido. Voc\u00ea tamb\u00e9m pode subtrair 0x28_v-10
.0x29 * -1
. 0x29
agora \u00e9 negativo.0x26 * .5
. 0x26
ir\u00e1 gerar 1/2 do valor em 0x26
.0x28 * 10_0x29 * -1_0x26 * .625_v-10
.\u258c\u258c=em pausa
\ud83d\udd01= n\u00famero de loop
\ud83d\udeb6=vidas. Outros s\u00edmbolos que representam o jogo claramente tamb\u00e9m s\u00e3o adequados. \ud83d\udc30=in a Bugs bunny Game, \ud83d\udc35=in a Donkey Kong Country game, \u2708=In a jet plane game,
\ud83d\udc9e=Continue
\ud83d\udcaf=Pontos
\u23f0=Tempo de jogo/Rel\u00f3gio do game
\ud83d\udd11=Chaves
\ud83d\udca3=Bombas \u2630=Menu
\u2764\ufe0f ou \u2764= Em um jogo com cora\u00e7\u00f5es (ex. Zelda)
\ud83d\udcb0=Dinheiro
\u2696=Dificuldade
"},{"location":"Rich-Presence-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2020-09-16 12:25] meleu:
smallfix[2020-09-16 12:24] meleu:
use RP acronym[2020-09-16 12:20] meleu:
use relative links[2020-09-15 17:49] Ben-Ghazi:
Changed the links to go to the docs equivalent instead of the wiki.[2018-03-28 03:11] KingDice001:
Updated Rich Presence pt_BR (markdown)[2018-03-28 03:06] KingDice001:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:25] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:24] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 23:06] 7Mogami7:
Updated Rich Presence pt_BR (markdown)[2018-03-27 21:17] 7Mogami7:
Updated Rich Presence pt_BR (markdown)Rich Presence (RP) is brief overview of what active players are currently doing in their game. To have RP in a game you need a Rich Presence script, which is created by Developers. The script checks the player's game memory and reports the values of certain addresses with definitions assigned by the Developer such as which stage the player is on, how many lives they have, if the game is paused, what game mode they are playing, what the player has accomplished, etc. This information is reported back to the website once every two minutes.
A good rich presence should inform other users how far into the game you are (level/ town/dungeon), and give an overall sense of how the player is doing (score/remaining lives/character level). Additional details may be useful, depending on their context within the game. Try not to go overboard with the detail though. Other players don't care what you named your dog, or need to know how many bullets you have left, especially since it only updates every two minutes. Additionally, the more fluff you add to a rich presence display, the more diluted the important information becomes.
Example of RP in action:
To see the RP live in a game click on the RetroAchievements menu in your emulator and then click on Rich Presence Monitor. A small window will show you your active RP. (Good for debugging)
The best way to understand Rich Presence is to look at various examples in game, look at the addresses used and look at how the text is displayed in the Rich Presence Monitor and on site.
"},{"location":"Rich-Presence/#how-does-it-work","title":"How Does it work?","text":"The game's Rich Presence script is downloaded with the achievement and leaderboard data for a game. As soon as the emulator validates this data, it starts a session for the user. This sets the user's 'Last Seen In' to 'Playing [game]'. 30 seconds later, the Rich Presence script will be evaluated and the result sent to the server. This will update the 'Last Seen In' for the player, which is also used in the 'Active Players' list on the front page. Every two minutes after that, the Rich Presence script will be evaluated again, and the 'Last Seen In' will be updated again. This continues until the user closes the emulator.
If there isn't a Rich Presence script for the game, the user has disabled rich presence, or the user has modified the Rich Presence script, the text will remain 'Playing [game]'.
The user's 'Last Seen In' may also say 'Fixing Achievements' or 'Developing Achievements' if they have any of the tool windows open. The first will display if achievements have been published for the set. The second if achievements have not been published for the set.
The Rich Presence script for a game can be found under the development section on each game's page:
"},{"location":"Rich-Presence/#example-super-mario-bros","title":"Example (Super Mario Bros.)","text":"Format:Digit\nFormatType=VALUE\n\nLookup:Mode\n0=[Demo] \n2=[World Complete] \n\nLookup:Paused\n0x81=\u258c\u258c \n0x80=\u258c\u258c \n1=\u258c\u258c \n\nLookup:Star\n5=\ud83c\udf1f \n4=\ud83c\udf1f \n3=\ud83c\udf1f \n2=\ud83c\udf1f \n1=\ud83c\udf1f \n\nLookup:Powerup\n0=Small\n1=Super\n2=Fire\n\nLookup:Swimming\n1= swimming\n\nLookup:Status\n0= [Loading]\n1= taking a vine warp\n2= entering a warp pipe\n3= entering a warp pipe\n4= \ud83d\udea9\n5= [Stage Complete]\n6= [Game Over]\n7= [Entering Area]\n9= growing\n0xA= shrinking\n0xB= \ud83d\udc80\n0xC= powering up\n\nLookup:Quest\n0x0=1st\n0x1=2nd\n\nDisplay:\n@Mode(0xh770)@Paused(0xh776)@Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)@Powerup(0xh0756) Mario in @Digit(0xh75f_v1)-@Digit(0xh75c_v1)@Swimming(0xh704)@Status(0xhe), \ud83d\udeb6:@Digit(0xh75a_v1), @Quest(0xh7fc) Quest\n
It breaks down into a series of Lookup objects, Format objects and one Display object.
"},{"location":"Rich-Presence/#macros","title":"Macros","text":"A macro converts a value into a user-friendly string. Macros are placed within a display string and will be replaced when the display string is evaluated. A macro starts with an @
, then the name of the macro, an opening parenthesis, the value to evaluate, and a closing parenthesis.
@Macro(0xh1234)
says read the byte at $1234, transform it using the Macro
macro, and place the result in the display string where the macro had been.
Parameters for each macro are constructed using a value definition.
"},{"location":"Rich-Presence/#lookups","title":"Lookups","text":"Lookups are defined like this:
Lookup:NameOfLookup\n1=Text When 1\n2=Text When 2\n...\n
When a display string references a Lookup, it's value will be located in the table and the associated text will be displayed.
NOTE: Values in the Lookup should be in decimal. If you want to use hex values, include a 0x
prefix. (i.e. 0x12=Eighteen
)
You can also specify multiple values for a single text string:
1-5,10=Text When These Values\n*=Text For All Other Values\n
In this example, the values 1, 2, 3, 4, 5, and 10 all map to the first text string.
Anything that doesn't match an item defined in the lookup table will return the text associated with *
. If *
does not appear in the lookup table, no text will be returned if a value doesn't have an entry.
Format tables are defined like this:
Format:Score\nFormatType=VALUE\n
Begin with Format:
, then the name of the Format converter. On the next line, give FormatType=
, then one of the following:
VALUE
: generic value, no leading zeroes. SCORE
/POINTS
: generic value, padded with leading 0s to 6 digits.TIME
/FRAMES
: value describes the number of frames elapsed, and will be turned into 00:00.00 by multiplying by 100 (hundredths of a second) and dividing by 60 (frames per second). If your system runs at something other than 60 fps, you'll have to do the conversion yourself and use MILLISECS
.MILLISECS
: value describes the number of hundredths of a second elapsed, and will be turned into 00:00.00 SECS
: value describes the number of seconds elapsed, and will be turned into 00:00 MINUTES
: value describes the number of minutes elapsed, and will be turned into 0h00SECS_AS_MINS
: value describes the number of seconds elapsed, and will be turned into 0h00FLOAT1
-FLOAT6
: formats a floating point number with the specified number of digits after the decimalAs of the 1.0 version of the DLL, you can use predefined macros for the most common formats. The following macros are now implicit:
Macro Format Description@Number()
VALUE
A generic value with no leading zeroes @Score()
SCORE
A generic value, padded with leading zeroes to six digits @Centiseconds()
MILLISECS
The number of hundreths of a second elapsed, and will be formatted as 00:00.00
@Seconds()
SECS
The number of seconds elapsed, and will be formatted as 00:00
@Minutes()
MINUTES
The number of minutes elapsed, and will be formatted as 0h00
@Float1()
FLOAT1
A floating point number, formatted with one digit after the decimal @Float2()
FLOAT2
A floating point number, formatted with two digits after the decimal @Float3()
FLOAT3
A floating point number, formatted with three digits after the decimal @Float4()
FLOAT4
A floating point number, formatted with four digits after the decimal @Float5()
FLOAT5
A floating point number, formatted with five digits after the decimal @Float6()
FLOAT6
A floating point number, formatted with six digits after the decimal @ASCIIChar()
n/a Converts a value from 0x20-0x7F into a character using the ASCII character map. Other values will be converted to ?
@UnicodeChar()
n/a Converts a value into a character using the 16-bit Unicode character map. Unknown values will be converted to \ufffd
"},{"location":"Rich-Presence/#display","title":"Display","text":"Display is a string that gets shown in the 'Active Players' box on the front page and the 'Last Seen In' section of the player's profile.
It is built by replacing any macros in the display string with text from a Lookup or formatted values from a Format converter. Each macro is identified by a single '@', which is followed by the name for the Lookup or Format (case sensitive!), and immediately after, in parenthesis, a value specifying what to send to that Lookup or Format object.
Using @Powerup(0xh756)!
This means use the Lookup or Format that's called Powerup
, and give it whatever 8-bit value is in the address 0x756. After converting, put the result in between \"Using \" and \"!\".
NOTE: Lookup/Format names are case sensitive and must exactly match the usage in the Display string: @test(0x1234)
will not find Format:Test
NOTE: Lookup/Format definitions cannot contain spaces before or after the name. @test(0x1234)
will not find Format:test
or Format: test
@Mode(0xh770)
- Lookup for the address that shows if the game is in demo mode or a world has been completed. @Paused(0xh776)
- Lookup for the address that shows if the game is paused (3 values are used, two of them are for pausing and unpausing). @Star(0xM79f_0xN79f_0xo79f_0xP79f_0xQ79f_0xR79f)
- Lookup for the address of if Mario has Star invincibility. More on this later. @Powerup(0xh756)
- Lookup for the address that show if Mario is Small, big or has fire power. Mario in
- Static text to string lookup and format objects together. @Digit(0xh75f_v1)
- Digit
is a format object defined as a value. The address 0xh75f is the World minus 1 (because it is 0 based, as in it starts counting at 0). _v1
Means + value 1. _v+1
is also correct. -
- More static text to split World and Level. as in the hyphen in World 1-1. @Digit(0xh75c_v1)
- Another use of the Digit
format object. This time It's looking up the stage. World 1-X. @Swimming(0xh704)
- Lookup for the address that shows if the player is swimming. @Status(0xhe)
- Lookup for the address that shows Mario's status, such as going through pipes. , \ud83d\udeb6:
- More static text. \ud83d\udeb6 is a symbol for lives. @Digit(0xh75a_v1)
- Third use of the Digit
format object. This time it's checking the player lives address. ,
- Static text. @Quest(0xh7fc)
A lookup to see if the player is in normal or on the 2nd quest, hardmode. Quest
- Static Text. Display:\n?0x 000085=0?Title Screen\n?0xT00007c=1?Custom Map in @Landscape(0xH00016c)\nPlaying Battle @Battle(0x 00007c*0.2) in @Landscape(0xH00016c)\n
The existing Display:
marker is still used to indicate the start of the display block. If the next line starts with a question mark, it is considered to be a conditional display string. The portion of the line between the two question marks is the conditional clause. If the conditional clause evaluates true, then the remaining portion of the line is used as the display string. If it does not evaluate true, then processing proceeds to the next line. If it starts with a question mark, the same process repeats. If it does not start with a question mark, the entire line is used as the default display string.
NOTE: A default display string is required in case none of the conditional display strings match. If you only have conditional display strings, the script will appear to do nothing.
Looking at this example, if the 16-bit value at $0085 is 0, the display string is Title Screen
. If not, the next line is examined. If the 7th bit of $007C is 1, the display string is Custom Map in @Landscape(0xH00016c)
. If not, the final line does not have a conditional clause and is used.
Display strings associated with a conditional clause support all of the same syntax as the default display string. In this example, you can see the @Landscape
lookup is used in both the conditional display string and the default display string. The lookup itself only has to be defined once.
The conditional phrase supports all of the previously mentioned address accessors as well as AND (_) and OR (S) logic. Note that OR clauses still require a 'core' group, just like achievements.
?0xH1234=32_0xH2345=0?and example
if the 8-bit value at $1234 is 32 and the 8-bit value at $2345 is 0, display and example
?0xH1234=32S0xH2345=1S0xH2345=2?or example
if the 8-bit value at $1234 is 32 and the 8-bit value at $2345 is 1 or 2, display or example
?0xH1234=32_0xH5678=33S0xH2345=1S0xH2345=2?and/or example
if the 8-bit value at $1234 is 32 and the 8-bit value at $5678 is 33 and the 8-bit value at $2345 is 1 or 2, display and/or example
Pro-tip: Conditions can be created using the achievement editor. Once you have your condition defined, use the Copy Def
button to copy the achievement definition to the clipboard so you can paste it into the rich presence script.
Rich Presence that directly displays custom player input text is prohibited. The most common example being displaying what a player inputs as their character or file name directly into Rich Presence.
This restriction helps in preventing inappropriate or offensive content from showing on various site pages as well as makes the moderation of Rich Presence more manageable, in addition to protection player privacy as players may not realize their text is being displayed publicly.
"},{"location":"Rich-Presence/#tips-and-tricks","title":"Tips and Tricks","text":"//
) indicates the remaining portion of the line should be ignored when processing the script. Note: comments still apply toward the script size limit.0xh0001
can be shortened to 0xh1
).Lookup
or Format
named mapping can be referenced multiple times with the same or different addresses. You can define a single Format:Number FormatType=VALUE
instead of defining individual ones for Lives, Score, Level, etc.@Pause
, @Star
, @Swimming
, and @Mode do. When using lookup and format objects @object()
it's possible to combine and perform calculations. Macro parameters are value definitions, so you can use multiplication, addition, and even some logic to generate values that aren't directly available in memory.
Example @Score(0xh28*10_0xh29*1000_0xh26*100000) points
This means use the Lookup or Format Score
, and give it the sum of: - the 8-bit value at 0x28 times 10, ADD - the 8-bit value at 0x29 times 1000, ADD - the 8-bit value at 0x26 times 100000
You can without doubt use these symbols in rich presence.
\u258c\u258c=Paused \ud83d\udd01=Continues \u23f0=In Game Time/Game Clock \ud83d\udd11=Keys \ud83d\udca3=Bombs \u2764\ufe0f or \u2764=In a game with hearts (e.g. Zelda) \ud83d\udcb0=Money \ud83d\udea9=Level/Stage
While making Rich Presence, devs need to be careful that they are communicating clearly. If you are using non-standard symbols they will make sense to you but could be entirely confusing to others. When using non-standard symbols, check them with someone else or a few people to see if the symbols you use make sense. If they don't, use better symbols, use text or use symbols alongside of text.
For custom unicode/emoji ShapeCatcher is an excellent resource, you can draw what you're looking for and an AI will find similar matches. Just be careful to not use unicode that too obscure, as they don't all display on all systems.
Take note of community display preference:
"},{"location":"Rich-Presence/#developing-rich-presence","title":"Developing Rich Presence","text":"The toolkit does not currently have an integrated Rich Presence editor, but you can test local changes before putting them on the server. Once you've started a game and the current Rich Presence has been downloaded from the server, you can find it in RACache\\Data\\XXX-Rich.txt
where XXX is the game ID.
The Rich Presence Monitor (openable from the RetroAchievments menu) reads this file and shows the current value every second while the window is open.
If you make changes to the XXX-Rich.txt
file, and reselect the menu option, it will read the new changes and allow you to immediate test them without applying the changes to the server. Continue to make changes and reselect the menu option until the script is behaving as you expect, then copy the contents to the server page to make it available to everyone else.
NOTE: The XXX-Rich.txt
file is overwritten with the current server data each time the game is opened. As long as you still have the file open in an editor, you can always save your changes over the updated file after reopening the game.
Rich Presence files utilize Condition Syntax for Memory Sizes, Prefixes and Logical Flags. These are also represented if you copy and paste achievement logic from the Achievement Editor.
"},{"location":"Rich-Presence/#parse-errors","title":"Parse Errors","text":"Code Enum Description -2INVALID_MEMORY_OPERAND
A memory operand was expected and not found. Memory operands start with 0x
, then a size indicator. The most common causes of this are forgetting the 0x
or having an _S
or __
in the script. -3 INVALID_CONST_OPERAND
A lookup key could not be evaluated. The most common cause of this is using hex without the 0x
prefix. This may also occur on older versions of RetroArch when using CSV or range keys for lookups. -6 INVALID_OPERATOR
An unknown operator was encountered. The most common cause of this is using !
instead of !=
-16 MISSING_VALUE
A macro was encountered without providing a value (i.e. @Points
instead of @Points(0xh1234)
) -18 MISSING_DISPLAY_STRING
The rich presence script did not contain a Display:
element, or contained only conditional display strings -20 RC_INVALID_VALUE_FLAG
A non-combining flag is used in a non-trigger context. Combining flags are AddSource, SubSource, AddHits, AddAddress and AndNext. Additionally, if you see [Unknown macro]
, that means the macro name could not be resolved. For example @Points(0xh1234)
without defining Format:Points
would generate [Unknown macro]Points(0xh1234)
.
This issue happens sometimes when a Rich Presence is created in the <GameID>-Rich.txt
file in the RACache>Data
folder. In this case the issue can be fixed by adding an empty line at the start of the file.
Last 10 changes on this page:
[2024-01-26 08:48] The Mystical One:
Updated Rich Presence (markdown)[2024-01-26 08:46] The Mystical One:
Adds Player-Input Text Restriction section.[2024-01-13 09:50] OvenOverlord:
Updated Rich Presence (markdown)[2023-06-06 11:04] televandalist:
Added ToC[2022-04-30 16:18] Jamiras:
Updated Rich Presence (markdown)[2022-02-04 17:38] Jamiras:
extract memory sizes[2022-02-04 17:12] Jamiras:
extract Value Definition to separate page[2022-01-31 10:51] Jamiras:
add built-in macros[2022-01-26 09:39] Shane Shirey:
Updated Rich Presence (markdown)[2022-01-26 09:38] Shane Shirey:
Updated Rich Presence (markdown)Rollouts are events that are meant to mimic a console launch. Developers participating in rollouts devote their time to working on achievement sets with the intent of having several sets ready once the console is supported for all players.
"},{"location":"Rollouts/#general-guidelines","title":"General Guidelines","text":"It's worth noting that these are general guidelines that apply to all rollouts. Individual rollouts may require addtional guidelines.
Lo siguiente es un plano detallado de la mayor\u00eda de las cosas que necesitas considerar cuando te encuentres haciendo un set de logros. No es requisito seguir esto al pie de la letra, esto es mas como una gu\u00eda.
"},{"location":"Set-Development-Roadmap-es/#investigacion-inicial","title":"Investigaci\u00f3n Inicial","text":"Last 10 changes on this page:
[2019-05-12 13:48] eldexterr:
Created Set Development Roadmap es (markdown)Link para o texto em ingl\u00eas: Set Development Roadmap
O texto seguinte \u00e9 um roteiro detalhado da maioria das coisas que voc\u00ea deveria considerar ao fazer um conjunto de conquistas. N\u00e3o \u00e9 necess\u00e1rio seguir exatamente isso, mas serve como um guia.
"},{"location":"Set-Development-Roadmap-pt_BR/#pesquisa-inicial","title":"Pesquisa Inicial","text":"Last 10 changes on this page:
[2018-03-25 16:23] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:22] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:17] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:15] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 16:04] KingDice001:
Updated Set Development Roadmap pt_BR (markdown)[2018-03-25 13:18] KingDice001:
Created Set Development Roadmap pt_BR (markdown)The following is a detailed road-map of most things you would want to consider while making an achievement set. It's not required to follow this exactly but is meant as a guide.
"},{"location":"Set-Development-Roadmap/#initial-research","title":"Initial Research","text":"Last 10 changes on this page:
[2019-02-08 10:57] meleu:
fix markdown[2018-02-17 18:08] Kvon:
Updated Set Development Roadmap (markdown)[2018-01-29 13:35] meleu:
tagged Rich Presence as optional[2017-11-27 05:42] meleu:
format fix[2017-11-26 06:43] meleu:
cosmetic[2017-11-26 06:31] meleu:
improved markdown formatting[2017-11-26 00:32] Kvon:
added preface, changed title from \"Sample Set Development Roadmap\"As developers, our goal is to give every set we develop its own unique achievement set when possible. Sometimes we end up reusing an idea or two that another developer already used for their own set. Being an open community, sharing and building on others ideas is encouraged, however, intentionally taking someone else\u2019s work and applying it to your own set is prohibited and disrespectful to the work of the original Developer. If a set has been copied or copy/pasted, it will be grounds for demotion until the issue is remedied. This applies to RetroAchievement sets and third-party platform achievement sets like Xbox Live, PSN, Steam, and other similar services. If you are concerned about your set breaking these guidelines, just submit an inbox message to DevCompliance on the site and we will take a look at it.
"},{"location":"Set-Plagiarism/#unacceptable-plagiarism","title":"Unacceptable Plagiarism","text":""},{"location":"Set-Plagiarism/#iconsbadges","title":"Icons/Badges","text":"Achievement and mastery badges need to be unique from other sets. Slightly modifying a badge or putting a watermark over an existing badge is not acceptable unless it\u2019s a bonus/subset mastery badge. The difference must be obvious from a zoomed out side by side comparison of the badges. Using any copyrighted badges from official sets is prohibited.
"},{"location":"Set-Plagiarism/#titles","title":"Titles","text":"Achievement titles should be unique from other sets. This may not always be possible when working on games that have ports for multiple systems. Generic titles and titles based on the in-game contents are both allowed. For example, Green Hills Zone is the first level of Sonic the Hedgehog on the Mega Drive, Master System, and Game Gear ports. Additionally, the level shows up in later entries of the Sonic series. As such, the achievement title \u201cGreen Hills Zone\u201d would be acceptable in all these sets.
"},{"location":"Set-Plagiarism/#design","title":"Design","text":"The design of an achievement is open to the community. You can use an idea from other sets so long as the achievement badge and title differ. However, an exact copy of the achievement list from another set is prohibited.
"},{"location":"Set-Plagiarism/#acceptable-copying","title":"Acceptable Copying","text":""},{"location":"Set-Plagiarism/#descriptions","title":"Descriptions","text":"Achievement descriptions do not have to be unique. Descriptions need to be clear instructions of how to earn an achievement so variations on a description may make the achievement confusing. There are only so many ways to say \u201cBeat the game without dying.\u201d
"},{"location":"Set-Plagiarism/#rich-presenceleaderboards","title":"Rich Presence/Leaderboards","text":"Copying Rich Presence and Leaderboards are allowed. When copying a Rich Presence you should note the original author at the top by adding a line: // RP By Original Dev
Copying the logic of another achievement is acceptable. Developers are encouraged to look at how other sets are coded and incorporate it into their own sets.
"},{"location":"Set-Plagiarism/#self-plagiarism","title":"Self-Plagiarism","text":"You are allowed to copy anything you created from one set to another set. However, it is preferable to let another developer work on a port for set you have already created.
"},{"location":"Set-Plagiarism/#in-game-achievements","title":"In Game Achievements","text":"Some games incorporate a set of in game achievements that were released with the game. Any of these achievements can be used as long as they are not Unwelcome Concepts.
"},{"location":"Set-Plagiarism/#code-notes","title":"Code Notes","text":"Code notes can be copied from another set. Noting who did the original memory digging is good practice but not required.
"},{"location":"Set-Plagiarism/#giving-credit-or-copying-with-permission","title":"Giving Credit or Copying with Permission","text":"Credit should be given when using one of the Acceptable Copying items listed above. However, giving credit for one of the Unacceptable Plagiarism items is still plagiarism. Even if the original developer has given permission to use their assets it is unacceptable to do so. Each set should include a developers\u2019 own creative spin on existing achievements and sets. You are not expected to reinvent the wheel, just make it your own.
"},{"location":"Set-Plagiarism/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-11-16 21:55] pingus:
remove title[2022-11-16 21:53] pingus:
Created Set Plagiarism (markdown)WIP Page
Pending
"},{"location":"Setup-Guide/#duckstation","title":"DuckStation","text":"Pending
"},{"location":"Setup-Guide/#pcsx2","title":"PCSX2","text":"Pending
"},{"location":"Setup-Guide/#ralibretro","title":"RALibretro","text":"Pending - for now, see RALibretro
"},{"location":"Setup-Guide/#rameka","title":"RAMeka","text":"Pending
"},{"location":"Setup-Guide/#ranes","title":"RANes","text":"Pending
"},{"location":"Setup-Guide/#rap64","title":"RAP64","text":"Pending
"},{"location":"Setup-Guide/#rapplewin","title":"RAppleWin","text":"Pending
"},{"location":"Setup-Guide/#raquasi88","title":"RAQUASI88","text":"RAQUASI88 is based on QUASI88kai, which is a fork of QUASI88 with various improvements.
Documentation is available in the release archives, or in the repository for the project. Files that do not end with .EN.TXT
are in Japanese only.
The PC-8000/8800 support forum thread, as well as individual game pages and forum threads, also contain some information.
"},{"location":"Setup-Guide/#rasnes9x","title":"RASnes9x","text":"Pending
"},{"location":"Setup-Guide/#ravba","title":"RAVBA","text":"Pending
"},{"location":"Setup-Guide/#retroarch","title":"RetroArch","text":"Pending
"},{"location":"Setup-Guide/#winarcadia","title":"WinArcadia","text":"Pending
"},{"location":"Setup-Guide/#cores","title":"Cores","text":""},{"location":"Setup-Guide/#final-burn-neo","title":"Final Burn Neo","text":"Pending
"},{"location":"Setup-Guide/#flycast","title":"Flycast","text":"Pending
"},{"location":"Setup-Guide/#ppsspp","title":"PPSSPP","text":"Pending
"},{"location":"Setup-Guide/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 22:21] televandalist:
Updated Setup Guide (markdown)[2023-06-05 22:19] televandalist:
Created Setup Guide (markdown)(Editado ya que en el dll version 0.73 esto es usualmente incorrecto)
En este ejemplo el juego es Zooming Secretary (NES), y el logro es Great Job! - Now you can take a rest, por pasar el juego.
En este queremos que el jugador hubiera pasado por todos los niveles y haber pasado el juego en orden para que salte el logro. Si el jugador utiliza un save state para ir directamente al ultimo mundo y terminarlo, el logro no va a salir.
Variables (Addresses)
0x06e9
: ID de Nivel. De 0 a 8 y 8 significa \"juego terminado\".Condiciones
Como este juego tiene 8 niveles, el valor en la variable del ID de Nivel tiene que ser incrementado 8 veces para pasar el juego. De esta manera el jugador no puede simplemente empezar el juego, cargar un estado de guardado e ir directamente al nivel final y pasar el juego. El/ella necesita pasar por todos los niveles.
El ResetIf
se encuentra solo para evitar casos en el que el jugador este cargando estados de guardado y yendo hacia adelante y atr\u00e1s por todos los niveles intentando que el contador llegue a 8. Si el/ella a cargar un estado yendo a un nivel mas bajo, el contador de hits pasara a cero.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esLink para o texto em ingl\u00eas: Simple Example of How to Avoid Load State Abusing
Neste exemplo, o jogo \u00e9 Zooming Secretary (NES), e o Achievement \u00e9 Great Job! - Now you can take a rest, por terminar o jogo.
Neste, queremos garantir que o jogador tenha passado por todos os n\u00edveis para vencer o jogo para ganhar o achievement. Se o jogador usar um save state para ir diretamente ao \u00faltimo est\u00e1gio e finaliz\u00e1-lo, o achievement n\u00e3o aparecer\u00e1.
Endere\u00e7os
0x06e9
: level ID. Do 0 ao 8. O 8 significa \"fim de jogo\".Condi\u00e7\u00f5es
Como este jogo tem 8 leveis, o valor no endere\u00e7o de identifica\u00e7\u00e3o (ID address) de n\u00edvel deve ser aumentado 8 vezes para vencer o jogo. Desta forma, um jogador n\u00e3o pode simplesmente iniciar o jogo, carregar (load game) para ir diretamente ao \u00faltimo n\u00edvel e depois vencer o jogo. Ele / ela precisa percorrer todos os n\u00edveis.
O ResetIf
est\u00e1 aqui apenas para evitar o caso em que o jogador continua carregando states (load state) indo para frente e para tr\u00e1s entre os n\u00edveis fazendo o contador de hits ser 8. Se ele / ela carrega um estado (load) indo para um n\u00edvel mais baixo, o contador de visitas vai para zero.
Last 10 changes on this page:
[2018-03-25 12:07] KingDice001:
Updated Simple Example of How to Avoid Load State Abusing pt_BR (markdown)[2018-03-25 11:51] KingDice001:
Updated Simple Example of How to Avoid Load State Abusing pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Simple Example of How to Avoid Load State Abusing.pt_BR (markdown)For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#general-changes","title":"General Changes","text":"~
or [
no long appear at the start of the entry database but at the end.Rich Presence:
Linking:
For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#developer-changes_1","title":"Developer Changes","text":"Memory Inspector:
Achievement Editor:
Rich Presence:
Time stamps on user, game pages and in many places now show the year.
"},{"location":"Site-Change-Log/#emulators-update-v0066","title":"Emulators Update [v0.066]","text":"For RANes, RAGens, RAVBA, and RASnes9x
"},{"location":"Site-Change-Log/#general-changes_1","title":"General Changes","text":"Started the log
Nota: es mas comun que esta tecnica no sea requerida para juegos mas simples. A si que, no es obligatoria para desarrolladores jr. (jr-devs).
El SubSource
puede ser seleccionado en la columba de Bandera (Flag) en el Editor de Logros (Achievement Editor)
Funciona similarmente a Add Source
, pero una bandera Sub Source
convierte el valor en memoria en un valor negativo.
Nota 1: Sub Source
NO es una bandera de subtraccion. Solo convierte el valor en negativo.
Nota 2: La ultima linea (sin el Add Source
o Sub Source
) aun se agrega a la comparativa final (Es una condicion que se tiene que cumplir).
Utlizando este ejemplo de uso de un AddSource
, si lo remplazamos con un Sub Source
y con los mismos valores (valor(0x8010) = 1
and valor(0x8020) = 2
), la comparacion seria -1 + 2 > 0
, o 1 > 0
.
SubSource
tambien puede ser utilizado para rastrear incrementos especificos en una variable. La condicion que se muestra abajo dice que el actual valor en la variable 0x0080dc
menos el valor en el antiguo fotograma (Delta Frame) en la misma direccion deberia de ser igual a 2
. Efectivamente, esto significa que la condicion es verdadera cualquier vez que el valor en 0x0080dc
se incremente exactamente sobre dos.
Si el resultado en tu operacion con Sub Source es un numero negativo, es posible buscarlo. A si es como se representan los numeros negativos:
-1
es 0xFFFFFFFF
-2
es 0xFFFFFFFE
-3
es 0xFFFFFFFD
-4
es 0xFFFFFFFC
-5
es 0xFFFFFFFB
-6
es 0xFFFFFFFA
-7
es 0xFFFFFFF9
A si que, vamos a decir que quieres buscar si el valor(0x8010) = 1
menos el valor(0x8020) = 2
es igual a -1
. Asi es como le harias:
Esto significa -2 + 1 = -1
, que es verdad.
Avanzado: tambien es posible utilizar directamente numeros negativos en la columna de la izquierda con tus operaciones Sub/Add Source. Para hacerlo, recuerda cambiar el Tipo (Type) de Mem
a Value
, y utilizar los valores explicados arriba, como 0xFFFFFFE5
para -27
, y 0xFFFFFFE3
para -29
, por ejemplo:
Esto significa -2 + (-27) = -29
, que es -2 - 27 = -29
, el cual es cierto.
De todos modos ten cuidado, si utilizas numeros negativos en una bandera con Sub Source, va a resultar en un doble negativo, convirtiendo los numeros de nuevo a positivos. Hecha un vistazo:
Esto significa - (-2) + (-27) = -29
, que es 2 - 27 = -29
, que es -25 = -29
, el cual es falso.
Last 10 changes on this page:
[2019-04-16 15:32] meleu:
fix broken link[2019-03-12 15:01] meleu:
Updated SubSource Flag ES (markdown)Note: most likely this technique is not needed for simple games. So, it's not mandatory for jr-devs.
The SubSource
can be chosen in the Flag column of the Achievement Editor
Works similarly to Add Source
, but the Sub Source
flag subtracts the calculated value from the accumulator.
Because it subtracts from the accumulator, SubSource A, B
is actually B - A
.
In this example the value in 0x8010
will be subtracted from the value in 0x8020
and the comparison will check is if this sum is greater than four.
If the value in 0x8010
is 1
and the value in 0x8020
is 2
, the comparison will be -1 + 2 > 4
, or 1 > 4
.
SubSource
can also be used to track specific increases in addresses. The conditions below states that the current value in address 0x80dc
minus the value in the previous frame in the same address must be equal 2
. Effectively, this means that the condition is true whenever the value in address 0x80dc
increases by exactly two.
The accumulator and all logic performed is limited to an unsigned 32-bit number. If the total drops below 0, it underflows, resulting in a very large positive number. Here's the representation for the first few negative numbers:
-1
is 0xFFFFFFFF
-2
is 0xFFFFFFFE
-3
is 0xFFFFFFFD
-4
is 0xFFFFFFFC
-5
is 0xFFFFFFFB
-6
is 0xFFFFFFFA
-7
is 0xFFFFFFF9
So, if you wanted to see if a value was 1 less than another value, you could write:
ID Flag Type Size Memory Cmp Type Size Mem/Val Hits 1 SubSource Mem 8-bit 0x8020 2 Mem 8-bit 0x8010 = Value 0xffffffff 0 (0)This would be true if the value at $8010 (1) was 1 less than the value at $8020 (2): 1 - 2
= -1
= 0xFFFFFFFF
.
However, you should swap the conditions to make it easier to read (B - A = -1
) is the same as (A - B = 1
):
This evaluates -1 + 2 = 1
, which is true.
It is also possible to use straight negative numbers in the left section of your Sub/Add Source operations. To do so, remember to change the Type from Mem
to Value
, and use the values as explained above, such as 0xFFFFFFE5
for -27
, and 0xFFFFFFE3
for -29
, for example:
If $8020 contains 2, this would be true. -2 + (-27) = -29
, which is -2 - 27 = -29
, which is true.
If you use a negative number in a SubSource
flag, it will result in a double negative, turning the number back to positive.
This means -(-2) + (-27) = -29
, which is 2 - 27 = -29
, which is -25 = -29
, which is false.
Last 10 changes on this page:
[2021-12-13 10:49] Jamiras:
\"less\" -> \"minus\"[2021-11-27 08:38] Jamiras:
Updated SubSource Flag (markdown)[2020-01-15 08:23] meleu:
better example of a negative number[2019-12-31 12:14] meleu:
cosmetic[2019-02-17 23:42] meleu:
better example for \"Using SubSource to Count Specific Increments\"[2019-02-17 21:05] meleu:
cosmetic[2019-02-14 10:10] meleu:
fix broken link[2019-02-12 13:25] meleu:
add heading to \"Using SubSource to Count Increments\"[2019-02-12 13:18] meleu:
fix broken link[2019-02-12 09:37] meleu:
Updated SubSource (markdown)Advanced Developer Topic
When browsing the list of games, you will see that some games have a [Subset]
tag in the title. Each of these contain achievements that for some reason or another, are not available in a game's base set. Subsets are typically home to specific types of challenge runs. They have also inherited what have been known simply as [Bonus]
and [Multi]
sets.
The methods to create a subset and means to play them will change once they become a more integrated feature. As of now, they require a patch to generate a unique hash and are separate entries from the base set, so achievements must be obtained separately as well. Information on creating these patches can be obtained here.
"},{"location":"Subsets/#types-of-subsets","title":"Types of Subsets","text":""},{"location":"Subsets/#bonus-sets","title":"Bonus Sets","text":"While Bonus sets are subject to debate amongst both players and achievement creators, the overall purpose of a bonus set is for achievements that were not fit for the base set to have a home and still be obtainable by a devoted player. Think of them as \"deluxe\" challenges. The following types of achievements are the most suitable for Bonus Sets: - Extreme Challenges: If it's generally voiced a challenge is too difficult, it's a prime candidate for a Bonus set. However, just because the achievement(s) are possible to code does not mean they are possible to obtain; therefore, the achievement must still be obtainable. A good example of this is the infamous Mr. Perfect from Mega Man (NES), which requires the player to complete the entire game without taking damage. - Grind Sessions: If achievements involve overly long and frustrating grinds that have no meaningful purpose, they're better suited for Bonus sets. These include leveling characters to the maximum level, maxing out stats, performing a task an absurd amount of times, etc. when none of those things award the player. A good example of something grindy that awards the player, thus making it suitable for a base set, is One of a Kind from Final Fantasy IV (SNES), which requires a highly RNG-reliant grind for an item to trade for said armor. - Variety Packs - Want to do a mixture of subset ideas all within one set because you don't want to do several different subsets? Then do it and throw it in a Bonus set. An example of this is the Suikoden Bonus Set, which contains various challenge runs, rare drops, and extreme challenges within a single subset. - Showcasing of or Abuse of Glitches: Glitching can have unpredictable effects in a game's memory, which can result in unwanted behavior for some achievements, thus making them not suitable for a base set. Some examples of this are Replica from Final Fantasy VII (PlayStation) and Rare Candy Addiction from Pokemon - Red and Blue Versions (Game Boy.
"},{"location":"Subsets/#multi-sets","title":"Multi Sets","text":"This one is simple. If an achievement requires input from more than one player in order to unlock it, then it cannot be in the base set.
"},{"location":"Subsets/#challenge-runs","title":"Challenge Runs","text":"While many base sets include plenty of challenges, developers have the option to add challenges that last the duration of a game's playthrough to a Subset. These are typically self-imposed challenges that go against how a game is normally played. Examples: - Chrono Trigger - No Level Up - requires players to complete the game without ever leveling up their characters. - EarthBound - Rare Drops - requires players to obtain all the rare drops from enemies. - Final Fantasy - Solo Class - requires players to complete the game using only one character class, but they need to do it with every class to master the set. - Pokemon - Professor Oak Challenge - There are several of these so far! This challenge requires players to catch and/or evolve every Pokemon possible between major story points in the game. - Trails in the Sky FC - NG Nightmare - requires players to obtain 100% completion in a single, NG (New Game) playthrough on the Nightmare difficulty setting, as opposed to doing it on NG+ with carryovers.
"},{"location":"Subsets/#dlc-and-expansions","title":"DLC and Expansions","text":"Not very common, but will become more common as our console support expands. Achievements in these sets are exclusive to a game's downloadable content or expansion pack(s). Examples: - Arc the Lad 2 - Arc Arena: Monster Tournament - released as a bonus disc in the Arc the Lad Collection, this requires save data from Arc the Lad 2 in order to play. - F-Zero X - Expansion Kit - achievements are for content exclusive to the 64DD expansion of the game. - Return Fire - Maps o' Death - a separate release that provides additional maps to the game. It requires save data from the original game in order to play.
"},{"location":"Subsets/#regional-differences","title":"Regional Differences","text":"If a regional variant of a game does not have enough differences to warrant a \"full\" set, but you don't want to include it with the base set due to interference with base challenges, you can make a Subset to showcase the differences.
"},{"location":"Subsets/#user-generated-content","title":"User-Generated Content","text":"If a game has a feature that allows players to make their own content such as custom levels, then a subset would be an acceptable place to include said content. Examples: - Irritating Stick - IrRAtating Custom Courses - features custom stages made by various RA community members. - Tony Hawk's Underground - RAdical Custom Goals/Gaps - Custom goals and gaps made by various RA community members.
"},{"location":"Subsets/#naming-scheme","title":"Naming Scheme","text":"To prevent players from getting confused, there is a specific naming scheme required for all Subsets: - Bonus Sets: Must have [Subset - Bonus]
following the base game title. For example: Castlevania [Subset - Bonus]
and Darkwing Duck [Subset - Bonus]
. - Multi Sets: Must have [Subset - Multi]
following the base game title. For example: Contra [Subset - Multi]
and Kirby 64: THe Crystal Shards [Subset - Multi]
. - Challenge Runs: Must have [Subset - Challenge Name/Type]
following the base game title. For example: Chrono Trigger [Subset - No Level Up]
and Pocket Monsters Midori [Subset - Monotype Challenge]
. - DLC and Expansions: Must have [Subset - DLC/Expansion Name
following the base game title. For example: Return Fire - [Subset - Maps o' Death]
and F-Zero X [Subset - Expansion Kit]
- User-Generated Content: While not actually required, including RA
in the subset title has been a fun way to name the content.
The approval process and claiming of a subset will vary depending on if the subset type is pre-approved, your involvement with the base set, and whether or not you're a full developer or a junior developer:
Authorship\u00b9 Approval and Claiming Process Sole Author of Core Set \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 Does not require a plan and revision vote \u2022 Considered a free claim \u2074 Collaborative Author of Core Set \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 Requires a plan and revision vote? \u00a0\u00a0\u00a0\u25e6 No, if all active authors of the set approve \u00a0\u00a0\u00a0\u25e6 Yes, otherwise \u2022 Considered a free claim \u2074 No Core Set Authorship \u2022 Subset must be approved by Developer Compliance \u00b2\u00b3 \u2022 If approved, a set plan must be posted in the base set's forum topic and must go through revision voting \u2022 Is not considered a free claim \u2022 In the event that both a revision and subset plan are made for a set, both claims will count as one Junior Developer \u2022 In addition to the above cases, must first be approved by Code Reviewers\u00b9 In the case of multiple revision authors, use the most restrictive ruleset in the table. Example: If there is a subset collaboration and any subset author is not a core set author, use the No Core Set Authorship
rules.
\u00b2 To Contact Developer Compliance, send them a site message here and replace the [Game Name]
and [Subset Name]
in the subject line with the game name and desired subset name.
\u00b3 The following are pre-approved subset types and therefore do not require contacting Developer Compliance: - Bonus - Multi - DLC/Expansions - Glitch Showcases - Regional Differences - User-Generated Content - Challenge Run: Low Level Game/No Leveling Runs - Challenge Run: Solo Class/Monotype Runs - Challenge Run: Checkpoint Challenges, such as Professor Oak Challenges - Challenge Run: Perma-Death Challenges, such as Nuzlocke Challenges
\u2074 For now, an admin must be contacted via Discord or by messaging RAdmin to mark a claim as free. As a courtesy, please only request this if you actually need the claim slot or if you expect a long development period.
"},{"location":"Subsets/#notes","title":"Notes","text":"Last 10 changes on this page:
[2023-10-30 13:00] The Mystical One:
Fixes formatting in the pre-approved list.[2023-07-11 10:55] The Mystical One:
Add in footnote for when there are multiple subset authors, which table entry should be used.[2023-06-30 13:45] The Mystical One:
Cleaned up the table for collaborative core set author of a subset, which implied that other authors had to approve, and so thus could stealthily veto. Current wording should be clear that collaborative author disapproval now merely means you have to go through the plan/revision vote route.[2023-06-23 11:21] The Mystical One:
Fixed spacing in pre-generated subject line on DevCompliance contact link.[2023-06-23 11:16] The Mystical One:
Added links to contact Developer Compliance with pre-generated subject to be edited.[2023-05-09 04:03] televandalist:
Added info about User-Generated Content to multiple sections. Also added it to the list of pre-approved subset types[2023-04-19 23:49] televandalist:
Moved the \"how to create a subset patch\" info to RAPatches' wiki[2023-03-13 07:48] televandalist:
Typo fix[2023-03-13 07:42] televandalist:
Fix formatting, hopefully...[2023-03-13 07:33] televandalist:
Rewrote the Approval and Claiming section again. Turned the info into a table so relevant points are easier to find.This article was originally published in the RANews - November/2020
"},{"location":"System-X-wen/#intro","title":"Intro","text":"There seems to be a lot of speculation on what the next available systems to support achievements will be. With the recent announcement of a PS2 core, there have been a lot of questions regarding if/when it will be supported. If you're only interested in the answer to that question, skip to the end of this article. But if you want to understand what exactly is needed to add support for a new system, keep reading.
"},{"location":"System-X-wen/#requirements","title":"Requirements","text":"These are the things that are required in order to add RetroAchievements support for a new system:
The first step is, obviously, to have an emulator for the system to be supported.
In the early days of RetroAchievements we used standalone emulators - one for each system. Keeping all those emulators bug-free and up-to-date requires a lot of effort and we don't have enough programmers involved on this front.
It's currently preferred to use a libretro core for emulation. This way the core developers can push new features and we can focus only on the achievement functionality. Cores can be updated and released without any additional effort for us.
Another big advantage is that libretro cores also function in RetroArch, which allows RetroAchievements to be earned on many platforms (the standalone emulators were all Windows-only applications).
Managed by: libretro core developers.
"},{"location":"System-X-wen/#step-1a-exposed-memory","title":"Step 1a: Exposed Memory","text":"As achievement triggers are a series of conditions that watch for things that happen in the emulated RAM, another requirement is access to the system's RAM.
Without exposed memory, the Memory Inspector appears blank and achievement creators are unable to create achievements.
Additionally, as RetroAchievements only reads the memory once per frame, some systems which heavily leverage paged memory have to provide some way to access the entire memory, not just the current page of memory.
Managed by: libretro core developers with some interaction with RetroAchievements developers.
"},{"location":"System-X-wen/#step-1b-ralibretro","title":"Step 1b: RALibretro","text":"The core must function in RALibretro, as that is where the achievement developers will identify the important pieces of memory and create the achievements.
This is usually only an issue if the core relies on some functionality not yet implemented in RALibretro (like the recently added keyboard and OpenGL 3D support), but some issues are caused by the RALibretro implementation being sufficiently different from the RetroArch implementation. Unless the core can be modified to not require the missing functionality, it cannot be supported until RALibretro is updated.
This page lists the status of each core the last time they were tested.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#step-2-game-identification","title":"Step 2: Game Identification","text":"We must be able to uniquely identify the games for the system.
We use a method called MD5, which scans the game's file and generates a number that we usually call as \"hash\". With this number it's possible to confirm if two copies of a file are identical, which makes it possible to ensure the player is using a ROM that the achievements were designed or tested against.
For most systems, we are able to just hash the entire ROM file, minus any header information. For larger games (particularly those on CD or DVD) we only hash what we consider to be the most important data to minimize load times. More information on how we identify games can be found here.
For systems with writable media (mostly home computers), we have to make sure that we don't hash any files that may be modified by the game itself. Systems that write to the game file must treat the original disk file as readonly and only write changes to a copy of the disk. If the core/emulator modifies the disk file, it can no longer be identified and cannot be considered viable for achievements.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#step-3-configure-the-web-server","title":"Step 3: Configure the Web Server","text":"In order to support a new system, the RetroAchievements web server must be properly configured to accept new game and achievement entries for that system.
Managed by: RetroAchievements
"},{"location":"System-X-wen/#when-will-ra-support-system-x","title":"When will RA support System X?","text":"This page lists the status of each core the last time they were tested.
"},{"location":"Systems-Memory-Mapping/","title":"Work in Progress","text":"This page details how the memory of each supported system is mapped.
Memory banks as registered in the RA emulators are defined here.
"},{"location":"Systems-Memory-Mapping/#nes","title":"NES","text":"Reference: https://wiki.nesdev.com/w/index.php/CPU_memory_map
Bank Offset Length Description 0 0x0000 0x0800 2KB internal RAM 1 0x0800 0x0800 Mirror of $0000-$07FF 2 0x1000 0x0800 Mirror of $0000-$07FF 3 0x1800 0x0800 Mirror of $0000-$07FF 4 0x2000 0x0008 PPU registers 5 0x2008 0x1FF8 Mirrors of $2000-$2008 6 0x4000 0x0018 APU and I/O registers 7 0x4018 0x0008 APU and I/O test registers 8 0x4020 0x1FE0 Cartridge data 9 0x6000 0x2000 Cartridge RAM 10 0x8000 0x8000 Cartridge ROM"},{"location":"Systems-Memory-Mapping/#snes","title":"SNES","text":"https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map
"},{"location":"Systems-Memory-Mapping/#n64","title":"N64","text":"https://raw.githubusercontent.com/mikeryan/n64dev/master/docs/n64ops/n64ops%23h.txt
"},{"location":"Systems-Memory-Mapping/#gb","title":"GB","text":"Reference: http://gameboy.mongenel.com/dmg
The memory map reflects the CPU memory space.
"},{"location":"Systems-Memory-Mapping/#gbc","title":"GBC","text":"The memory map is identical to the Game Boy's, with the exception of banked work RAM. The first bank is mapped to its usual location in CPU space, while banks 2-7 are appended to the end of the memory map, in the 0x10000-0x15FFF region.
"},{"location":"Systems-Memory-Mapping/#gba","title":"GBA","text":"https://www.coranac.com/tonc/text/hardware.htm#sec-memory
"},{"location":"Systems-Memory-Mapping/#virtualboy","title":"VirtualBoy","text":""},{"location":"Systems-Memory-Mapping/#master-system","title":"Master System","text":"Reference: http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html
TODO: find a more reliable source.
Offset Length Description 0x0C000 0x02000 RAM"},{"location":"Systems-Memory-Mapping/#megadrive-genesis","title":"MegaDrive (Genesis)","text":"https://en.wikibooks.org/wiki/Genesis_Programming https://wiki.megadrive.org/index.php?title=Main_68k_memory_map see also Jamiras comment here: https://github.com/RetroAchievements/RALibretro/issues/47#issuecomment-455374796
"},{"location":"Systems-Memory-Mapping/#gamegear","title":"GameGear","text":""},{"location":"Systems-Memory-Mapping/#atari-2600","title":"Atari 2600","text":"Reference: http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-05.html#summary
Offset Length Description 0x080 0x080 RAM"},{"location":"Systems-Memory-Mapping/#atari-7800","title":"Atari 7800","text":""},{"location":"Systems-Memory-Mapping/#atari-lynx","title":"Atari Lynx","text":""},{"location":"Systems-Memory-Mapping/#colecovision","title":"ColecoVision","text":""},{"location":"Systems-Memory-Mapping/#neogeo-pocket","title":"NeoGeo Pocket","text":""},{"location":"Systems-Memory-Mapping/#pcengine-turbografx16","title":"PCEngine (TurboGrafx16)","text":""},{"location":"Systems-Memory-Mapping/#pcengine-cd","title":"PCEngine CD","text":""},{"location":"Systems-Memory-Mapping/#arcade","title":"Arcade","text":""},{"location":"Systems-Memory-Mapping/#pc-8001-pc-8801","title":"PC-8001 / PC-8801","text":"Reference: http://www.maroon.dti.ne.jp/youkan/pc88/memmap.html
The memory map is based on the PC-8801 layout, but excludes graphics VRAM and extended RAM.
"},{"location":"Systems-Memory-Mapping/#pc-8801","title":"PC-8801","text":"Bank Offset Length Description 0 0x00000 0x10000 Main RAM 1 0x10000 0x1000 Text VRAMText VRAM is also known as high-speed RAM, and is used as a main RAM area in some titles.
"},{"location":"Systems-Memory-Mapping/#pc-8001","title":"PC-8001","text":"Reference: http://www.cyross.com/pc8801wiki
The entire memory space is mapped in the PC-8801 main RAM bank, but only RAM is exposed, so most of the mapped space will remain uninitialized.
Offset Length Description 0x08000 0x08000 RAM"},{"location":"Systems-Memory-Mapping/#apple-ii","title":"Apple II","text":"Reference: http://apple2.guidero.us/doku.php/mg_notes/general/mem_map
The memory map consists of both main and auxiliary RAM banks. Rather than mapping the CPU-accessible memory space, which can flicker at high frequencies, the RAM banks are mapped consecutively.
Auxiliary RAM is only available on systems with 128KB of RAM (Apple IIe and up), so it will remain uninitialized on 64KB systems or when running titles that are not designed to make use of auxiliary RAM.
Bank Offset Length Description 0 0x00000 0x10000 Main RAM 1 0x10000 0x10000 Auxiliary RAM"},{"location":"Testing-for-Demo-Mode/","title":"Testing for Demo Mode","text":"Link to original post on RetroAchievements
One of the more annoying things that can happen is if you leave your game running, and the game awards you achievements for reaching levels you haven't reached yet. This is fairly common, as many games of the 16-bit era still had 'attract modes', and is usually a pretty easy thing to fix with the achievements.
We are looking in the game to find something that is set when the game is in a demo mode. Either a small piece of memory set to 0
, or 1
, or 0xff
. It could be anything really.
To start it will help to play through the game a little, and set a few save states throughout different levels of the game. And then to begin finding this 'is demo mode active' memory, we should first reset the game and wait for the demo to play.
During when the game plays the first demo, use the Memory Inspector to start a new 8-bit test, (click New 8-bit test
), and set the filter value to be equal to the last known value (under Filter values:
, set to ==
), and press Filter!
a few times. With each press, you should see the number of matches slowly become fewer, but not by much.
Next wait til the game starts playing another demo but on a different level. When the next demo is playing, press Filter a few more times, and you'll see the candidates get smaller again. Continue to do this until you've eliminated as many candidates as you can.
IMPORTANT: Don't forget, you only want to press filter when the game is DEFINITELY in the demo. If you press when it's on the title screen, or playing a movie, or even when fading in or out, the value might not be set. There's no real way to know; we are assuming that it will be set (or unset) when the demo itself is playing, which itself is only a fairly likely assumption.
After viewing some or all of the demos, you will probably still have TONS of potential memory values. Here's the juicy part, that should eliminate a ton of candidates at once. Load up one of your save states where you are definitely in-game, playing and NOT in a demo.
Now we will be filtering for \"I am NOT in a demo\". Set your filter value to not-equal !=
, and hit Filter
ONLY ONCE.
At this point, the set of candidates now represent memory values that are \"values different to when a demo was playing\". Switch back to equal (=), and hit Filter
a few more times (because we are saying 'whatever values we have, they are the same as the ones just now. The 'is demo mode' value will still be equivalent to whatever it was just now). It might help to move the character around the screen, or perform a few actions, between hitting the Filter
button.
Next, load up your next save state, and perform the same routine. Your number of candidates should reduce further, until you have less than 100 remaining.
By now if you should have only a few candidates remaining. Likely values for the candidate will be 0, 1 or 0xff. If it is something else I'd recommend ignoring it, as it's not likely to be what we're looking for (but still, not impossible). For example, in Sonic the Hedgehog (Mega Drive), the address is 0xfff0, and the value is 01 when a demo is active.
Our next step will be to verify our find. Pick one of these values and restart the game, keeping an eye on this value as the game plays the demos. Then load through each of your save states and see if it changes as you expect it to. Perhaps start a brand new game and see if it matches up correctly to the value it is when the other save states are active. Make a note of the value it is when the game is active.
Let's say we are pretty confident we've found the memory used to say 'game is in demo mode'. We'll save this to CodeNotes by adding a description in the Memory Inspector, then clicking Add Note
.
Next we will use the Achievements
dialog to find all the achievements that could unlock during the demos (probably all the level-based achievements), and add a new requirement to these achievements. Add it alongside the existing requirements. For this new requirement, set the address to the 'demo mode active' memory we found, set the mem size to 8-bit, and set the value we require to be equal to the value when the game is active.
That's it! Now the achievement will only trigger if the player is on a certain level, AND that the game is not in a demo mode!
Before we commit this back to the server, it's a good idea to test out this to see if it worked. Press ESC on the game to bring up the overlay and pause the game. Then click 'Reset Achieved Status' on this achievement in the 'Achievements' dialog, and confirm the prompt. Finally, click back in the game and press TAB to reset the game, and ESC to dismiss the overlay. Press F4 a few times to increase the speed of the game, and watch to ensure the achievement doesn't trigger. If it still triggers, it sounds like something went wrong. Try and check the requirements are entered correctly ('is demo mode' comparison probably needs to be '8-bit'), check that you reset the right achievement, and finally watch the value of the 'is demo mode' flag in the memory inspector.
If it worked correctly, select the achievement in the Achievements dialog, hit 'Commit Selected', confirm the dialog and you're done!
There are many alternative methods for getting the 'is demo mode' flag, but unfortunately none of them are guarantees. All I can do is suggest methods I've found in existing games. To start with, I'll suggest Castlevania: Bloodlines (Mega Drive), and the achievement Watery Grave (5). There is a mild cheat-protection in these requirements, but I'll just focus on the 'demo mode' part. Castlevania treats every screen as a type of 'screen mode'. To test for this, I started the game, and at the sega logo, I started an 8-bit test. I then assumed that the 'screen mode' would have changed by the time it was playing the 'intro movie', so I did a 'not equal', then an 'equal' filter to suggest that I only want candidates that have changed. I did this again at the 'press start' screen, then at the options screen, then the password screen, character select screen, and finally ingame.
By this point I had 10 matches. I mentally eliminated anything where the surrounding values were very random - this data is likely to be graphic or sound data, and won't be much use for us. After having repeated the test and watching each of these 10 values, I also eliminated a few more, as some of these appeared to change while I was still on the same screen. This left me with three values, 0x9002
, 0x9004
and 0x905e
. After going into game and playing for a few seconds, I could tell that 0x905e
was changing while I was still ingame. I opted to use 0x9002
, as it was located fairly close to clean boundary (0x9000
). Also values like this are likely to be in the second half of RAM (between 0x8000
and 0xffff
) as they are easier for developers to address.
Tambi\u00e9n mira: Un vistazo al Inspector de Memoria.
!=
y =
.>
o <
). Por ejemplo, cero vida es usualmente 0
, Stage 1 es usualmente el valor 0
, Stage 2 es usualmente el valor 1
dependiendo el tipo de juego.AB CD WX YZ
, en 16 bit se convierte en CDAB YZWX
. A esto se le llama \"ordenado de bits big endian\". Sin preocupaciones puedes ignorar esta platica geek, solamente recordando que las cosas se almacenan al rev\u00e9s en la vista de 16 bit y superiores.Bits: 7 6 5 4 3 2 1 0
arriba de las variables. Y abajo de esos n\u00fameros va a ver ya sea un 0
o un 1
, as\u00ed como 0 0 1 0 0 0 1 1
en la imagen de abajo. Si bit5
tiene un 1
arriba de el, entonces bit3=1
para esa variable. El uso de Single bit es muy com\u00fan en un juego para items/eventos/desbloqueos/etc. Tal vez suene un poco confuso , pero es muy importante que lo entiendas. Algunos juegos con espacio en memoria muy limite usan los campos de bits (Bit fields) much\u00edsimo! Es una t\u00e9cnica importante de aprender.Tambi\u00e9n mira: Conceptos No-Bievenidos y Dise\u00f1o de Logros.
PauseIf
cheat codes: Si el juego tiene un cheat code para incrementar vidas, seleccionar stages, etc. Percatate de encontrar las variables para ello y agregar alguna especie de protecci\u00f3n a tus logros.\u00e9
en Pokemon, ya que actualmente rompen algunas cosas (como el feed). Cambien no son visibles en la b\u00fasqueda si no se introduce el car\u00e1cter especial. Lo mismo para c\u00f3digos universales de Emoji UTF-8. Excepci\u00f3n Permitida: Scripts de Rich Presence.Un truco usual para empezar a filtrar valores para encontrar el Modo Demo es dejar que empieze y asi empezar a filtrar con =
\"Last Known Value\" y presionar \"Filter\" suficiente veces, deteni\u00e9ndote una vez que el demo hubiera terminado (ten cuidado de no filtrar despu\u00e9s que se hubiera terminado el demo).
Ahora empieza el juego de manera normal y cuando tengas control del personaje cambie el filtro a !=
y filtra solo una vez. Los valores que se filtraron son los que cambiaron desde el modo demo.
Ahora cambien el filtro de regreso a =
y entonces inicia una secuencia de jugar-y-filtrar. Que significa juega un poco, mu\u00e9vete por el escenario, derrota algunos enemigos, y entonces filtra.
Pro tip: Es muy muy muy \u00fatil tener estados de guardado (savestates) en diferentes niveles del juego, ya que puedes hacer lo de jugar-y-filtrar en diferentes escenarios y hacer el filtrado mas efectivo.
Despu\u00e9s de conseguir algunas variables como resultado, por lo general el valor de demo es igual a 1
(algunas veces tambi\u00e9n es ff
). Si encuentras una direcci\u00f3n potencial editala a 0
y checa si eres capaz de mover al personaje. Si s\u00ed, BINGO!, esa es la variable que estabas buscando.
Aqu\u00ed un truco f\u00e1cil utilizando un logro de prueba para observar si una variable tiene cambios, que es algo que tu vas a querer saber com\u00fanmente.
Condiciones Explicadas
Valor 1 = Valor 0
; Esto es para prevenir que el logros jamas sea verdadero, ya que el valor 0 nunca va a ser igual a 1.Valor 1 = Valor 1
; Para que funcione este truco el logro necesita hits para que se resetee. Cuando 1 = 1 hits ser\u00e1n agregados a la condici\u00f3n.ResetIf Mem 0x10 != Delta 0x10
; Esta es la variable que quieres observar. Cada vez que hay un cambio el logro se va a reiniciar.Pause on Reset
y Active
est\u00e9n marcadas. Ahora vas a conseguir un pop-up y la emulaci\u00f3n se va a pausar cada vez que la variable cambie.Last 10 changes on this page:
[2019-04-14 13:53] eldexterr:
Document Finished :)[2019-04-12 11:50] eldexterr:
Document isn\u00b4t finishLink para o texto em ingl\u00eas: Tips and Tricks
"},{"location":"Tips-and-Tricks-pt_BR/#dicas-para-convencao-de-nomes","title":"Dicas para Conven\u00e7\u00e3o de Nomes","text":"NTSC USA
se dispon\u00edveis, pois 60 FPS (Frames Per Second) \u00e9 uma experi\u00eancia de jogo mais suave. As ROMs lan\u00e7adas como PAL European
s\u00e3o executados em 50 FPS, e devem ser evitados na maioria dos casos. As ROMs lan\u00e7adas como NTSC Japan
tamb\u00e9m s\u00e3o executados em 60 FPS, mas s\u00f3 \u00e9 a melhor op\u00e7\u00e3o se o jogo for uma vers\u00e3o exclusiva do Jap\u00e3o. Recorrer a um jogo lan\u00e7ado como PAL European
deve ser apenas em \u00faltimo caso (exclusivo para a Europa) e normalmente \u00e9 um n\u00famero muito seleto de jogos \u00fanicos da biblioteca inteira do console.!=
E ==
.>
ou <
). Por exemplo, geralmente nenhuma barra de energia \u00e9 0
, o est\u00e1gio 1 geralmente \u00e9 o valor 0
, o est\u00e1gio 2 geralmente \u00e9 o valor 1
, dependendo do tipo de jogo. Outro exemplo, talvez cada segmento da sua energia tenha 4 barrinhas - Voc\u00ea deve procurar quando \"4\" vai para \"3\" quando voc\u00ea perde uma barrinha?Comece com a visualiza\u00e7\u00e3o de 8 bits no Memory Inspector. Olhar para grandes partes de mem\u00f3ria ir\u00e1 complicar as coisas, mas isso facilitar\u00e1 o trabalho de um desenvolvedor experiente. Se voc\u00ea est\u00e1 apenas come\u00e7ando e desconhece termos como endianess e bit ordering (ou quando o cansa\u00e7o bate), \u00e9 melhor fazer suas observa\u00e7\u00f5es na vis\u00e3o de 8 bits. \u00c9 mais f\u00e1cil!
"},{"location":"Tips-and-Tricks-pt_BR/#nivel-2-medio","title":"N\u00edvel 2 - M\u00e9dio","text":"Big data (vista de 16 ou 32 bits): lembre-se de que ao adicionar um endere\u00e7o de 16 bits o endere\u00e7o \u00e0 direita vem primeiro.
Exemplo: AB CD WX YZ
em 8 bits torna-seCDAB YZWX
em 16 bits.
Isso \u00e9 chamado de \"ordena\u00e7\u00e3o de bytes big endian\". Voc\u00ea pode tranquilamente ignorar esse papo geek apenas lembrando que as coisas est\u00e3o armazenadas \"de tr\u00e1s pra frente\" na vista de 16 bits e acima.
Lembre-se de que se voc\u00ea estiver vendo mem\u00f3ria em peda\u00e7os maiores, quando voc\u00ea destaca um valor, esse valor agora representa um \"peda\u00e7o\" de mem\u00f3ria de 16 ou 32 bits e n\u00e3o o endere\u00e7o de mem\u00f3ria de 8 bits que voc\u00ea pode estar procurando. Voc\u00ea precisar\u00e1 voltar para a vis\u00e3o de 8 bits e destacar a endere\u00e7o que te interessa, se voc\u00ea encontrar algo de 8 bits que pare\u00e7a interessante.
"},{"location":"Tips-and-Tricks-pt_BR/#nivel-3-avancado","title":"N\u00edvel 3 - Avan\u00e7ado","text":"Adicionando suporte para os cores libretro Little Endian: N64-specific, na maioria das vezes, ao adicionar suporte para um core libretro LE ao seu set, os conceitos explicados anteriormente (N\u00edvel Intermedi\u00e1rio) se aplicam, com ordena\u00e7\u00e3o de bytes ligeiramente alteradas. O que \u00e9 visto como leg\u00edvel em 16 bits muda drasticamente no interior de um core LE.
Exemplo: AB CD WX YZ primeiro pega os bits de A, vira-os como se estivessem olhando em um espelho; bits de B bits e vira-os; bits de C... etc, at\u00e9 Z, e ent\u00e3o se torna WXYZ ABCD com os bytes do seu \u00faltimo passo.
Para adicionar o suporte LE, voc\u00ea estar\u00e1 escrevendo uma condi\u00e7\u00e3o do n\u00facleo falso (Mem 0x000001 = Mem 0x000001), copiando suas condi\u00e7\u00f5es originais n\u00e3o-LE com um 'PauseIfna parte superior em uma Alt, copie as mesmas condi\u00e7\u00f5es para a outra. Ambos os 'PauseIf
s conter\u00e3o um cheque olhando para um endere\u00e7o de mem\u00f3ria que nunca muda para ver se o seu valor de 16 bits teve o seu pedido de bytes alterado (Pense nisso como \" PauseIf
n\u00e3o estou no n\u00facleo LE\" e \"PauseIf
eu sou\" nas condi\u00e7\u00f5es alt).
Um funcionar\u00e1 se o jogador estiver executando em um n\u00facleo LE, o outro n\u00e3o. Em seguida, voc\u00ea executar\u00e1 a matem\u00e1tica que descrevi acima nos valores que voc\u00ea est\u00e1 procurando no \"PauseIf
, n\u00e3o estou no LE core\" Alt, e atualizando-o.
Confuso? Sim. \u00c9 por isso que a maioria dos iniciantes e desenvolvedores intermedi\u00e1rios n\u00e3o deve se preocupar.
"},{"location":"Tips-and-Tricks-pt_BR/#dicas-de-criacao-de-achievements","title":"Dicas de cria\u00e7\u00e3o de achievements","text":"mode != Demo
ou algo semelhante em suas conquistas.Last 10 changes on this page:
[2018-03-28 20:15] meleu:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 12:03] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 12:03] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-25 11:47] KingDice001:
Updated Tips and Tricks pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Tips and Tricks.pt_BR (markdown)See also: Memory Inspector Overview.
!=
and =
filters.>
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.AB CD WX YZ
, in 16 bit it becomes CDAB YZWX
. This is called \"big endian byte ordering\". You can safely ignore the geek-speak by just remembering things are stored backwards in 16 bit view and above.Bits: 7 6 5 4 3 2 1 0
above the addresses. And below those numbers will be either 0
or 1
, like 0 0 1 0 0 0 1 1
in the image below. If bit5
has 1
under it, then bit5=1
for that address. Single bit usage is very common for game items/events/unlocks/etc. This may be confusing, but it's very important to understand. Some games with limited memory space use bit fields a lot! Its an important technique to learn.See also: Unwelcome Concepts and Achievement Design.
PauseIf
cheat codes: If the game has a cheat code to increase lives, select stages, etc. Make sure to find the addresses for it and add some kind of protection in your achievements.\u00e9
in Pokemon, as they currently break a few things (like feed). They are also not visible in search without the special character. Same for UTF-8 Universal Emoji codes. Allowed exception: Rich Presence Scripts.An usual trick to start filtering addresses to find the Demo Mode is to let the demo begin and then start to filter =
\"Last Known Value\" and press \"Filter\" many times, stopping right before the demo ends (be careful to not filter after the demo ends).
Now start the game normally and when you're able to control the character change the filter to !=
and then filter one single time. The filtered addresses are the ones that has changed since the demo mode.
Now change the filtering back to =
and then start a sequence of play-and-filter. Which means play a bit, move around then scenario, defeat some enemies, and then filter.
Pro tip: It is very very very useful to have savestates in different levels of the game, so you can do the play-and-filter in different scenarios and make the filtering more effective.
After getting a few addresses as result, quite often the demo value will be 1
(sometimes it's also ff
). If you find a potential address edit it to 0
and check if you become able to control the character. If yes, BINGO!, that's the address you're looking for.
Here's an easy trick using a dummy achievement to watch an address for any changes, which is something you'll quite often want to know.
Conditions Explained
Value 1 = Value 0
; This is to prevent the achievement from ever being true, as the value 0 never equals 1.Value 1 = Value 1
; For this trick to work the achievement needs hits to reset. When 1 = 1 hits will be added to this condition.ResetIf Mem 0x10 != Delta 0x10
; This is the address you want to watch. Any time there is a change the achievement will reset.Pause on Reset
and Active
are both checked. Now you will get a pop-up and emulation will pause each time this address changes.Last 10 changes on this page:
[2023-06-05 22:26] televandalist:
Updated Tips and Tricks (markdown)[2023-06-03 02:06] televandalist:
Updated Tips and Tricks (markdown)[2021-11-30 18:30] SporyTike:
Typo that caused a jr-dev confusion. Bit5 = Bit5 and not Bit3[2019-08-13 19:42] Kvon:
Tips and Tricks: Text hooks tip added[2019-02-07 14:57] meleu:
decrease verbosity; add trick fo find demo mode; group tips and tricks more reasonably[2019-01-17 11:19] meleu:
removed the \"Limitations\" topic[2019-01-17 11:17] meleu:
subnests on bullet points need 4 spaces[2019-01-15 19:15] Jamiras:
Update reset behavior for 0.75 toolkit[2019-01-13 16:20] Rapha\u00ebl Zumer:
Add \"Avoid relying on text and graphics\" tip[2019-01-13 15:41] Rapha\u00ebl Zumer:
Fix typos and reword a memory digging tipTrigger
marks one or more conditions in an achievement as the logic that is expected to be the final logic to become true which causes the achievement to trigger. This allows the runtime to know when an achievement is about to trigger, so a challenge indicator can be shown on the screen.
When all conditions that must be true for the achievement to trigger are true except those marked with the Trigger
flag, the achievement will become Primed. It will remain Primed as long as all of the previous conditions remain true, or until the achievement triggers or is deactivated.
This functionality allows putting indicators on the screen to help players know when a challenge is active, or more importantly, when they fail the challenge.
A prime example would be for a damageless boss fight. The Trigger
flag would be put on the \"boss is dead\" condition. When all other conditions are true (ex: in boss fight, boss at full hp (HitCount 1), not demo), the challenge indicator would be displayed. If the player takes damage, the HitCount on the \"boss at full hp\" condition would get reset, and the challenge indicator would go away.
Trigger should not be used if the player is not attempting a challenge. Achievements that would be earned without any additional effort from the player don't need to tell the player they're about to be earned.
Up to eight challenge indicators can be shown at one time (though rarely more than one or two should be). If indicators and leaderboard trackers are both visible, the tracker will appear above the indicators.
"},{"location":"Trigger-Flag/#interaction-with-pauseif","title":"Interaction with PauseIf","text":"If the achievement is Paused while Primed, the indicator will become hidden.
If it is Paused before it is Primed, the indicator will not be shown at all until the achievement is unpaused.
When the achievement becomes unpaused, the indicator may be displayed or hidden depending on the state of the non-Trigger conditions.
"},{"location":"Trigger-Flag/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2022-09-10 11:52] Jamiras:
Updated Trigger Flag (markdown)[2021-06-29 08:18] Chris:
update interaction w/ pauseif to latest (0.79.2) integration[2021-04-30 12:07] Jamiras:
Created Trigger Flag (markdown)You can and should always be as creative as you can be, but there are some concepts that are NOT welcome for achievements. Below is a list of what have been deemed unwelcome concepts. Please note that there is some wiggle room so some exceptions to the rules have been provided. When in doubt, consult with Developer Compliance.
It is bad design to have achievements popping too frequently. An example of this is unlocking achievements for both defeating a boss as well as obtaining a specific item after the fight.
When these are acceptable:
Achievements for dying, getting a game over, or repeatedly failing a task just for the sake of it are unnecessary.
When these are acceptable:
Examples of this are achievements for simply starting a game, collecting a single coin, watching a video, etc.
When these are acceptable:
Achievements for performing tasks that are only possible by using glitches, exploiting bugs, etc. are not allowed in a base set. Glitches/Bugs are errors within a game's code which often cause unintended behavior. Examples are memory overflow, incorrectly loaded levels, and clipping into objects.
When these are acceptable:
[Subset - Glitch Showcase]
or [Subset - Bonus]
.Achievements that require input from at least one other player are not allowed in a base set.
When these are acceptable:
[Subset - Multi]
sets.Achievements that require a long task where the slightest mistake will end in failing the challenge. Especially challenges where randomness and other variation in game behavior makes anticipating actions extra difficult.
When these are acceptable: - Subsets for Extreme Challenges, or a typical Bonus set. - Games where behavior of enemies or obstacles is highly deterministic or pattern-based. - Games where this challenge is a common goal of players or not seen as an extreme challenge by the game's community.
"},{"location":"Unwelcome-Concepts/#pointless-excessive-grinding","title":"Pointless Excessive Grinding","text":"Achievements that require long, repetitive tasks solely for the sake of saying you did it. If an achievement calls for spending countless hours making a character reach level 99 or farming for 99 of a certain item, but there is no actual purpose to it, then it does not have a place in a base set.
When these are acceptable:
Rely entirely on randomness, especially when there are extremely low odds.
When these are acceptable: Games or mini-games where the randomness is a major aspect.
"},{"location":"Unwelcome-Concepts/#secret-achievements","title":"\"Secret Achievements\"","text":"When the player has no indication of what they're going after.
When these are acceptable:
Let's face it. There are some games, or 'games,' rather, that are not fit for achievements. Below is a list of said types of games that are usually not.
If a compilation or multi-cart features games that share the same console, then they are not allowed. An example of this is 6-Pak for Genesis/Mega Drive, which contains six Genesis/Mega Drive games.
"},{"location":"Unwelcome-Concepts/#betas-demos-and-prototypes","title":"Betas, Demos, and Prototypes","text":"If the game ended up having an official release, then these are generally not allowed unless there is unique content. Games that only existed as betas, demos, or prototypes are typically fine, so long as they're actually playable (some prototypes barely qualify).
"},{"location":"Unwelcome-Concepts/#rich-presence-custom-name-restriction","title":"Rich Presence Custom Name Restriction","text":"Rich Presence that directly displays custom player input text is prohibited. The most common example being displaying what a player inputs as their character or file name directly into Rich Presence.
This restriction helps in preventing inappropriate or offensive content from showing on various site pages as well as makes the moderation of Rich Presence more manageable, in addition to protection player privacy as players may not realize their text is being displayed publicly.
"},{"location":"Unwelcome-Concepts/#banned-titles","title":"Banned Titles","text":"We generally avoid banning titles, leaving content filtering up to individual users to decide. Even still, some titles are egregious enough to warrant removal from the site, both for the protection of the users and of the site itself. Below is an incomplete list of such titles, to be updated as necessary.
Title Year Platform \u2022 Lolita Syndrome\u2022 \u30ed\u30ea\u30fc\u30bf\u30fb\u30b7\u30f3\u30c9\u30ed\u30fc\u30e0 1983 FM-7, PC-88 \u2022 My Lolita\u2022 \u30de\u30a4\u30fb\u30ed\u30ea\u30fc\u30bf 1984 FM-7, PC-88 \u2022 The Guy Game 2004 PS2, Xbox, Windows"},{"location":"Unwelcome-Concepts/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-05-05 11:11] Andrew Comer:
Updated Unwelcome Concepts (markdown)[2024-05-05 11:08] Andrew Comer:
Bullet formatting fixes.[2024-03-27 09:46] The Mystical One:
Added details for \"Requires Complete Perfection\"[2024-01-26 08:49] The Mystical One:
Updated Unwelcome Concepts (markdown)[2024-01-26 08:46] The Mystical One:
Added Rich Presence Custom Name Restriction section.[2023-06-30 11:03] The Mystical One:
Added Developer Compliance contact links.[2023-06-28 15:10] The Mystical One:
Added in the clarification that an approved glitch should be for accomplishing something with the glitch.[2023-06-12 18:27] meleu:
fix list formats so mkdocs can render them properly[2023-06-05 21:10] televandalist:
Added Demos to \"Betas, Demos, and Prototypes\" - Added a link to GBA Video Series - Added quick links to the sections under unwelcome game types -[2023-06-02 20:33] televandalist:
Updated WIP Unwelcome Concepts (markdown)Great place to find game guides, finding almost all you could want to know about game content, find cheat codes, for development utility and also for making proper protections against the codes.
"},{"location":"Useful-Links/#httpswwwvgmapscom","title":"https://www.vgmaps.com/","text":"Thousands of maps/screenshots of your favourite video games.
"},{"location":"Useful-Links/#httpstcrfnet","title":"https://tcrf.net/","text":"It is a site dedicated to unearthing and researching unused and cut content from video games. From debug menus, to unused music, graphics, enemies, or levels, many games have content never meant to be seen by anybody but the developers \u2014 or even meant for everybody, but cut due to time/budget constraints.
"},{"location":"Useful-Links/#cumulative-probability-calculator","title":"Cumulative Probability Calculator","text":"When working with achievements with an RNG factor you will often want to know the probability of success for players given a number of attempts. (see unwelcome concepts, achievements with low odds). Use it to calculate P(X>=1), assuming the player needs to succeed only once across several attempts, to estimate how many attempts an might require for less lucky players.
"},{"location":"Useful-Links/#httpswwwzapstudionetframecalc","title":"https://www.zapstudio.net/framecalc/","text":"Simple utility to calculate frames out of time given and the other way around.
"},{"location":"Useful-Links/#httpswwwromhackingnet","title":"https://www.romhacking.net","text":"The biggest repository of patches to hack ROMs.
"},{"location":"Useful-Links/#httpdatacrystalromhackingnetwikihashes","title":"http://datacrystal.romhacking.net/wiki/Hashes","text":"Explains what hashes are. If you don't know what they are you should probably read this.
"},{"location":"Useful-Links/#httpsemn178githubioonline-toolscrc32_checksumhtml","title":"https://emn178.github.io/online-tools/crc32_checksum.html","text":"Drag and drop checksum checker utility. You can also get the checksum from the rom you have loaded from the retroachievements menu in the emulators.
"},{"location":"Useful-Links/#httpwwwmarcrobledocomrompatcherjs","title":"http://www.marcrobledo.com/RomPatcher.js","text":"An online ROM patcher utility.
"},{"location":"Useful-Links/#httpjsonviewerstackhu","title":"http://jsonviewer.stack.hu","text":"Excellent for viewing raw achievements
"},{"location":"Useful-Links/#httpgamehackingorg","title":"http://gamehacking.org","text":"Provides many Pro Action, Game Genie, and Game Shark codes which can be converted to RAW addresses on the site.
"},{"location":"Useful-Links/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-12-29 12:34] meleu:
add https://www.zapstudio.net/framecalc/[2019-01-29 14:15] Kvon:
added the Cumulative Probability Calculator link[2019-01-07 12:14] meleu:
added vgmaps.com[2018-12-06 20:20] televandalist:
Added gamehacking.org - I use the site a lot and always recommend it to people looking for addresses. - tele[2018-10-11 00:21] CoolCanuck:
gamefaqs.com -> gamefaqs.gamespot.com[2018-05-03 11:53] meleu:
better format, making the URLs appear on the ToC after mkdocs conversion[2018-04-28 22:31] meleu:
Updated Useful Links (markdown)[2018-04-28 19:03] magusLOGS:
added tcrf.net[2018-04-28 13:48] meleu:
Created Useful Links (markdown)Nosotros queremos un entorno abierto, positivo y acogedor.
Ejemplos de comportamientos que contribuyen a crear un entorno positivo incluyen:
Ejemplos de comportamientos inaceptables de parte de los participantes incluyen:
Los administradores tienen el derecho y la responsabilidad de remover, editar, o denegar comentarios, Logros, Medallas, posteos en el foro, y otras contribuciones que no est\u00e1n alineadas a este C\u00f3digo de Conducta, o el banear temporal o permanentemente a cualquier participante por otros comportamientos que ellos consideren inapropiados, amenazantes, ofensivos, o da\u00f1inos. Cu\u00e1ndo el comportamiento inapropiado no es muy claro, los administradores discutir\u00e1n entre ellos que acci\u00f3n deber\u00e1 ser tomada.
Los administradores que no sigan o impongan el C\u00f3digo de Conducta en buena fe pueden enfrentar repercusiones temporales o permanentes como lo sera determinado por otros miembros lideres del proyecto.
"},{"location":"Users-Code-of-Conduct-es/#reportando","title":"Reportando","text":"Instancias de abuso, acoso, trampa o de otro modo comportamientos inaceptables deber\u00e1n ser reportados contactando al equipo de moderadores de RetroAchievements en el Servidor de Discord (usuarios con nombres en azul). Tambi\u00e9n puedes contactar a todos los administradores/moderadores activos enviando un Mensaje Privado al usuario RAdmin en el sitio oficial.
Las quejas ser\u00e1n evaluadas, investigadas y respondidas cuando la circunstancia lo amerite.
"},{"location":"Users-Code-of-Conduct-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-04-17 09:12] ShinyNinetalesTM:
fixed some inaccuracies[2019-02-14 10:09] meleu:
fix broken link[2018-10-11 00:14] CoolCanuck:
https[2018-06-10 09:43] lilbud:
Updated Discord Link[2018-05-04 10:34] meleu:
Updated Users Code of Conduct es (markdown)[2018-05-04 10:03] meleu:
added a title to make it look better after mkdocs conversion[2018-04-20 18:31] ShinyNinetalesTM:
Changed \"cazerias\" to the correct word \"cacer\u00edas\", and changed \"derrogantes\" to \"despectivos\" (derrogantes doesn't exist at all in spanish language). Also, removed an extra n in \"deber\u00edan\" and changed \"der\" to \"ser\"[2018-03-24 11:30] meleu:
Updated Codigo de Conducta de los usuarios (markdown)Le projet RetroAchievements a pour objectif de fournir les outils n\u00e9cessaires \u00e0 la cr\u00e9ation de succ\u00e8s pour les jeux r\u00e9tro et \u00e0 leur mise en valeur. Nous aspirons \u00e0 promouvoir une communaut\u00e9 saine ax\u00e9e sur la collaboration autour de cette passion. Toute cr\u00e9ation est pens\u00e9e pour \u00eatre gratuite et ne fera jamais l'objet de profits de notre part.
"},{"location":"Users-Code-of-Conduct-fr/#regles","title":"R\u00e8gles","text":"Il y a beaucoup de joueurs r\u00e9tro \u00e0 travers le globe appartenant \u00e0 de nombreuses cultures diff\u00e9rentes, aux points de vue et opinions vari\u00e9s. C'est pourquoi, afin de garantir un environnement sain \u00e0 la communaut\u00e9 pour partager cette passion commune des jeux r\u00e9tro, il nous faut nous doter de certaines r\u00e8gles.
"},{"location":"Users-Code-of-Conduct-fr/#version-courte","title":"Version courte","text":"Cette version courte devrait suffir \u00e0 la plupart des gens :
Si la Version courte n'est pas assez d\u00e9taill\u00e9e pour vous, en voici une plus d\u00e9taill\u00e9e :
"},{"location":"Users-Code-of-Conduct-fr/#exemple-de-comportement-attendu","title":"Exemple de comportement attendu","text":"Les mod\u00e9rateurs interviendront pour calmer le jeu s'il leur semble que la situation commence \u00e0 d\u00e9raper. Consulter ci-dessous Comment fonctionne la mod\u00e9ration.
"},{"location":"Users-Code-of-Conduct-fr/#liberte-dexpression","title":"Libert\u00e9 d'expression","text":"Si vous souhaitez juste vous d\u00e9fouler en d\u00e9versant des commentaires p\u00e9joratifs sur notre mani\u00e8re de mener le projet, vous \u00eates libre de le faire. Mais dans la mesure o\u00f9 cela g\u00e9n\u00e8re une d\u00e9motivation et une perte de temps de nos volontaires, nous n'en voulons ni sur nos forums et ni sur notre serveur Discord. Il existe beaucoup d'autres options sur Internet pour le faire.
Gardez \u00e0 l'esprit que RetroAchievements.org n'est pas un bastion de la libert\u00e9 d'expression.
Si vous avez des critiques \u00e0 formuler, nous serons heureux de les \u00e9couter pour autant qu'elles soient faites de mani\u00e8re respectueuse.
"},{"location":"Users-Code-of-Conduct-fr/#comment-fonctionne-la-moderation","title":"Comment fonctionne la mod\u00e9ration","text":"Si vous avez le sentiment qu'une mod\u00e9ration est n\u00e9cessaire, contactez un @mod sur notre serveur Discord ou adressez votre probl\u00e8me \u00e0 RAdmin, une adresse partag\u00e9e par tous les mod\u00e9rateurs.
La mission des mod\u00e9rateurs est de s'assurer que tous les utilisateurs respectent le code de conduite des utilisateurs.
Que fait un mod\u00e9rateur s'il constate une violation du code de conduite :
Un rappel \u00e0 l'ordre formel et diplomatique (ni sarcasme ni ton mena\u00e7ant).
Si le rappel \u00e0 l'ordre est ignor\u00e9, le contrevenant sera renvoy\u00e9 du notre serveur Discord.
Si le contrevenant continue d'ignorer la mod\u00e9ration, il sera alors banni de notre serveur Discord. S'il avait le r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet, ses privil\u00e8ges seront r\u00e9voqu\u00e9s.
Note: sur le site Internet, il n'y a pas de \"renvoi\". Si le contrevenant ignore le rappel \u00e0 l'ordre, c'est directement le bannissement.
Si vous avez fait l'objet d'un bannissement et souhaitez faire appel de cette d\u00e9cision pour r\u00e9cup\u00e9rer votre acc\u00e8s, envoyez un courriel \u00e0 ramodmail@gmail.com ou directement un message \u00e0 RAdmin.
"},{"location":"Users-Code-of-Conduct-fr/#que-faire-si-vous-pensez-que-la-moderation-a-commis-une-erreur","title":"Que faire si vous pensez que la mod\u00e9ration a commis une erreur ?","text":"Si vous pensez que les mod\u00e9rateurs n'ont pas respect\u00e9 les r\u00e8gles \u00e9dict\u00e9es ci-dessus, envoyez un message direct \u00e0 RAdmin ou un courriel \u00e0 ramodmail@gmail.com. Il s'agit d'une adresse partag\u00e9e par tous les mod\u00e9rateurs et les administrateurs. La question sera discut\u00e9e coll\u00e9gialement et \u00e9quitablement.
Les administrateurs ou mod\u00e9rateurs qui ne respecteraient pas ou violeraient d\u00e9lib\u00e9r\u00e9ment ce code de conduite devraient faire face \u00e0 des r\u00e9percussions temporaires voire d\u00e9finitives d\u00e9cid\u00e9es par les autres membres de l'administration du projet.
"},{"location":"Users-Code-of-Conduct-fr/#tricherie","title":"Tricherie","text":"Consulter les R\u00e8gles concernant le classement global et la chasse aux succ\u00e8s.
"},{"location":"Users-Code-of-Conduct-fr/#faq","title":"FAQ","text":"Non.
Le membre pourra toujours utiliser nos services et jouer \u00e0 des jeux r\u00e9tro afin de d\u00e9bloquer des succ\u00e8s. Toutefois, si le comportement perturbateur devait se prolonger sur le site Internet, il en serait alors \u00e9galement banni.
"},{"location":"Users-Code-of-Conduct-fr/#jai-cree-un-serveur-discord-car-je-veux-plus-de-liberte-que-je-nen-ai-sur-le-serveur-officiel-retroachievements-puis-je-en-faire-la-promotion-ici","title":"J'ai cr\u00e9\u00e9 un serveur Discord car je veux plus de libert\u00e9 que je n'en ai sur le serveur officiel RetroAchievements. Puis-je en faire la promotion ici ?","text":"Non.
"},{"location":"Users-Code-of-Conduct-fr/#est-il-obligatoire-pour-un-developpeur-de-succes-de-rejoindre-le-serveur-discord","title":"Est-il obligatoire pour un d\u00e9veloppeur de succ\u00e8s de rejoindre le serveur Discord ?","text":"Non.
Rejoindre notre serveur Discord est facultatif. Toutefois, si vous vous trouvez sur la liste des membres bannis de Discord, vous ne pouvez pr\u00e9tendre au r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet.
"},{"location":"Users-Code-of-Conduct-fr/#si-un-createur-de-succes-est-banni-de-discord-perdra-t-il-son-role-de-developpeur-sur-le-site-internet","title":"Si un cr\u00e9ateur de succ\u00e8s est banni de Discord, perdra-t-il son r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet ?","text":"Oui.
"},{"location":"Users-Code-of-Conduct-fr/#si-je-suis-banni-du-serveur-discord-mais-que-je-souhaite-encore-creer-des-succes-que-dois-je-faire","title":"Si je suis banni du serveur Discord mais que je souhaite encore cr\u00e9er des succ\u00e8s, que dois-je faire ?","text":"Envoyez votre appel \u00e0 RAdmin ou ramodmail@gmail.com afin de demander \u00e0 ce que votre bannissement soit lev\u00e9.
Il n'est pas important que vous souhaitiez ou non rejoindre le serveur Discord mais si vous \u00eates dans la liste des utilisateurs bannis, vous ne pouvez pas pr\u00e9tendre au r\u00f4le de \"D\u00e9veloppeur\" sur le site Internet.
"},{"location":"Users-Code-of-Conduct-pl/","title":"Kodeks Post\u0119powania U\u017cytkownika","text":""},{"location":"Users-Code-of-Conduct-pl/#nasze-standardy","title":"Nasze Standardy","text":"Chcemy wolne, otwarte, pozytywne \u015brodowisko. Pami\u0119taj cz\u0142eku; wszyscy tu jeste\u015bmy aby po\u0142\u0105czy\u0107 si\u0119 wsp\u00f3ln\u0105 pasj\u0105 grania w stare gry!
"},{"location":"Users-Code-of-Conduct-pl/#przykady-zachowania-ktore-suzy-do-tworzenia-przyjaznego-srodowiska","title":"Przyk\u0142ady zachowania kt\u00f3re s\u0142u\u017cy do tworzenia przyjaznego \u015brodowiska.","text":"Takie zachowanie mo\u017ce sko\u0144czy\u0107 si\u0119 dla sprawcy wyciszeniem, wykopaniem, lub banem z serwer Discord lub/i z RetroAchievements.org
"},{"location":"Users-Code-of-Conduct-pl/#zle-widziane-zachowanie","title":"\u0179le widziane zachowanie","text":"Moderator wst\u0105pi aby uspokoi\u0107 je\u015bli konwersacja wyjdzie spod kontroli, w takim wypadku moderator mo\u017ce usun\u0105\u0107 komentarze, tymczasowo wyciszy\u0107 u\u017cytkownik\u00f3w , poprosi\u0107 aby porozmawiali prywatnie, lub podj\u0119cie innych akcji kt\u00f3re s\u0105 konieczne aby uciszy\u0107 sytuacje. Zachowaj spok\u00f3j, a wszyscy b\u0119dziemy mieli lepszy czas
"},{"location":"Users-Code-of-Conduct-pl/#wyraznie-zezwolone","title":"Wyra\u017anie zezwolone","text":"Podczas robienia publicznej krytyki zachowuj si\u0119 cywilizowanie i nie atakuj os\u00f3b, nie stosowanie si\u0119 do tego b\u0119dzie skutkowa\u0107 moderacj\u0105
Dla zdrowia psychicznego i mora\u0142\u00f3w spo\u0142eczno\u015bci spr\u00f3buj aby krytyka by\u0142a zach\u0119caj\u0105ca, konstrukcyjna i optymistyczna.
"},{"location":"Users-Code-of-Conduct-pl/#zasady-dla-serwera-discord","title":"Zasady dla serwera Discord","text":"Pozosta\u0144 w temacie kana\u0142u w kt\u00f3rym jeste\u015b, niekt\u00f3re kana\u0142y s\u0105 szczeg\u00f3\u0142owe, a niekt\u00f3re s\u0105 elastyczne. Sprawd\u017a opis kana\u0142u na g\u00f3rze i jak inny u\u017cywaj\u0105 kana\u0142.
"},{"location":"Users-Code-of-Conduct-pl/#etyka-forum","title":"Etyka forum","text":""},{"location":"Users-Code-of-Conduct-pl/#opublikuj-to","title":"Opublikuj to!","text":"Je\u015bli inni zachowuj\u0105 si\u0119 nieprzyzwoicie nie graj moderatora!
Je\u015bli czujesz \u017ce moderacja jest konieczna, napisz do [Radmina]((http://retroachievements.org/createmessage.php?t=RAdmin.md), kt\u00f3ry jest kontem moderator\u00f3w
Je\u015bli masz problem z jak\u0105kolwiek czynno\u015bci\u0105 moderacji wy\u015blij wiadomo\u015b\u0107 do [Radmina]((http://retroachievements.org/createmessage.php?t=RAdmin.md) lub wy\u015blij maila do ramodmail@gmail.com. To jest wsp\u00f3lne konto kt\u00f3re widz\u0105 admini i moderatorzy, problemy b\u0119d\u0105 przedyskutowane i za\u0142atwione sprawiedliwie
"},{"location":"Users-Code-of-Conduct-pl/#konflikty","title":"Konflikty","text":"Jest ok i cz\u0119sto dobrze jak si\u0119 pojawi konflikt, lecz jest wa\u017cne aby by\u0142 on pozytywny, zobacz Hierarchie Niezgody Grahama (I will make the image later), by zobaczy\u0107 co wypada, wszystko pod Zaprzeczeniem nie jest wystarczaj\u0105co dobre na forum, gdy\u017c krytyczny ton, atakowanie innych i wyzwiska nie s\u0105 akceptowane
"},{"location":"Users-Code-of-Conduct-pl/#oszukiwanie","title":"Oszukiwanie","text":"Zobacz list\u0119 Globaln\u0105 Tablic\u0119 Wynik\u00f3w i Zasady Zdobywania Osi\u0105gni\u0119\u0107.
Konta kt\u00f3rym udowodniono oszukiwanie b\u0119d\u0105 ustawione na \"nie \u015bledzone\", a w niekt\u00f3rych wypadkach banowane.
Je\u017ali podejrzewasz kogo\u015b o oszukiwanie, nie r\u00f3b publicznych zarzut\u00f3w. Podziel si\u0119 dowodami z administacj\u0105/moderacj\u0105, lub poczekaj na szczeg\u00f3\u0142ow\u0105 ocen\u0119. Zarzuty oszukiwania mog\u0105 by\u0107 bardzo niszcz\u0105ce dla spo\u0142eczno\u015bci i s\u0105 cz\u0119sto bezzasadne lub nie maj\u0105 wystarczaj\u0105co dowod\u00f3w aby zosta\u0107 ukaranym. Twoje zarzuty pozostan\u0105 anonimowe
Naprzyk\u0142ad:_ u\u017cytkownik by\u0142 oskar\u017cony o oszukiwanie, bo ocenie dowod\u00f3w, __, _, _. uznali\u015bmy \u017ce jest wystarczaj\u0105co/niewystarczaj\u0105co dowod\u00f3w aby by\u0142 nie \u015bledziony.
"},{"location":"Users-Code-of-Conduct-pl/#zgaszanie","title":"Zg\u0142aszanie","text":"Przypadki Nieakceptowalnego zachowania lub oszukiwania mog\u0105 by\u0107 zg\u0142aszane do ekipy moderator\u00f3w na serwerze discord RetroAchievements (osoby z niebieskimi pseudonimami). Mo\u017cesz r\u00f3wnie\u017c skontaktowa\u0107 si\u0119 ze wszystkimi moderatorami/adminami poprzez wysy\u0142anie prywatnej wiadomo\u015bci do U\u017cytkownika Radmin na oficjalnej stronie.
Skargi b\u0119d\u0105 sprawdzone, zbadane i zaadresowane zale\u017cnie od okoliczno\u015bci.
"},{"location":"Users-Code-of-Conduct-pl/#obowiazki-adminowmoderacji","title":"Obowi\u0105zki admin\u00f3w/moderacji","text":"Admini/moderacja s\u0105 odpowiedzialni za utrzymywanie naszej spo\u0142eczno\u015bci dobrze funkcjonuj\u0105cej. Oni musz\u0105 podtrzymywa\u0107 ten kodeks post\u0119powanie jak i ten Deweloper\u00f3w osi\u0105gni\u0119\u0107 na stronie i na discordzie. Ich obowi\u0105zki na tych dw\u00f3ch frontach s\u0105 opisane poni\u017cej.
"},{"location":"Users-Code-of-Conduct-pl/#na-stronie","title":"Na stronie","text":"DiscordNick (RA_Username)
.Administatorzy/Moderatorzy kt\u00f3rzy nie przestrzega lub nie egzekwuje kodeksu post\u0119powania mo\u017ce zosta\u0107 tymczasowo lub permanentnie ukarany z za\u0142o\u017cenia innych lider\u00f3w projektu.
"},{"location":"Users-Code-of-Conduct-pt_BR/","title":"C\u00f3digo de Conduta dos Usu\u00e1rios","text":""},{"location":"Users-Code-of-Conduct-pt_BR/#nossas-normas","title":"Nossas Normas","text":"N\u00f3s queremos um ambiente aberto, agrad\u00e1vel e acolhedor.
Exemplos de comportamentos que contribuem para criar um ambiente adequado incluem:
Exemplos de comportamentos inaceit\u00e1veis incluem:
Os administradores t\u00eam o direito e responsabilidade de remover, editar ou rejeitar coment\u00e1rios, conquistas, emblemas, \u00edcones, t\u00f3picos do f\u00f3rum e outras contribui\u00e7\u00f5es que n\u00e3o est\u00e3o de acordo com os termos presentes neste C\u00f3digo de Conduta. Ainda, administradores podem banir, permanentemente ou temporariamente, usu\u00e1rios por outros comportamentos considerados inadequados, amea\u00e7adores, ofensivos ou prejudiciais. Quando um comportamento n\u00e3o for claramente inapropriado, os administradores debater\u00e3o, entre si, para decidir quais medidas ser\u00e3o tomadas.
Administradores que n\u00e3o cumprirem ou impuserem, de boa-f\u00e9, o C\u00f3digo de Conduta poder\u00e3o estar sujeitos a san\u00e7\u00f5es, permanentes ou tempor\u00e1rias, determinadas por outros membros da lideran\u00e7a do projeto.
"},{"location":"Users-Code-of-Conduct-pt_BR/#comunicacao","title":"Comunica\u00e7\u00e3o","text":"Casos de abuso, ass\u00e9dio, trapa\u00e7as, ou outros comportamentos inadequados podem ser informados aos administradores do RetroAchievements, no servidor Discord por meio de uma Mensagem Direta \u00e0 um dos administradores (usu\u00e1rios com nomes em vermelho). Voc\u00ea tamb\u00e9m pode contatar um administrador enviando uma Mensagem Privada para o usu\u00e1rio RAdmin no site oficial.
As reclama\u00e7\u00f5es ser\u00e3o lidas, investigadas e respondidas caso a caso.
"},{"location":"Users-Code-of-Conduct-pt_BR/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-02-10 16:00] meleu:
fix broken link[2018-10-11 00:12] CoolCanuck:
https[2018-06-10 09:43] lilbud:
Updated Discord Link[2018-05-04 10:02] meleu:
Updated Users Code of Conduct pt_BR (markdown)[2018-03-24 11:31] meleu:
Updated Codigo de Conduta do Usuario (markdown)The RetroAchievements project aims to provide tools for creating achievements for retrogames and ways to enjoy such creations. We strive to promote a healthy and collaborative community around this hobby. Everything we produce is made available for free and we will never profit from it.
"},{"location":"Users-Code-of-Conduct/#rules","title":"Rules","text":"There's a lot of retrogamers around the globe, spanning various different cultures, points of view, and opinions. Therefore, in order to provide a healthy environment for the community to share their passion for retrogames, we need some rules.
"},{"location":"Users-Code-of-Conduct/#short-version","title":"Short Version","text":"This short version should be enough for most people:
If the short version is not clear enough for you, here's a detailed one:
"},{"location":"Users-Code-of-Conduct/#examples-of-expected-behavior","title":"Examples of expected behavior","text":"The moderators will step in to cool things down if arguments start getting out of hand. Check below how moderation works.
"},{"location":"Users-Code-of-Conduct/#freedom-of-speech","title":"Freedom of Speech","text":"If you just want to rant or dump derogatory comments about how we run things here, you're free to do that. But, as it's demotivating and wastes a lot of volunteers' time, we don't want it on our forums or Discord Server. There are plenty of options where you can do it around the Internet.
Keep in mind that RetroAchievements.org is NOT a bastion of freedom of speech.
If you have criticism, you're very welcome to say it, just be sure to be civil.
"},{"location":"Users-Code-of-Conduct/#how-moderation-works","title":"How Moderation Works","text":"If you feel moderation is needed, ping the @mod role on our Discord server, or direct your issues to RAdmin, a shared mod-mail account.
The moderation goal is to assure users adhere to the User's Code of Conduct.
What a moderator should do after seeing a breach to the Code of Conduct:
Formal and diplomatic warning (no sarcasm, no threatening tone).
If the warning is ignored, the offender will be kicked from our Discord server.
If the offender continues to ignore the moderation, they'll be banned from our Discord server. If the offender has the \"Developer\" role on the website, their privileges will be removed.
Note: on the website there's no \"kick\". If the offender ignores the warning, the next step is a ban.
If you've been banned and somehow want to appeal to have your access back, send an email to ramodmail@gmail.com or a Direct Message to RAdmin.
"},{"location":"Users-Code-of-Conduct/#what-to-do-if-you-think-moderation-is-wrong","title":"What to do if you think moderation is wrong","text":"If you think moderators are not acting like described above, send a Direct Message to RAdmin or email ramodmail@gmail.com. This is a shared moderation account that all mods and admins see. The issue will be discussed and dealt with fairly.
Admins/mods who do not follow or enforce this Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's administration.
"},{"location":"Users-Code-of-Conduct/#faq","title":"FAQ","text":"No.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"Users-Code-of-Conduct/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"Users-Code-of-Conduct/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"Users-Code-of-Conduct/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"Users-Code-of-Conduct/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"Users-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 20:45] televandalist:
Removed section on cheating since it was just a redirect to the \"Global Leaderboard and Achievement Hunting Rules\" section, which is in the same category.[2021-05-01 20:24] meleu:
criticism doesn't need to be DMs to RAdmin[2021-05-01 12:05] meleu:
rewording stuff[2021-05-01 07:30] meleu:
reorder short rules[2021-05-01 07:22] meleu:
list's indentation[2021-05-01 07:17] meleu:
simpler, clearer and more focused version[2020-11-03 19:07] HolyShinx:
forgot one word, geez I'm so clumsy ;-;[2020-11-03 19:03] HolyShinx:
added rule 1, 2 and 4 to Discord Chat Specific Rules from RA discord server[2020-09-18 23:03] meleu:
no \"public lynching\"[2020-05-10 19:34] meleu:
Revert 65363acd5c8e6ab50b72985f30a64405b8c96526...72e3510e81ea66c6a90885af39e670f8d9f38b3e on Users Code of ConductIn this example is a simple way one can utilize the Add Source flag in their achievement logic.
We'll look at an achievement from Suikoden (PlayStation) entitled Treasure Hunter - Dragon Knights' Domain:
Addresses Used
0x1b8244
: bit0-bit4 are treasures in Soniere, bit5 is a treasure at the Northern Checkpoint, and bit6-bit7 are treasures at the Dragon Den.0x1b8245
: bit0 is a treasure at the Dragon Den, bit1-bit5 are treasures at Seek Valley, and bit6-7 are treasures in Kalekka.0x1b824b
: bit0-bit1 are treasures at the Village of the Hidden Rune, bit2 is unused, bit3-4 are treasures at the Dragon Knights' Fortress, bit5-6 are treasures in Teien, and bit7 is a treasure at Luiken's House. This particular achievement only requires treasures from Dragon Knights' Fortress, Dragon Den, and Seek Valley; therefore, we only need bit6-7 from 0x1b8244
, bit0-bit5 from 0x1b8245
, and bit3-bit4 from 0x1b824b
.
Logic Breakdown
This method is mostly handy for when the totals between the Delta-type and Mem-type only have a difference of 0x01, but it can be used in various types of achievements: collectibles that are only obtainable one-at-a-time, map completion (such as dungeon-crawlers with viewable maps that get revealed as you enter new areas), learnable skills, bestiaries, completing a certain number of side missions, and many others.
If you run into a situation where more than one bitflag in an Add Source chain toggles at the same time, you can still utilize this template. However, you'll want to clone the Delta conditions and make it so both totals create a range. Still using the above achievement as an example, the existing total could be changed to <= 0x09
and the total for the second group could be >= 0x05
. This would make it so the achievement would trigger if the total goes from 5-9 treasures to 10 treasures.
To Do: - Provide a separate example for the Delta range. - Go over using BitCount in a similar achievement. - Go over using /
when you need at least one of multiple things.
Tomemos a Streets of Rage 2 (Mega Drive) como ejemplo, y al logro Steel Grip - Derrota a 10 enemigos sin tirar tu arma. Este se basa en cuatro condiciones:
Variables (Addresses)
0xef33
: sujetando un arma 0xef37
: tipo de arma0xef4e
: numero de KOs (jugador 1)Condiciones
el jugador esta sujetando un arma. Requerimos que esto sea verdad, una vez. Esto no es realmente necesario, pero es util para mostrar progresi\u00f3n. Necesitamos que el jugador sujete un arma, m\u00ednimo una vez.
numero de KOs que el jugador a hecho. Es de 16-bit (esto significa que el valor puede ser mayor a 255), y utilizando un delta y los s\u00edmbolos 'mayor que (greater than)', estamos diciendo que necesitamos que el numero de KOs sea mayor que el valor anterior, y necesitamos que esto pase 10 \u00fanicas veces. Cada vez que el valor actual sea mas grande que el valor anterior, el hit count va a subir por uno. El siguiente frame, el valor 'delta' tiene que incrementarse para ser el mismo que el valor actual, esto asegura que despu\u00e9s de cada baja, el contador de KO se va a subir a uno, y el hit count va a subir a uno. LIMITACI\u00d3N: si el numero de KOs sube sobre dos en el mismo frame, el hit count solo va a subir por uno. Es una peque\u00f1a desventaja que pasa mas com\u00fan de lo que aparenta...
Se resetea todo el progreso, si el tipo de arma es diferente al ultimo tipo de arma conocido.
Se resetea todo el progreso, si el jugador no se encuentra cargando un arma.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esLet's take Streets of Rage 2 (Mega Drive) as a case study, and Steel Grip - Defeat 10 enemies without dropping your weapon achievement. This relies on four conditions:
Addresses
0xef33
: holding weapon 0xef37
: weapon type0xef4e
: number of KOs (player 1)Conditions
the player is holding a weapon. We require this to be true, once. This is actually not necessary, but it's useful to show the progression. We are requiring the player to hold a weapon, at least once.
number of KOs that the player has made. It's 16-bit (meaning the value can be more than 255), and by using the delta and 'greater than' symbols, we are saying that we require the number of KOs to be bigger than the previous value, and we need this to happen 10 unique times. Every time the current value is bigger than the previous value, the hit count will go up by one. The next frame, the 'delta' value will have increased to be the same as the current value, this ensures that after every kill, the KO counter will go up by one, and the hit count will go up by one. LIMITATION: if the number of KOs goes up by two in the same frame, the hit count will only go up by one. It's a slight flaw that does happen a little more often than expected... it's not so accurate but it's a fairly close estimate to your number of kills.
reset all our progress, if the weapon type is different than the last known weapon type.
reset all our progress, if the player is no longer carrying a weapon.
Link para o texto em ingl\u00eas: Using Delta Values and Hit Counts to Detect an Increment
Vamos pegar Streets of Rage 2 (Mega Drive) como um caso de estudo, e o achievement Steel Grip - Defeat 10 enemies without dropping your weapon. Isso depende de quatro condi\u00e7\u00f5es:
Endere\u00e7os
0xef33
: arma em m\u00e3o0xef37
: tipo de arma 0xef4e
: n\u00famero de KOs (player 1)Condi\u00e7\u00f5es
o jogador est\u00e1 segurando uma arma. Isso deve ser verdadeiro, ao menos uma vez. Isso na verdade n\u00e3o \u00e9 necess\u00e1rio, mas \u00e9 \u00fatil mostrar a progress\u00e3o. Estamos dizendo que exigem que o jogador mantenha uma arma, pelo menos uma vez.
n\u00famero de KOs que o jogador fez. \u00c9 16 bits (o que significa que o valor pode ser superior a 255), e usando os s\u00edmbolos delta e 'maior que', estamos dizendo que exigimos que o n\u00famero de KOs seja maior do que o valor anterior, e precisamos disso para aconte\u00e7a 10 unicas vezes. Toda vez que o valor atual \u00e9 maior do que o valor anterior, a contagem de hits aumentar\u00e1 em um. No pr\u00f3ximo quadro, o valor 'delta' aumentar\u00e1 para ser o mesmo que o valor atual, isso garante que depois de cada morte, o contador KO ir\u00e1 subir de um, e a contagem de batidas aumentar\u00e1 em um. LIMITA\u00c7\u00c3O: se o n\u00famero de KOs aumentar em dois no mesmo quadro, a contagem de batidas aumentar\u00e1 apenas em um.. \u00c9 uma pequena falha que acontece um pouco mais frequentemente do que o esperado ... n\u00e3o \u00e9 t\u00e3o preciso, mas \u00e9 uma estimativa bastante pr\u00f3xima do seu n\u00famero de mortes
resete todo o seu progresso, se o tipo de arma for diferente do \u00faltimo tipo de arma conhecida.
resete todo seu progresso, se o jogador j\u00e1 n\u00e3o estiver carregando uma arma.
Last 10 changes on this page:
[2019-02-18 17:01] meleu:
fix broken link[2018-03-25 12:06] KingDice001:
Updated Using Delta Values and ResetIf pt_BR (markdown)[2018-03-25 11:49] KingDice001:
Updated Using Delta Values and ResetIf pt_BR (markdown)[2018-03-23 01:21] meleu:
Updated Using Delta Values and ResetIf.pt_BR (markdown)Link para o texto em ingl\u00eas: Using Hit Counts as a Timer
Vamos ver como o achievement Super Hang-On (Mega Drive) Speed Freak - Maintain at least 300kph for 10 seconds aparece no Achievement Editor dialog:
Addresses (endere\u00e7os)
0x0055a
: \u00e9 a velocidade.0x0c757
: \u00e9 0x00 quando o jogo \u00e9 sem compensa\u00e7\u00e3o (sem pausar).Nesse achievement, desejamos que haja um fato ou condi\u00e7\u00e3o que seja verdadeira 600 vezes consecutivamente. A raz\u00e3o para isso \u00e9 que o Genesis/Mega Drive est\u00e1 travado no processamento de 60 frames de l\u00f3gica por segundo (NTSC pelo menos?). E o fato que estamos procurando \u00e9 que \"a velocidade \u00e9 mais de 300\". Al\u00e9m disso, queremos que o jogador mantenha a velocidade acima de 300 sem pausar o jogo.
Condi\u00e7\u00f5es
A velocidade do jogador est\u00e1 acima de 300 para 600 frames (ou 10 segundos se passaram).
reset o contador de hit (hit counter) se a velocidade for menor que 300.
reset o contador de hit se o jogador pausa o jogo.
Last 10 changes on this page:
[2019-02-18 16:55] meleu:
fix broken link[2018-03-25 12:05] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-25 11:48] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-25 11:48] KingDice001:
Updated Using Hit Counts and ResetIf pt_BR (markdown)[2018-03-23 01:22] meleu:
Updated Using Hit Counts and ResetIf.pt_BR (markdown)En este ejemplo vas a ver como los hit counts pueden ser utilizados como temporizador y recompensar un logro si la condici\u00f3n es verdadera por 10 segundos.
Veamos como en Super Hang-On (Mega Drive) el logro Speed Freak - Manten un minimo de 300kph por 10 segundos se ve en la ventana del Editor de Logros (Achievement Editor):
Variables (Addresses)
0x0055a
: es la velocidad.0x0c757
: es 0x00 cuando el juego no se encuentra pausado.En este logro, queremos que una condici\u00f3n sea verdadera 600 veces consecutivamente. La raz\u00f3n de esto es que el Sega Genesis procesa fijamente 60 frames de l\u00f3gica por segundo (m\u00ednimo NTSC?). Y tambi\u00e9n estamos buscando que la \"velocidad sea sobre 300\". Y aparte que el jugador mantenga la velocidad sin pausar el juego.
Condiciones
velocidad del jugador sea sobre 300 por 600 frames (o que hubieran pasado 10 segundos).
resetear el hit counter si la velocidad es inferior a 300.
resetear el hit counter si el jugador pausa el juego.
Last 10 changes on this page:
[2019-04-16 11:15] eldexterr:
ES title changed to esIn this example, you'll see how hit counts can be used as a timer and award an achievement if a condition is true for 10 seconds.
Let's see what Super Hang-On (Mega Drive)'s achievement Speed Freak - Maintain at least 300kph for 10 seconds looks like in the Achievement Editor dialog:
Addresses
0x0055a
: is the speed.0x0c757
: is 0x00 when the game is unpaused.For this achievement, we are looking for a condition that is met 600 times consecutively. The reason why is that the genesis is locked into processing 60 frames of logic per second (NTSC at least?). And the condition we're checking is \"speed is over 300\". Also, we want the player to keep the speed above 300 without pausing the game.
Conditions
player's speed is above 300 for 600 frames (or 10 seconds have passed).
reset the hit counter if the speed goes under 300.
reset the hit counter if the player pauses the game.
Real Example document structure:
Brief explanation...
Addresses
0x123
: Note about the address0x456
: another noteConditions
Explaining each requirement in the achievement's logic.
Explanation of requirement 2.
Explanation of requirement 3...
Value definitions are used for leaderboards and rich presence.
A value is calculated by evaluating one or more memory reads. Read values can be scaled (multiplication) or summed (addition) to arrive at the final value.
NOTE: Value calculations are performed using 32-bit signed integers. As such, the maximum value is 2147483647 and the minimum value is -2147483648. Values above the maximum will wrap around and register as very negative numbers.
"},{"location":"Value-Definition/#value-from-measured","title":"Value from Measured","text":"Starting with the 0.77 DLL (and RetroArch 1.8.2), you can use the Measured flag to generate a Value. This supports all logic supported by the achievement editor, but every condition must have a flag that somehow influences the Measured value (i.e. AddSource, AddAddress). Note that the Measured condition cannot have a multiplier directly on it. If the final clause needs to be multiplied, use an additional AddSource and Measure 0.
VAL: A:0xhfe24_A:0xhfe25*60_A:0xhfe22*3600_M:0
The example provided above reads:
AddSource 8-bit 0xfe24\nAddSource 8-bit 0xfe25 * Value 60\nAddSource 8-bit 0xfe22 * Value 3600\nMeasured Value 0\n
The addresses represent frames, seconds, and minutes respectively, and are individually multiplied and then added together to create a total number of frames that can be submitted to the database.
"},{"location":"Value-Definition/#value-from-hitcount","title":"Value from HitCount","text":"Sometimes you want to count the number of times something happens and submit that as the value. You can also do this using Measured syntax. Just add a comparison to your final condition. Do not include an explicit Hit target, or that will be the maximum value that can be submitted.
The HitCount on the condition will automatically be set to 0 when the leaderboard starts, and the HitCount will be submitted as the Value when the leaderboard submit trigger activates. You can use PauseIf and ResetIf within the Value conditions to further control the behavior.
For example:
M:0xH1234!=d0xH1234\n
Would submit the number of times the byte at $1234 changed while the leaderboard was active.
N:0xH1234!=20_M:0xH1234!=d0xH1234\n
Would submit the number of times the byte at $1234 changed to something other than 20 while the leaderboard was active.
"},{"location":"Value-Definition/#legacy-syntax","title":"Legacy Syntax:","text":"VAL: 0xhfe24*1_0xhfe25*60_0xhfe22*3600
Before the introduction of the Measured flag, Values were written using their own syntax. Some people still prefer this syntax as it's generally easier to do by hand. A legacy value is the sum of a collection of memory values multiplied by modifiers.
address*modifier
(address times modifier)
The _
underscore operator separates the individual values and acts as 'plus'. So the example above represents:
8-bit 0xfe24 times 1, PLUS\n8-bit 0xfe25 times 60, PLUS\n8-bit 0xfe22 times 3600\n
The addresses represent frames, seconds, and minutes respectively, and are individually multiplied and then added together to create a total number of frames that can be submitted to the database.
To add a constant, use _vN
where N is the constant in decimal (i.e. _v10
) will add 10 to the result. You can also use negative values for N (i.e. _v-10
will subtract 10 from the result.
Tip: modifier can be a non-integer value, so if you need to divide by two, you can multiply by 0.5: 0xhfe24*0.5
Multiple value calculations may be joined with a $
. This is similar to alt groups in a trigger, but instead of any one alt group needing to be true, whichever \"alt value\" is largest will be used as the overall value for the expression.
M:0xH1234$M:0xH1235
would return the larger of the values at $1234 or $1235.
A single memory reference can be prefixed with a ~
to perform a binary inversion on it. After reading the value from memory, every bit is switches (0s become 1s, 1s become 0s).
Typically, this is used to conditionally add or subtract a value:
A:0xH1234*~0xM1233_M:0xH1235
will add the byte at $1234 to the byte at $1235 if bit0 of $1233 is not set.
Binary Coded Decimal (BCD) is when a values in memory is stored as decimal digits in each hex digit location. For example, if the memory inspector shows 86 at a byte in memory, it would normally represent the decimal value 134 (0x86 hex = 134 decimal). BCD decoding the value keeps the individual decimal numbers and the result is 86 (0x86 hex = 86 BCD).
You can have the runtime decode BCD values by putting a b
prefix in front of the memory reference (i.e. b0xW1234
). You still need to specify the size of the BCD memory address. b0x1234 reads a 16-bit value. b0xh1234 reads an 8-bit value and b0xX1234 reads a 32-bit value. NOTE: Support for 16-bit and 32-bit BCD decoding is a feature of the 0.075 toolkit.
Last 10 changes on this page:
[2022-02-04 17:41] Jamiras:
add link to Condition Syntax[2022-02-04 17:34] Jamiras:
Updated Value Definition (markdown)[2022-02-04 16:52] Jamiras:
Updated Value Definition (markdown)[2022-02-04 16:41] Jamiras:
Updated Value definition (markdown)When RAM digging, you may find yourself wishing for a way to do code notes en masse. Unfortunately, there's not a convenient or simple way to do this, but it is possible and can save a ton of time if you are patient enough to learn how.
First, we'll look at how local code notes work: - Open the Memory Inspector and the Code Notes windows. - Go to a random address and type something in as a note, but do not publish it. - Check that address in the Code Notes window. You'll notice that your note is red. - Go to the emulator's RACache directory and open the GameID-User.txt
file of the game you have running. - Lines that start with N0:
are local code notes. Once you publish a note, it will disappear from the GameID-User.txt
file.
N0:address of the note:\"text of the code note\"
N0:
is how the server knows this is a code note.address of the note
the memory address, obviously. This will be in hex, not decimal.:
it's just a separator\"text of the code note\"
- the contents of the code note, and yes, the quotes are required. Line breaks can be used with \\r\\n
and quotes within the note can be used with \\\"
Now, the next part requires some general know-how with spreadsheets. It will vary per game, so you'll need to figure out the formula for a lot of things yourself. We will use an example, though.
Let's say we want to have notes for all character stats. You will need the following: - Character 1's stat addresses. - An offset for Character 1 and Character 2's first stats.
We will use Trails in the Sky SC as an example.
Character 1 is Estelle, and her stat addresses are as followed:
Address \"Character and Stat\" 0xc5bbcc \"[16-bit] Estelle - Current Level\" 0xc5bbd0 \"[16-bit] Estelle - Max HP\" 0xc5bbd4 \"[16-bit] Estelle - Current HP\" 0xc5bbd8 \"[16-bit] Estelle - Max EP\" 0xc5bbda \"[16-bit] Estelle - Current EP\" 0xc5bbdc \"[16-bit] Estelle - Current CP\" 0xc5bbe0 \"[32-bit] Estelle - Current EXP\" 0xc5bbe4 \"[16-bit] Estelle - STR Stat\" 0xc5bbe6 \"[16-bit] Estelle - DEF Stat\" 0xc5bbe8 \"[16-bit] Estelle - ATS Stat\" 0xc5bbea \"[16-bit] Estelle - ADF Stat\" 0xc5bbec \"[16-bit] Estelle - DEX Stat\" 0xc5bbee \"[16-bit] Estelle - AGL Stat\" 0xc5bbf0 \"[16-bit] Estelle - MOV Stat\" 0xc5bbf2 \"[16-bit] Estelle - SPD Stat\" 0xc5bbfa \"[16-bit] Estelle - RNG Stat\"Character 2 is Joshua. His first stat (Current Level) is at the address 0xc5bc08.
0xc5bc08 minus 0xc5bbcc is 0x3c, or 60 in decimal. We can confirm this by checking his last stat (RNG), which is 0xc5bc36, also 0x3c/60 from Estelle's last stat.
We'll start by putting Estelle's stats into a spreadsheet and adding a column between the addresses and stats. It will look like this (column numbers in parenthesis):
Address (A) Blank Column (B) \"Character and Stat\" (C) 0xc5bbcc \"[16-bit] Estelle - Current Level\" 0xc5bbd0 \"[16-bit] Estelle - Max HP\" 0xc5bbd4 \"[16-bit] Estelle - Current HP\" 0xc5bbd8 \"[16-bit] Estelle - Max EP\" 0xc5bbda \"[16-bit] Estelle - Current EP\" 0xc5bbdc \"[16-bit] Estelle - Current CP\" 0xc5bbe0 \"[32-bit] Estelle - Current EXP\" 0xc5bbe4 \"[16-bit] Estelle - STR Stat\" 0xc5bbe6 \"[16-bit] Estelle - DEF Stat\" 0xc5bbe8 \"[16-bit] Estelle - ATS Stat\" 0xc5bbea \"[16-bit] Estelle - ADF Stat\" 0xc5bbec \"[16-bit] Estelle - DEX Stat\" 0xc5bbee \"[16-bit] Estelle - AGL Stat\" 0xc5bbf0 \"[16-bit] Estelle - MOV Stat\" 0xc5bbf2 \"[16-bit] Estelle - SPD Stat\" 0xc5bbfa \"[16-bit] Estelle - RNG Stat\"In cell B1, we'll use the following formula: =hex2dec(A1)
to turn the address to decimal. Then we'll drag it down to populate the other cells. It should now look like this (also, added the row column since we'll need it):
Now, we'll populate the cells with Joshua's stats using the offset. In cell B17, we will use the formula =B1+60
, which will give us 12958728
. Drag cell B17 to B32. In cell A17, use the formula =dec2hex
and drag that down to A32. It should now look like this:
Now, we'll copy cells C1:C16 and paste them to cells C17:C32. We'll highlight C17:C32 and use the Find & Replace tool (CTRL+H for Google Sheets) to change instances of Estelle
to Joshua
, but only for that cell range. It will look like this:
We can repeat this for the remaining characters, but we'll leave it as is to keep it simple.
Remember the syntax: N0:address of the note:\"text of the code note\"
. This is how we'll set up the spreadsheet: - Add a column to the left of column A and fill that column with N0:
. - Copy cells B1:B32 (which are now the hex addresses). - Right-click on B1 and go to Paste Special -> Values only, or simply press CTRL+SHIFT+V. If you don't do this, the next step will mess everything up. - Clear Column C (which were the decimal addresses) and fill C1:C32 with :
. - The sheet should now look like this:
GameID-User.txt
file.The GameID-User.txt
contents now look like this:
#.#.#.#\nTrails in the Sky SC\nN0:0xc5bbcc:\"[16-bit] Estelle - Current Level\"\nN0:0xc5bbd0:\"[16-bit] Estelle - Max HP\"\nN0:0xc5bbd4:\"[16-bit] Estelle - Current HP\"\nN0:0xc5bbd8:\"[16-bit] Estelle - Max EP\"\nN0:0xc5bbda:\"[16-bit] Estelle - Current EP\"\nN0:0xc5bbdc:\"[16-bit] Estelle - Current CP\"\nN0:0xc5bbe0:\"[32-bit] Estelle - Current EXP\"\nN0:0xc5bbe4:\"[16-bit] Estelle - STR Stat\"\nN0:0xc5bbe6:\"[16-bit] Estelle - DEF Stat\"\nN0:0xc5bbe8:\"[16-bit] Estelle - ATS Stat\"\nN0:0xc5bbea:\"[16-bit] Estelle - ADF Stat\"\nN0:0xc5bbec:\"[16-bit] Estelle - DEX Stat\"\nN0:0xc5bbee:\"[16-bit] Estelle - AGL Stat\"\nN0:0xc5bbf0:\"[16-bit] Estelle - MOV Stat\"\nN0:0xc5bbf2:\"[16-bit] Estelle - SPD Stat\"\nN0:0xc5bbfa:\"[16-bit] Estelle - RNG Stat\"\nN0:0xc5bc08:\"[16-bit] Joshua - Current Level\"\nN0:0xc5bc0c:\"[16-bit] Joshua - Max HP\"\nN0:0xc5bc10:\"[16-bit] Joshua - Current HP\"\nN0:0xc5bc14:\"[16-bit] Joshua - Max EP\"\nN0:0xc5bc16:\"[16-bit] Joshua - Current EP\"\nN0:0xc5bc18:\"[16-bit] Joshua - Current CP\"\nN0:0xc5bc1c:\"[32-bit] Joshua - Current EXP\"\nN0:0xc5bc20:\"[16-bit] Joshua - STR Stat\"\nN0:0xc5bc22:\"[16-bit] Joshua - DEF Stat\"\nN0:0xc5bc24:\"[16-bit] Joshua - ATS Stat\"\nN0:0xc5bc26:\"[16-bit] Joshua - ADF Stat\"\nN0:0xc5bc28:\"[16-bit] Joshua - DEX Stat\"\nN0:0xc5bc2a:\"[16-bit] Joshua - AGL Stat\"\nN0:0xc5bc2c:\"[16-bit] Joshua - MOV Stat\"\nN0:0xc5bc2e:\"[16-bit] Joshua - SPD Stat\"\nN0:0xc5bc36:\"[16-bit] Joshua - RNG Stat\"\n
That's all, folks. Learn some spreadsheet formulas and Regular Expressions and you will become a Code Note guru. Please use responsibly and don't actually save over my Trails in the Sky SC notes. Always spot-check addresses here and there to make sure your formulas stay consistent. I added over 500 code notes to the wrong game using an older method, which was much easier to make mistakes. <3 - tele.
"},{"location":"WIP---Dev-Tips---Code-Notes-En-Masse/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-01-06 20:59] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2024-01-06 20:58] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-25 18:11] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-10 18:49] televandalist:
Updated WIP Dev Tips Code Notes En Masse (markdown)[2023-04-10 18:30] televandalist:
Typos[2023-04-10 18:25] televandalist:
First draftNo.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"WIP-CoC-FAQ/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"WIP-CoC-FAQ/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-CoC-FAQ/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"WIP-CoC-FAQ/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-CoC-FAQ/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-04-20 00:41] televandalist:
Created WIP-CoC-FAQ (markdown)WIP Page. Probably going to separate these into the following: - Game Entries - Achievement Set Requirements (done) - Unwelcome Concepts (done) - Tickets (done) - Hacks - Subsets (done) - Leaderboards & Rich Presence - Hubs
"},{"location":"WIP-Content-Guidelines/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-03 03:57] televandalist:
Updated WIP Content Guidelines (markdown)[2023-06-03 02:00] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-23 22:38] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:59] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:11] televandalist:
Updated WIP Content Guidelines (markdown)[2023-04-20 04:03] televandalist:
Created WIP-Content-Guidelines (markdown)WIP Page - Combining \"Getting started as an achievement developer,\" \"How to Become an Achievement Developer,\" and \"Set Development Roadmap\" into a sort-of Junior Dev doc.
This document covers the basics of how achievements work and the steps one must take to get started with achievement development.
Anyone can become a RetroAchievements developer if they put in the effort!
So how do RetroAchievements work? Technically, an achievement consists of a series of conditions that make up what we refer to as the achievement logic
. When a game with an achievement set is launched in an emulator that supports RetroAchievements, the emulator constantly checks if the conditions of each achievement are met in the current frame of gameplay. When all conditions for a particular achievement are met, the emulator will stop checking the conditions of that achievement and award it to the player.
The barebones process of creating achievement logic involves 3 steps: 1. Finding a place in the game's RAM where the information needed for an achievement is stored. Some examples: current level or stage, health, timer, coins, points, ammo, holding a weapon, etc. 2. Creating conditions that must be met in order to award an achievement. 3. Test if the achievement is working as expected.
However, this is often much easier said than done. There is a good chance that those steps will need to be repeated many times in order to refine the achievement logic to make it stable enough for players.
"},{"location":"WIP-Jr/#becoming-a-junior-developer","title":"Becoming a Junior Developer","text":"If you would like to start developing achievements, the first thing you will need to do is read up on our Developer and Content Guidelines. It is also important to read the various pages in the Achievement Development category, but that can be done as you go.
It is strongly recommended to join our Discord server so you can quickly and easily contact other achievement developers who can show you the ropes and help you along. Once you have joined the server, make sure you get verified by following the instructions in the #welcome
channel. If you already know what game you'd like to make achievements for, you can go ahead and ask for the jr-dev
role in the #tech-support
forum channel by creating a post tagged as Join Team
and pinging QA-Maintainer
. Once you have the jr-dev
role, you will have access to the #jr-devs
channel, where you can talk to code reviewers and ask any development-related questions.
After you have become a Junior Developer, you can decide on a game to work on. If you need an entry made for it, you can ask code reviewers to do so. They will need to open a forum topic for you anyway, assuming it doesn't already have one. You can now claim it for achievement development.
"},{"location":"WIP-Jr/#set-development-roadmap","title":"Set Development Roadmap","text":"Once you have chosen your game and have claimed it for development, you need to plan your achievement set. You should know enough about the game to give it justice. The following are some tips on coming up with a plan:
"},{"location":"WIP-Jr/#initial-research","title":"Initial Research","text":"Once you have a plan, it is recommended that you post it in the game's forum topic. This will allow the community to give feedback and will give code reviewers an idea of where you're at from a design standpoint. It is important to be open to receive feedback and suggestions!
"},{"location":"WIP-Jr/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-06 01:59] televandalist:
Created WIP-Jr (markdown)The docs are currently under heavy construction. For starters, the following pages are going to be moved to the site:
The plan is to have any documentation involving guidelines/policy as well as a general FAQ be in plain sight on retroachievements.org. Some of the pages will be merged and will result in the following categories:
This will eventually allow for the wiki to be more open and dedicated to support docs, tutorials, resources, etc.
From sidebar:
The RetroAchievements project aims to provide tools for creating achievements for retrogames and ways to enjoy such creations. We strive to promote a healthy and collaborative community around this hobby. Everything we produce is made available for free and we will never profit from it.
"},{"location":"WIP-User-Code-of-Conduct/#rules","title":"Rules","text":"In order to support the growth of our community as described in our mission statement, we need some rules. 1. Don't be a jerk or generally obnoxious - nobody likes trolls. 2. Do not use the RetroAchievements website or Discord server to share or request copyrighted material. This includes direct downloads, links to ROM sites, etc. 3. Keep the Discord channels and forum threads on-topic. 4. When a moderator/admin asks you to stop, you should stop. 5. When in doubt, ask a @mod
in Discord or send a message to RAdmin on the website. 6. Do not advertise products, services, or other Discord servers without approval.
Moderation typically follows a \"three strikes\" warning system, but there are certain behaviors that will not be tolerated and will likely expedite removing someone from the community. These behaviors include, but are not limited to: - Bigotry. This includes racism, sexism, elitism; intolerance regarding others' nationality, religion, sexual orientation, political beliefs, etc. - Public or private harassment. - Unwelcome sexual attention or advances towards others. - Doxing. This is publishing others' private information, such as photos, contact information, etc. without their explicit permission. - Spamming, excessive shitposting, etc. - Personal attacks, as in making abusive remarks on or relating to one's person, instead of providing evidence when examining another person's claims or comments. - Posting pornography, as in images or descriptions of erotic behavior intended to cause sexual excitement. - Posting gruesome or gory images intended to cause disgust. - Heated public arguments.
Please report to moderators/admins cases where these rules and behaviors are being violated. The moderators will step in to cool things down if arguments start getting out of hand.
"},{"location":"WIP-User-Code-of-Conduct/#freedom-of-speech","title":"Freedom of Speech","text":"Some people show up just to complain and all admins/mods are evil. We get it. If you want to constantly rant or dump derogatory comments about how we run things here, you're free to do that. However, this can be demotivating and wastes a lot of volunteers' time; therefore, we don't want it on our forums or Discord Server. There are plenty of options where you can do it around the internet.
Keep in mind that RetroAchievements.org is NOT a bastion of freedom of speech.
Criticism is welcome, but just be sure to be civil.
"},{"location":"WIP-User-Code-of-Conduct/#moderation","title":"Moderation","text":"If you feel moderation is needed, ping the @mod
role on our Discord server, or direct your issues to RAdmin, a shared mod-mail account.
The moderation teams' goal is to assure users adhere to the User's Code of Conduct. If a member from moderation spots an action that is a breach of this Code of Conduct, the following steps will be taken for proper action:
Formal and diplomatic warning via carl-bot. (no sarcasm, no threatening tone).
If the warning is ignored, the offender will be kicked from our Discord server.
Note: For website offenses, Step 2 is ignored. If the offender ignores the warning in Step 1, the next action results in a ban as detailed below:
If you think moderators are not acting like described above, send a Direct Message to RAdmin or email ramodmail@gmail.com. This is a shared moderation account that all mods and admins see. The issue will be discussed and dealt with fairly.
Admins/mods who do not follow or enforce this Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's administration.
"},{"location":"WIP-User-Code-of-Conduct/#ban-appeal","title":"Ban Appeal","text":"If you've been banned and want to appeal to have your account access back, please send a site Direct Message to RAdmin. In the event that your site account has been banned, please send an email to ramodmail@gmail.com.
"},{"location":"WIP-User-Code-of-Conduct/#cheating","title":"Cheating","text":"Check the Global Leaderboard and Achievement Hunting Rules.
"},{"location":"WIP-User-Code-of-Conduct/#faq","title":"FAQ","text":"No.
The member will still be able to use our services to play retrogames with achievements. But if the disruptive behavior continues on the website, they'll be banned from there too.
"},{"location":"WIP-User-Code-of-Conduct/#i-created-a-discord-server-because-i-want-more-freedom-than-what-i-have-on-the-official-retroachievements-server-can-i-promote-my-server-here","title":"I created a Discord server because I want more freedom than what I have on the official RetroAchievements server. Can I promote my server here?","text":"No.
"},{"location":"WIP-User-Code-of-Conduct/#is-it-mandatory-for-achievement-creators-to-join-the-discord-server","title":"Is it mandatory for achievement creators to join the Discord server?","text":"No.
Joining our Discord server is optional. But if you're in the list of banned users there, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-User-Code-of-Conduct/#if-an-achievement-creator-is-banned-from-discord-will-they-lose-the-developer-role-on-the-website","title":"If an achievement creator is banned from Discord will they lose the \"Developer\" role on the website?","text":"Yes.
"},{"location":"WIP-User-Code-of-Conduct/#if-im-banned-from-the-discord-server-but-i-still-want-to-create-achievements-what-should-i-do","title":"If I'm banned from the Discord server but I still want to create achievements, what should I do?","text":"Send your appeal to RAdmin or ramodmail@gmail.com to try and have your ban lifted.
It doesn't really matter if you want to join the server or not, if you're in the list of banned users in our Discord server, you cannot have the \"Developer\" role on the website.
"},{"location":"WIP-User-Code-of-Conduct/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-30 14:39] televandalist:
Updated WIP User Code of Conduct (markdown)[2023-06-06 10:44] televandalist:
Fix broken link[2023-04-20 00:39] televandalist:
Created WIP-User-Code-of-Conduct (markdown)RetroAchievements (RA) provides users the ability to earn achievements in retro games from an RA achievement set. It awards achievements by comparing a game\u2019s memory, henceforth referred to as RAM, to achievement code written by an RA developer. Achievement code, also known as logic, is a list of memory conditions chosen by the developer, that when all are simultaneously true on a single frame, will award an achievement.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#what-is-an-achievement-set","title":"What Is An Achievement Set?","text":"An achievement set is the compilation of individual achievements, rich presence and leaderboards for a particular game. Achievements are comprised of achievement logic, a title, a description, a point value and a badge. Additionally, a set must contain a Rich Presence script which provides site users information on where active players are in a game. Sets may have leaderboards that track how well players perform in certain things in a game such as how quickly they can beat stages, how many points they can score and many other things. RA users interface with all these components and subcomponents. Each one is a vital part of the player experience.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#what-is-achievement-code-and-how-is-it-written","title":"What Is Achievement Code And How Is It Written?","text":"RA code is a custom text based language that is interpreted by RA supporting emulators. Developers write code using either the Achievement Editor in the RAIntegration toolkit or by using RATools, a standalone executable that provides a scripting language for achievement development. Both the achievement editor and RATools produce code that is used for all achievements, leaderboards and Rich Presence.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#how-is-achievement-code-processed","title":"How Is Achievement Code Processed?","text":"A game\u2019s RAM is its most basic form. RAM is simply the game's memory addresses and their respective values at any given time. When processed by a console or emulator, the RAM can be used to recognize what is happening within the game. Games are processed in a series of frames, generally 60, 50, 30 or 25 per second depending on console and format. RA processes all unearned achievement logic in a set every frame. Because of this, developers can create logic such that when all of its conditions are simultaneously true, identify something uniquely precise happening in a game and award an achievement, activate a leaderboard and provide accurate Rich Presence. It is an achievement developer\u2019s job to understand enough of a game's RAM to be able to construct this logic.
Understanding how the RAM works that a developer intends to use in their logic is essential to creating a stable set that awards achievements, submits leaderboard scores and accurately displays Rich Presence only as intended. RA developers use developer emulator tools to inspect a game's RAM and determine which addresses are responsible for things they intend to use for logic. Developers have many ways to precisely define exactly which memory conditions must be true in order to construct logic, including retaining knowledge that something occurred previously in memory, but may no longer be true.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#achievement-logic-and-processing-example","title":"Achievement Logic and Processing Example","text":"As a simple example, to award an achievement for obtaining the hammer in Zelda II: The Adventure of Link, a developer would need to figure out which memory addresses within the game were associated with a few unique things about obtaining the hammer. There are often many ways to do this. One way a developer might approach this achievement is to find the addresses for the room ID to ensure the player is in the room with the hammer, also perhaps an area ID to ensure the player is in the right section of the game and lastly an address that indicates whether the player actually gets the hammer. The reason a room and area ID are important is because when a player loads a save file that has collected the hammer, the memory would indicate that possessed of the hammer goes from untrue to true, but this isn't where the achievement should award. The room and area ID conditions would ensure that a player was actually obtaining the hammer in game and not just loading a save file that already possessed it. A solid achievement could be constructed to award when the following is true simultaneously:
Room ID = room the hammer is in Area ID = area of game the hammer is in Possesion of hammer changes from not possessed to possessed
Here is what this achievement would look like in the Achievement Editor In this example, address 0x0561 is the room ID and its value is 0x15 when the player is in the room with the hammer, address 0x076e is the area ID and its value is 0x02 when in Death Mountain where the hammer is located and Bit0 of address 0x078b indicates if the player has the hammer. This bit changes from 0 to 1 when the player acquires the hammer, so the achievement checks for a frame where this bit is greater than it was the previous frame which is precisely when the hammer is obtained since bits can only be either 1 or 0. If all three conditions are true on the same frame, the achievement is awarded. This can only happen when the player obtains the hammer while in the hammer room in Death Mountain, not at some other time such as loading a save file.
Every frame the player is playing the game, the RAM is being compared to the achievement logic to check if all conditions are true on that frame. For this example achievement, all conditions can only be true on the same frame when a player is in the room and area where the hammer is obtained and the player obtains the hammer. When that happens, all of the conditions defined in the logic will be true and the achievement will be immediately awarded.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#leaderboard-and-rich-presence-code","title":"Leaderboard and Rich Presence Code","text":"Leaderboards function quite similarly to achievements in terms of logic, but need a list of conditions to tell the leaderboard when to activate, when to cancel itself, and when and what value to submit to the leaderboard. Creating a leaderboard is essentially like creating a few small achievements that will be processed sequentially.
Rich Presence code is very similar to achievement and leaderboard code, but is written slightly differently due to the way it is handled by the site. Rich Presence is written and submitted to RA as a script, as opposed to a string of code like achievements and leaderboards. It still uses the same fundamental code as achievements and leaderboards, but has some additional features such as custom macros that may be used.
"},{"location":"WIP-%E2%80%90-How-Does-RetroAchievements-Work/#take-aways","title":"Take Aways","text":"The key to writing solid code is to first understand what in RAM can be used to recognize a particular game event for which a developer intends to award an achievement, use for a leaderboard or Rich Presence. The next steps are finding the necessary memory addresses and their values to recognize when the event occurs and constructing logic to create a list of conditions that will only be simultaneously true on the intended frame.
"},{"location":"Ways-to-Contribute/","title":"Ways to Contribute","text":"If you do not wish to become an achievement developer, but would still like to contribute to RetroAchievements, there are many ways to do so:
If an achievement triggered at a wrong time or didn't trigger at all, please report it. We know that many users love free points, but please, even if an achievement triggered at a wrong time, report it!
Another important situation that needs to be reported is a cheevo triggering by using some kind of cheat in the game (e.g. stage select code), or by loading a saved game.
There are two ways to report a broken cheevo: directly in the emulator or via website. On both cases, add details of the state of your game, when it triggered/didn't trigger, what game mode, where you were when it happened/didn't happen, if you had reset the game recently, anything else you think may be relevant to the achievement. This is necessary for our system so the devs know where there is a problem.
"},{"location":"Ways-to-Contribute/#reporting-via-emulator","title":"Reporting Via emulator","text":"Go to RetroAchievements -> Report Broken Achievements, this feature is only available on official emulators (not on RetroArch).
See this example:
.
"},{"location":"Ways-to-Contribute/#report-via-website","title":"Report Via Website","text":"On every achievement's page you see a link saying Report an issue for this achievement
, like in the image below:
If you know a game very well, you probably can have some cool ideas of challenges for the game. Post your ideas on the forum topic related to the game.
We have a guide on how to think about and design good achievements, not the technical side but the conceptual. Then even non-developers can get some inspiration from that info.
"},{"location":"Ways-to-Contribute/#give-feedback","title":"Give Feedback","text":"Give feedback in the forums about what you like or dislike about the achievements sets. Be specific and leave details.
"},{"location":"Ways-to-Contribute/#create-badges-and-game-icons","title":"Create Badges and Game Icons","text":"If you like to play with graphics you can create some art for the achievements badges or icons for the games. Using the screenshot feature from the emulator itself can help with this, and then you can edit to make something cool.
You can see more info about it on the Badge and Icon Creation page.
"},{"location":"Ways-to-Contribute/#help-with-the-documentation","title":"Help with the Documentation","text":"If you have a github account and know the basics of Markdown, you can help with the documentation. Fixing typos, grammar or inaccurate information.
Take a look at this page to know the details: Contributing with the docs
"},{"location":"Ways-to-Contribute/#participate-in-events","title":"Participate in Events","text":"Such as Achievement of the Week, Leaderboard of the Week or other events that happens on our discord server.
"},{"location":"Ways-to-Contribute/#report-title-and-description-errors","title":"Report Title and Description Errors","text":"Section Pending
"},{"location":"Ways-to-Contribute/#playtesting","title":"Playtesting","text":"Section Pending
"},{"location":"Ways-to-Contribute/#compatibility-testing","title":"Compatibility Testing","text":"Section Pending
"},{"location":"Ways-to-Contribute/#write-for-ranews","title":"Write for RANews","text":"Section Pending - for now, see the RANews Repository.
"},{"location":"Ways-to-Contribute/#create-raguides","title":"Create RAGuides","text":"Section Pending - for now, see the RAGuides Repository.
"},{"location":"Ways-to-Contribute/#help-with-rapatches","title":"Help with RAPatches","text":"Section Pending - for now, see the RAPatches Repository.
"},{"location":"Ways-to-Contribute/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-06-05 22:32] televandalist:
Updated Ways to Contribute (markdown)[2023-06-05 22:29] televandalist:
Updated Ways to Contribute (markdown)[2023-06-05 21:59] televandalist:
Updated Non Developer Contributions (markdown)[2023-06-05 21:58] televandalist:
Added quick links/ToC - Added WIP sections for Playtesting, Compatibility Testing, RANews, and RAGuides[2023-06-05 20:42] televandalist:
Renamed from \"How to contribute if you're not an achievement developer\" to \"Ways to Contribute\"Nota: actualmente el problema descrito solamente sucede en RetroArch.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#hardcoresoftcore","title":"Hardcore/Softcore","text":"Algunos usuarios les gusta utilizar la funci\u00f3n de guardar/cargar estado para salvar su progreso en un juego. Puede que ya lo sepas pero, esta funci\u00f3n no esta permitida cuando se juega en modo hardcore. Pero algunos usuarios no son jugadores hardcore y prefiero mantener el modo hardcore desactivado (vamos a llamar a este modo como softcore).
Algunas veces algunos usuarios reportan que un logro no se desbloqueo, y cuando se les pregunta dicen que estaban jugando en softcore.
Una cosa que tienes que tener en cuenta es:
Si utilizas la funci\u00f3n de cargar estado espera tener problemas con los logros cuando no se disparan cuando se suponia que se ten\u00edan que disparar.
Ahora vamos a intentar explicar para aquellos que no est\u00e1n muy familiarizados con los detalles sobre el desarrollo de logro y por que este tipo de problema ocurre.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#concepto-basico-detras-de-un-logro","title":"Concepto B\u00e1sico detr\u00e1s de un logro","text":"T\u00e9cnicamente un logro es un grupo de condiciones que tienen que ser cumplidas en un frame en particular dentro del v\u00eddeo juego.
Cuando abres un juego en un emulador con la funci\u00f3n de RetroAchievements integrada, el emulador esta siempre revisando si las condiciones son cumplidas en el frame actual. Cuando todas las condiciones en el ese logro en particular son cumplidas, el logro es otorgado y el emulador deja de revisar si las condiciones para ese logro.
Ejemplos de condiciones:
El problema con softcore es que cuando cargas un estado de guardado puedes arruinar la l\u00f3gica detr\u00e1s del logro.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplos","title":"Ejemplos","text":""},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplo-1-completa-el-juego-sin-utilizar-passwords","title":"Ejemplo 1: Completa el juego sin utilizar passwords","text":"Imag\u00ednate un juego con 5 stages y con la funci\u00f3n de password.
Tal vez las condiciones para que el logro \"Completa el juego sin utilizar passwords\" salte son (en un logro de verdad por lo general hay mas condiciones, pero para esta explicaci\u00f3n vamos a considerar solamente estas):
Entonces para conseguir este logro lo que necesitas es estar en todos los niveles al menos alguna vez y completar el juego.
Cuando estas en el stage 1, el emulador lo recuerda, y lo mismo para todos los dem\u00e1s stages. Y cuando terminas el stage 5 (completa el juego) obtienes el logro.
Ahora imag\u00ednate este escenario:
En este escenario el logro no saldr\u00eda.
Despu\u00e9s de cerrar el emulador el \"olvida\" lo que paso en los stages 1, 2 y 3. Cuando corres el emulador/juego de nuevo y cargas el estado en el stage 4, el emulador no va a detectar que pasaste por lo stages anteriores. Entonces el logro no se va a desbloquear.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ejemplo-2-derrota-al-jefe-x-sin-recibir-dano","title":"Ejemplo 2: Derrota al jefe X sin recibir da\u00f1o","text":"Lo mas probable es que la condiciones que tienen que ser cumplidas para que este logro salte son:
En otras palabras: para obtener este logro el emulador tiene que \"saber\" que entraste al cuarto del jefe, que no obtuviste ning\u00fan da\u00f1o, y que venciste al jefe.
El detalle importante en el que tenemos que prestar atenci\u00f3n es: cuando recibes alg\u00fan da\u00f1o, el emulador \"olvida\" que entraste al cuarto del jefe. Entonces incluso si cargaste un estado en alg\u00fan punto en el que aun no recib\u00edas da\u00f1o pero ya estabas dentro del cuarto del jefe, el emulador no va a detectar cuando entras por primera vez al cuarto. Y el logro no va a saltar.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#ultimas-palabras","title":"Ultimas Palabras","text":"Cuando reportes logros rotos da la mayor cantidad de detalles que sean posibles, y no olvides si estabas o no jugando en hardcore.
Si quieres solicitar que un administrador te otorgue un logro manualmente cuando este no se disparo, ten en cuenta proveer pruebas. Especialmente para logros como en los ejemplos de arriba (no recibir da\u00f1o, no passwords, no muertes, etc).
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-31 10:50] eldexterr:
Created Why you shouldn't use the load state feature es (markdown)Note: currently the issue described here happens only on DuckStation standalone and RetroArch versions older than 1.9.1.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#hardcoresoftcore","title":"Hardcore/Softcore","text":"Some users like to use the save/load state feature to save their progress in a game. As you may know, this feature isn't allowed when playing with hardcore mode. But some users aren't hardcore gamers and prefer to keep hardcore mode disabled (let's call this mode softcore).
From time to time some users report that an achievement isn't triggering, and when asked they say they were playing in softcore.
One thing you all have to keep in mind is:
If you use the load state feature expect to have issues of cheevos not triggering when they are expected to trigger.
Here we'll try to explain to those who don't know the details of achievements development why this kind of issue happens.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#basic-concept-behind-an-achievement","title":"Basic concept behind an achievement","text":"Technically an achievement is a group of conditions that must be met in a particular frame of the video game.
When you launch a game using an emulator with the RetroAchievements feature, the emulator is always checking if those conditions are met in the current frame. When all conditions for a particular achievement are met, it is awarded and the emulator stops checking the conditions for that achievement.
Examples of conditions:
The problem with softcore is that when you load a saved state you can ruin the logic behind an achievement.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#examples","title":"Examples","text":""},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#example-1-beat-the-game-without-passwords","title":"Example 1: Beat the game without passwords","text":"Imagine a game with 5 stages and with the password feature.
Some probable conditions to trigger the \"Beat the game without passwords\" achievement are (in a real cheevo there will be more conditions, but for this explanation let's consider only these ones):
So to get this achievement you have to pass through all stages and then beat the game.
When you are at stage 1, the emulator memorizes it, the same thing for all other stages. And when you finish stage 5 (beat the game) you get the achievement.
Now imagine this scenario:
In this scenario, the achievement won't trigger.
After closing the emulator it \"forgets\" that you passed through stages 1, 2, and 3. When you run the emulator/game again and load the state being on stage 4, the emulator won't detect that you passed through the previous stages. Then the achievement won't trigger.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#example-2-defeat-boss-x-without-taking-damage","title":"Example 2: Defeat boss X without taking damage","text":"Most likely the conditions to be met in a frame to make this achievement trigger are:
In other words: to get this achievement the emulator must \"know\" that you entered the boss room, didn't take any damage, and beat the boss.
The important detail to pay attention to here: when you take any damage, the emulator \"forgets\" that you entered the boss room. Then even if you load a state to a point where you didn't take any damage but already entered the room, the emulator won't detect that you entered the room. And then the achievement won't trigger.
"},{"location":"Why-you-shouldn%27t-use-the-load-state-feature/#final-words","title":"Final Words","text":"When reporting a broken achievement give as many details as possible, and don't forget to mention if you are playing on hardcore mode or not.
If you want to request an admin to manually award you an achievement that didn't trigger, be sure to provide qualified proof. Especially for achievements like those in the examples above (no damage, no passwords, no death, etc).
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/","title":"Working with DLC for the PlayStation Portable","text":"Various games for the PlayStation Portable support DLC content. Depending on the game, this may come in different formats with different processes for installation.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#standard","title":"Standard","text":"Traditional (generally paid) DLC was installed by the Playstation Store into game directories. Most of the time this will consist of one or more edat files and a param.pbp. Sometimes more files or directories are needed as well. If you already have decrypted DLC in this format, place it in saves/PSP/GAME/<game_id>/ in the exact format it came in. The game ID -must- match the region of the game you're playing. For example, Dissidia 012 will use ULUS10566 for the US version and ULES01505 for the EU version. For users dumping data from real hardware, you'll need to use custom firmware and the npdecrypter plugin to decrypt your DLC to a format usable by PPSSPP. Further information can be found in the plugin's readme.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#save-file","title":"Save File","text":"A number of games distributed (generally free) DLC as extra save files for the games. These will have their own specifically-named directories which are placed alongside your game savedata in saves/PSP/SAVEDATA/. In a few rare cases, there may be multiple sets of DLC that cannot be installed simultaneously for games using this method. For users dumping data from real hardware, just copy it to the same location from the memory stick. Nice and simple. Despite the free nature of this DLC, we don't believe we have the legal rights to distribute it ourselves, so please don't ask.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#updates","title":"Updates","text":"These can be a bit complicated. Currently the only way to apply updates tends to be by patching the update into the iso itself, after decrypting it on real hardware. This is messy and suboptimal, but there isn't a way around it right now. You'll need to open the iso in a tool like UMDGen and insert/replace the updated files in usrdir. Exact per-game instructions on doing so are outside the scope of this guide. Of note, this will be required to be able to use the DLC for Little Big Planet and Bleach: Heat the Soul 7, and may be necessary for other games as well. In the future, this step hopefully can be skipped.
Further information: https://github.com/hrydgard/ppsspp/issues/12344
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#killzone-liberation","title":"Killzone Liberation","text":"This game's final chapter is only available as DLC. This specific game had a very strange DLC configuration, requiring downloading a free \"game\" through the PSP's browser, running it to unpack the DLC file, then leaving the second \"game\" present while playing the real one. Unfortunately, it uses a wide variety of kernel calls unique to this game that aren't emulated yet. Even with the DLC in its post-extraction state, it just causes the game to freeze when present. There's no way to emulate the game's final chapter at this time.
Further information: https://github.com/hrydgard/ppsspp/issues/12343
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#note","title":"Note","text":"While links to github issues are provided here, please refrain from commenting on them unless you have constructive information to provide about the issues at hand. A simple supportive thumbs up to indicate interest in an issue is sufficient.
"},{"location":"Working-with-DLC-for-the-PlayStation-Portable/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2021-10-01 06:12] Sanaki:
Updated Working with DLC for the PlayStation Portable (markdown)[2021-10-01 06:08] Sanaki:
Hopefully fix a tag issue on the deployed docs[2021-09-30 23:26] Sanaki:
Created Working with DLC for the PlayStation Portable (markdown)Relacionado: Logros para hacks de ROM, Sets Bonus
Solamente un set es permitido por juego y por consola. Esto es aplica en casos de existente revisiones oficiales (ex. Rev A), parches oficiales, no-oficiales, y otras regiones.
Sets Bonus son una excepci\u00f3n de esta esta regla, pero son considerado como una extensi\u00f3n del set est\u00e1ndar y estos siguen reglas diferentes sobre el tipo de logros que son permitidos.
"},{"location":"Working-with-the-Right-ROM-es/#seleccion-de-rom","title":"Selecci\u00f3n de ROM","text":"Casi cualquier juego cuenta con m\u00faltiples versiones del ROM , algunas veces asta docenas. Y algunas veces hay diferencias bastante mayores hasta el punto en el que, un ROM ni siquiera es compatible con los logros de otro ROM del mismo juego. Entonces, encontrar el mejor ROM para desarrollar logros es importante y tiene que hacerse cuidadosamente.
NTSC USA
no-intro, porque 60 FPS es una experiencia mucho mas fluida. Lanzamientos PAL Europeos
corren a 50 FPS, y la mayor\u00eda de los casos tienen que ser evadidos. Lanzamientos NTSC Japan
tambi\u00e9n corren a 60 FPS , pero solamente son la mejor opci\u00f3n si el juego fue exclusivamente lanzado en Jap\u00f3n. Utilizar como recurso la versi\u00f3n PAL Europea
de un juego deber\u00eda de ser el ultimo recurso (Juego exclusivamente de Europa solamente), y son tipicamente muy pocos juegos y bastante \u00fanicos tambi\u00e9n, de toda la librer\u00eda de la consola. El problema de PAL/NTSC no aplica a la emulaci\u00f3n del GBA, que corre todas las versiones regionales a la misma cantidad de FPS.ROM trainers
, no son oficiales, y no son compatibles por Retro Achievements de ninguna manera.ROMs de No-Intro son el tipo de ROMs preferidos a ser linkeados a la base de datos de RA, y son los que deber\u00edas de utilizar para hacer tu set cuando sea esto posible. Ellos filtran malos dumps, hacks, fakes, overdumps, underdumps, etc. y solo muestra los ROMs que son mas fieles al cartucho original. ROMs de No-Intro ROMs pueden ser identificados de la siguiente manera:
Nombre del Juego (Regi\u00f3n) (Lenguajes Disponibles si es que aplica) (Revisi\u00f3n Actual si es que aplica) Ejemplo: Diddy Kong Racing (USA) (En,Fr) (Rev A)
GoodTools Nombre del Juego (Regi\u00f3n) [!], aunque tambi\u00e9n algunos de los ROMs Nombre del Juego (Regi\u00f3n) (Grupo de Rom Dumpers) son de una era mas temprana y tal vez sean iguales a la base de datos de No-Intro pero no es algo garantizado.
Puedes verificar aqu\u00ed que el checksum de tu ROM concuerda con el que se encuentra en la base de datos de No-Intro. Desafortunadamente algunos emuladores de RA no calculan correctamente el checksum (como el de NES) as\u00ed que tal vez necesites encontrar tu checksum desde otra fuente.
"},{"location":"Working-with-the-Right-ROM-es/#parches-de-traduccion","title":"Parches de Traducci\u00f3n","text":"(tambi\u00e9n mira: P\u00f3liza de Localizaci\u00f3n de ROM mas abajo)
Ingles es el lenguaje primario de RetroAchievements. Los parches de traducci\u00f3n son algunas veces aplicados por los desarrolladores a t\u00edtulos que no se encuentran en ingles. En estos casos instrucciones de como parchear el ROM se van a encontrar en el foro del juego. Proveer un parche de traducci\u00f3n a un titulo existente permite que el juego sea mas accesible a otros usuarios. Tu tienes que inspeccionar profundamente la memoria para ver si el parche es completamente compatible con el set de logros y as\u00ed mandarlo como aprobaci\u00f3n para que lo cheque un desarrollador y as\u00ed lo pueda postear en el foro del juego.
Algunas veces los parches de traducci\u00f3n pueden llegar a diferir cr\u00edticamente del MD5 del desarrollador encontrando as\u00ed diferencias en la memoria original. Antes de linkear estos parches checa con el desarrollador original del juego o haz pruebas profundas en memoria para asegurarte que es completamente compatible. Puedes agregar parches de traducci\u00f3n que te hubieras encontrado en linea mientras todos los logros funcionen de manera correcta y no hagan al juego mas o menos dificil.
"},{"location":"Working-with-the-Right-ROM-es/#poliza-de-localizacion-de-rom","title":"P\u00f3liza de Localizaci\u00f3n de ROM","text":"Como Ingles es el lenguaje principal de la comunidad, ROMs en Ingles son preferidos. Cuando escojas que ROM deseas para construir logros entre todas las versiones regionales disponibles tu tienes que darle prioridad a los ROMs No-Intro Americanos para consolas que no son port\u00e1tiles y ROMs Europeos para consolas port\u00e1tiles.
Damos la bienvenida y nos gustar\u00eda seguir mejorando nuestro soporte para todas las versiones regionales, especialmente Japones (ya que la mayor\u00eda de nuestra librer\u00eda de juegos fueron creados en Jap\u00f3n). Aparte, algunos usuarios simplemente prefieren versi\u00f3n regional en especifico de un juego y es al final de cuentas es mucho mejor incluir un soporte amplio para que cada buen ROM este linkeado a una buena entrada y as\u00ed se le den los logros apropiados.
Cuando miramos en como juegos con diferentes versiones regionales son manejados nuestro est\u00e1ndar es una entrada por juego y por consola. Lo ideal seria que si alguien carga la versi\u00f3n Americana o Japonesa de Donkey Kong, Pac-Man o Contra, la gente consiga los mismos logros para la misma entrada. Pero hay algunas situaciones donde es mejor para nuestra librer\u00eda y jugadores separar las versiones regionales en sus propia entradas \u00fanicas. Si la comunidad tiene la raz\u00f3n en creer que es mejor que una entrada se parta en dos, esto puede ser revisado y aprobado por el equipo de desarrolladores despu\u00e9s de un votaci\u00f3n y discusi\u00f3n.
"},{"location":"Working-with-the-Right-ROM-es/#diferencias-de-localizacion","title":"Diferencias de Localizaci\u00f3n","text":"El tipo de cambios hechos durante una localizaci\u00f3n (mas com\u00fanmente de Japones a Ingles) pueden varear bruscamente. Cualquiera de los siguientes cambios pueden ser resultados de una localizaci\u00f3n:
Debido a estas variantes y para evitar llenar la base de datos de entradas duplicadas innecesarias nuestra meta es minimizar el numero de sets separados. Para que un set sea separado necesita razones suficientes; nos tomamos bastante cuidado cuando tenemos que aprobar este tipo de casos.
"},{"location":"Working-with-the-Right-ROM-es/#separando-una-entrada-regional","title":"Separando una entrada regional","text":""},{"location":"Working-with-the-Right-ROM-es/#1-obtener-aprobacion-por-medio-del-canal-de-discord-revision-voting-es-requerido","title":"1. Obtener aprobaci\u00f3n por medio del canal de Discord #revision-voting es requerido.","text":"La aprobaci\u00f3n sigue el mismo m\u00e9todo de votaciones como cuando se va a trabajar una revisi\u00f3n, como postear tu plan en el foro del juego y en el canal de Discord de #revision-voting; permitiendo tiempo para discutirlo y esperar las 72 horas para que la mayor\u00eda pueda votar en las votaciones.
Recuerda que la meta de reducir la duplicaci\u00f3n de entradas; solo se permite que un set se separe cuando es realmente comprensible.
El desarrollador que intente separar un set tiene que tener un fuerte motivo por el que el set merezca una nueva entrada y porque no es posible crear la experiencia que se desea con solamente una entrada.
Los Desarrolladores que busquen partir un set tienen que venir con el acto de buena fe. Los Sets tienen que ser partidos por el bien de nuestra librer\u00eda de juegos y la comunidad y no por una manera ego\u00edsta de re-hacer un set o buscar puntos de desarrollador gratis.
"},{"location":"Working-with-the-Right-ROM-es/#2-tal-vez-podria-ser-aceptable-separar-un-set-si","title":"2. Tal vez podr\u00eda ser aceptable separar un set si","text":"Ejemplos de juegos que califican:
Considerando todo esto, aun depende de la consideraci\u00f3n de los desarrolladores.
Ejemplos de juegos que (probablemente) no califican:
No es aceptable simplemente duplicar los sets en dos entradas diferentes. Sets separados tienen que tratarse como una nueva entrada y no un un sub-set (donde los sets Bonus son sub-sets). Estos tienen que tener un sentimiento diferente, retos que hablen de las funciones \u00fanicas del juego que causaron que este se separara en su propia entrada en primer lugar.
"},{"location":"Working-with-the-Right-ROM-es/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2019-05-22 10:21] eldexterr:
Updated Working with the Right ROM es (markdown)[2019-05-20 10:23] eldexterr:
Created Working with the Right ROM es (markdown)Related: Achievements for ROM hacks, Subsets
Only one achievement set is allowed per game per console. This is true in cases of existing official revisions (ex. Rev 1), official and unofficial fix patches, and alternate regions.
Subsets 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.
Regional exceptions may exist -rarely- when regional variations massively change the game.
"},{"location":"Working-with-the-Right-ROM/#rom-selection","title":"ROM Selection","text":"Almost every game has multiple ROM versions available, sometimes dozens. Often there are major differences under the hood that prevent achievement compatibility between version. Because of this, finding the best ROM for achievements is critical and should be done carefully.
NTSC USA
release ROMs, because 60Hz is a smoother gaming experience and generally matches the intended play speed. PAL European
releases run at 50Hz, and are to be avoided in most cases. NTSC Japan
releases also run at 60Hz, but are only the best choice if the game was a Japan-exclusive release. PAL European
releases should be used as a last resort only (Europe-only exclusive), and are typically limited to a very select few unique games from the entire console's library. Handheld consoles don't have regional timing differences, so language options should be prioritized there whenever possible.ROM trainers
, are not official, and are not in any way supported by RetroAchievements. These ROMs cannot be linked even as secondary options.No-Intro and Redump are the primary groups responsible for verifying clean dumps of console games, excluding all modifications and untrustworthy sources in the process. They offer dat files that can be used to verify your own dumps via a ROM manager. ROMs verified by these groups are preferred whenever possible, and can generally 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 1)
TOSEC is another less restrictive preservation group. Their hashes often will match Redump for discs, but will frequently contain less thoroughly verified dumps. For floppy discs, cassettes, and less well-known systems where No-Intro and/or Redump verification aren't avaliable, TOSEC is a good fallback choice.
You can verify that your ROM checksum matches the databases of No-Intro, Redump, or TOSEC either by using a rom manager with a dat provided by the preferred group or by verifying checksum manually and searching the dat for it in a text editor. Bear in mind that unlike a manual check, the rom manager may be able to skip over external headers to accurately verify integrity. Standard choices are clrmamepro and Romulus.
"},{"location":"Working-with-the-Right-ROM/#preferred-groups-per-console","title":"Preferred Groups Per Console","text":"Console ID Console Name Preferred Group 01 GenesisMega Drive No Intro 02 Nintendo 64 No Intro 03 Super NintendoSuper Famicom No Intro 03 Sufami Turbo No Intro 03 Satellaview No Intro 04 Game Boy No Intro 05 Game Boy Advance No Intro 06 Game Boy Color No Intro 07 NESFamicom No Intro 07 Famicom Disk System No Intro 08 TurboGrafx-16PC Engine No Intro 08 SuperGrafx No Intro 08 TurboGrafx-CDPC Engine CD Redump 09 Sega CDMega CD Redump 10 Sega 32X No Intro 11 Master SystemMark III No Intro 12 PlayStation Redump 13 Atari Lynx No Intro 14 Neo Geo Pocket No Intro 14 Neo Geo Pocket Color No Intro 15 Game Gear No Intro 17 Atari Jaguar No Intro 18 Nintendo DS No Intro 21 PlayStation 2 Redump 23 Magnavox Odyssey 2 No Intro 24 Pokemon Mini No Intro 25 Atari 2600 No Intro 27 Arcade Final Burn Neo 28 Virtual Boy No Intro 29 MSX (Cartridges) No Intro 29 MSX (Disks) TOSEC 29 MSX2 (Cartridges) No Intro 29 MSX2 (Disks) TOSEC 33 SG-1000 No Intro 38 Apple II TOSEC 39 Sega Saturn Redump 40 Sega Dreamcast Redump 41 PlayStation Portable Redump 41 PlayStation Portable No Intro 43 3DO Redump 44 ColecoVision No Intro 45 Intellivision No Intro 46 Vectrex No Intro 47 NEC PC-8001 Neo Kobe 47 NEC PC-8001 TOSEC 47 NEC PC-8801 Neo Kobe 47 NEC PC-8801 TOSEC 49 NEC PC-FX Redump 51 Atari 7800 No Intro 53 WonderSwan No Intro 53 WonderSwan Color No Intro 63 Watara Supervision No Intro"},{"location":"Working-with-the-Right-ROM/#translation-patches","title":"Translation patches","text":"(see also: ROM Localization Policy below)
English is the Primary language of RetroAchievements. Translation Patches are sometimes applied by developers to non-English titles as the main hash 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. Whenever reasonable, the original unpatched version should still be supported as well.
Sometimes translation patches may produce critically different memory from the linked hashes. All linked hashes are expected to be fully supported by the -entire- achievement set. If you can't personally guarantee this, don't link the hash.
If you aren't the original developer of the set in question and the developer is active, verify memory personally using testing mode and contact the developer before attempting to add a new translation.
"},{"location":"Working-with-the-Right-ROM/#rom-localization-policy","title":"ROM Localization Policy","text":"As English is the primary language of the community, English ROMs are preferred. When choosing which ROM to build achievements for, we give priority to No-Intro or Redump US ROMs for non-handheld consoles and European ROMs for handheld consoles.
We would like to continue improving our support for all regional versions, especially Japanese (as the majority of our game library was created in Japan). Some users may also prefer a specific regional version of a game and it is better to include broad support so that any good ROM can link to a good entry and give appropriate achievements. That said, regional variants must still be fully supported, and 50Hz slowdown needs to be mitigated (via additional patches) or proven to be a non-issue when present.
When looking at how games with regional versions are handled, our standard is one entry per game per console. It is ideal that if a player loads up the US or Japanese version of Donkey Kong, Pac-Man, or Contra, they will earn the same achievements from the same entry. As mentioned above, there are some extremely rare situations where it is better for our library and players to split off regional versions into their own unique entry. If the community has reason to believe that it's better for an entry to be split, it can be reviewed and approved by the RetroAchievements staff.
Tip: For games with text-triggered achievements (especially RPGs) it's recommend to find an event flag instead of hooking onto text or text ID. Text presentation varies between regional versions, making multi-region support difficult.
"},{"location":"Working-with-the-Right-ROM/#localization-differences","title":"Localization Differences","text":"The types of changes made during localization (most commonly from Japanese to English) can vary wildly. Any of the following changes may result from a localization:
Because of this variation and to avoid filling the database with unnecessary duplicates, our goal is to minimize the number of split sets. For a set to be split it needs compelling reasons; we take great care to determine when to approve these splits.
"},{"location":"Working-with-the-Right-ROM/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2023-12-12 18:39] shigutso:
Added PS2 on preferred group list[2022-02-25 20:41] televandalist:
Changed bonus set link to subset link - added a preferred group table for each console[2020-06-02 06:00] Sanaki:
Added revision and N64 format guidelines, removed entire section on region splitting procedure, made numerous grammar and detail updates[2019-08-13 19:49] Kvon:
Working with the right rom: text hooking tip added[2019-05-03 11:30] meleu:
typo[2019-05-03 10:55] meleu:
merge \"ROM Localization Policy\" into here[2018-11-17 08:07] Kvon:
changed one word, for clarifcation[2018-09-17 17:56] meleu:
capital 'R' in the title (Right)Language It is required for all of your achievement titles to be in English. There are some exceptions to this rule however:
Capitalization For capitalization in titles, we recommend using https://capitalizemytitle.com/style/chicago/. This will capitalize every word that should be capitalized. While this may not always give perfect results on longer achievement titles, for consistency it is recommended to choose this option when unsure about which words to capitalize, with the recommended style being either Chicago or MLA for the most aesthetically pleasing results.
Punctuation Since achievement titles are not full sentences, they should not end with punctuation. Exceptions to this include an exclamation or question mark, as well as the usage of ellipses (three periods) to emphasize there is more to the story or idea.
Emojis Adding emojis to achievement titles is not allowed. Not only will they reduce readability, but as unicode they are also more prone to breaking in emulators, as well as on the site depending on what language the user currently has enabled on their desktop, or what browser they are using. Keep in mind that emoticons (e.g. :-], <3) are also not allowed.
Creative Titles Creative titles for achievements are more enjoyable for players than exact descriptions of what the players must do to obtain the achievement. If you\u2019re not sure how to add some style to your achievements, you can review the list below for some ideas.
Language Achievement descriptions, just like titles, are expected to be in English completely. Unlike titles however, it is not allowed under any circumstances to use another language even when it fits the achievement, with the only exception being in-game items and songs for comparing purposes. Everyone should be able to understand a description without the necessity to look up any other language than English.
Capitalization In general, only the first letter of a new sentence is capitalized. In English, words are not capitalized due to their type (noun, verb, etc.) or for emphasis, unlike in some languages. Of course, there are exceptions to this:
Punctuation Whether or not your achievement descriptions end in periods is up to you, but generally, it is preferred for achievement descriptions to not end with periods. However, consistency across a set is key, so please avoid having some achievement descriptions end in periods while others don\u2019t.
Abbreviations
Abbreviations should generally only be used for honorary titles or degrees such as Dr. and Mrs. The exception to this rule is when the achievement description you are creating involves an abbreviation being used in-game. Examples include 1P mode (One player mode), ATK stat (Attack stat), and named objects such as the BFG. Do not abbreviate single words such as difficulty to dif, seconds to secs, levels to lvls etc. unless the game itself does.
Brackets/Parentheses Brackets have often been used by developers to note conditions that have to be met, such as being on a specific difficulty or playing a specific game mode. While there are situations where this is appropriate, for example when there are too many conditions to make a coherent description that doesn\u2019t result in a long list of \u2018\u2019ands\u2019\u2019, achievement descriptions are easier to read and more stylish when presented as a single phrase or sentence rather than divided into multiple parts through the use of brackets and parentheses.
When there are only a few conditions, we ask you to write your descriptive sentence to include this condition naturally.
Example of how you should write the description: \u2018\u2019Beat the game on hard difficulty without losing a life\u2019\u2019. Example of how you should NOT write the description: \u2018\u2019Beat the game without losing a life [hard difficulty]\u2019\u2019.
Symbols and Emojis Just like with brackets, symbols have been used to describe conditions but are also discouraged. The most common ones are to describe a condition being lower (< / <=) or higher (> / =>). For this, we also ask you to rewrite the text of the description with this condition in mind.
Example of how you should write the description: \u2018\u2019Beat the game on hard mode without losing more than five lives\u2019\u2019. Example of how you should NOT write the description: \u2018\u2019Beat the game on hard mode [lives lost <= 5]\u2019\u2019.
Just like achievement titles, the usage of emojis is not allowed in descriptions.
Quotation Marks Quotation marks are used on RetroAchievements mostly to wrap works such as movies, books, and songs, seen commonly in Rhythm games for example. Other uses may include to set apart a specific word for irony or sarcasm, differentiate a nickname from a given name, or directly taking a quote from somewhere.
You should ONLY use double quotation marks. Single quotation marks are only used for quotes within quotes, and should not be used elsewhere.
Consistency As an international community, we don\u2019t expect every developer to write with perfect grammar, or to agree exactly on what perfect grammar is. Simple and relatively universal guidelines of English grammar, like leaving a space after a comma, should be followed closely. However, more obscure or controversial guidelines, such as the Oxford Comma (the final comma in a list of things, often placed before the final entry starting with \u201cand\u201d), are not a necessity. However, please be consistent within a set in your usage of grammar. Do not use the Oxford Comma in one achievement while not using it in another where it would also be appropriate.
Consistency is also preferred in the use of common words to describe an achievement. For finishing a level or boss for example, the most common words used are \u201cbeat\u201d, \u201cfinish\u201d, \u201cclear\u201d, \u201cdefeat\u201d as well as a few others. Please only use one of them when working with multiple achievements that have the same theme - if the achievement description for finishing level 1 says \u201cDefeat the boss of level 1\u201d, the achievement description for level 2 shouldn\u2019t say \u201cBeat the boss of level 2\u201d unless there is a good reason to use the different word. Stick to using the same words to describe the same things within a group of similar achievements.
If a challenge condition, such as \u201con normal difficulty or higher\u201d or \u201cno cheats\u201d, applies to almost every achievement in the set, it is recommended to note this condition through a zero-point achievement (usually awarded at the start of the game), a forum post, or comments rather than repeating \u201con normal difficulty or higher\u201d in the description of every achievement.
The Description Itself The most important role of an achievement description is to describe exactly what is needed to obtain the achievement in as few words as possible while not excluding important information. It needs to be clear and concise, and both native and non-native English speakers must be able to understand what they need to do by reading the description in combination with the badge and title.
There is a generous character limit of 255 characters to work with to describe what needs to be done for an achievement. Absolutely avoid redirecting people to the achievement comments for a full explanation, as emulator-only users do not have access to this information. If your achievement uses a lot of complex conditions and is difficult to explain within the character limit, consider simplifying the logic of the achievement so that it is easier to explain to users, rather than trying to fit all of the complexity within the character limit in a sub-optimal way.
In some cases, achievement descriptions are intentionally written to avoid explaining what needs to be done word-for-word. For example, perhaps you want to avoid spoiling a story segment or you want to encourage the player to find out how to obtain the achievement without directly telling them what to do, like discovering a secret. This is a great idea, but one that needs to be approached with care. Remember, the description needs to be clear and concise for everyone to understand. It is important that the title, badge, and/or the description gives a solid hint on what the player needs to do. Consider reaching out to fellow community members with your planned achievement and see if they understand what needs to be done.
"},{"location":"Writing-Policy/#leaderboards","title":"Leaderboards","text":"Leaderboard Titles Like achievement titles, the language, capitalization, punctuation, and emoji guidelines do apply to leaderboard titles. However, we will not ask you to give the leaderboards creative titles.
Unlike achievement titles, we ask you to get directly to the point with leaderboard titles in as few words as possible while still remaining clear and concise. The reasoning behind this is that when a user is playing a game and a leaderboard becomes available, the pop-up will only show the title. It is important that players\u2013especially emulator-only players\u2013immediately know why this leaderboard is currently active and what it is about so they can decide on the fly whether to partake in this leaderboard or not.
Typically leaderboards fall under a specific category, such as speedruns, score attacks, or something not too dissimilar. In these categories, specific parts of the games are what the leaderboard focuses on, such as a specific boss, stage, or the entire game. This is why we recommend you to structure the leaderboard title starting with the category, followed by the part of the game, and finally followed by a potential extra condition such as a specific character or vehicle.
Examples include:
Important to keep in mind is that when the leaderboard is based on an in-game named mode (such as Time Trial) that this is the name used as the challenge.
Leaderboard Descriptions The leaderboard descriptions essentially follow the exact same guidelines as the achievement descriptions. The two most important rules remain consistency, and a clear and concise description of what the leaderboard is about. Implement correct usage of all the other guidelines of the achievement descriptions.
However, there are two things to keep in mind specifically for leaderboards:
It is not uncommon for grammatical errors to find their way into achievements, be it in the titles or the descriptions. As mentioned before, we do not expect everyone to have a perfect handle on the English language and the grammar that comes with it. With our years of experience, we have identified some mistakes that are more common than others, and these are listed down below to prevent them for future use, as well as show some examples to give you a better understanding of them.
If reading the explanations below still raises questions, consider checking out a grammar tool such as LanguageTool or Grammarly. It is not recommended to use said tools for complete sentences, to avoid correcting grammar that doesn\u2019t need correction, but they can be used for simpler fixes such as the below-mentioned aspects.
Articles Articles are by far the most common grammatical error identified on the site. Articles are words that identify a noun as being specific/definite (\u201cthe\u201d) or unspecific/indefinite (\u201ca\u201d/\u201dan\u201d). To give you a few examples of how they can be used in achievements:
Most of these are pretty straightforward. Note that for unspecific/indefinite articles, you may also want to use different words to designate an amount. Using the above examples, you can slay an enemy with a sword, but also with any sword.
Another possibility is that it is not necessary to use an article. This mostly applies to named words, such as locations. While \u201cArrive at the Baron Castle\u201d is technically correct, preferred would be to use \u201cArrive at Baron Castle\u201d. If you are unsure which one to go for in this situation, speaking the sentence out loud may just give you the hint you need!
However, more people have an issue with the usage of the unspecific articles, \u201ca\u201d and \u201can\u201d. While they both have the same function, they cannot be used before some words. This is dependent on if the word that follows it starts with a consonant- or vowel sound when spoken in correct English. This also applies to abbreviations that are spoken one letter at a time.
Possessive/Contraction Another common mistake is with words that use an apostrophe, such as \"you\u2019re\" and \"it\u2019s\". These are very commonly used in the English language, but removing the apostrophe changes the entire meaning of the word. Therefore, it is good to check beforehand if you are using it as a possessive form, or as a contraction of multiple words.
Separated words and the usage of hyphens Another common grammatical mistake we find involves words such as \u201catleast\u201d and \u201calot\u201d, where two words are forced together into one word. This is not allowed in English - these examples should be \u201cat least\u201d and \u201ca lot\u201d.
You should also watch out for correct usage of hyphens (the \u201c-\u201d symbol). This symbol is generally used to combine words, but only if they are followed by a noun. When they come after the noun, they are not combined with a hyphen and are instead written as two separate words.
Written numbers, such as twenty-five, are always written with hyphens.
Number Formatting All numbers should be formatted according to the conventions accepted in most English-speaking locations to avoid confusion about whether a number is very large or very small.
Deceptive Similarity Between Languages Many languages are related to each other, distantly or closely, and have words that are spelled similarly with similar meanings - but which are not identical. This may include your native language and English. Please check your spelling carefully to ensure you are using the English spelling for the word.
Username references are a good way to acknowledge the work of a fellow user in the community. However, the references should be limited as most references are only understood by a small subset of the community. Username references must not carry a negative connotation. Username references must be explicitly requested by the developer and approved by the user being referenced unless otherwise specified below. Username references are appropriate in the following situations:
Users retain full control over the use of their name. They have the right to request that their username be removed from any achievement at any time, developers must abide by this. For users who share the their name with an everyday term (Bedtime, Fridge, Gloves, Griffin, etc.), this only applies if their likeliness is directly referenced.
The use of banned users is strictly prohibited. Any achievement that includes a banned username should be updated promptly upon becoming aware of the ban.
"},{"location":"Writing-Policy/#changelog","title":"Changelog","text":"Last 10 changes on this page:
[2024-03-11 14:09] Andrew Comer:
Bullet formatting fixes.[2024-03-11 13:14] Andrew Comer:
Updated Writing Policy (markdown)[2024-01-12 20:47] Andrew Comer:
Added initial \"Username References\" section[2023-12-18 18:45] Andrew Comer:
Updated Writing Policy (markdown)[2023-12-18 10:08] suspect15:
Updated Writing policy (markdown)RetroAchievements Documentation
Official Website RADocs Discord Server"},{"location":"_Sidebar/","title":"Wiki Home Page","text":""},{"location":"_Sidebar/#guidelines","title":"Guidelines","text":"- Manifesto RetroAchievements - C\u00f3digo de Conduta do Usu\u00e1rio - FAQ - Perguntas Frequentes - Como contribuir se voc\u00ea n\u00e3o \u00e9 um desenvolvedor - Tutorial para Jogos Multi-Discos
"},{"location":"_Sidebar/#desenvolvedores","title":"Desenvolvedores","text":"- Introdu\u00e7\u00e3o - Primeiros Passos como um Desenvolvedor de Conquistas - Recursos de L\u00f3gica para Achievements - Exemplos Reais - Introdu\u00e7\u00e3o - Usando Hit Counts e ResetIf - Usando Delta Values e ResetIf - Simples Exemplo de como Evitar Abuso de Load State - Dicas e Truques - Dicas Espec\u00edficas de Console - Modelos de Achievement - Escala de Dificuldade e Equil\u00edbrio - Roteiro de Desenvolvimento de um Set de Conquistas - Cria\u00e7\u00e3o de \u00cdcones e Emblemas - Leaderboards - Rich Presence - Design de Conquistas
"},{"location":"_Sidebar/#espanol","title":"Espa\u00f1ol","text":"- Manifesto RetroAchievements - C\u00f3digo de Conducta del Usuario - FAQ - Preguntas Frecuentes - Tablas Globales y Reglas para la Caser\u00eda de Logros - Mi juego no esta cargando los logros - Como contribuir si no eres un desarrollador - Por que no deber\u00edas utilizar la funci\u00f3n de cargar estado - Contribuyendo con los documentos - Como funciona la Documentaci\u00f3n de RA - Descargas
"},{"location":"_Sidebar/#desarrolladores","title":"Desarrolladores","text":"- Intro - C\u00f3digo 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\u00edsticas en la Logica de un Logro - Intro - Contador de Golpes (Hit Counts) - Valores Delta - Bandera ResetIf - Bandera PauseIf - Bandera AddSource - Bandera SubSource - Bandera AddHits - Combinando Banderas - Alt Groups - Versiones M\u00ednimas Requeridas para Funciones en la L\u00f3gica - 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\u00e1ndote en la Velocidad de un Juego - Plantillas para Logros - Tips y Trucos - Escala de Dificultad y Balance - Dise\u00f1o de Logros - Mapa de Desarrollo de Set - Revisiones en Set de Logros - Creaci\u00f3n de Iconos y Badges - Tablas de Clasificaci\u00f3n - Rich Presence - Trabajando con el ROM apropiado - Identificaci\u00f3n del Juego - Gu\u00eda para Sets Bonus - Logros para ROM hacks - Tips Espec\u00edficos por Consola
"},{"location":"home-pl/","title":"Home pl","text":""},{"location":"home-pl/#_1","title":"Home pl","text":"Witaj w dokumentacji RetroAchievements!
Na pocz\u0105tek, musisz zna\u0107 Or\u0119dzie RetroAchievements wraz z Kodeksem post\u0119powania U\u017cytkownika.
Je\u017celi szukasz dokumentacji o tworzeniu osi\u0105gni\u0119\u0107, sprawd\u017a nasz\u0105 sekcje Dokumentacje Developerskie.
Zach\u0119camy wszystkich cz\u0142onk\u00f3w spo\u0142eczno\u015bci aby do\u0142\u0105czyli do naszego Serwera Discord, u\u017cywamy go do wi\u0119kszo\u015bci komunikacji
Pe\u0142na lista stron jest na bocznym pasku, lecz tu jest kr\u00f3tki opis paru z nich:
Mo\u017cesz wspom\u00f3c t\u0119 dokumentacje poprzez tworzenie/edytowanie stron na Wikipedii RetroAchievements.
"},{"location":"home-pl/#tumaczenia","title":"T\u0142umaczenia","text":"For a libretro core to support RetroAchievements, it must expose memory and it must not modify the game files. Everything else should be handled by the libretro frontend (i.e. RetroArch or RALibretro).
First, find the memory regions expected by RetroAchievements by looking for the mapping associated to the console in consoleinfo.c. It will look something like this:
static const rc_memory_region_t _rc_memory_regions_pc_engine[] = {\n { 0x000000U, 0x001FFFU, 0x1F0000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM\" },\n { 0x002000U, 0x011FFFU, 0x100000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"CD RAM\" },\n { 0x012000U, 0x041FFFU, 0x0D0000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"Super System Card RAM\" },\n { 0x042000U, 0x0427FFU, 0x1EE000U, RC_MEMORY_TYPE_SAVE_RAM, \"CD Battery-backed RAM\" }\n};\n
This example defines four regions of memory for the PC-Engine console. The first two fields are the starting and ending RetroAchievements address for the region. The third field is the starting real address for the region. The fourth field identifies the type of memory stored in the region, and the last field is a label for the region.
Achievements rely almost entirely on system RAM and save RAM. There may be additional blocks in the memory map flagged as other types of memory. Those blocks are leftover from the way the memory way initially exposed by a standalone emulator. They can only be exposed by RETRO_ENVIRONMENT_SET_MEMORY_MAPS
, and are almost never needed for achievement logic, so it's usually acceptable to not worry about them initially.
If no memory map is provided, RetroAchievements doesn't support the system yet. Please contact us if you believe your core/system is ready to be supported.
"},{"location":"libretro-core-support/#exposing-via-retro_get_memory_data","title":"Exposing via retro_get_memory_data","text":"Memory can be exposed in two ways. The simplest is using the retro_get_memory_data
/retro_get_memory_size
functions. These functions will be called with RETRO_MEMORY_SYSTEM_RAM
and RETRO_MEMORY_SAVE_RAM
(when applicable). The functions return a single pointer and a size for a block of memory. This block of memory is then distributed to the memory regions until no more is available.
Using the above example, the expectation would be that retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
would return 0x42000 and retro_get_memory_size(RETRO_MEMORY_SAVE_RAM)
would return 0x800, and retro_get_memory_data
would return pointers to blocks of memory of the specified sizes. The 0x42000 bytes of system RAM would be distributed to the three blocks of RC_MEMORY_TYPE_SYSTEM_RAM
, and the 0x800 bytes of save RAM would be associated to the one block of RC_MEMORY_TYPE_SAVE_RAM
.
If less than 0x42000 bytes is returned by retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
, it will be associated to the three blocks of RC_MEMORY_TYPE_SYSTEM_RAM
in a first-come, first-serve basis. The first 0x2000 bytes will be allocated to the first block. The next 0x10000 to the second block, and whatever is left to the third block. Whatever addresses could not be filled will be unavailable to the achievement code and achievements dependent on those addresses will be disabled.
If more than 0x42000 bytes is returned by retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM)
, only the first 0x42000 bytes will be allocated and the rest will be ignored.
The other way to expose memory is the RETRO_ENVIRONMENT_SET_MEMORY_MAPS
environment callback. This callback allows the core to specify disparate chunks of memory without having to join them into a single byte array for access by retro_get_memory_data
. Using the example above, unique pointers could be returned for each of the three blocks of system RAM, or even for subsections of each of the three blocks of system RAM.
The RetroAchievements code will using the provided map to translate it's addresses to the appropriate core memory through the start/select/disconnect properties of the exposed memory. Addresses that cannot be mapped will be unavailable to the achievement code and achievements dependent on those addresses will be disabled.
"},{"location":"libretro-core-support/#special-considerations","title":"Special considerations","text":"Some maps contain comments indicating special considerations should be applied for the console. These usually have to do with paged memory. As the achievement code needs access to all memory, not just the currently paged memory, we often request that the entire unpaged memory be accessible.
{ 0x00C000U, 0x00CFFFU, 0x00C000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (fixed)\" },\n { 0x00D000U, 0x00DFFFU, 0x00D000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (bank 1)\" },\n\n /* GameBoy Color provides six extra banks of memory that can be paged out through the $DXXX \n * memory space, but the timing of that does not correspond with blanks, which is when achievements \n * are processed. As such, it is desirable to always have access to these extra banks. We do this\n * by expecting the extra banks to be addressable at addresses not supported by the native system. */\n { 0x010000U, 0x015FFFU, 0x010000U, RC_MEMORY_TYPE_SYSTEM_RAM, \"System RAM (banks 2-7, GBC only)\" }\n
The GameBoy Color has 32KB of RAM broken into eight 4KB banks. Normally, the first bank is exposed at $C000, and the other seven banks are paged into the $D000 memory space. As RetroAchievements only process data once per frame, we can't rely on the correct data being in the $D000 page when we evaluate our logic, so we ask that $D000 always only contains bank 1, and banks 2-7 are exposed at $10000-$15FFF (addresses which are not normally used by the GameBoy Color).
"},{"location":"libretro-core-support/#immutable-game-data","title":"Immutable Game Data","text":"The other important thing for a core to consider is that the game files should not be modified.
RetroAchievements hashes a portion of the game data (usually most or all of it) to ensure the player is using a compatible version of the game. If the hash doesn't match exactly, we don't enable achievements. This ensures that regional variants are only allowed if their memory lines up correctly. It also ensures players aren't playing on a hacked version where they have infinite health or some other cheat applied.
If the game files are modified by the core, the hash may change and the game will no longer be identified.
Any modifications to the game files should be handled through the retro_serialize
interface.
If a user can manually change settings in the core that could make playing a game easier, please inform us so we can add them to a blacklist that disables hardcore when they're set. Common examples are: * running NTSC games in PAL mode slows them down by 16% * disabling layers allows players to see through fog-of-war * core provided cheats give infinite health/ammo/etc
"},{"location":"libretro-core-support/#reset","title":"Reset","text":"When enabling hardcore mode, the frontend will ask the core to reset. It is important that the core do this, or users can drop out of hardcore mode for difficult parts of the game and switch back to hardcore mode without penalty just before an achievement triggers.
"},{"location":"libretro-core-support/#save-states","title":"Save States","text":"While not required, save state support makes it much easier to develop and debug/fix achievements using the core.
No special logic is required to support achievements in the save states - the frontend will handle that.
"},{"location":"libretro-core-support/#disabling-support","title":"Disabling Support","text":"If a core wishes to opt-out of achievement support, it can explicitly call the RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS
with false
/0
. This will disable the achievement subsystem while the core is loaded, which will avoid any attempts to identify if the loaded content has achievements, and disable all functionality limited by having achievement hardcore mode enabled (rewind, loading save states, slow-motion, cheats).
Last 10 changes on this page:
[2024-03-17 07:48] Jamiras:
Updated libretro core support (markdown)[2023-06-06 11:05] televandalist:
Added ToC[2022-01-06 07:40] Jamiras:
Created libretro core support (markdown)