If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Talk:Super Mario Bros. 2 (Famicom Disk System)

From The Cutting Room Floor
Jump to navigation Jump to search
This is the talk page for Super Mario Bros. 2 (Famicom Disk System).
  • Sign and date your posts by typing four tildes (~~~~).
  • Put new text below old text.
  • Indent replies by prefixing with a colon :
  • Add new sections with the 'Add topic' button at the top right.
  • Be polite.
  • Assume good faith.
  • Don't delete discussions.
  • Be familiar with the talk help page.

Different titles

Should the alternate name field really contain 'Super Mario Bros.: The Lost Levels (US)'? And is the article not a stub?--Hiccup (talk) 07:36, 25 August 2014 (EDT)

Yes. --BMF54123 (talk) 07:37, 25 August 2014 (EDT)
Yes and yes. -Einstein95 (talk) 07:38, 25 August 2014 (EDT)
Those are virtual console rereleases of the FDS game. With the All-Stars name stuck on to the store description page and the channel text. --Hiccup (talk) 07:50, 25 August 2014 (EDT)
Being Virtual Console releases means it's the exact same game (albeit in a different format). Adding the name of the SMB DX version (which isn't even the exact same game) is just plain idiotic. -Einstein95 (talk) 07:54, 25 August 2014 (EDT)
It is an emulation, if that is what you mean by a different format. If it is idiotic to put the name of the SMBDX remake, isn't it idiotic to put the name of the SMB All-stars port/remake? --Hiccup (talk) 08:00, 25 August 2014 (EDT)
It is Nintendo's official title for the game in the US. STOP ARGUING ABOUT THIS. --BMF54123 (talk) 08:21, 25 August 2014 (EDT)

Game's date

The manual's "Super Player" message was written on June 03rd, 1986 and the game was manufactured on July 23rd, 1986 but the commercial sale release date is not known. ShaneM (talk) 23:35, 26 January 2015 (EST)

Where did you get this information? --BMF54123 (talk) 23:36, 26 January 2015 (EST)
I own a copy of the manual (written on June 03rd, 1986). Also, FDS headers have the manufacturer's date written in BCD (in the year of Showa). So , the year minus $25. In this case, the header date is $61 (1986) $07 (July) $23 (Wednesday the 23rd). Therefore, the game had to have been released after that. --ShaneM (talk) 23:44, 26 January 2015 (EST)
That's odd, considering even Nintendo themselves use the June 3rd release date. --From: divingkataetheweirdo (talk) 00:04, 27 January 2015 (EST)
Unfortunately, Nintendo is not always a 100% reliable source for release dates of their own games. --BMF54123 (talk) 00:18, 27 January 2015 (EST)

The numbers don't lie. The FDS header is open to anyone wanting to check it themselves as well as the NESDev FDS source of what each byte in the header represents. If I had to make an educated guess, I would say the date would be sometime in August 1986 (going from the 07/23/86 manufacturer's date)--ShaneM (talk) 00:28, 27 January 2015 (EST)

Not sure if this counts as compelling evidence, but this Japanese flyer has June 3 as the scheduled release date, while this earlier version of the flyer says "5月下旬", which roughly translates to "late May". This tells me that they planned on releasing the game around that particular time frame. Also, while that one page in the manual does say "June 3, 1986", I don't believe that necessarily indicates when that message was written. It looks more like that message was aimed specifically at those who bought the game the day it came out. The Japanese manual for Super Mario Bros. 3 has a similar message, with the same date as that game's Japanese release (October 23, 1988).
I briefly tried to find that manufacturer's date in the ROM without success, even with the help of the NESdev wiki's FDS source page. Then again, I've never looked at FDS headers before, so I may have missed it somehow. The game could have been released later for all I know or care, but it still seems rather unlikely to me that it was released as late as August 1986. Onoreo (talk) 07:39, 27 January 2015 (EST)

Sigh...Look at offset 31 on the left. http://wiki.nesdev.com/w/index.php/Family_Computer_Disk_System#Disk_info_block_.28block_1.29 ShaneM (talk) 15:11, 27 January 2015 (EST)

"About 1,350 results" for "1986年6月3日" "スーパーマリオブラザーズ2", and "about 892 results" for "1986年7月23日" "スーパーマリオブラザーズ2". I'm going to say that the internet agrees that it was released on 3rd June, 1986. As you said, "the numbers don't lie." -Einstein95 (talk) 15:40, 27 January 2015 (EST)
The date will remain as June 3, 1986 until someone can come up with more compelling evidence than a couple of bytes in the header (something that could have easily been mistyped or otherwise erroneously calculated). If you really want to keep arguing about this, take it to Wikipedia. --BMF54123 (talk) 15:58, 27 January 2015 (EST)

