Banner
Views: 853,372,477
Time:
27 users online: Amine Retro, bladeoperator, BlueSkye209, Burgorton, chickaDEE Magazine, codfish1002, CosmicTiff, Counterfeit, DPBOX, Eduard, Green Jerry, Knight of Time, LucasMegaStriker, M6 Productions, Maicon98,  MarioFanGamer, Miscalc,  Ninja Boy, P-Tux7, qantuum, Rilla Roo,  SimFan96, solgaleo35, TheBiob, tjb0607,  Tob, VLSkoot - Guests: 85 - Bots: 56 Users: 47,072 (2,506 active)
Latest: Maicon98
Tip: Unique level names aren't necessary, but they're a plus.Not logged in.
Posts by Yoshis Fan
Yoshis Fan's Profile - Posts by Yoshis Fan
Pages: « 1 2112 113 114 115 »
For Hex-Editing, you can use any Hex-Editor you want. However, Translhextion is used mostly, I think, at least it is recommended for ROM-Hacking.
In order to make the edits you want, open the ROM-file in the Editor and hit Ctrl+G, then type in "x36e2" (without quotation marks). It will then directly jump to the Offset you want to edit; in this case it's for the 1 graphic file. As Mattrizzle stated with the brackets, there is only one byte you want to edit at that address, so make sure to leave everything that is not the 6 Offsets for the 6 GFX Files untouched or you can (and most likely will) get into a hell of a mess.
As for other tools being usable after editing these Offsets, yes, everything will work just fine. The tools you use do edit other areas in the ROM; the Sprite Set Editor edits Offsets in the range starting from 0x3239 and going to 0x3239 + 6*0x80, which ends shortly before the Offsets you want to edit. The Message Editor is not even close, it operates in the range from 0x110200 to 0x1201FF.
With a little ASM work, it should also be possible to reference a certain Sprite Set Index instead of hard-coding the values this way.
Whether it is possible to use the Sprite Set specified in the Level-header depends on whether the value determining the Sprite Set exists in RAM when using Kamek's Room.

*EDIT: I've tried to use Kaboomba and Bumpties independently of each other in Kamek's Room. However, altering the values does not really seem to do anything, I've tried altering both 1A and both of them separately to 5E and 4A, but both times, the Sprites were still using the Graphics of Hookbill's Mountains. Changing the "good" values, however, that is the 67, 3D, 55 and 29, Kamek and the Fangs and Mildes do glitch. That is some weird stuff going on there :/
I actually thought, that the subroutine just imitates the normal behavior of loading Sprite GFX Files, but that does not seem to be the case, else the edits would work. Either that, or there are some other edits to be made.
Seems like more edits are required to make it work.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
In order to prevent the player from touching the water as Super Baby Mario, you can still use the Super Mario blocks (Object 0xDA) as a wall.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Yes, you said it: Golden Egg has the option to VIEW a level with the W6 Tileset. You cannot use the W6 Tileset in a level easily at will. Actually, if you want to use it, you will have to use it in all of W1 and never again. You have to edit certain Offsets to make it work:

00-World 1
02-World 2
04-World 3
06-World 4
08-World 5
0A-World 6

0x354A: [0A 00] World to load the alternate GFX File Table
0x3C3B: [0A 00] World to load the alternate Palette Table

Both Offsets are valid for headered ROMs and are the PC Addresses. Credit goes to Mattrizzle for finding them.

Other options you have is using the W6 Tileset in every World or you can use it in every World except for one of them; in case you want something like that, I'll give you instructioms.


As for other options, there once was an ASM patch (I think) to choose for the W6 settings on each level individually. But I'm not sure whether it works; I don't have it, so if you want to give it a shot, you have to look for it.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Ok, here is what you do in order to disable the W6 Tileset for W5 but use it for Worlds 1-4 and 6:

0x313C: [69 6A 6B]
0x316C: [02 03 41]
0x3A76: [BE 0B]
0x3AB6: [D2 06]

0x354A: [08 00]
0x3C3B: [08 00]

This will reverse the GFX File and Palette loading tables and make World 5 load the normal entries, then.


In order to freely choose the Worlds you want to use the Tileset in, additional ASM work is required and I don't know how to achieve that.
As said, you can still try and search for the patch I was mentioning in the last post.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
(restricted)
Changing the Offsets I told you will make everything look like World 6 in World 1, 2, 3, 4, 6 and it will make everything look like Worlds 1-5 in World 5. As said, with this method it is NOT possible to make 3 Worlds one way and the other 3 the other way.
These are your possibilities:

