Hacker News new | comments | show | ask | jobs | submit login

  _RED EQU 0  
  _BLUE EQU 1  
And with that we now have 2 games to sell, increasing our profits. With this they now have people talking, collaborating and trading. These two lines have caused many arguments of superiority over the years. A simplistic switch to me seems quite impressive and powerful.

While I get what you mean this overlooks all the instances of

    IF _RED

    IF _BLUE
that show up in common.asm

The switches themselves are simple but there are a lot of IFs in the main source file.

Running "%s/IF _RED//gn" and "%s/IF _BLUE//gn" in vim on common.asm gives 26 and 25 matches respectively. "IF _GREEN" shows up twice.

Right, there are a number of differences between Red/Blue. The most well known differences are on the title screen and which Pokémon you can find. But there are other differences that need to be taken into account, like some palettes and the game corner prizes.

Someone's working on those differences here: http://romendo.net/stag019/pokedex/rbdiff/

Their decision to make two complementary games is really fascinating, especially from a business perspective.

> Their decision to make two complementary games is really fascinating, especially from a business perspective.

Indeed. It seemed to be really successful especially given how small a development effort it apparently was. But why did no one but the Pokemon games seem to do it subsequently?

Oracle of Ages/Oracle of Seasons were two complementary Zelda games for game boy color. You can't fully beat the game without both.


Similar concept, though it's done with an attachment instead of linking systems.

Correct me if I'm wrong, but I think he's saying that you can change the Red version of the game into the Blue version by just changing the two constants.

Not yet. When stag019 is done incorporating his red/blue differences, the blue make target will compile correctly. Then the blue ROM md5 will be added to the README. But until then, the blue make target is definitely not working.

I just mean that wollw's comment doesn't make sense. An assemble-time IF checking for _RED or _BLUE just means that it's easier to switch between Red and Blue.

The original comment seemed to trivialize the differences between the games. If you wanted to you could say something similar about any conditional branch but doing so completely ignores the differences between the branches. Assemble time checking for _RED and _BLUE makes it easy to switch between versions sure, but the it doesn't say anything about the actual differences (large or small) between the versions. A simple flag like that can be used to build vastly different programs. Also, given that those flags are macros to begin with tells me we don't even know if that was how the originals were differentiated; you can't really disassemble a macro.

edit: I don't mean to be an ass about this. There's certainly a sort of poetic quality to the use of a flag like that to switch between versions but I just thought it was worth also pointing out the work it took to do so.

Yeah, but a simple script shows that version specific code is less than 10% (combined), at least in common.asm.

Hardly anyone bought both copies of the game. All this primarily did was encourage an incredible thriving social 'network' of players.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact