PokemonRL 1.2 released

Oh my… this project is surely a lot of work. I’ll probably release another version with some usability improvements and leave it alone for a while, else I’ll stick to it forever (and I need to go back to generating revenue)…

Enough ranting! this versions comes with HUGE changes, you can play the latest version HERE. Changelist below:


  • Show stats of nearby visible monsters


  • Use speed stat and modifiers to decide turn order.
  • Use evasion and accuracy (with modifiers) for battles
  • Fix type damage modifiers, complete type x type table and use secondary types
  • Add attacks and moves modifying stats temporarily.
  • Implement FOCUSED status (increases critical attack chance)
  • Make native evolved versions of monsters inherit moves from their pre-evolutions
  • Prevent monsters from learning moves already on their list


  • Fix issues with gym definitions

Ananias2600? – Setting up a simple Atari 2600 dev environment on 2017

So, I got my retro gaming setup at the office, and a friend suggested if I was porting Ananias to the Atari 2600. I promptly replied I had no time for such thing.

Atari 2600 at work

But then, the project picker spoke. And the project picker is wise and fair, and we must obey his bidding.

I started following the instructions here, but they are super old and mostly for windowzer, so I had to dig around a little bit. Here are some instructions which can be helpful if you want to start your career on Atari 2600 game development (who knows, may be Atari will hire you…)

Before proceeding I should mention that this is just one shortcut for real hardcore Atari 2600 development. It’s definitively not the most optimal way to create your games (in terms of resources handling and exploiting the limited power of the device), but it’s enough to give you a sample on what it entails (then you’ll jump ahead and become an elite ASM coder).

Install dasm

The assembler takes ASM source code and transforms it into BIN files which can be read by an emulator or loaded into a cartridge and a real Atari 2600.

For mac it’s available via homebrew so just…

 brew install dasm

Get an emulator or something to test the games

You need to run the games, right? Stella works perfectly for starters if you can’t afford to get a Harmony cartridge or you don’t have an Atari 2600. Once your game is gold, you can have AtariAge create a custom cartridge for you.

Get a working build of Batari Basic for your modern OS.

That one was tricky to find, I got mine from here and it works perfect on macOS Sierra.

Run the install_ux.sh script, note that PATH modification may fail for some reason on macOS so you may need to fix it manually (since the script is meant for linux).

Verify your build pipeline

Use the batariBasic compiler with one of the included samples (say ../2600basic.sh zombie_chase.bas) it will generate .asm and .bin files

Open the .bin file on Stella

Mess around a bit

Take one of the .BAS examples and try to understand what the heck is going on. Move things around, recompile and check

That’s just the beginning

batariBasic makes things much simpler than doing straight assembler, but that doesn’t mean it’s going to be a walk in the park. There’s some reference material online and even a very handy tutorial for the kernel included with bB which is what simplifies development so much. The other great challenge is working with the limitations of the 2600 which is actually what makes it fun:

[…] As if all this weren’t enough, the VCS could only display five interactive objects at any one time: two “player” sprites, two “missile” sprites, and one “ball.” This was more than enough for replicating Pong and Tank, the popular arcade games of 1977. It was useless for anything even slightly more complicated, such as Space Invaders.

Of course, software developers later found tricks to overcome these limitations allowing the machine to do things it was never meant to be able to do, but my goal will be to work within the original constraints without pushing it too much.


PokemonRL – v1.1

The game has now gone beyond the 7DRL scope into a more full fledged development. The original 7DRL and the 7DRL++ versions have been archived for reviewing and historical purposes. All advancement has been pushed to the github repo and is also available to play online here.

Implementing the full generation one move-set is a lot of work! (ORLY?) I just managed to add the data for all 151 pokemon, their 165 moves and the 735 combinations of pokemon/move/level which represent the moves they can learn. I used data from all around the Internet for this, specially from Bulbapedia and this gamefaqs FAQ. I could have instead used the veekun pokedex database for this but was too lazy to set it up. Seriously, still can’t understand why I overlooked this for the 7DRL planning. I should note that I’m restricting myself to Gen1 and even so, it’s not something to take lightly.

I’ve done good advancement on implementing the moveset, initially focusing on the attack moves and their different parameters. So far there are 41 out of 165 moves covered. (There are a bit more which are partially covered).

Some of the things to do in this regard are implementing Stat penalties and bonuses with the “stages” model, and implementing effects for the different status modifiers.

That being said, I don’t think I’m going to focus on completing that initially… I’m more interested in the procedural aspects as well as the adaptation of some particular skills into a “single-mode” roguelike (no battle screens). Some interesting things to do include:

  • Simulate pokemon trading somehow, since some require that for evolving.
  • Make “Dig” let the pokemon actually go underground.
  • Make “Fly” let the pokemon soar the skies.
  • Affect terrain with skills such as flamethrower and earthquake

As for procedural generation, now that all pokemon are available I added some more route stereotypes (which should allow more varied wild pokemons to show up). I made these manually, using the wild pokemon spawn data from bulbapedia for the different routes. I decided to stop doing that and instead work in generating this higher level metadata mixing the pokemon data, route difficulty and biome/weather selected for each road, on a next release.

I did some small tweaks on the town level generator to add a “fence” around them. I also modified the metadata generator so that the first town has a single exit to route 1, since people was getting stranded into high level routes and killed by deadly rattatas of death. This should make starting the game much easier.

New slashie.net website, now powered by ReactJS

The website for my project collection (http://slashie.net) is now powered by ReactJS. I had to learn how to use it so I figured it was a good idea to update it.

The previous implementation was powered by mustachejs, which was used with nodejs to generate a static html file. I still like that approach, however it didn’t allow by itself for interaction with the data.

Although appearance is very similar, this new version:

  • Allows filtering by project status (and may allow other filters in the future). This also means the groupings by project status are gone now (they made navigation a bit confusing too). This was done using React’s state handling.
  • Has projects sorted descending by project year
  • Adds tags for all the projects with a color code

With this, I’m now officially a Level 1 ReactJS developer. If you are curious or would like to do something similar, you can check out the project repo here.

An account of the events of the Ultima Dragons 25th Anniversary

In February 2017, Dragons from all around the world were summoned to California to celebrate the 25th anniversary of the Ultima Dragons online club (Not to be confused with the UDIC, which is almost as old).The event was organized by Cran Gallara, kickstarted by fans and supported by Lord British and a cast of Origin and Portalarium employees.

Photo by Linguistic Dragon

I was joined by Exodus Destiny Dragon, we flew all the way from our hometown in Colombia to the cold coastal basin of Los Angeles. Following is a brief account of our experience at the event.

Click here to read the full article!

PokemonRL 7drl++ and continued development

Even tho I’m not completely happy with the results and lots of things could have been done better, I decided to mark PokemonRL as a “Finished” entry for the 2017 7DRL Challenge, which means it’ll get feedback from the evaluation committee and will be more visible to players.

The main reason for this is I feel it’s stable enough and I managed to implement a roguelike with a winning condition which is interesting to play. The one big thing I missed, adding all required data, makes the experience feel incomplete, but it still meets the challenge criteria.

I have released the 7drl++ version which fixes 3 critical issues:

  • Stat calculations (Specially HP which was off by about 100 HP)
  • Remove test move sets from some pokemon races
  • Prevent messages from disappearing on the text box
  • Fix amount of damage recovered by potions
  • Make starting monsters be level 5

You can check it out here

The original 7drl submission without these fixes is also accessible, of course.

Screen Shot 2017-03-14 at 7.52.38 AM

Now that the challenge is over, I decided to continue working on it to finish my initial vision. I’m gathering data for all Gen 1 pokemon in order to load it into the game.