- No World uses World 6 Tileset/Palette
- 1 World uses World 6 Tileset/Palette
- 5 Worlds use World 6 Tileset/Palette
- All Worlds use World 6 Tileset/Palette

For anything different, as said multiple times, you can try and find the patch; I can only help you with the four options above.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Well, I hope you haven't edited a thing, because you are clearly using an unheadered ROM and editing this address will make unexpected things happen. Use this tool on your ROM to give it an SMC header: HeAdder
This will come in handy, because 99.9999% of the Offsets given here are for headered ROMs (or are the SNES addresses, but that's another thing that has nothing to do with a ROM being headered or headerless)
Then jump to the Offset again, but FIRST, change your Translhextion settings, your bytes per row settings give me cancer. Options > Preferences. There, choose 'Number of bytes to display per line:' and in the textbox below you write '16'.

This is the correct Hexdump:
00003130 | b3 00 d4 00 10 aa 00 5c ff 00 01 40 02 03 41 08

You have to replace the [02 03 41] at the end of the row; normally, the cursor should automatically jump to the very correct spot, though.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by doggycharly
You mean this one?

Unfortunately the patch has a buttload of bugs(ski and Faceleft don't work/crash the game) BUT! the "world6 tileset" actually works
hhmmm

The patch I am talking of is an all-in-one patch. And it's a shame this is buggy as hell, since it'd be very nice if it worked: Brown Chomp Rock, Ski Mode, Left-Facing Yoshi, and World 6

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by rkb1723
Thanks for the warning. I added a header and now it works just fine.

To go along with my other question about will a screen exit cause the World 6 tileset to stick or change I've got another. With a headered rom I can now edit the entrance and mid-rings in each level. To test it out I took an earlier version of my rom and changed it so 1-2 starts in a separate area I made in 5-1. I was pleased to see it worked flawlessly but this begs the question. If I were to edit say world 2 to have the world 6 tileset and started 1-2 in one of the world 2 side areas, would the change stick?

Hopefully it does because it would really alleviate so many of my concerns.


You can see for yourself. But to answer your question: It depends on the Translevel (1-1, 1-2, ... 1-8, 1-E, 2-1, ... 6-E) you've chosen in the menu. The Levels actually are loose parts of data in the ROM, the whole thing about them is the Entrance and Screen Exits (and Middle Rings, which behave exactly like Screen Exits). There is no pre-determined relation between a Level and a Translevel, it all depends on the Entrance and the Screen Exit data within that and the following Levels.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
In fact, the header as you noted it down in the document is not quite correct anymore; at least some bits of there aren't as unknown anymore as they were back in the EggVine-Days; I'll try and post an updated table of the header bits later on.

On a side note, do any of you happen to know, how to know whether a GFX File is compressed or not?

A bit of background: There is a table at headered PC 0x37B1F, SNES $06:F71F with 0x1D9 entries, 3 byte/entry; ending at headered PC 0x380A9, SNES $06:FEA9.
Each entry is a pointer to one of the GFX files. Some of them are compressed, some of them are not.
The address is calculated as follows: Take an entry, for example entry 0x159, found at headered PC 0x37B1F + 3*0x159 = 0x37F2A, SNES $06:FD2A; there are three bytes there: [4A F8 5C].
Now these are little-endian, so you revert them: [5C F8 4A].
Getting their headered PC addresses is easy now, you subtract 0x400000 and add 0x200 => 0x5CF84A - 0x400000 + 0x200 = 0x1CFA4A
So, by retrieving the addresses on their own, I don't see how it's possible to tell whether the data is compressed or not.

On another note, what kind of compression is used? I have found something about the LC_LZ2 compression, which is used for SMW, but it could be, that some other stuff is used as well. Also, the GFX Files are either 4BBP, 2BBP or Tilemap-Format; is there a way to find out, which?


Yeah, that's a lot of questions, but I hope at least the most important one can be answered (finding out whether a GFX File is compressed or uncompressed)

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Sadly, that isn't exactly helpful; there is only one tool, which is able to decompress/compress graphics from/to a ROM, and that is YCompress. The problem is, that I want to write an application, which is able to decompress the graphics and I was hoping for a table or something like that, which tells the game, what method (if any) of decompression it has to use for each graphics file.

Anyways, as for the Level Header, this is what I've come up with:

Code
                //    TYPE              LEN      BYTE:BIT
		// BG Color              5       0:0 - 0:4
		// BG 1 Tileset          4       0:5 - 1:0
		// BG 1 Palette          5       1:1 - 1:5
		// BG 2 Tileset          5       1:6 - 2:2
		// BG 2 Palette          6       2:3 - 3:0
		// BG 3 Tileset          6       3:1 - 3:6
		// BG 3 Palette          6       3:7 - 4:4
		// Sprite Tileset        7       4:5 - 5:3
		// Sprite Palette        4       5:4 - 5:7
		// Level Mode            5       6:0 - 6:4
		// Animation Tileset     6       6:5 - 7:2
		// Animation Palette     5       7:3 - 7:7
		// BG Scrolling          5       8:0 - 8:4
		// Music                 4       8:5 - 9:0
		// Item Memory           2       9:1 - 9:2
		// Unused                5       9:3 - 9:7


--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Sadly LC_LZ16 is not as well-documented as LC_LZ2 and I have no idea how the decompression works by reading this post... :/
The LC_LZ2 was easy to understand and to implement, because we have an Article about it here in the Wiki. Maybe you disassembling that routine can shed some light?

Edit:
I have used DotPeek for disassembling Golden Egg at least partially, it's a mess without comments...
Anyway, I think I have found the Class, which is responsible for decompressing the GFX and by the looks of it he's just translated the SNES Assembly into C# code ^^
Decompress.cs
I'll see if I can get any new insights from this.
Romi must return and release the source of GE, it's better than EggVine, but there are still many things to improve.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Yes, I told Alexander that I don't mind MY game being put on a cartridge as long as no further modifications are made. I already knew that my hack was to be put on a cartridge, since Alexander and me have been PMing a little lately and I was fine with that.
However, at least asking the other creators of the hacks is due to respecting other people's work (I don't think copying the game on a cartridge is as much work as creating a hack), so it's still not a nice thing to do, especially when it comes to selling it.
With that said, I'm not the voice of all YI hackers on this site, I'm just moderating this forum; delivering complaints or objections towards Trihex is none of my business, let alone initiating legal steps (hacking itself is legal limbo anyways).

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
There's no need to post that, it is already exactly known how to read Level Data, you can just ask me =P



Code
Level Header is 10 Bytes

5-Byte Objects:
 IIIIIIII	ID (can't be 00/FF)
 XXXXYYYY	High X and High Y
 xxxxyyyy	Low X and Low Y
 WWWWWWWW	Width - 1, signed
 HHHHHHHH	Height - 1, signed

01 76 45 03 04 => Object 01 at (74|65) with Width 4, Height 5

4-Byte Objects:
 IIIIIIII	ID (can't be 00/FF)
 XXXXYYYY	High X and High Y
 xxxxyyyy	Low X and Low Y
 LLLLLLLL	Length - 1, signed

3C 73 48 FE => Object 3C at (74|38) with length -3

4-Byte Xtended Objects
 00000000	This Byte is always zero
 XXXXYYYY	High X and High Y
 xxxxyyyy	Low X and Low Y
 IIIIIIII	ID

00 70 F0 FF => Xtended Object FF at (7F|00)

Sprites (3 Bytes each)
 iiiiiiii	Low ID
 YYYYYYYI	High ID and Y-Coordinate
 XXXXXXXX	X-Coordinate

3D A9 78 => Sprite 0x13D at (78|54)

Screen Exits (Level-Warp, 5 Bytes each)
 TTTTTTTT	Target page (between 00 and 7F)
 LLLLLLLL	Destination Level (between 00 and DD)
 XXXXXXXX	Destination X-Coordinate
 YYYYYYYY	Destination Y-Coordinate
 EEEEEEEE	Destination Entrance Type (between 00 and 0A)

70 00 0A 77 05 => At Screen Position (0|7), leads to Level 0, X-Coordinate 0A, Y-Coordinate 77, exits Pipe

Screen Exits (Minibattle, Entrance Type = 0, 5 Bytes each)
 TTTTTTTT	Target page (between 00 and 7F)
 MMMMMMMM	Destination Minibattle (between DE and E9)
 XXXXXXXX	Return X-Coordinate
 YYYYYYYY	Return Y-Coordinate
 LLLLLLLL	Return Level (between 00 and E9)

70 DF 0A 77 05 => At Screen Position (0|7), leads to Minibattle 2, returns at X-Coordinate 0A, Y-Coordinate 77, Level 05, exits Door


How to read Level Data:
Code
currentOffset = objectDataOffset
levelObjects = new List<Object>
screenExits = new List<Screenexit>

levelHeader = GenerateLevelHeader(rom, currentOffset)
currentOffset += 10

//An FF is no Object, it's the end of Object Data
while(rom[currentOffset] != FF):
  levelObjects.append(GenerateObject(rom, currentOffset))
  currentOffset += levelObjects.Last().GetLength() //Either 4 or 5

//Must be incremented or you're stuck at the first FF
currentOffset++

//An FF is no Target Page, it's the end of Screen Exit Data
while(rom[currentOffset] != FF):
  screenExits.append(GenerateScreenExit(rom, currentOffset))
  currentOffset += 5


currentOffset = spriteDataOffset
sprites = new List<Sprite>
//Two consecutive FF-bytes mark the end of Sprite Data
while(rom[currentOffset] != FF && rom[currentOffset+1] != FF):
  sprites.append(GenerateSprite(rom, currentOffset)
  currentOffset += 3


--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Yes, being angry at him for selling them is a little pointless, I don't believe he will find tens of thousands of people buying them and I don't believe he will magically become rich from selling some.
As for the cart, a Yoshi's Island cart needs additional hardware, namely the SuperFX2 chip (I don't know about other chips, but a SuperFX2 is required).
I really like the idea of playing the hacks on a real console, though.
But first let me farm 999 lives for Secret 6 ^^

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by rkb1723
Well I finally tried it out and now at least I can use it without it closing every time I try to do anything. Now however I don't know how to get the rom to load.

Also to answer the question of using xkas or Spritetool, no I have not used anything like whatever those programs are ever. I did, in some of my previous posts, mention that I wasn't familiar with any of this so seeing and trying to use Ycompress for me is like a whole different language. As such I have absolutely no idea of what to do next now that I've found a way to get Ycompress to work and that is why I am asking so many questions that may seem elementary to all of you. So if you all know what I need to do now then I would certainly appreciate hearing it because I have no clue.

Depends on what your problem is now.
In case your ROM does not load when opened in an Emulator, it is corrupted, meaning it's useless for good in 99% of cases. A little explanation of what you DID and of what you TRIED and WHAT the exact problem is would be nice. As for the graphics, once you are done editing them with YY-CHR you can recompress them again (=> putting the file back into the ROM) using YCompress. Welp, I might write a GUI tool for extracting the graphics once I know how decompressing/recompressing is done, which I sadly don't :/
Anyway, even if your ROM is corrupted, some data may be rescued and level data will most likely survive incorrect recompressing. You may also create an IPS patch of the ROM and give it to me in case you feel it's corrupted and I will try to fix it.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
I happen to have some more info

Code
BG3 TS		Sprites
02		036, 03F, 073, 0A5, 0DB
05		039, 057
06		051
07		?
16		154


16 actually doesn't really belong there, it's for the Chomp Shark. You can try and play around with the Sprites mentioned, there should be descriptions for them in GE. I don't really know about 07, Romi seems to have found out, that this one is required for certain BG3 objects as well, however that BG3 Tileset was never used in the game.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
You don't seem to understand how it works. The graphics of Yoshi's Island are consisting of different GFX files which are loaded throughout the game. When using YCompress, all of them are decompressed at once and stuffed into a single file. When you recompress, ALL of the graphics in that file are compressed back into the ROM. When decompressing the graphics (aka creating an AllGFX.bin file), you use the command "ycompress 0 yirom.smc allgfx.bin". When you want to recompress the graphics (aka making the graphics of a ROM equal to the graphics in an AllGFX.bin file) you use the command "ycompress 1 120200 yirom.smc allgfx.bin". The "120200" tells the tool where to start, the default is PC-Address 0x120200, so type that in if you don't want to mess things up.

On a side note, you DO realize that these are GBA graphics and thus are irrelevant for your purpose?

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Yes, I get that, no harm meant, that's why I explained it in detail. Anyway, feel free to ask if there's more you need to know.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Having no Admin privileges is always crap. Go and buy a computer for yourself.
If you can still open cmd.exe (Windows Commandline) you might be able to still use ycompress. You can try and run the Commandline, it will probably show something like this at first:
"C:/Users/{YourName}>"
You can navigate through your folder then. By typing "dir" and pressing Enter, you can see all the contents of the current directory. To switch directories you can type in "cd {NameOfDirectory}" or "cd .." in order to go back one folder.
So in case the ycompress AND the ROM are both located in C:/Users/{YourName}/Desktop/YI Hacking/ you would do it like this:
Code
cd Desktop
cd "YI Hacking"
ycompress 0 yirom.smc allgfx.bin


It's hard if you've never done such things before, so the more you learn the better.

You can still try and google some things about the Commandline.

--------------------
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Pages: « 1 2112 113 114 115 »
Yoshis Fan's Profile - Posts by Yoshis Fan

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