The change Mario's palette, you must do so on a level that has "Enable Custom Palette" (in the Level menu) unchecked. Custom palettes will not effect Mario, so that he will always use the same colors.
If I may answer...
Quote
What´s the difference between the Ice Power that is on Sprite Tool and your combination??
With this combination, Ice power must be obtained (via a sprite much like a regular power-up) and also plays a sound-effect when and Ice Blast is fired. Mikeyk's generator version can be used at any time as long as Mario is big (or whatever state is set in the asm).
Quote
So the question is, is there a posibility to have the 3 power up in one hack?
No, unfortunately. Like Alex said, the generator's cfg can't be edited. If it could be, it would be as easy as duplicating the generator and power-up sprites and setting the new ones to generate the sprite number of the Ice Blast.
...Actually, the generator's cfg file can be edited, via Notepad. I forgot about that...
To have all three power-ups, you must copy the hammer\boomerang generator's asm and cfg files, edit the new asm file to generate the sprite number of the Ice Blast, edit the new cfg file to use the new asm and insert both generators.
Then you can choose between the two generators for each level (using the original will make the power-up sprites use hammers and boomerangs, the new one will use ice and whatever else). Using both generators at once will cause whichever generator's sprite number is first to work, ignoring the other.
I'm having a similar problem (and the correct .ini file isn't in the download).
Once Addmusic opens, press "s" and enter to enable to see the program's process when you run it as usual. If you get an error that claims not to recognize the program's location as a command, program or batch...Well, we're in the same boat.
Changing the ExGFX and adding sprites are quite simple, and many SMB3 sprites and ExGFX sets are already available in the appropriate sections here.
The power-ups however, aren't that easy. Raccoon Mario can be created with a patch in the Patches section and a few ROM Map edits, but all three suit power-ups have yet to be created.
I've been experiencing a weird error any time I try to use the tool, no matter what address I try to use. Although any changes to the music banks work, all the levels become underwater levels where Layer 1 is completely ignored. Anyone know how to fix this?
The problem wasn't with the address but the music bank's number. Using 12 would screw up the game, but 11 works fine.
I'm also having trouble figuring out which samples correspond to which instruments. Can anyone explain that to me?
If the ROM is clean, the address Snow mentioned should work. Try different music bank numbers.
There are a few bytes in the ROM Map that could be changed to do something like this, like 052D5 which controls whether or not Yoshi is lost when you fall down a pit.
That Lakitu is SMB3-styled however.
You could try switching byte 0x0EC32 to 2B on the ROM map if you don't need the original Lakitu
I'm slowly learning to write sprite ASM, but I'm a bit confused. I've been messing around with the sprite used for mikeyk's tutorial but I haven't been able to animate the sprite's tiles correctly.
This is the graphics routine I currently have:
Code
TILEMAP dcb $C2,$E2
SUB_GFX JSR GET_DRAW_INFO ; after: Y = index to sprite OAM ($300)
; $00 = sprite x position relative to screen boarder
; $01 = sprite y position relative to screen boarder
LDA $157C,x ; $02 = sprite direction
STA $02
; if you wish to draw more than one tile, each step between the lines must be repeated
;*************************************************************************************
LDA $00 ; set x position of the tile
STA $0300,y
LDA $01 ; set y position of the tile
STA $0301,y
LDA #$C2 ; \ store tile
STA $0302,y ; /
LDA $15F6,x ; get sprite palette info
PHX
LDX $02 ; flip the tile if the sprite direction is 0
BNE NO_FLIP_1
ORA #$40
NO_FLIP_1 PLX
ORA $64 ; add in the priority bits from the level settings
STA $0303,y ; set properties
INY ; get the index to the next slot of the OAM
INY ; (this is needed if you wish to draw another tile)
INY
INY
LDA $00 ; set x position of the tile
STA $0300,y
LDA $01 ; set y position of the tile
CLC
ADC #$F0
STA $0301,y
LDX $03 ; \ store tile
LDA TILEMAP,x ; |
STA $0302,y ; /
LDA $15F6,x ; get sprite palette info
PHX
LDX $02 ; flip the tile if the sprite direction is 0
BNE NO_FLIP_2
ORA #$40
NO_FLIP_2 PLX
ORA $64 ; add in the priority bits from the level settings
STA $0303,y ; set properties
INY ; get the index to the next slot of the OAM
INY ; (this is needed if you wish to draw another tile)
INY
INY
;*************************************************************************************
LDY #$02 ; #$02 means the tiles are 16x16
LDA #$01 ; This means we drew one tile
JSL $01B7B3
RTS
The sprite looks like this:
Everything else works as it should. Can anyone help me out?
Well, I'm attempting to draw two tiles in that routine, so it's not that. If I set the second tile to a single value (say, #$C2 like the first one) it works normally.
The problem seems to be my TILEMAP table, or perhaps the the cfg's clipping values, which I admittedly know next to nothing about.
Originally posted by BBS
From Schwaa's ASM Tutorial
LDA $13 (Load "A" with the Animation Frame number. Note: In Lunar Magic it says there are 16 animation frames. Well, one of THOSE animation frames is 0F of this.)
I don't get this.
For animated blocks there are 16 different frames of animation (you can see this in Lunar Magic's Extended Animation menu). However the game runs animations faster than that. Each single frame of a block's animation is actually 16 frames of the same image.
Simply put, one frame in the Extended Animation menu is has a value of 16 (#$0F) in RAM address $13. Two frames is #$1F, three is #$2F, and so on.
This is used as a makeshift random number generator because the RAM address continuously increases by 1 at an extremely fast rate.
Alright two things this time.
One, I've fixed the previous problem by looking at other sprites...But now the second tile will only use palette 8, ignoring the cfg file's palette. This is my current routine (sorry for the size):
Code
TILEMAP dcb $C2,$E2,$C4,$E4
SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset
LDA $157C,x ; \ $02 = direction
STA $02 ; /
LDA $14 ; \
LSR A ; |
LSR A ; |
LSR A ; |
CLC ; |
ADC $15E9 ; |
AND #$01 ; |
STA $03 ; | $03 = index to frame start (0 or 1)
PHX ; /
LDA $14C8,x
CMP #$02
BNE LOOP_START_2
STZ $03
LDA $15F6,x
ORA #$80
STA $15F6,x
LOOP_START_2 LDA $00 ; \ tile x position = sprite x location ($00)
STA $0300,y ; /
LDA $01 ; \ tile y position = sprite y location ($01)
STA $0301,y ; /
LDA $15F6,x ; tile properties xyppccct, format
LDX $02 ; \ if direction == 0...
BNE NO_FLIP_1 ; |
ORA #$40 ; / ...flip tile
NO_FLIP_1 ORA $64 ; add in tile priority of level
STA $0303,y ; store tile properties
LDX $03 ; \ store tile
LDA TILEMAP,x ; |
STA $0302,y ; /
INY ; \ increase index to sprite tile map ($300)...
INY ; | ...we wrote 1 16x16 tile...
INY ; | ...sprite OAM is 8x8...
INY ; / ...so increment 4 times
LDA $00 ; \ tile x position = sprite x location ($00)
STA $0300,y ; /
LDA $01 ; \ tile y position = sprite y location ($01)
CLC ; |
ADC #$F0 ; |Shift up one tile
STA $0301,y ; /
LDA $15F6,x ; tile properties xyppccct, format
LDX $02 ; \ if direction == 0...
BNE NO_FLIP_2 ; |
ORA #$40 ; / ...flip tile
NO_FLIP_2 ORA $64 ; add in tile priority of level
STA $0303,y ; store tile properties
LDX $03 ; \ store tile
INX ; |
INX ; |Add 2 to x for values 3 and 4
LDA TILEMAP,x ; |
STA $0302,y ; /
INY ; \ increase index to sprite tile map ($300)...
INY ; | ...we wrote 1 16x16 tile...
INY ; | ...sprite OAM is 8x8...
INY ; / ...so increment 4 times
PLX ; pull, X = sprite index
LDY #$02 ; \ 460 = 2 (all 16x16 tiles)
LDA #$01 ; | A = (number of tiles drawn - 1)
JSL $01B7B3 ; / don't draw if offscreen
RTS ; return
And two...Does anyone know the routine that causes a sprite to follow a line-guide, similar to Fuzzies?
My knowledge on the matter is limited...But maybe you might have more luck by attempting to make that X button tile part of Mario's routines instead of creating another sprite, perhaps having the tile respond to an address dependent on a custom block.
Any ideas on how I would go about doing this?
Very interesting power-up. I bet with some tweaking you could set up some Sonic the Hedgehog-like physics.
I realize how noobish this question is...But how does one record gameplay footage of a hack for showcasing purposes?
Just make a custom tweaked sprite. In Sprite Tool's cfg Editor, select "Tweak", make it act like 0F, and set everything else to the settings of an unpatched Goomba (leave "dies when jumped on" off). Save the cfg file and insert it with Sprite Tool. It should work exactly like a SMW Goomba.
Also, there's a clipping value guide in the Documents section.
Interesting idea.
Maybe you can have his new move-set reflect the SMW setting...Like having him release giant fireballs, Fire Mario style. Or by summoning various enemies.