Language…
21 users online: Adriel_Isaque, arantes, autisticsceptile1993, bravetoaster, crm0622, Daizo Dee Von,  Devazure, Eryck, EvanEMV, Giftshaven, GrenCarret, Knetog, Knucklesfan, Koopster, LouisDoucet, LucasMegaStriker,  Major Flare, Morsel, Nciktendo,  RussianMan, SubconsciousEye - Guests: 87 - Bots: 141
Users: 55,573 (2,476 active)
Latest user: TJPlayz

Modifying Powerup State 00 (Small) to match 01

I'm currently working on a Mario GFX set where Small Mario is replaced with a capless Big Mario. The problems that arose are the fact that the Small Mario tiles were drawn to be 1 pixel lower than the Big Mario tiles. I tried to offset this using SNES ROM address $00DE32. The problem with that is you cannot modify a single powerup state; you modify all of them. Is there a workaround that doesn't involve me having to modify the 16x16 tiles and make duplicates of existing frames just to have modified versions of them?

The second problem is that Small Mario doesn't use the 8x8 tiles found in GFX00. I need 00 to copy 01 byte for byte in whatever it calls for those tiles.

The third problem is that the Small Mario Tilemap doesn't organize the Inflated Mario frames the way the larger forms do. I need it to copy the tilemap in the same way.
Originally posted by KPhoenix
I'm currently working on a Mario GFX set where Small Mario is replaced with a capless Big Mario. The problems that arose are the fact that the Small Mario tiles were drawn to be 1 pixel lower than the Big Mario tiles. I tried to offset this using SNES ROM address $00DE32. The problem with that is you cannot modify a single powerup state; you modify all of them. Is there a workaround that doesn't involve me having to modify the 16x16 tiles and make duplicates of existing frames just to have modified versions of them?

The second problem is that Small Mario doesn't use the 8x8 tiles found in GFX00. I need 00 to copy 01 byte for byte in whatever it calls for those tiles.

The third problem is that the Small Mario Tilemap doesn't organize the Inflated Mario frames the way the larger forms do. I need it to copy the tilemap in the same way.

Regarding the first problem, around $00A46F the game stores those values to OAM, so you could hijack that part in order to get what you want.

Without testing, this dirty patch maybe helps you:

Code
org $00A46D
JML control

freecode
control:
LDA $19	; only affect small Mario tiles
BNE restore
REP #$20
LDA $80
CLC
ADC Yourtable,x
JML $00E475
restore:
REP #$20
LDA $80		;restore code
JML $00E471

Yourtable:

(here you would write a table analog to $00DE32 with whatever changes you would want to make)
Originally posted by Darolac
Originally posted by KPhoenix
I'm currently working on a Mario GFX set where Small Mario is replaced with a capless Big Mario. The problems that arose are the fact that the Small Mario tiles were drawn to be 1 pixel lower than the Big Mario tiles. I tried to offset this using SNES ROM address $00DE32. The problem with that is you cannot modify a single powerup state; you modify all of them. Is there a workaround that doesn't involve me having to modify the 16x16 tiles and make duplicates of existing frames just to have modified versions of them?

The second problem is that Small Mario doesn't use the 8x8 tiles found in GFX00. I need 00 to copy 01 byte for byte in whatever it calls for those tiles.

The third problem is that the Small Mario Tilemap doesn't organize the Inflated Mario frames the way the larger forms do. I need it to copy the tilemap in the same way.

Regarding the first problem, around $00A46F the game stores those values to OAM, so you could hijack that part in order to get what you want.

Without testing, this dirty patch maybe helps you:

Code
org $00A46D
JML control

freecode
control:
LDA $19	; only affect small Mario tiles
BNE restore
REP #$20
LDA $80
CLC
ADC Yourtable,x
JML $00E475
restore:
REP #$20
LDA $80		;restore code
JML $00E471

Yourtable:

(here you would write a table analog to $00DE32 with whatever changes you would want to make)


Thank you for the reply! The bad thing is I don't have the slightest knowledge of ASM, so I'm unsure what you mean with the last part. Are you able to help me further?


Better idea; to fix the one-pixel offset on small Mario, just apply this:

Code
org $00E355
	db $80



For the extra GFX00 tiles, try copying the 61 bytes from $00DF60 to $00DF1A, i.e.:

Code
org $00DF1A
	db $00,$00,$00,$00,$04,$04,$04,$00
	db $00,$00,$00,$00,$08,$00,$00,$00
	db $00,$0C,$0C,$0C,$00,$00,$10,$10
	db $14,$14,$18,$18,$00,$00,$1C,$00
	db $00,$00,$00,$20,$00,$00,$00,$00
	db $24,$00,$00,$00,$00,$00,$00,$00
	db $00,$00,$00,$00,$00,$00,$00,$00
	db $00,$00,$00,$00,$00



Also, for the balloon Mario pose, use this one:

Code
org $00CD99
	db $80


Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer