| |||
Views: 88,542,154 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 05-05-24 08:57 PM |
|
Guest: Register | Login |
Main - Posts by DahrkDaiz |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 173/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
This is the thing: Levels in SMB3 are packed side by side. If you add a new object to a level, it has to spill over into another level's data. There's no way around this. However, if you create a hack "project", this essentially keeps all the levels in separate files. When you're ready to create the hack, it saves everything dynamically and creates the pointers on-the-fly so you can add objects without worrying about writing over other level data. However, you will still be limited to the banks allocated for specific level areas. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 174/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
yeah but SMB's quite a bit more complicated than that with different banks for different object sets |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 175/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
[1][1][1][1][2][2][2]
Lets say 1 represent level objects stored in level 1-1, 2 represents level objects stored in 1-2. By adding more objects in 1-1, you get this [1][1][1][1][1][1][2] Uh oh! [2]'s spaces has been invaded! Not only that, you're probably overwriting level header data at the sametime. Well why can't we just "push" [2]'s data over? Lets add a new level, call it 3, this will be the bonus room area for 1-1 [1][1][1][1][2][2][2][*3] * represents the address/pointer htat 1-1 uses to know what level to go to for a bonus area. Lets add more objects, this time pushing the data over [1][1][1][1][1][1][2][*2][2][3] Uh oh! The data moved, but the pointer doesn't change! When we try going to the bonus area in 1-1, it'll point to level data found in 2-2. In order to fix it, we have to find where level 3 went. But we have many levels packed side-by side, so many other levels will be affected by the shift. Plus the map pointers leading to the levels have to be fixed, and levels that are pointed to this bank from other banks have to be fixed and there's just no reasonable way to keep all track of it AAAAHHHH... Unless we store all the levels out of the rom and recalculate their pointers once you build the hack. Great idea DD! You should implement that! Will do! |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 177/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
No such table exists. blocks generally have 3 states:
solid, not solid, water These states are determined mathematically based off 6 values in a table per object set. These values designate a range of blocks that act as solid and/or water. Lava, ice, coins, etc etc are special cases. The game will check for a certain block table, in code, and handle it differently. How do I extend the block code to have more than one type of ice, lava, or other blocks? I create a routine that has a table of properties depending on object set, object #, etc etc and handle that object differently based on the environment. A good example is having underwater coins. Normally, coins cannot be under water except for in water stages, but I handle a certain block id that's in the water range. I then I increase the coin count, play the coin sound, change the coin into a water tile and wallah, under water coins. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 178/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
*jumps up and down* I wish I could hack again, but I can't D: I did some of this in Luigi's Coin Quest and this was very close to what my final product was meant to be. Sigh, real life has taken up so much of my time. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 179/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
I just happen to see this post is all. I still lurk around the forums. Like I said, I've been busy doing other stuff. Working, a ministry website, girlfriend, etc. I tried to get back into rom hacking last summer, but as soon as summer was over I had to leave my projects, again. I just can't devote myself to it anymore like I used to. I still have my SMB 3 editor I work on every now and then.
Teach you ASM: hacking, no. SMB3 Notes: I doubt I still have them. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 180/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Unfortunately, I just don't have the time to teach anyone how to hack. I spend more time programming/web site design anyways and switching between ASM hacking and programming in C# would through my brain into meltdown. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 181/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Just remember, I was at your position at one point to. A little rom hacker with big dreams and no clue how to get them done. I didn't ask people to teach me. I asked people to point me in the right direction. The materials and resources are out there for you to use. Just don't expect anybody to give you a hand out. Rom hacking is 20% actual work and 80% learning the process. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 182/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Im hacking again |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 183/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
I hope to have details/screens up by the end of the week. I'm doing this while I'm getting married and working, lol.
I can say that this hack will be aim for completion, not complete over haul. With my previous projects, I spent way too much time on doing ASM hacks and not enough time on level design. Plus, I kind of want to prove to the world you can make a great hack without extensive ASM hacking. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 184/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Whosa whatsa, how am I getting voted for best rom hacker when I haven't done anything in over a year??? Come on guys, please don't vote for me again, give it to someone more deserving.
Best ROM Hacker: kuja killer |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 185/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Stopping voting me in for Best Rom Hacker |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 186/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
How about hacking SMB3 to use a completely different level format so a level can be created absolutely anyway that you want. There would be an editor to go along with it so you can literally do 1 to 1 tile placement and basically "paint" a level. Also, every level would have it's own palette that you can create and up to 15 pointers that can go to different levels. How does that sound?
Btw, as for the TSA editor, I apologize, I'm not sure what the problem could be. It's written in vanilla C++, so no .DLL's are needed to run it. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 187/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Oh yeah, it will definitely take up more space, a lot more space. The editor will force the MMC5 mapper patch and expand the PRG ROM to 1 Meg. After a few compression ideas, I've decided on one that would take the first "page" of the first level and compressed down to 109 bytes (which expands to 416 bytes). It's just a command based compression routine I'm working on. The big advantage is just the fact you'll be able to design much much more complicated levels. By my calculations, on average, you should be able to create about 150 levels that are 15 pages long, which you know is a long level. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 188/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
The old editor I've discontinued. I'm working on a new editor that's more project based that will save everything outside of the rom then you can "commit" the changes to the rom later.
The editor and new level format will allow for the following: Unique palette for each level More than one level pointer, limit not sure of yet. Tile based level design with complete level design freedom Being able to set any graphics bank to be used for the level skin Custom background animation definitions per level Completely custom time for each level More accurate pointer exit placement (go to any point of another level) Cross bank levels No limit on level types (i.e. levels are not constrained to certain banks) so if you want 150 ice levels, you can do that. Edit 1: I hope to expand the functionality to maps as well. While I'm working on this, any suggestions would be great. Enemy support will for the most part remain unchanged. Also, chances for level glitches will be much more minimal. Also, it will be MUCH easier to program for than the original SMB3 format. Edit 2: I'm coming up with my new level header format. For the pointers, I decided to allow you to have as many pointers as you want, but each pointer takes up 11 bytes as of right now, so they can be costly. But you can use 1 pointer to cover an entire level. For documenting purposes, here's what I have so far for the level header: Edit 3: I'm not sure how much space will be available to keep pointer information so I may have to set a limit of number of pointers allowed on a level. CC GG BB PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP PP ML TT YY NN PP....FF CC = Fill the entire level with this value, it's sort of the "sky" tile GG = Graphic bank for the tile skin BB = Background color PP = Palette data (for sprites and objects) M = Music L = length (up to 15/0x0E) TT = Time x 10 (that's ten) so a value of 0x10 would be 160 seconds. Up to 999 YY = Starting Y position, MAY include X position if I can get it to work right. NN = Number of pointers PP = Pointer data FF = end header info, start data decompression Pointer format: LL LL LL SS SS ET XX YY AA AA LL = direct rom address of next level, a value of FFFFFFFF would exit the level SS = direct sprite address E = exit type (coming up a pipe, coming down a pipe, etc) T = level type (grass, hilly, etc) XX = X position to exit from YY = Y position to exit from AA = The "area" of the level covered. Example 0x24 0x98 would me if you were betwee page 2, tile 4 and page 9, tile 9, then this pointer would apply to it. Edit 4: Aw hell I'll go ahead and put my custom compression routine in here too: Edit 5: Seems I found an even better compression routine. I may create 2 or 3 routines and have the editor choose which compression is used, whichever makes a level smaller. This routine compress the data to about 20% smaller than before. WW DD SS WW = how much data you're about to write DD = the data you're writing SS = how far to move the "pointer" forward to skip writing so yeah, like I said, I may implement a few and have the editor to make a best choice for compression. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 189/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Maybe as an ASM pluging, low priority
Duely noted, I do want variable sized maps as well
Well, with the ability to completely customize all maps, will world order really matter for the maps?
duely noted
I've actually went and modified my pointer system where if the pointer ends the level, you can decide where on the map you return to
I hope to, like with the levels, allow you to decide what graphics banks you want per-map
Duely noted, may apply to levels as well As for the editor making it super easy and it's no longer hacking anymore, hell yeah it will! But a good level editor can't make up for great ideas and level design |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 190/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Posted by zbyte I'm not reducing the entrance range, I'm increasing it. Right now a pointer's range is on a page bound ($00-0F, $10-$1F, etc) with my pointer, you can set the range from $00-$EF or $11-$72, any range you want and it will be indicated on the editor below/above the level display. I may also make it so you can have a pointer within a pointer (i.e. one that ranges $10 to $60 then one that ranges inside it from $30 to $41, as an example). As far as all enemies in one graphical bank, impossible. It's an NES limitation. Weird objects weird objects wills till be weird. As I said, enemy editing will pretty much remain the same. Btw, Mario Adventure is going to be 6 years old in January. Articles are still being written on it after so long Crazy. I'm considering recruiting some serious help now. I'm eying a few hackers, but I'm not sure if any of them have the time or the drive to work on a hack with me. I'm mostly looking for graphics work, hack ideas and level designing. We'll see if I'm able to recruit a serious team. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 191/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Right now I'm focused strictly getting the level editing working and implemented into the rom. Maps will come later.
Kawa: lol get up, I'm not a lord or anything. I thought you were more of a Pokemon/RPG hacker? |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 192/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Ok so I've also decided to include a bit of unused level header space for people who are able to hack to the point that having unused data in the header would be extremely useful. I'm guessing 3 bytes of unused level header data would be enough. |
DahrkDaiz |
| ||
Nipper Plant Sandwich Artist Level: 46 Posts: 193/417 EXP: 674958 Next: 36816 Since: 02-22-07 Last post: 3496 days Last view: 3416 days |
Sweet, I may recruit you, we'll talk later on IRC. |
Main - Posts by DahrkDaiz |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 131, rows: 163/163, time: 0.231 seconds. |