News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: ROM Hacks: Super Mario Bros. NES - PAL Revision B (unofficial) has finally come  (Read 1119 times)

RHDNBot

  • Guest
Update By: szemigi

Finally, Super Mario Bros. NES european Revision A now receives an unofficial revision, which is called Revision B. This revision contains further bugfixes, improvements, and a few differences. Here they are:[/b]


-The Lakitu now throws the Spiny Egg correctly.
-Mario and Luigi have separated fire color palette.
-Except Bowser and the mountain graphic, all the green-colored enemies/items/graphics have darker green color.
-After having more than 9 lives, the counter shows the actual hexadecimal values.
-The edge of the cloud/bush is now fully filled with black line.
-Between ‘THANK YOU’ and ‘MARIO!’ (or ‘LUIGI!’) there is now a comma.
-The exclamation mark and the dot has been resized.
-The original game over music is now replaced with the unused alternative one.
-The musics and the sounds have their original speed again.
-The coin’s sound is different.
-The coin’s counter has 3 digits.
-The “x” graphic at the coin counter has been moved up a little bit.


Thanks for Eden GT for his techincal helps.
Thanks for 4matsy for the ASM code that separated Mario's and Luigi's fire color palette.
Thanks for doppelganger for disassembling SMB NES.
Thanks for MrWint for disassembling the PAL version.
Thanks for SpiderDave for converting the source code.


What else to say? Enjoy!

RHDN Project Page

Relevant Link

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6784
  • *sigh* A changed avatar. Big deal.
    • View Profile
Is the 3-digit coin counter actually used?

From what I understand, the only reason for a 3-digit counter was because VS. Super Mario Bros. (the arcade version) allowed the operator to set the cost for an extra life between 50 coins (easier) and 200 coins (harder).
"My watch says 30 chickens" Google, 2018

szemigi

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
In the case of PAL Revision B, it has 3-digits as (the official) revision A was released in 1987 (way after VS. Super Mario Bros., which was released in 1986).

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6784
  • *sigh* A changed avatar. Big deal.
    • View Profile
This is going into a small side discussion but I am just curious. I think you have an unusual Rev A.

I'm not seeing three digits in the PAL "Rev A" (CRC without header 9A2DB086) which No-Intro identifies as the "(Europe)" ROM as identified by some European countries according to Bootgod's database,
while it suggests some countries like the UK received the game with ROM identical to NTSC (CRC without header D445F698).

I checked that as well as the SMB + Nintendo World Cup + Tetris (which is PAL-exclusive and logically must date to 1990 at the earliest) and it's also only two digits.
"My watch says 30 chickens" Google, 2018

szemigi

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
It's my hack. Description is evident. That's all.

Psyklax

  • Hero Member
  • *****
  • Posts: 915
    • View Profile
    • Psyklax Translations
I'm not seeing three digits in the PAL "Rev A"

I think you've misunderstood. Szemigi added a three-digit counter in his hack, but the original game didn't have one.

Although I have to echo your question of why the game needs a three-digit counter anyway, except to let you know how many coins you've collected in total in your playthrough (internally the coin counter still resets to zero when you reach 100).

Also, just a small point: the readme states that "After having more than 9 lives, the counter shows the actual hexadecimal values". This isn't entirely true: instead it just goes through the alphabet, so if you have more than 35 lives (0 to 9 and A to Z) it starts showing random graphics tiles instead. I suppose it's an alternative to the original game's approach of showing some kind of crown graphic next to a number.

One thing I don't really understand is why, if you changed the code to NTSC, you didn't make the game identify itself as NTSC, since you need to specifically tell FCEUX that it's not PAL. I've no idea how other emulators handle this, but I don't know why the game couldn't be modified to be NTSC if that's the intended speed. Not to mention that I don't know why PAL was used as a base in the first place: maybe there are some bugfixes and whatnot that I'm not aware of. Anyway, interesting hack, to say the least. :)

szemigi

  • Jr. Member
  • **
  • Posts: 84
    • View Profile
Also, just a small point: the readme states that "After having more than 9 lives, the counter shows the actual hexadecimal values". This isn't entirely true: instead it just goes through the alphabet, so if you have more than 35 lives (0 to 9 and A to Z) it starts showing random graphics tiles instead. I suppose it's an alternative to the original game's approach of showing some kind of crown graphic next to a number.


Partial fix, because even if I tried to fix the counter to show 10, 11, 12, etc., that busted up the game's demo since there's not enough place in the ROM, which ruins the illusion of the game. That's all. You can love it or not, but that's all. Believe or not.

One thing I don't really understand is why, if you changed the code to NTSC, you didn't make the game identify itself as NTSC, since you need to specifically tell FCEUX that it's not PAL. I've no idea how other emulators handle this, but I don't know why the game couldn't be modified to be NTSC if that's the intended speed. Not to mention that I don't know why PAL was used as a base in the first place: maybe there are some bugfixes and whatnot that I'm not aware of. Anyway, interesting hack, to say the least. :)

SpiderDave converted the official PAL Revision A source code (to NTSC somewhat), so that I could compile the converted/modified source code with ASM6, not with CC65 (since I don't know how to use that yet, but that's irrelevant now).
In short: What this means? It's the official European Rev A source code (converted to 6502) with the original speed music and sound (like in NTSC). That's why the 'ROM/ISO Informations' mentions that you must use the 'Super Mario Bros. (Europe) (Rev A). nes.' And yeah, I bother it as European version has bugfixes and changes. Comparing is the key.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6784
  • *sigh* A changed avatar. Big deal.
    • View Profile
One thing I don't really understand is why, if you changed the code to NTSC, you didn't make the game identify itself as NTSC, since you need to specifically tell FCEUX that it's not PAL. I've no idea how other emulators handle this, but I don't know why the game couldn't be modified to be NTSC if that's the intended speed. Not to mention that I don't know why PAL was used as a base in the first place: maybe there are some bugfixes and whatnot that I'm not aware of. Anyway, interesting hack, to say the least. :)
Because one of the flaws of iNES 1.0 that we're stuck with, due to it being the defacto standard, is that the header accounted for Trainers (as I understand, a feature of some obscure Chinese copier few people actually have) but didn't account for PAL (the television standard that was used by half the world). :P
I'd guess the hacky way emulators detect PAL is by looking for "(E)" or "(Europe)" or other European language tags, in the filename.

I only recently learned that Nintendo did have a header format for NES games (I would only assume that is for Nintendo-manufactured games, so probably excluding most games from the seven major licensed publishers who self-manufactured their cartridges), but even then it was estimated only like a third of the library used it so it's not widely spoken about and certainly isn't reliable for detection purposes.
"My watch says 30 chickens" Google, 2018

pleasejust

  • Jr. Member
  • **
  • Posts: 16
    • View Profile
Hi, this is aweosme! thanks for this... Is there any way to apply these changes together with Corpse Grinder's 2 player hack for co-op? That would be the ultimate. Thanks.