I still cannot make SMB1 use a different attribute engine!

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
I still cannot make SMB1 use a different attribute engine!
by on (#33389)
I have tried despretly all year (2007) to do this! But the difficulty of making SMB1 use a new attribute engine is too hard for me!

I really want some help, Especially to SMB Hackers. to give SMB new code for the Metatiles to have 1 palette attribute per metatile. If you can give me a lifesaving hand at this (Maybe make this a Team Hack), PM me.

And yes, I have read every NES-PPU document ever created!

by on (#33391)
Go ask DahrkDaiz (spelling?) about this. He already rewrote SMB1's tile engine.
Re: I still cannot make SMB1 use a different attribute engin
by on (#33392)
Dahrkdaiz said to me that I must find in the roms he provides only, So he cannot give me any of his work

He also had a HD crash in 2006. So it's no use there.

by on (#33396)
Ugh. I'll try not to be overly harsh here... but man.

Quote:
But the difficulty of making SMB1 use a new attribute engine is too hard for me!


Then maybe you should work on something simpler.

It seems like every other day you're in here asking someone to do something for you -- you've done this for years. Not just on this board, but on other boards I go to, too. And I don't think I've ever seen you actually produce anything.

That said... I don't think there will be many people willing to help you since you seem to be incapable of doing things on your own. Why would someone join with you to do a "team hack" when they'd basically be doing all the work and giving you half the credit?

Your visions are too grandios. Everything you want to try to do is always out of your reach. You need to tone things down and set your sights a little lower so that you can actually accomplish something... because when you accomplish something, you learn from it, then can accomplish more on your next go around. If you keep working at it, these grandios ideas you have will be within your reach eventually. But banging your head against the wall won't accomplish anything.

Here's a few things you should really take to heart and consider:

If you have to ask someone else to do the work for you -- then try something else instead. You're not going to learn anything by having someone else do the work -- not to mention you're not going to make any friends by constantly hitting people up for huge favors without ever really offering anything in return.

Asking for help is fine. There are a lot of people who are willing to help, but you'll be much better received if you actually look like you're trying to learn, rather than if you're just trying to accomplish X goal. Don't ask for a solution, per se, but instead ask for how you can go about finding that solution. Expect to be frustrated, expect to mess up a lot, and expect to do lots of work -- ROM hacking is a very slow process and it takes a lot of doing stuff wrong before you learn how to do it right. If you can show people that you're willing to put in the work and make the effort to learn, you'll get much more help than you would otherwise.

Asking for someone else to do the work is not the same thing as asking for help. Just don't do it. We have better things to do with our time than be your personal software developer. This is bad on SO many levels -- not only does it give the impression that you're just not willing to work at all -- but it also is just generally very irritating.

Avoid singling people out unless you're asking specifically about one of their projects. Dwedit suggested you talk to DD because he worked on SMB a while back -- but I would argue that's bad advice. Maybe post places where DD visits so he would see your question instead. He'll see your question all the same there, and if he has an answer he'll answer it... but other people will have the opportunity to answer it as well. If nobody responds to your public post, then maybe consider sending him a private message. This depends on the person, too... DD might not mind being singled out, but some people (like myself) do.

Learn to ask a good question. This involves:
1) Being clear about what problem you're having
2) Listing as much about the problem as you know (including what could be causing it, when it happens, etc). This doesn't really apply much to this paticular SMB attribute problem though.
3) Listing things you tried to fix the problem, and how well each of them worked.

Don't expect an answer. Don't expect people to offer to help. Sometimes people just don't have an answer or aren't willing to help. If that happens, move on... don't keep repeating yourself.

Don't be pretentious. Saying "thanks in advance" is a good, polite thing to do, but saying "Good luck!" after you've 'assigned' one of us a project is a terrible, aggrivating, and just incredibly annoying thing to do. You've done this multiple times in the past and each time just made me want to punch you.


That's all I can think of right now. If you want to pursue this SMB attribute problem, I would suggest examining the drawing routines in the SMB disassembly:

http://www.romhacking.net/docs/344/

It doesn't get much easier than working with a reassembleable, commented disassembly. Though any major engine change like this is going to be a lot of work. Like I say you might want to start smaller.

by on (#33406)
Grandios sounds like a delicious breakfast cereal.

by on (#33408)
Am I the only one having difficulty in figuring out just what it is Hamtaro's trying to accomplish here?

by on (#33410)
And since when does any of his projects make sense? =)

by on (#33412)
It sounds to me like he wants a separate palette for each 8x8 tile (metatile?), a la MMC5, but he could also be asking for delicious chocolate pudding. *shrug*

.....

Someody make me some pudding. I'll give you full credit in the README.

by on (#33413)
BMF54123 wrote:
It sounds to me like he wants a separate palette for each 8x8 tile (metatile?), a la MMC5, but he could also be asking for delicious chocolate pudding. *shrug*

.....

Someody make me some pudding. I'll give you full credit in the README.


Please stop going off topic, Thank you.

I meant 16x16 metatiles. and with seperate Attributes for palettes. Just like ABoneToChew's BLOCKS demo. It is downloadable via NESDEV.COM (The Main Site)

by on (#33414)
Did you read Disch's post? :?

by on (#33415)
Hamtaro126 wrote:
Please stop going off topic, Thank you.

That was only partially off-topic, as I was legitimately trying to decipher what the hell you meant in your first post.

Jeez, annoying and humorless.

by on (#33416)
I think it night have had something to do with the difference between one attribute value per "object" (e.g. a castle) and one attribute value per metatile within the object.

by on (#33417)
Hamtaro126 wrote:
Please stop going off topic, Thank you.

As in Europe, I am myself already off tropic. I don't know about you guys, tough.

by on (#33418)
Okay, let me try to explain this carefully...in order to use customizable palette attributes for each metatile, you have to change the way the palette attribute for each metatile is loaded. In order to do what you have in mind, you would need to make an attribute look-up table similar to the metatile graphics table (because of metatile number skipping), but with one entry instead of four. You then have to modify the attribute table rendering code in order for this look-up table to have any effect.

It goes without saying that you need space to put all of this stuff. Where you're gonna find said space, I don't know, because SMB is very tightly coded.

by on (#33419)
Bregalad wrote:
I am myself already off tropic.


Could you be more pacific?

by on (#33420)
Disch wrote:
Bregalad wrote:
I am myself already off tropic.


Could you be more pacific?


Finally one of Hamtaro's threads gets the level of attention it deserves - none :)

I'm still convinced this is a joke, and he's been dragging us down for months.

by on (#33421)
doppelganger wrote:
It goes without saying that you need space to put all of this stuff. Where you're gonna find said space, I don't know, because SMB is very tightly coded.

  1. Rearrange the disassembled program into segments roughly 8 KiB in size.
  2. Toss each into a 16 KiB bank of an UNROM.
  3. Grab a 7 UP, the UNCOLA.
  4. Rewrite as much as you want.
  5. ???
  6. PROFIT!

by on (#33424)
5. Successfully divide by zero (while playing Duke Nukem Forever).

by on (#33428)
teaguecl wrote:
I'm still convinced this is a joke, and he's been dragging us down for months.


I'm still laughing from the time he wanted to port SMB to the b&w Gameboy!

Is it only me, or did he not come up with these threads until after Doppleganger released his reverse-engineered SMB source?

by on (#33430)
I'm not laughing, this is sad... I was kinda like him once, coming up with a new project every week, and never getting close to progressing 1% into them. Hopefully, he will eventually realize that this is not how you finish things. You just have to focus on that ONE thing that's important to you at the moment, and then, if you keep interested, *maybe* you'll be able to finish it.

by on (#33431)
After a little tought I guess regardless what is anyone's projects, how they look like and how far one progresses for it, the most important is to enjoy doing it. Even thinking about things that are impossible can become ejoyable, so....

However, since I haven't released a game I build myself yet or anything like that, I'll sut up until I do.

by on (#33433)
Not all of his ideas are bad. I think it would be sweet to port the original SMB to the original GB. But that's a tall order as we all know. You'd have to have a very good understanding of both systems and spend alot of time rewriting alot of code. Maybe you're right that he enjoys coming up with grand ideas like these. It is fun to dream afterall. The problem comes when he wants others to realize them for him or under estimating just how tough something will be.

by on (#33436)
Hamtaro126 wrote:
BMF54123 wrote:
It sounds to me like he wants a separate palette for each 8x8 tile (metatile?), a la MMC5, but he could also be asking for delicious chocolate pudding. *shrug*

.....

Someody make me some pudding. I'll give you full credit in the README.


Please stop going off topic, Thank you.

I meant 16x16 metatiles. and with seperate Attributes for palettes. Just like ABoneToChew's BLOCKS demo. It is downloadable via NESDEV.COM (The Main Site)


Wow shut up stop harassing people. People need fucking jokes once in a while. This isn't the goddamn Marines.

by on (#33438)
doppelganger wrote:
Okay, let me try to explain this carefully...in order to use customizable palette attributes for each metatile, you have to change the way the palette attribute for each metatile is loaded. In order to do what you have in mind, you would need to make an attribute look-up table similar to the metatile graphics table (because of metatile number skipping), but with one entry instead of four. You then have to modify the attribute table rendering code in order for this look-up table to have any effect.

It goes without saying that you need space to put all of this stuff. Where you're gonna find said space, I don't know, because SMB is very tightly coded.


I can use part of the SMB-Special NES port source code (The one in the RHDN Forums) and put the sound in another bank (Bankswitching), Use the leftover space for that. Maybe port it to Sunsoft FME/Mapper 69 (The most succesful mapper I ported SMB on).

Note that I can have more extra space in INES mapper 69 (Sunsoft FME7), It has a optional RAM/ROM bank in 6000-7FFF. But IRQs are disabled for the moment

PS: Unrom requires CHR-RAM, I am not there yet. as I am not doing that right now.

PS2: I might try and create a fake UNROM-compatible mapper to handle PRG-ROM in 6000-7FFF. But I need to find a Very Lightweight/Small C(++) Compiler instead of MS Visual C(++) to compile a mapper (I might use NESTEN or GNES).

PS3: I wish there was a FREEBASIC NES emulator.

by on (#33440)
Hamtaro126 wrote:
PS2: I might try and create a fake UNROM-compatible mapper to handle PRG-ROM in 6000-7FFF. But I need to find a Very Lightweight/Small C(++) Compiler instead of MS Visual C(++) to compile a mapper (I might use NESTEN or GNES).


Don't do this.

by on (#33441)
Disch wrote:
Hamtaro126 wrote:
PS2: I might try and create a fake UNROM-compatible mapper to handle PRG-ROM in 6000-7FFF. But I need to find a Very Lightweight/Small C(++) Compiler instead of MS Visual C(++) to compile a mapper (I might use NESTEN or GNES).


Don't do this.


Well, It is technically possible to modify a cartridge to do it like that.

But otherwise, I cannot do it.

by on (#33442)
If you want to use UNROM, break up the program into section and make a dispatcher in $C000-$FFFF that switches in the appropriate section when a subroutine gets called.

by on (#33444)
Hamtaro126 wrote:
PS: Unrom requires CHR-RAM, I am not there yet. as I am not doing that right now.

Man, if you are worried about something as simple as copying 8KB of data to VRAM just once (since SMB originally uses only 8KB of CHR-ROM, you don't need any sort of CHR manipulation afterwards), you really shouldn't be trying the rest of this stuff!

by on (#33448)
Hamtaro126 wrote:
Well, It is technically possible to modify a cartridge to do it like that.


Until such a cartridge physically exists, you should not create a mapper number for it. It's hard enough for emulators to stay on top of mappers that actually exist -- fabricating "theoretical" mappers only makes things worse for everyone.

At any rate, I would say this isn't something worth doing for a ROM-hack. Just use an existing mapper.

by on (#33456)
Hamtaro126 wrote:
I can use part of the SMB-Special NES port source code (The one in the RHDN Forums) and put the sound in another bank (Bankswitching), Use the leftover space for that. Maybe port it to Sunsoft FME/Mapper 69 (The most succesful mapper I ported SMB on).

Note that I can have more extra space in INES mapper 69 (Sunsoft FME7), It has a optional RAM/ROM bank in 6000-7FFF. But IRQs are disabled for the moment

PS: Unrom requires CHR-RAM, I am not there yet. as I am not doing that right now.

PS2: I might try and create a fake UNROM-compatible mapper to handle PRG-ROM in 6000-7FFF. But I need to find a Very Lightweight/Small C(++) Compiler instead of MS Visual C(++) to compile a mapper (I might use NESTEN or GNES).

PS3: I wish there was a FREEBASIC NES emulator.


You're giving me a headache. :-(

by on (#33481)
You know his topic collides with my question.

How the fuck do I move the palette pointers? Like I want more that use the brown pallete, which is like palette $03 I think.

I need some solid $03 tiles.

Or better yet just tell me how to make the mushroom platforms's tops use palette 03

by on (#33484)
- I'm not teaching "how to pray" for a religious man, but... :P

1. I believe you own a source code that can be compiled and modified as you wish, right? Go to 3.
2. If you don't, so you must do it.
3. Did you find the "attribute engine"? There's no secret, as the PPU does the exact same "strategy", no matter the game.
4. If you know where's the "attribute engine", is this space enough? If the answer is NO, you need to change the mapper number into someone else that exists.
5. If you wrote about unable to change the attribute thing, so you're wrong. The game can work without an "attribute engine" (it's not an engine after all, that's the meaning of quotes).
6. Try to modify the thing and recompile it. Remember you need to find portions of data that's NOT program code, but tables... you know. ^_^;;

- Other than that, there's not much. If you "can't" it's because you barely knows how the present attribute thing work. Ditto.

by on (#36442)
CKY-2K/Clay Man wrote:
You know his topic collides with my question.

How the fuck do I move the palette pointers? Like I want more that use the brown pallete, which is like palette $03 I think.

I need some solid $03 tiles.

Or better yet just tell me how to make the mushroom platforms's tops use palette 03


It sounds like what you're trying to do is change the palette used by certain metatiles. Well, in order to do that you would have to move some entries around in the metatile graphics table. For example, if you wanted to make the mushroom metatiles ($19-$1b) use palette 3 you would have to move them to the palette 3 section of the table. I recommend placing them at the very end.

Be careful though, to make sure the palette pointer offsets point to the correct position in the metatile graphics table, or you'll end up with screwed-up graphics and possibly odd block behavior.

Also be aware that the metatile number itself is what governs the behavior of metatiles in the game. Make sure that the upper limit for solid and climbing metatiles is updated, or things may not work just right.

Oh, and because the metatile number of the metatiles that followed it will have changed due to bytes being moved, you'll have to take into account the fact that those numbers are used by other parts of the game...

In other words, what you propose to do is definitely full of potential pitfalls.

by on (#36456)
Did someone just bump a thread that is over a year old? That is wacky

I am working on the hack that does what I and CKY want, Swap the Metatile Attributes and Palette for Color #0 (Green) and Color #2 (Blue).

I just done a hack that Unseperates bricks and changes Question Blocks to use Color #1 now (the Bricks with the Line are now Question Blocks)