Banner
Views: 838,007,033
Time:
17 users online:  Anorakun, BlackJack21, chickaDEE Magazine, Digraced, Exile051, Froger, fullmetal-oranges, gmdKowa, Infinity, Matheus2653, meatloaf, megaBC333, mrpotato,  Slash Man,  Tamaki, tcdw, ToxicAven - Guests: 57 - Bots: 48 Users: 45,834 (3,405 active)
Latest: DocBreeb
Summer C3 2020 Content Spotlight
Ninja Boy's SMB3-Styled Overworld Graphics!
Not logged in.
Posts by Barrels O' Fun
Barrels O' Fun's Profile - Posts by Barrels O' Fun
Pages: « 1 »
(restricted)
Originally posted by Zack-san
Request name: Seperate OW Player GFX
Type: Patch
Short description: The Players in the OW will have unique GFX.
Resources: OW Player GFX.zip
Links: Mario Luigi
Long description: Mario will have his own GFX, and so will Luigi. It's interesting for 2 Players and custom ones too!

Zack-san's Edit: I've fixed Luigi's head GFX that will face left or right in the game on the Resources.


This would be a useful patch for two characters look drastically different. For example, this would be useful for characters like Wario & Waluigi, where neither of them fit the same frame.
No I don't. I mean that patch is great, but Waluigi would still be Purple Wario on the overworld.
(restricted)
Request name: Pause Music Volume and Music Fadeout

Type: Patch

Description:
When you pause the game, instead of stopping the music as well, which can cut off some longer notes, it will just simply just fade the music into the background much like Kirby Super Star, or Super Mario Kart, not like Donkey Kong Country or the "Darken Pause" patch where the music volume stays intact. It would also be nice if the music faded out completely when you exit a level via Start+Select or walk off screen for Yoshi's House or Top Secret Area
(restricted)
This is the part of the code that breaks.
Code
;=========================
;   New graphics routine
;=========================

org $04862E
OWPlayerGFX:
       LDA $6DB2 
       BNE InactivePlayer
       JMP OnePlayer
InactivePlayer:
       LDA $6DD6
       EOR #$04 
       TAY
       REP #$20
       LDA $7F17,y
       SEC
       SBC $1A
       CMP #$6100
       BCC +
       JMP OnePlayer
+      STA $00
       LDA $7F19,y
       SEC
       SBC $1C
       CMP #$6100
       BCC +
       JMP OnePlayer

