Page 1 of 1

Mario hacking (8/16-bit)

PostPosted: December 6th, 2013, 6:26 pm
by ShaneM

Beta cactus tile in SMBJ - AKA The Lost Levels


I have rediscovered an early beta tile... I figured out how bgroundGFX works on SMB2J (aka Mario The Lost Levels) and was able to add the beta tile that I have discovered. Tile IDs $F7-$FA on tilemap $04 on FCEUX's PPU viewer. I should add this to TCRF soon, though...

I think it's a...a cactus??? :scratch: So I assigned it a green palette... it originally didn't even have one... They were just sitting there with literally NO code... must have been cancelled early in development. It was rather easy to assign attributes to it, though.

I will upload my SMB 4 in 1 soon with it, though. So that all can play it. :P

Image

Re: New Discovery Made in SMB2J - Lost Levels

PostPosted: December 6th, 2013, 6:35 pm
by ShaneM
Here are the attributes for the bgroundGFX, now. It is here if you want to add it to your FDS hack (add it to the Palette0 metatiles):

Code: Select all
$F7, $F9, $F8, $FA ;Cactus tiles.


It needs to be added to the metatiles' rendering, so attribute the middle byte in $xx, $xx, $xx. Finally, add it to the background scenery data, itself. I've added it to "bushes and fences", or set $03:

Code: Select all
.db $11, $12, $12, $13, $00, $00, $00, $00 ;bushes and fences
   .db $00, $00, $00, $9c, $00, $8b, $aa, $aa
   .db $aa, $aa, $11, $12, $13, $8b, $00, $9c
   .db $9c, $00, $00, $01, $02, $03, $11, $12
   .db $12, $13, $00, $00, $00, $00, $aa, $aa
   .db $9c, $aa, $00, $8b, $00, $01, $02, $03


Hope this was helpful to the Mario hackers on here. REMEMBER: It's the sprites are located in tilemap $04:$F7-FA.

EDIT: If you choose to replace another metatile with attributes already defined, then you should probably replace one with low Z order.

Re: New Discovery Made in SMB2J - Lost Levels

PostPosted: December 6th, 2013, 10:24 pm
by Mattrizzle
I think someone beat you to the discovery (and also found some alternate ground pieces near the cactus tiles) over eight years ago:

Acmlm's Board - Rom Hacking - Beta Stuff in SMB & SMB2j?

The pictures are no longer online, but the description of them still is.

Still, it's nice that you shared a way to make it usable in-game.

Re: New Discovery Made in SMB2J - Lost Levels

PostPosted: December 7th, 2013, 4:42 am
by ShaneM
@Mattrizzle

Thanks. Though, that is probably the only site with it. I should add it to TCRF, sometime when I'm not too lazy.

Also, in the Palette1 metatiles, there appears to be an unused define for a half block (different from the one used in Springboard), and a breakable brick. If one wanted to, they could simply define the cactus metatiles into those. Like I did. (Just lower the Z order.)

@Everyone:

Can I please have your opinion on this beta ground tile? I wanted to know if I should define it as a metatile in my 2JCH on Disk 2 Side B:

Image

Re: New Discovery Made in SMB2J - Lost Levels

PostPosted: December 7th, 2013, 11:17 am
by Mattrizzle
I think the tiles are meant to be arranged this way...
Code: Select all
F3 F5
F4 F6

...so that it looks like this:
smb2j_ground1.png
smb2j_ground1.png (282 Bytes) Viewed 9780 times


The other prototype ground metatile uses these CHR tiles:
Code: Select all
FB FC
FD FE

It resembles a more organic version of the original SMB ground:
smb2j_ground2.png
smb2j_ground2.png (287 Bytes) Viewed 9780 times

Re: Beta cactus tile in SMBJ - AKA The Lost Levels

PostPosted: December 7th, 2013, 11:59 am
by ShaneM
Shoot...I did invert them. Here:

Image

Re: Beta cactus tile in SMBJ - AKA The Lost Levels

PostPosted: December 7th, 2013, 4:40 pm
by ShaneM
Could I have some opinions on the above terrain tiles, please? Do they look better than the regular rocky tiles???

Re: Beta cactus tile in SMBJ - AKA The Lost Levels

PostPosted: December 7th, 2013, 4:51 pm
by Super Luigi!
They seem much easier on my tired old eyes! By the way, I love the unused cactus. It really adds flavor to the scene!

Re: Mario hacking (8/16-bit)

PostPosted: December 13th, 2013, 8:46 am
by ShaneM
I'm working on my holiday presents to release on this forum.

I just thought I'd do everybody a kindness and share how to replace red springboards in SMB1 (NES) with the green ones from SMB2J. This will be on my FDS Disk 3 Side A. (Code adapted from the FDS version of SMB1; use on CLEAN NES ROM when hex editing.)


Code: Select all
0x3900  ;Set to $E0 (originally $F4). Sets jump force for springboard.
0x6883-0x6885 ;Set to $01 to turn upper part of board green (all 3 frames; was originally set to %00000010).
0x6b65 ; change to %10000001 ($81). Swaps the nybble with metatile $67's, as well as palettes. This is used to define the palette bit for the bottom tile.


EDIT: It is more than possible to use both springboards in the same hack. But, only for the NES. Since my hack is based on the FDS version of SMB1, space is tight and I cannot expand it. I may post a CMP routine that checks specific worlds one day that you can use on the NES version to load green boards. But, a trainer will DEFINITELY be needed for that. As of now, this just replaces the red ones with FULLY coded green ones.

Re: Mario hacking (8/16-bit)

PostPosted: December 18th, 2013, 8:24 pm
by ShaneM
Well, it's 5 AM and I'm exhausted. I wanted to share my new discovery before I hit the old bed. I'm polishing my All Night Nippon Super Mario Bros hack. For those who don't know what All Night Nippon Super Mario Bros is, it's the rarest Mario game in existence with only 3,000 copies and sells better than gold.

I have found a beta tile in this (tile $FB). It seems to be a heart, so I used it as decoration on my title screen. In addition, I have translated the title screen into English. Here is a photo. The final will be ready soon.

ORIGINAL
Image

MY VERSION
Image

Re: Mario hacking (8/16-bit)

PostPosted: January 10th, 2014, 5:52 pm
by ShaneM
Since I just posted my SMB1 disassembly. I will give a fix to correct the Game over glitch ( http://www.mariowiki.com/List_of_glitch ... _Game_Over )

Original code:

Code: Select all
GiveOneCoin:
      lda #$01               ;set digit modifier to add 1 coin
      sta DigitModifier+5    ;to the current player's coin tally
      ldx CurrentPlayer      ;get current player on the screen
      ldy CoinTallyOffsets,x ;get offset for player's coin tally
      jsr DigitsMathRoutine  ;update the coin tally
      inc CoinTally          ;increment onscreen player's coin amount
      lda CoinTally
      cmp #100               ;does player have 100 coins yet?
      bne CoinPoints         ;if not, skip all of this
      lda #$00
      sta CoinTally          ;otherwise, reinitialize coin amount
      inc NumberofLives      ;give the player an extra life
      lda #Sfx_ExtraLife
      sta Square2SoundQueue  ;play 1-up sound


The fixed code:
Code: Select all
GiveOneCoin:
      lda #$01               ;set digit modifier to add 1 coin
      sta DigitModifier+5    ;to the current player's coin tally
      ldx CurrentPlayer      ;get current player on the screen
      ldy CoinTallyOffsets,x ;get offset for player's coin tally
      jsr DigitsMathRoutine  ;update the coin tally
      inc CoinTally          ;increment onscreen player's coin amount
      lda CoinTally
      cmp #100               ;does player have 100 coins yet?
      bne CoinPoints         ;if not, skip all of this
      lda #$00
      sta CoinTally          ;otherwise, reinitialize coin amount
      inc NumberofLives      ;give the player an extra life
      lda #Sfx_ExtraLife  ;so...now we play the sound, first. It fixes a SFX bug in the original code
      sta Square2SoundQueue  ;play 1-up sound
      inc NumberofLives      ;give the player an extra life
      bpl ShaneM           ;add one life if we have 128 or less otherwise skip this part
      dec NumberofLives

ShaneM:
         rts


Remember, the source binary that is assembled through ASM6 MUST assemble back into 32768 bytes! So...you'll need to remove some free space or optimize code to add this over the old routine.