Language…
8 users online: DinoMom, fanfan21, HammerBrother, Klug, mmm.mmm, rami, sinseiga, Zavok - Guests: 77 - Bots: 329
Users: 69,784 (2,507 active)
Latest user: Kidd005

Posts by Romi

Romi's Profile → Posts

0x229C [B0] Timet to disable skipping the intro message
The timer decreases every 4 frame.
I like salad
Small information about the Lava object and the Mushroom object in caves.



See the picture above. The 3 objects, 2 are the mushroom, and 1 is the lava, are placed in order of
(1 : left mushroom), (2 : lava) and then (3 : right mushroom).

As you can see, the left mushroom is cut off. To prevent this from happening, you had to place mushrooms after lava. But, I found they were actually intended to be placed properly regardless of the Z-order.

Change 1 byte [C9] at 0x9F59C to [C0] and 1 byte [C9] at 0x9F5A1 to [C0]
I'm pretty sure this was just Nintendo's mistake...

Result:


0xD773
Code
5F 00 4C D6 5F 00 7C D6 5F 00 AC D6 5F 00 DC D6
5F 00 0C D7 5F 00 3C D7 5F 00 6C D7 5F 00 9C D7
5F 00 CC D7 5F 00 FC D7 5F 00 2C D8 5F 00 5C D8
5F 00 8C D8 5F 00 BC D8 5F 00 EC D8 5F 00 1C D9


The pointers to the table of gradient BG colors. 4 bytes each. First 2 bytes are the destination bank number, next 2 bytes are the destination address.

(I'm going to explain on condition that you have a little knowledge of SNES ASM)
The valid header value of BG color must be higher than 0x10 to use this HDMA effect. So, to calculate the pointer you're looking for, use this formula.

x = 0xD773 + (header[BGcolor]-0x10) * 4;

The length of the color table designated by the pointer is 0x30 bytes.



The example to find the table of BG color 0x10 (in the original, it's used at 6-8)

x = 0xD773 + (0x10 - 0x10) * 4;
x = 0xD773;

The 4 bytes at 0xD773 are 5F 00 4C D6. Converting it to the PC address, the result is 0x1FD64C+(0x200)

At 0x1FD84C, there's the color table for BG color 0x10

Code
22 08 22 08 22 08 22 08 22 08 22 08 43 0C 64 0C
85 10 C7 14 E8 14 09 19 2A 19 4B 1D 4B 1D 2A 19
09 19 E8 14 C7 14 85 10 64 0C 43 0C 22 08 22 08

0x18 palettes in SNES palette format are here and the direction is "upward" instead of "downword". (So, modifying the former bytes of the table will change the lower part in the game.)
It only has kind of less palettes, but the distance between ones are actually 0x10 lines and palettes between ones are automatically calculated to make the cange of palettes look natural. This could make the table length shorter.
It's possible.

If you're referring to the level mode 0A, change 1 byte [30] at 0x286C1 to [20] by a hex editor.
I guess this problem is the same as Knight of Time had.
About a month bump... Forgive me for this, but I might as well point out this.

I gave it a try today. The levels are balanced so far and I enjoyed your demo. And of course, I'm looking forward to your custom music too.

But I have 2 complaints.

1. At the part where sand blocks say "s n n" (I think?) in 1-2, if you use up all seeds of a watermelon or your eggs before you broke all sand blocks, you'll get stuck.




2. Some parts of levels seem not to consider Item Memory. I don't know if there had been a document states about Item Memory, but please read Golden Yoshi's post. What he stated is just correct. Placing items with breaking the Item Memory law will make player unable to record 100 points in certain situations because of disappeared important items.

Here are screenshots showing the places I'm mentioning. I may have overlooked some. But just for your information.

Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
Screenshot 7
0x78B1F - Screen Exit information for rotating doors, 4 bytes each
[B8 05 77 00] [C6 07 7A 00] [CD 05 5B 00] [D3 00 77 06]

1st byte : destination level
2nd byte : X position
3rd byte : Y position
4th byte : entrance type
Originally posted by S.N.N.

Already have the link to it .. had it for months. I was just unsure whether permission was given to post it or not, which is why I have been stalling. Thanks though.


Do you mean.. mine? If so, as it's posted at the helpful info. thread to share information about them (although, since I only have the most boring part of the ROM disassembled, it's few yet...), you're not restricted from linking to it, nor do I have any power to keep you from doing so.
If not, uh, I don't know.

Anyway, nice find! Looking foward to seeing more!
If you're really referring to it when you get star, change 3 bytes at 0xC787 to EA EA EA.
But if you meant it when the song restarts when the star timer is about to be up - because you said you're using star timer for your custom ability - change 3 bytes at 0x6505 to EA EA EA
But it's possible that I'm still misunderstanding something...
I think this post should be here rather than making a new thread for its content, so...

I can't directly help you with disassembling now because of the things I'm working on for SMW with someone, but I remade my SuperFX disassembler yesterday so that your work could be faster hopefully.
I hope it'll come in handy for your works.

The below is an example of usage, which will disassemble code that creates gradient table (if I remember correctly) in SRAM and eventually will be copied to WRAM by the native CPU
Code
DisSuperFX.exe YI.smc gradient.txt 890E7 --header --stop


I didn't test it much, so please tell any bugs if you found...
@Ersan
If you'd like to do so. If you would, however, please redownload the tool from the same link, as I updated it in order to prevent setting the minimum number of space too high so that the file size won't just increase unnecessarily. But not important update.

@S.N.N.
You're welcome. Also, nice finds, as always! Keep it up!
Originally posted by Jeorge535
Isn't your secret 1 "It's Skiing time!"


It's the 'Extra' level. I suppose he modified the ROM so that the bonus level turns into the Secret level, like Golden Yoshi did in his hack, SMW2+2.
Object List
Extended Object List

These are a list for something I made before. With my poor English, description of most of them may not be easily understandable, but eh.

You see a line with capitalized characters for each object.

example:
OBJ,CAVE1,FOREST1,POND,THREE_D,SNOW,JUNGLE,CASTLE1,GRASS1,CAVE2,FOREST2,CASTLE2,SEWER,FLOWER,SKY,CASTLE3,GRASS2

This tells you which tileset is compatible with the object; if it contains the tileset name, it's compatible with the tileset.
The list of the name and the number for BG1 tileset (in hexadecimal. you might want to convert it to decimal for Egg Vine) is as follows.

0: CAVE1
1: FOREST1
2: POND
3: THREE_D
4: SNOW
5: JUNGLE
6: CASTLE1
7: GRASS1
8: CAVE2
9: FOREST2
A: CASTLE2
B: SEWER
C: FLOWER
D: SKY
E: CASTLE3
F: GRASS2

As for some others:
OBJ - It's a standard object.
EXOBJ - It's an extended object.
KAMEK - Only for the Kamek's room, which you have to set Level Mode to 0A to use. (BG1 tileset doesn't matter)
ANIME - Works with animation, such as coins.
MISC - Miscellaneous one, such as an unused object and a command object.

I hope these help.
0x65C76 [02 02 02 02 04 04 02 04 02 04 04 04]
Parameters for the screen designation.

0x65C82 [35 35 35 35 33 33 35 B3 35 33 33 33]
Parameters for (simply saying) the sub screen setting.

0x65C8E [04 04 04 04 01 01 04 01 04 01 01 01]
Parameters for... no idea yet.

0x65C9A [D8 00 D8 00 D8 00 D8 00 FA 00 FA 00 D8 00 FA 00 D8 00 FA 00 FA 00 FA 00]
The tilemap file number. (not tested, so perhaps.)

0x65CB2 [00 3E 00 3E 00 3E 00 3E 00 36 00 36 00 3E 00 36 00 3E 00 36 00 36 00 36]
The destination address to upload the tilemap. (probably.)

0x65CCA [1F 61 DF 22 00 7F EC 23 1F 61 DF 22 00 7F 13 5C 1F 61 DF 22 00 7F EC 23]
The palette for the first magic shower.

0x65CE2 [DF 22 00 7F EC 23 00 7F 00 7F EC 23 1F 61 20 5D EC 23 1F 61 DF 22 1F 61]
The palette for the second magic shower.

0x65CFA [0A 0C 0A 0C 0A 0A 0A 0C 0A 0A 0A 0C]
Parameters for the SPC. Simply saying, the music number.

The short tables are 1 byte each, the long ones are 2 bytes each, respectively.
Since 1-8 is the second boss level and 3-8 is the sixth boss level in the game, swapping the parameters with a hex editor makes it work properly. I coloured the values you have to swap.
Although, changing the palette value is unnecessary so you don't have to, but you can modify them to the colours you like as well.

Please first back up your ROM. I cannot be responsible at all for accidental mistakes or something.
So... Golden Yoshi told me that in Extra 1 you always cannot play the bonus game because you cannot draw the flower. Because - he also told me - if the sign board appears, Poochy's graphic will be glitched up. Then I found an offset to change the level number.

0x129DC [08] the level number where you always lose the roulette game. (originally Extra 1)

If you want to disable this icky trick the staff implemented, change one byte at 0x129DD [D0] to [80]

Thank Golden Yoshi for telling me the interesting information.
Are you using the object 3C? In general, you use the object F4 for the purpose, and if you want to make it enterable by Yoshi, you need to place the sprite 042 on the pipe as well.
Then, you need to change the level mode to something else in the header property, I guess; if I remember correctly, it's labeled "ordering property" or something in EggVine.

If BG1 is only on the sub screen and the sprite is on the main screen, then it's impossible to make sprites go behind BG1.
Firstly, I appreciate Golden Yoshi for providing people with a better explanation of how-to for this tool in his post and answering people's questions in place of me. And, since he decided to release it, I also give him another thank-you for beta testing and reporting errors before it even got usable at all.

Secondly, thanks you all who gave it a try for that and giving me some feedbacks.


Like he mentioned, I still intend to update the sprite some time, but I don't know when.
But for now, I release a small tool which I dug up from an old folder that will allows you to edit the font comes with the tool easily with YY-CHR.

First, you run the tool in this usage;
Code
vwffont_convertor.exe -d vwf.bin output.bin

vwf.bin is the font file comes with the archive. After output.bin is created, open it with YY-CHR and set the graphic format to 1bpp. Now, letters are rendered in 16x16 blocks, and you can easily edit the font with YY-CHR now.
NOTE: Although each block is 16x16, the actual available range is 16(horizontal) x 12(vertical). Please remember it.

After you're done, you need to encode the file; run the tool in this usage;
Code
vwffont_convertor.exe -e output.bin edited.bin


Now, the edited.bin (for example) and a new width.bin are created. If it's alright to overwrite the existing vwf.bin, rename the edited.bin to vwf.bin, and reinsert the sprite to actually apply the graphical change. If you even don't care the vwf.bin is always overwritten, you can just directly specify the output path to vwf.bin instead of edited.bin.


Well, since this program is old and I think I haven't tested that much, so please tell me any issue if you found. (I recommend backing the files up first anyway.)
Nintendo seems to have forgotten about the tile set 0xA, or just optimized slightly the code because they didn't use the sprite in that tile set after all.

Patch the code below to your ROM with xkas. It'll fix the problem. - at least I tested it though, don't forget to have your ROM backed up.

Code
header
lorom

org $0D8492
	JMP hack

;must be free space in the bank $0D
;consumes 0xE bytes

org $0DFFF2

hack:
	CPY #$0A
	BEQ +
	CPY #$0E
	BNE ++
+	JMP $8496
++	JMP $84A0
Glad to hear it worked.

my post
I have mentioned Yoshi's direction at the level start a long time ago.

0x80F90 [04]
0x80F94 [12]
0x80F98 [36]

are the index of the levels in which Yoshi faces to left, by the way.


0x27C31 [32 38]
The levels which enable the ski-mode.
To actually enable the ski-mode, the following condition must be met.
- the BG1 tile set is Snow.
- Item Memory Index is #3.
- the level number is matched to the one in the table (originally 0x32 and 0x38)
If the condition is satisfied, the screen scroll will be locked, and entering a door will allow Yoshi to ski.

0x196E3 [32 00]
0x196E8 [38 00]
The levels which enable the screen exit when Yoshi reached the right end of the level.
Please note that you can't specify the level 0x00, as the game treats 0x0000 as a null number, which means the screen exit won't be enabled automatically.


Also, keep in mind that the term 'level' in this post is referred to as the index where you select in the level select screen, not the raw level index, 0x00 ~ 0xDD.