A break occurs in the Graphics Routine when the sprite goes offscreen to the left or the top.
Code
04862e lda $6db2     [046db2] A:0101 X:00ff Y:0000 S:37eb D:0000 DB:04 NvMXdizc V: 35 H: 86 F: 8
048631 bne $8636     [048636] A:0100 X:00ff Y:0000 S:37eb D:0000 DB:04 nvMXdiZc V: 35 H: 86 F: 8
048633 jmp $86c2     [0486c2] A:0100 X:00ff Y:0000 S:37eb D:0000 DB:04 nvMXdiZc V: 35 H: 86 F: 8
0486c2 ldy $6dd6     [046dd6] A:0100 X:00ff Y:0000 S:37eb D:0000 DB:04 nvMXdiZc V: 35 H: 86 F: 8
0486c5 rep #$20               A:0100 X:00ff Y:0000 S:37eb D:0000 DB:04 nvMXdiZc V: 35 H: 99 F: 8
0486c7 lda $7f17,y   [047f17] A:0100 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdiZc V: 35 H: 99 F: 8
0486ca sec                    A:0048 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdizc V: 35 H: 99 F: 8
0486cb sbc $1a       [00001a] A:0048 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdizC V: 35 H: 99 F: 8
0486cd cmp #$6100             A:0059 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdizc V: 35 H: 99 F: 8
0486d0 bcc $86d5     [0486d5] A:0059 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizc V: 35 H: 99 F: 8
0486d5 sta $00       [000000] A:0059 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizc V: 35 H: 99 F: 8
0486d7 lda $7f19,y   [047f19] A:0059 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizc V: 35 H:112 F: 8
0486da sec                    A:0000 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdiZc V: 35 H:112 F: 8
0486db sbc $1c       [00001c] A:0000 X:00ff Y:0000 S:37eb D:0000 DB:04 nvmXdiZC V: 35 H:112 F: 8
0486dd cmp #$6100             A:ff40 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizc V: 35 H:112 F: 8
0486e0 bcc $86e5     [0486e5] A:ff40 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizC V: 35 H:112 F: 8
0486e2 jmp $8746     [048746] A:ff40 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizC V: 35 H:112 F: 8
048746 rts                    A:ff40 X:00ff Y:0000 S:37eb D:0000 DB:04 NvmXdizC V: 35 H:112 F: 8
048413 plb                    A:ff40 X:00ff Y:0000 S:37ed D:0000 DB:04 NvmXdizC V: 35 H:125 F: 8
048414 rtl                    A:ff40 X:00ff Y:0000 S:37ee D:0000 DB:10 nvmXdizC V: 35 H:125 F: 8
109269 sei                    A:ff40 X:00ff Y:0000 S:37f1 D:0000 DB:10 nvmXdizC V: 35 H:125 F: 8
10926a inc $0189     [100189] A:ff40 X:00ff Y:0000 S:37f1 D:0000 DB:10 nvmXdIzC V: 35 H:125 F: 8
10926d bra $9240     [109240] A:ff40 X:00ff Y:0000 S:37f1 D:0000 DB:10 nvmXdIzC V: 35 H:125 F: 8
109240 lda #$8df0             A:ff40 X:00ff Y:0000 S:37f1 D:0000 DB:10 nvmXdIzC V: 35 H:125 F: 8
109243 phd                    A:8df0 X:00ff Y:0000 S:37f1 D:0000 DB:10 NvmXdIzC V: 35 H:125 F: 8
109244 jsl $258d68   [258d68] A:8df0 X:00ff Y:0000 S:37ef D:0000 DB:10 NvmXdIzC V: 35 H:147 F: 8
258d68 brk #$00               A:8df0 X:00ff Y:0000 S:37ec D:0000 DB:10 NvmXdIzC V: 35 H:147 F: 8
00ffff brl $005b     [00005b] A:8df0 X:00ff Y:0000 S:37e8 D:0000 DB:10 NvmXdIzC V: 35 H:147 F: 8
00005b brk #$00               A:8df0 X:00ff Y:0000 S:37e8 D:0000 DB:10 NvmXdIzC V: 35 H:147 F: 8
00ffff brl $005b     [00005b] A:8df0 X:00ff Y:0000 S:37e4 D:0000 DB:10 NvmXdIzC V: 35 H:147 F: 8

Possibly something in SA-1's code hijacks this code, but I have no idea what it could be.
That worked, Thanks a bunch!
Now there's only the mystery of the sprites wrapping around...
That worked but it still needs to remain 6100 over here so you don't hang when you enter a level
Code
       CMP #$10             ; | check if the player is entering a new level
       BCC .normalRet       ; |
       CMP #$13             ; |
       BCS .normalRet       ;/
       INC $6100            ;\
       PLA                  ; | increase gamemode and change the return address if so
       PLA                  ; |
       PEA $840F            ;/
replace .noanimp2 with this
Code
.noAnimP2
       TYA
       ASL
       TAY
       TXA
       CLC                  ;\
       ADC $7F13,y          ; | (+ 2) * 2
       ASL                  ;/
       TAX                  ;   get it in X
       LDA $6DBA,y
       BNE .Yoshi
.noYoshi
       LDA.l UploadTile,x   ;\
       STA !RAM_P1TileLo,y  ; | get data of what tile to upload
       LDA.l UploadTile+1,x ; |
       STA !RAM_P1TileHi,y  ;/
       JMP .onePlayer
.Yoshi
       LDA.l PlayerInYoshiTile,x
       STA !RAM_P1TileLo,y
       LDA.l PlayerInYoshiTile+1,x
       STA !RAM_P1TileHi,y
       LDA.l YoshiTile,x
       STA !RAM_Y1TileLo,y
       LDA.l YoshiTile+1,x
       STA !RAM_Y1TileHi,y


I'm sure theres a more efficient way of getting this to work, but I don't know how to code. Though, it works nonetheless. Now the only things that remain are to create a Star Warp routine and having it so you appear in water correctly during a Game Over.
Edit: Found out that Player 2's animations still don't work when he's inactive.
Edit 2: Figured out the ,y on the Yoshi check wasn't supposed to be there (Though I don't know why)
Edit 3: It defaults to giving player 2 the no Yoshi flag if player one doesn't have one.
Edit 4: I think I got it working for real this time. I added a second check to see what player is what and I use both Yoshi Flags.
Code
.noAnimP2
       TYA
       ASL
       TAY
       TXA
       CLC                  ;\
       ADC $7F13,y          ; | (+ 2) * 2
       ASL                  ;/
       TAX                  ;   get it in X
       LDA $6DB3
       CMP #$00
       BEQ +
       LDA $6DBA
       BNE .Yoshi
       JMP .noYoshi
+      LDA $6DBB
       BNE .Yoshi
.noYoshi
       LDA.l UploadTile,x   ;\
       STA !RAM_P1TileLo,y  ; | get data of what tile to upload
       LDA.l UploadTile+1,x ; |
       STA !RAM_P1TileHi,y  ;/
       BRA .onePlayer
.Yoshi
       LDA.l PlayerInYoshiTile,x
       STA !RAM_P1TileLo,y
       LDA.l PlayerInYoshiTile+1,x
       STA !RAM_P1TileHi,y
       LDA.l YoshiTile,x
       STA !RAM_Y1TileLo,y
       LDA.l YoshiTile+1,x
       STA !RAM_Y1TileHi,y
It has to do with .return where it checks if you're entering a level, I added a warp star check before it.

Code
.return
       LDA $73D9	    ;\ 
       CMP #$0B		    ; | Warp Star Check
       BNE + 		    ; |
       JML $048998	    ;/
+      LDA $7F13                 
       CMP #$10             ;\ 
       BCC .normalRet       ; |check if the player is entering a new level
       CMP #$13             ; |
       BCS .normalRet       ;/
       INC $6100            ;\
       PLA                  ; | increase gamemode and change the return address if so
       PLA                  ; |
       PEA $840F            ;/


The problem is that this patch's own code overwrites the routine for the warp star and crashes when you try to use it. Surprisingly enough, I don't know where or how to rewrite it.
Edit: I Debugged it. It's a bunch of free space created by the patch, and it continues until it hits a break.
Code
15a198 jml $048998   [048998] A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
048998 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
048999 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899a nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899b nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899c nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899d nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899e nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
04899f nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a0 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a1 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a2 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a3 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a4 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a5 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
0489a6 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:251 H:112 F:58
...
048d6a nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d6b nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d6c nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d6d nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d6e nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d6f nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d70 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d71 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d72 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d73 nop                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d74 phd                    A:2c0b X:0006 Y:0000 S:37eb D:0000 DB:04 nvMXdiZC V:254 H: 29 F:58
048d75 brk #$13               A:2c0b X:0006 Y:0000 S:37e9 D:0000 DB:04 nvMXdiZC V:254 H: 81 F:58


Code
CODE_048998:        A5 13         LDA RAM_FrameCounter      
CODE_04899A:        29 0C 00      AND.W #$000C              
CODE_04899D:        4A            LSR                       
CODE_04899E:        4A            LSR                       
CODE_04899F:        A8            TAY                       
CODE_0489A0:        B9 4B 89      LDA.W DATA_04894B,Y       
CODE_0489A3:        29 FF 00      AND.W #$00FF              
CODE_0489A6:        A8            TAY               


This probably has to be rewritten in the graphics routine somewhere.
Works like a charm!
However, there's only one issue left, and that's if the active player gets a Game Over, it doesn't check for water tiles.

Pages: « 1 »
Barrels O' Fun's Profile - Posts by Barrels O' Fun

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2020 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy