Announcement

Collapse
No announcement yet.

[NES] Super Mario World (bootleg) -- new GG codes for much improved gameplay!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [NES] Super Mario World (bootleg) -- new GG codes for much improved gameplay!

    So I found out recently that there is a bootleg version of Super Mario World for the NES. More information is available here: http://bootleggames.wikia.com/wiki/S...orld_(Famicom)

    When I found out about it, I just had to play it. Super Mario World for the SNES is one of my favourite games. Unfortunately, the NES bootleg has a few gameplay bugs, but despite these problems, I still wanted to see what the bootleg has to offer. So I made some codes to make it easier to play.

    The Problem:
    =========

    The main bugs are with character movement. Mario & Luigi run too fast, jump too slow, and in general are a pain in the ass to control. Thankfully, Ugetab had already put some time into this and made a few very helpful codes (slower running, faster jumps) that improve gameplay immensely. I didn't see them listed in the DB on this site so I have included them below.

    One thing that wasn't fixed however was running on slopes. Due to another bug, you normally go slower when running down slopes and faster when running up slopes. The issue with running down slopes is worse and can be fixed with two new GG codes, for left and right hand slopes. Unfortunately I couldn't get the running up slopes fixed but it's not too bad anyhow, I've included my notes below if anyone else wants to take a crack at it.

    I also created codes for infinite lives, infinite time, invincibility, powerup codes, start with Yoshi codes, and jumping codes. There are also some movement modifier codes like Sticky Shoes (stop faster when jumping onto a platform) and Fly Forward which is great for skipping levels when desired.

    Honestly, if you're a fan of Super Mario World this bootleg is really worth checking out. It's actually quite well done and pretty impressive for an NES bootleg. With these codes, the game is also MUCH more playable. Check it out!

    IMPORTANT NOTE: There are two versions of this ROM floating around: complete and incomplete. For good measure, I created codes for both versions. The best way to determine which version you have is either CRC32, or you can also pause the game and press Up, Right, A, Down, Right, B, Up, Left. If a junk/garbled logo appears, you have the incomplete version, if it looks normal (some kind of red ball thingy) it's the complete version. You can also show this screen by using this RAW code: 00DF:0A.

    Enjoy!!


    Codes for both versions:
    ================


    Slower Running
    AZSLPIAK
    *** CREDIT: This code was made by Ugetab (bsfree.org)

    Faster Jumps
    AUSUPLAZ
    *** CREDIT: This code was made by Ugetab (bsfree.org)

    Fix running on slopes
    YOENZLZO + YPUNZLZO

    Platform jump (disable to fall down)
    AGEVAZZU

    Sticky shoes (stop quicker when jumping onto platforms)
    SONVPOPP

    Fly forward (useful for level skips)
    LPXTIZGP



    Complete version [Unl] specific (CRC32: 6D5953A8)
    ==================================


    Infinite Lives
    SLXXSNVS

    Infinite Time
    SZSZKSSE

    Invincibility *** See Note #1
    ESNZUIEY

    Itemless Feather *** See Note #2
    AAXZKTZA + AAXXUVTO

    Keep Powerup Items When Used
    KZUZKVKE

    Keep Powerup When Hit
    SXULKNSE
    *** CREDIT: This code was made by iamstillhiro111 (bsfree.org)

    Mario starts with Yoshi
    VPXULLUP

    Luigi starts With Yoshi
    VPUUTLKP



    Incomplete version [p1] specific (CRC32: 82392F0D)
    ===================================


    Infinite Lives
    SUNXSVVS

    Infinite Time
    SZOXUSSE

    Invincibility *** See Note #1
    ESUXXIEY

    Itemless Feather *** See Note #2
    AEVXUIZA + AENZXSTO

    Keep Powerup Items When Used
    KXNXUSKE

    Keep Powerup When Hit
    SZELENSE
    *** CREDIT: This is a converted version of iamstillhiro111's code

    Mario starts with Yoshi
    NLEUZLUP + XLEULLLA

    Luigi starts with Yoshi
    NLOUILKP + XLOUTLLA



    Notes and Tips:
    ==========


    *** NOTE #1: KNOWN BUGS with Invincibility code:
    - Killing the following enemies will crash/reset the game: Thwomp, most Urchins (not ones that move around blocks)
    - Bosses still require three stomps to kill. Running into a boss will throw them off the screen and will not actually kill them and you'll be stuck until the timer runs out. (Note: no issues with Reznor or Bowser)


    *** NOTE #2: KNOWN BUGS with Itemless Feather code:
    - Using a Feather when you are Fire Mario will not place a Fire Flower into the item box like it normally will.
    - Incompatible with Keep Items code. Use one or the other.


    *** TIP #1: Slower Running, Faster Jumps, and Fix running on slopes should always be enabled for best character movement.


    *** TIP #2: Combine Sticky Shoes and Platform Jump for a finer grained platform jump.


    *** TIP #3: Combine Invincibility, Platform Jump and Fly Forward for a quick way to bypass levels. Y'know, for those levels that really piss ya off.



    Code Development Notes:

    Spoiler Alert! Click to view...

    Revision: Version 1.1 uses a better value of $1F which causes less 'stutter' when moving down slopes

    Fix running down slopes (both versions) - v1.1
    LH slopes: YPUNZLZO - F33A:1F:12
    RH slopes: YOENZLZO - F38A:1F:12

    Fix running down slopes (both versions) - v1.0
    LH slopes: GZUNZLZP - F33A:24:12
    RH slopes: GXENZLZP - F38A:24:12

    Code:
    Target: Mario's speed value seems to be located at $14. When running down slope this value 
    is too low ($12). Changing to $24 doubles slope descent speed.
    
    *** Version 1.1 revision: After more playtesting, $1F seems to be a better value to use.
    
    While running left: 
    
    changes
     13:F339:A9 12     LDA #$12
    >13:F33B:85 14     STA $0014 = #$11
    
    into
     13:F339:A9 1F     LDA #$1F
    >13:F33B:85 14     STA $0014 = #$11
    
    
    While running right:
    
    changes
     13:F389:A9 12     LDA #$12
    >13:F38B:85 14     STA $0014 = #$11
    
    into
     13:F389:A9 1F     LDA #$1F
    >13:F38B:85 14     STA $0014 = #$11
    Platform jump - AGEVAZZU - E208:48:32 (both versions)

    Code:
    Target: Table stored at $E232 ($FF). Changing offset to $E248 ($01) prevents downward motion.
    
    changes
    >13:E207:B9 32 E2  LDA $E232,Y @ $E237 = #$FF
    
    into
    >13:E207:B9 48 E2  LDA $E248,Y @ $E24D = #$01

    Sticky Shoes - SONVPOPP - E1F9:95:19 (both versions)

    Code:
    Note: This one is a bit of an accident. I was trying to create a multi-jump code and this attempt 
    has a useful side effect where Mario seems to stop quicker when jumping onto platforms.
    
    Target: Bypass RAM address $19 in favour of $95 in this routine.
    
    changes
     13:E1F4:A9 01     LDA #$01
     13:E1F6:85 95     STA $0095 = #$01
     13:E1F8:A5 19     LDA $0019 = #$00
    
    into
     13:E1F4:A9 01     LDA #$01
     13:E1F6:85 95     STA $0095 = #$01
     13:E1F8:A5 95     LDA $0095 = #$01

    Fly Forward - LPXTIZGP - E225:13:14 (both versions)

    Code:
    This code was an absolute fluke. I was just tinkering around and tried this idea,
    and it causes Mario/Luigi to fly forward at an insane speed.  It re-routes the character movement value from address $14 to $13, causing the haywire to ensue.
    
    changes
    >13:E224:A5 14     LDA $0014 = #$00
     13:E226:38        SEC
    
    into
    >13:E224:A5 13     LDA $0013 = #$B1
     13:E226:38        SEC

    Infinite Lives - SLXXSNVS - AF2D:BD: DE (complete version)
    Infinite Lives - SUNXSVVS - AEFD:BD: DE (incomplete version)

    Code:
    Target: Lives remaining stored at $036A/$036B. Change DEC to LDA to prevent decrement.
    
    changes 
     14:AEFD:DE 6A 03  DEC $036A,X @ $036E = #$2B
     14:AF00:BD 6A 03  LDA $036A,X @ $036E = #$2B
    
    into
     14:AEFD:BD 6A 03  LDA $036A,X @ $036E = #$2B
     14:AF00:BD 6A 03  LDA $036A,X @ $036E = #$2B

    Infinite Time - SZSZKSSE - AD54:AD: 8D (complete version)
    Infinite Time - SZOXUSSE - AD1B:AD: 8D (incomplete version)

    Code:
    Target: Remaining time left stored at $036E. Change STA to LDA to prevent time changing.
    
    changes
     1C:AD15:AD 6E 03  LDA $036E = #$9A
     1C:AD18:38        SEC
     1C:AD19:E9 01     SBC #$01
    >1C:AD1B:8D 6E 03  STA $036E = #$9A
    
    into
     1C:AD15:AD 6E 03  LDA $036E = #$9A
     1C:AD18:38        SEC
     1C:AD19:E9 01     SBC #$01
    >1C:AD1B:AD 6E 03  LDA $036E = #$9A

    Invincibility - ESNZUIEY - ADF3: D0:F0 (complete version)
    Invincibility - ESUXXIEY - ADBA: D0:F0 (incomplete version)

    Code:
    Target: Invincibility counter stored at $0638. Prevent from reaching 0 by changing BEQ to BNE.
    
    changes
    >1C:ADB7:AC 38 06  LDY $0638 = #$00
     1C:ADBA:F0 1D     BEQ $ADD9
    
    into
    >1C:ADB7:AC 38 06  LDY $0638 = #$00
     1C:ADBA:D0 1D     BNE $ADD9

    Itemless Feather - AAXZKTZA + AAXXUVTO -- AE24:00:02 + AE2B:08:1E (complete version)
    Itemless Feather - AEVXUIZA + AENZXSTO -- ADEB:00:02 + ADF2:08:1E (incomplete version)

    Code:
    Known bug: Using a Feather when you are Fire Mario will not place a Fire Flower into 
    the item box like it normally would.
    
    Target: Powerup item indicator $0625. 00 - Nothing, 01 - Mushroom, 02 - Flower, 03 - Feather.
    Read at $AE27 of 00 (nothing) branch at $AE2A is redirected to $AE34 instead of $AE4A (RTS). 
    Branch at $AE23 also modified so 03 gets loaded into Y, which in turn causes a feather to be loaded as a powerup.
    
    changes made:
     1C:AE1E:AC 24 06  LDY $0624 = #$00
     1C:AE21:C0 04     CPY #$04
     1C:AE23:D0 00     BNE $AE25  <---- modification #1 (normally jumps to $AE27)
     1C:AE25:A0 03     LDY #$03       <-- causes #$03 to be loaded into Y     
    >1C:AE27:AE 25 06  LDX $0625 = #$00
     1C:AE2A:F0 08     BEQ $AE34  <---- modification #2 (normally jumps to $AE4A and exits)
     1C:AE2C:E0 02     CPX #$02
     1C:AE2E:B0 04     BCS $AE34
     1C:AE30:C0 00     CPY #$00
     1C:AE32:D0 11     BNE $AE45
     1C:AE34:8C 25 06  STY $0625 = #$00  <-- Y stored in $0625 making it #$03 = enjoy your feather!
     1C:AE37:A9 01     LDA #$01
     1C:AE39:8E 24 06  STX $0624 = #$00
     1C:AE3C:E0 03     CPX #$03
     1C:AE3E:D0 02     BNE $AE42
     1C:AE40:A9 81     LDA #$81
     1C:AE42:8D 26 06  STA $0626 = #$00
     1C:AE45:BD 4B AE  LDA $AE4B,X @ $AE4D = #$09
     1C:AE48:85 8F     STA $008F = #$00
     1C:AE4A:60        RTS -----------------------------------------

    Keep Powerup Items When Used - KZUZKVKE - AE34:AC:8C (complete version)
    Keep Powerup Items When Used - KXNXUSKE - ADFB:AC:8C (incomplete version)

    Code:
    Target: Powerup item indicator at $0625. Prevent code from changing the value when using item.
    
    changes
    >1C:AE34:8C 25 06  STY $0625 = #$02
    
    into
    >1C:AE34:AC 25 06  LDY $0625 = #$02

    Mario Starts With Yoshi - VPXULLUP - B32B:96:93 (complete version)
    Luigi Starts With Yoshi - VPUUTLKP - B33E:96:94 (complete version)

    Mario starts with Yoshi 1/2 - NLEUZLUP - B30A:B7:93 (incomplete version)
    Mario starts with Yoshi 2/2 - XLEULLLA - B30B:B2:03 (incomplete version)
    Luigi starts with Yoshi 1/2 - NLOUILKP - B31D:B7:94 (incomplete version)
    Luigi starts with Yoshi 1/2 - XLOUTLLA - B31E:B2:03 (incomplete version)

    Code:
    Target: Yoshi indicator at $0393 (Mario) / $0394 (Luigi). 01 - have Yoshi, 00 - No Yoshi. 
    Complete version: Change read location to $0396 which always contains $01. 
    Incomplete version: Change read location to $B2B7 (requires two codes)
    NOTE: After briefly testing various values in $03xx range on incomplete version, none 
    seem to be stable staying at 01 thus I used a read of location $B2B7 in ROM.
    
    changes
    >1E:B32A:AD 93 03  LDA $0393 = #$00
     1E:B32D:8D 1F 06  STA $061F = #$00
    
    into
    >1E:B32A:AD 96 03  LDA $0396 = #$01
     1E:B32D:8D 1F 06  STA $061F = #$00

    WORK IN PROGRESS CODES
    Any ideas?


    Fix running up slopes
    UNFINISHED

    Code:
    WIP Notes: Trying to fix running to fast up slopes.
    
    This code is run when running up slope to the right.
    
    Changing $F2A9 to A9 14 (LDA #$14) slows down slope ascent but also messes stuff up a bit.
    
    This routine also seems to be called when approaching the edge of objects, not just slopes. 
    There must be a way to determine when going up a slope but I couldn't spot it.
    
     13:F290:A5 67     LDA $0067 = #$8F
     13:F292:38        SEC
     13:F293:E9 10     SBC #$10
     13:F295:09 0F     ORA #$0F
     13:F297:85 67     STA $0067 = #$8F
     13:F299:B0 06     BCS $F2A1
     13:F29B:A9 EF     LDA #$EF
     13:F29D:85 67     STA $0067 = #$8F
     13:F29F:C6 66     DEC $0066 = #$01
     13:F2A1:A9 00     LDA #$00
     13:F2A3:85 15     STA $0015 = #$00
     13:F2A5:A9 01     LDA #$01
     13:F2A7:85 26     STA $0026 = #$01
     13:F2A9:A5 14     LDA $0014 = #$42    <---- seems this value is too high?
     13:F2AB:38        SEC
     13:F2AC:E9 01     SBC #$01
     13:F2AE:C9 F8     CMP #$F8
     13:F2B0:90 02     BCC $F2B4
     13:F2B2:A9 00     LDA #$00
    >13:F2B4:85 14     STA $0014 = #$42
     13:F2B6:60        RTS -----------------------------------------
    
    Not quite as simple as just changing the value at $F2AA it would seem. Crap!

    Instant win (level completes instantly)
    UNFINISHED

    Code:
    WIP Notes:
    
    Target: Location $00DF is set to 02 when playing a level
    
    When a level is completed, the code at $9F0A runs the initiate a level win.
    
    Location $00DF is set to 06 and the process begins.
    
    Attempts at manually changing $DF during gameplay:
    
    Changing it to 06 will trigger exit level routine but will not complete
    Changing it to 0A will show the "easter egg" logo screen
    Changing it to 0B or 13 will cause you to enter a bonus room :)
    Changing it to 10-12 will cause you to "fire out of a cannon", pretty awesome. Sometimes crashes though.
    Changing it to 16 will trigger immediate level exit, game will crash
    
    Value Progression: 16->17-1C-25->26->27 then back to map
    
    
    *** Something neat: Changing it to 0B to enter bonus room and then 06 to end level 
    will actually end the level properly.
    
    
    Level win routine entry: $9F0A
    
     1A:9F00:AA        TAX
     1A:9F01:29 AB     AND #$AB
     1A:9F03:05 9F     ORA $009F = #$00
     1A:9F05:BD B4 05  LDA $05B4,X @ $05B4 = #$FF
     1A:9F08:10 27     BPL $9F31
     1A:9F0A:A9 23     LDA #$23          
     1A:9F0C:85 8E     STA $008E = #$23    <--- plays the level win music
     1A:9F0E:A9 06     LDA #$06
    >1A:9F10:85 DF     STA $00DF = #$02
     1A:9F12:AD F6 04  LDA $04F6 = #$02
    
    
    Level exit routine?
     1F:E7A2:A9 01     LDA #$01
     1F:E7A4:8D 97 03  STA $0397 = #$01
     1F:E7A7:85 1D     STA $001D = #$00
     1F:E7A9:A9 20     LDA #$20
     1F:E7AB:85 14     STA $0014 = #$00
     1F:E7AD:A9 00     LDA #$00
     1F:E7AF:8D 11 03  STA $0311 = #$00
     1F:E7B2:20 03 E7  JSR $E703
     1F:E7B5:20 48 F7  JSR $F748
     1F:E7B8:20 2B E9  JSR $E92B
     1F:E7BB:A9 00     LDA #$00
     1F:E7BD:8D DE 00  STA $00DE = #$00
     1F:E7C0:8D E0 00  STA $00E0 = #$00
     1F:E7C3:A9 16     LDA #$16
    >1F:E7C5:8D DF 00  STA $00DF = #$06
     1F:E7C8:20 BB E4  JSR $E4BB
     1F:E7CB:60        RTS -----------------------------------------
    
    Unfortunately all my attempts at this failed and I could not come up with any instant win 
    codes, but I wanted to keep these notes here in case someone else see what I don't.
    Last edited by Dteyn; 03-04-2017, 01:11:13 AM. Reason: Revised Fix Slopes code
    "One man's garbage is another man-person's good un-garbage." -- Ricky from Trailer Park Boys

  • #2
    Well, Super Mario World is in the database, but the code list by default don't show unliscensed games. You have to check unliscensed. You can see it in the list here:

    http://gamehacking.org/game/36854
    http://gamehacking.org/game/36853

    I'll try out some of these codes and see how they play. Thanks for taking the time to make it play better. I did request that Ugetab make a code so Yoshi bounces off fireballs but I don't think he could do it. He refused to look into it anyway.
    Last edited by MathUser; 03-02-2017, 08:19:23 AM.

    Comment


    • #3
      I dunno if you're aware, but I made a patch that applies some of the game fixing Game Genie codes.

      http://www.romhacking.net/hacks/3213/

      It was just the ones that were made before your post. I'd like to use some of your codes for another revision of the hack. If you want to work on perfecting physics further I can apply those codes also. Thanks for making the codes. I'll add a credit for you when I make a revision of the patch.

      Comment


      • #4
        Ahhh I see, good to know there is an Unlicensed section in the DB. I'm new here so still learning things.

        I wasn't aware of your ROM patch either, that's a good thing to know and I would definitely be thrilled if you incorporated the Fix Slopes codes into the patch. I actually made these codes back in July 2016 but just got around to cleaning up my dev notes and posting them recently.

        I set up the bootleg side-by-side with the original SNES version to compare the game physics. I have done a bit more playtesting and I think there are a few more improvements that could be made.

        Firstly I have revised my Fix Slopes codes just slightly, I think the value I had chosen previously ($24) was a bit too fast, causing a bit of 'stutter' when Mario/Luigi run down slopes.

        After trying many different values, I have settled on $1F as being the closest match to the original game. The new codes are:

        Fix running on slopes
        YOENZLZO + YPUNZLZO

        (F38A:1F:12 + F33A:1F:12)

        Secondly, Mario and Luigi also jump quite a bit higher in the bootleg than in the SNES version, so I am currently looking into a way to lower the default jump height just a bit to match the original game. So far I've had varied success but I'll keep at it.

        Also regarding Yoshi bouncing off of fireballs, you mean when you jump on them? If so it may be possible, but that is a bit beyond my abilities at the time being. Maybe at some point!

        I also tested the "Faster jumps" codes YUSUPLAZ (complete) / YUXLALAZ (incomplete) posted in the Wikia article I linked above, they are a bit too fast for my liking. The bootleg's original jump speed is $20 (too slow), these codes set the jump speed to $37 which is a bit too fast compared to the original SNES version.

        Ugetab's "Faster jumps" codes set the jump speed to $30 which is the perfect speed for jumping when compared to the original game.

        I'll keep doing more playtesting and will keep working on the jump height fix.
        "One man's garbage is another man-person's good un-garbage." -- Ricky from Trailer Park Boys

        Comment


        • #5
          Oh. So the jumping speed was not correct either. I'll add that to the patch too then. Thanks. I am not really expecting you to make yoshi bounce off fireballs after jumping on them. Ugetab didn't wanna try it so I know it was probably hard. If you fix the game further tho I would want to incorperate them into the patch too. I played throught it once without any physics changes and it was pretty difficult.

          Comment


          • #6
            Good evening, terpsfan101. Can you help me this Game Genie Code for Invincibility (You Go Through Everything) in Super Mario World (Unl).nes, please?
            Last edited by Vallenatero2016; 02-23-2018, 09:04:20 PM.

            Comment


            • #7
              Super Mario World (Unl) (NES)

              ESNZUIEY Invincibility (1 of 2)
              ESUZPZEY Invincibility (2 of 2)

              Super Mario World (Unl) [a1] (NES)

              ESUXXIEY Invincibility (1 of 2)
              ESXZYZEY Invincibility (2 of 2)

              https://gamehacking.org/game/36854
              https://gamehacking.org/game/36853

              Comment


              • #8
                Thank you.

                Comment


                • #9
                  Originally posted by Vallenatero2016 View Post
                  Thank you.
                  I couldn't make an Invincibility code that doesn't make you kill enemies on contact. I think that is what you requested. Anyway, just use the code I posted (already found by another user) and follow the restrictions posted by Dteyn:

                  *** NOTE #1: KNOWN BUGS with Invincibility code:
                  - Killing the following enemies will crash/reset the game: Thwomp, most Urchins (not ones that move around blocks)
                  - Bosses still require three stomps to kill. Running into a boss will throw them off the screen and will not actually kill them and you'll be stuck until the timer runs out. (Note: no issues with Reznor or Bowser)

                  Comment


                  • #10
                    Ok.

                    Comment

                    Working...
                    X