Spiny Egg Horizontal Movement

Much like the reference here, this game is also programmed with the full logic to make spiny eggs bounce off walls and be tossed at angles relative to the player's movement. This logic is bypassed by default, perhaps due to a programming logic error by one of the developers.

I'm not sure how to upload here, but here's a link to the IPS patch I made and tested to restore what may have been the original logic: SMB2J Spiny Fix

Red Piranha Plant Code in SNES

When this game was ported to the Super Nintendo Entertainment System as part of Super Mario All-Stars, the code for the Red Piranha Plant behavior had to be re-written to include specific RAM-based addresses as the original ROM-based coding for the red plants (specifically, the combined label "EnemyAttributeData+PiranhaPlant" and "ChkPlayerNearPipe+3") was FDS-specific only. The original FDS code is listed below:

;--------------------------------
;$00 - used to store piranha plant attribute data
;$01 - used to store piranha plant range data for player

InitPiranhaPlant:
         lda #$22                     ;set default attribute and range data here
         sta $00                      ;range data is used to detect how close player is
         lda #$13                     ;to the piranha plant to keep it inside the pipe
         sta $01                      ;default data makes red piranha plants
         lda HardWorldFlag
         bne PatchPP                  ;use default data if in worlds A-D
         lda WorldNumber
         cmp #$03
         bcs PatchPP                  ;use default data if in worlds 4-8
         dec $00
         lda #$21                     ;otherwise make green piranha plant instead
         sta $01
PatchPP: lda $00
         sta EnemyAttributeData+PiranhaPlant ;patch over attribute and range data
         lda $01
         sta ChkPlayerNearPipe+3
         lda #$01                     ;set initial speed
...
RiseFallPiranhaPlant:
       sta $00                     ;save vertical coordinate here
       lda EnemyAttributeData+PiranhaPlant
       cmp #$22                    ;check for red piranha plants
       beq RedPP                   ;if found, skip to next part to execute code on every frame
       lda FrameCounter            ;get frame counter
       lsr
       bcc PutinPipe               ;branch to leave if d0 set (execute code every other frame)
RedPP: lda TimerControl            ;get master timer control
       bne PutinPipe               ;branch to leave if set (likely not necessary)
...

Some hackers who ported the original FDS title to make it work for the NES cartridge-based format added this specific RAM address, $01A0, for the faster Piranha Plants but this merely only makes them go faster but not also turn red. What follows next is the re-programmed code from Super Mario All-Stars, which is found in the physical ROM at offset 0x6CA79 (or 08:CA79):

;--------------------------------
;$00 - used to store piranha plant attribute data
;$01 - used to store piranha plant range data for player

InitPiranhaPlant: (0x6CA79)
            lda #$2c                     ;set default attribute and range data here (was #$22 for FDS)
            sta $00                      ;range data is used to detect how close player is
            lda #$13                     ;to the piranha plant to keep it inside the pipe
            sta $01                      ;default data makes red piranha plants
            sta RedPiranhaPlant          ;new RAM address ($0f25) to replace original FDS patch code
            lda HardWorldFlag
            bne SetPPSpeed                  ;use default data if in worlds A-D
            lda WorldNumber
            cmp #$03
            bcs SetPPSpeed                  ;use default data if in worlds 4-8
            dec $00
            dec $00
            lda #$21                     ;otherwise make green piranha plant instead
            sta $01
            sta RedPiranhaPlant
            lda $00
            sta RedPiranhaPlantOffset    ;new RAM address ($0f24) to replace original FDS patch code
SetPPSpeed: lda #$01                     ;set initial speed
...
ChkPlayerNearPipe: (0x6D79D)
      lda #$00               ;get saved horizontal difference
      cmp RedPiranhaPlant
      bcc PutinPipe          ;if player within a certain distance, leave
...
RiseFallPiranhaPlant: (0x6D7B7)
       sta $00                     ;save vertical coordinate here
       lda RedPiranhaPlantOffset   ;new RAM address ($0f24) to replace original FDS patch code
       cmp #$2c                    ;check for red piranha plants (was #$22 for FDS)
       beq RedPP                   ;if found, skip to next part to execute code on every frame
       lda FrameCounter            ;get frame counter
       lsr
       bcc PutinPipe               ;branch to leave if d0 set (execute code every other frame)
RedPP: lda TimerControl            ;get master timer control
       bne PutinPipe               ;branch to leave if set (likely not necessary)
...

Please try to proof-read the code for any possible additions and/or corrections.

WikiPro1981X (talk) 09:54, 14 February 2023 (UTC)