![]() |
| Register | Login | |||||
|
Main
| Memberlist
| Active users
| Calendar
| Chat
| Online users Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album |
|
| | |||
| Acmlm's Board - I3 Archive - - Posts by 1169 |
| Pages: 1 2 |
| User | Post | ||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Hi all, I am new to ROM hacking and new to this bulletin board.
I am having some problems with getting custom blocks to work in Lunar Magic (version 1.63); specifically I am having trouble getting graphics to stick. I can import the blocks fine — I have just started playing with them, ultimately I want to get SM3 pipes working, but for now I am working with the instant death block — when I place one down and run in to it I die as expected; but for the life of me I can't get graphics to stick. I also can't get the 'behave like' to stick. This is exactly what I am doing (after importing the block to 0x300 (768 dec)), any help pointing out where I am going wrong would be MUCH appreciated. - Editors > 16 x 16 Tile Map Editor - Select Tile 0x300 (says it is selected for editing in status bar) - Click Edit 16 x 16 Attributes - Set Tile 1 to DA, Tile 2 to DB, Tile 3 to DC, Tile 4 to DD (to make it look like the red 'on switch' from page 2) - Set Use Palette 7 - Set 'Behave Like' to 25 (it says to set it to 25 in the description of the block) - Press OK - (the little preview window down the bottom looks like the red on box, but the tile in the big window at the top doesn't look like it) - Press F9 - Prompt comes up asking if I want to save it to ROM, I press Yes When I close the editor and reopen it the box has reverted to the default empty box look and the 'Behave Like' is set to 130 (the default) I have been doing this for about and hour and am ripping what is left of my hair out. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Thanks, that works great. I knew I must be missing some small step. | |||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| I was just now implementing the SM3 pipes into my hack, and while I got them working fine I was a bit perplexed as to why they weren't showing custom tooltips. I had read in the help files that you simply need to create a .dsc file with the name of your rom in a certain format; I had also noticed that Block Tool did this, or so I thought.
Upon closer inspection I noticed two things which might help other people with the same problem (sorry if it has been posted else where, I did a quick scan and couldn't see it): - Block Tool doesn't handle long names very well and trims the name before creating the .dsc file; my file was one character 'too long' and as a result it wasn't matching up. - Block Tool does not insert the required 0 after the first tab, it just inserts (well nothing) and tabs to the description. So if you custom tips aren't showing up, check the name of the .dsc file exactly matches your roms name; and check that it has 0s (or 1s if you need it) after the first tab: e.g. 300[tab]0[tab]SM3 Pipe - Top Left Cap\nThis is the left side of the... not 300[tab][tab]SM3 Pipe - Top Left Cap\nThis is the left side of the... (edited by lynch82 on 03-27-06 09:50 AM) |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Perhaps my version is out of date (version 2.0 according to readme and about). Or mabey I am just doing something wrong in blocktool . . . though it seems basic enough, lol. | |||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Does anyone have a list (or partial list) of RAM addresses/offsets?
I keep seeing references that this: http://somnolence.ath.cx/memmap/ is the best reference . . . only problem is that link doesn't work. I am also aware of the following: - http://lavenderjade.hyuri.org/Mario/memorymap.php - which claims to be based on the above, but doesn't seem to actually have much. - http://board.acmlm.org/archive/thread.php?id=10318&page=0 - which is bloody useful, but is a list of ROM. - http://smwcentral.pure-text.com/?p=offsets - useful, but once again it is a list of ROM. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| == Background (skip to Questions if you don't need to know) ==
Hi, I am new to SNES hacking. During the day I am a analytical scientist, and have a background in programming. I am even grounded in ASM (I used to write software for electronic cash registers) � I am telling you this only because I am trying to get the point across that I am not an idiot; I am simply someone looking for intelligent discussion and information. I have been at SNES hacking (specifically SMW hacking) for a few days now, and this is about the sum of my knowledge: - Custom Blocks: Understood. A good RAM address/offset list would be nice though. I have made a few play-around blocks; and I have implemented the SM3 pipe hack into my ROM. - Map16: I know enough to use custom blocks, and have figured out (with help) all the oddities of the Lunar Magic Map16 editor. - Entrance/Exits: I am pretty sure I understand them; have played around with them for hours and can achieve what I want. == Questions == 1) I have asked for a link to a good RAM map in another thread; but hear I will ask a specific question. I want to set various flags that a) will be accessible from any where; and b) will be saved when the game saves (as in a SMW save; not a state dump). Anyone know where I might find such memory space? 2) How do I get custom code to fire once during the loading of a particular level? I want to replace the sprites used for various monsters for a particular level (but I want them to remain the same in other levels). I am currently looking at LevelASM and it seems brilliant; but at the same time it seems overkill for what I want to do. Also it fires every frame (I realise I could set a flag (if I had a bloody RAM map of free flag space; but it seems messy). 3) How do I temporarily alter the behaviour of monsters? Specifically I want to "freeze" monsters . . . I know how to change which sprites they use to render, so I can 'graphically' freeze them already; but I want to make them a) stop moving; b) act like a harmless block. I originally started searching the memory for a "act like" variable for sprites; but then I realised this logic was probably flawed as I don't want to freeze all of a sprite type; only a particular instance... e.g. the troopa I just hit with my "fire" ball. . . . Any help you can provide will be much appreciated. Don't be afraid to just point me at other threads (though if they are long, a page number might be nice if you have something specific in mind); or to even just point me at RAM addresses as a starting point. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Excellent, thank you greatly. | |||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Thanks, it is a useful start. Atleast I know where SRAM is now
I guess my question though is more along the lines of, are you aware of an research in to how the saving mechanism works. My theory would be that there are particular blocks of SRAM which are related to the various games (1P Game 1, 1P Game 2, etc) and when the cames are cleared the related block of SRAM is zero valued. Ofcourse perhaps flags are just dupicated for the various games and there is a sub-routine which zero values address by address (not an entire block). So I was wondering if anyone had any information on the save mechanism in SMW . . . I have looked through all the ASM traces and ROM/RAM maps I can find and haven't seen anything . . . if no research exists I guess I will just start digging; but I am secretly hoping some does. Also, (once again I have looked through all the ROM/RAM maps and ASM traces I could find), is there any research on the location of the various sprites routines . . . e.g. where are they located in ROM? And (I suspect this might be buried in the link provided above; but I haven't had time to read it all yet) does any know how flexible the various (specifically sprite) routines are in the ROM, do they have enough of a buffer to allow the insertions of op-code jumps; or do you really have to decompile it and work with ASM; and when recompiling does it screw the ROMs ability to work with Lunar Magic? |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by HyperMackerel /slaps self in head My head wasn't in hacking mode when I wrote the question you answered . . . lol. Sorry for that noobish question. (My previous ASM experience was more along the lines of creating code - not modifying it; and the biggest question I had to keep asking myself was: how much room is there for expansion?) (edited by lynch82 on 03-29-06 10:11 PM) |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by Bio I assume by Metroid hack you mean a hack to make the sprite chase after you constantly and try kill you? If so, very cool I will have to play around with it tonight. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Edit: I slacked off a bit the last few days; but am back at mapping Yoshi. I am removing the (3 paragraph) intro from the post to make it easier to read. Below is my research in to Yoshi related sub-routines. I have also included (at the bottom) Yoshi related info found by others.
==== 01ed9e to 01edcd Is fired (once) as Mario attempts to dismount Yoshi. 01edce to 01ede1 Is fired (once) as Mario attempts to mount or dismount yoshi. 01ea75 to 01eb4d and 01ebca to 01ebe2 Are called every frame (or more?) when Yoshi is active (it doesn't matter if Yoshi is on the screen or not, so I suspect it has more to do with Yoshi's behaviour then rendering) 01eb4e to 01ebb3 Are called every frame (or more?) when Mario is on Yoshi - only when he is on Yoshi . . . it starts being called as soon as Mario touches the top of Yoshis interactive "box". 01ede3 Is read as Mario mounts Yoshi. 01ede2 Is read as Mario dismounts Yoshi. 01ebc0 Is read when Mario jumps off Yoshi and Yoshi is facing left . . . 01ebc1 Is read when Mario jumps off Yoshi and Yoshi is facing right. . . ==== Mabey Related: 01ea70 to 01ea75 Are called every frame regardless of wether Yoshi is up or not; but given the closeness to the other Yoshi code (and the fact 01ea6F is not called), my unconfirmed guess would be this is the code that checks wether Yoshi is up or not. ==== Other Peoples Research (mainly flags) (from the SMW Memory Map e.g. not my research) 7E13C7 Yoshi colour (4=yellow, 6=blue, 8=red, A=green - refreshes on level change) 7E1410 Yoshi Has Wings flag # 1. The value 02 enables it. This doesn't handle the flying ability. 7E160E Table related to Yoshi eating stuff (I am going to look in to this one tonight see if I can't figure more out) 7E1616 Yoshi's mouth flag 7E18AC Yoshi Swallow Frame Counter/Status 7E18E2 Loose Yoshi Flag (if set, any Yoshis spawned become 1ups instead) 7E1B95 Player::Yoshi has Wings Flag (edited by lynch82 on 04-01-06 08:03 AM) |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by ghettoyouth Excellent (: thanks. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by ghettoyouth I wil keep an eye out for that address for you. Although if we can't find it we know the location of a block of code that only executes when Mario is on Yoshi; so you could replace some of it with a jump to some custom code that disables the down key (if that address is known, I think I read it somewhere) Ofcourse you wouldn't want to do that until we know the address for unmounting (currently I have only found 2 single word addresses, which seperately get called depending on direction, not enough for a jump) The other downside of that way (appart from being alittle messy) is that yoshi can't go down pipes if the down key is disabled. (edited by lynch82 on 03-30-06 09:26 AM) |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by Stephan Reiken Thanks for the comment, and the link. I wasn't really trying to sell myself short; I was just being cautious. I don't know what the general level of ASM ROM-hacking knowledge is around here, so I want to make it clear I was new; so as to not frustrate people if my methods are to slow or brutish. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Level 105 is, um, very pink . . .
I think it might work quite well with a pastelish background; but on black it is just disturbing. And I don't really like the cyan on level 107; Sorry to be harsh, but level 107 really does just look like a bad pallet job. But, if you work on level 105 a bit more; and you add some nice colour matched backgrounds and build a theme from there it might just work. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Hi, I am new to the scene as well but have previous ASM experience which I have found helpful to date.
I can't help you atm, but one of my goals this weekend is to implement shyguys (yoshi island style), and I was planning on doing it in exactly the same way you mentioned . . . so if no one posts a reply before I get it done i will come back and tell you exactly how I achieved it (and I don't plan on giving up until I get it done). I can't give you an exact time though, but it will be sometime this weekend . . . I just want to finish mapping Yoshi a bit better first. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| You could make it do it in the middle of the level; but heck you COULD do anything if you hacked long enough.
What I believe smallhacker was saying, and what I can confirm from experience is Yoshi's colour is stored elsewhere (address unknown), changing the yoshi flag (mentioned above) mid-level does nothing as it resets to the value it was at the start of the level every frame. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| It really depends on the nature of the value. The logical way to do it would be to set a flag and use a branch based on the flag in your routine so the guts of your routine doesn't fire if the flag is set.
The problem with this is that as far as I know LevelASM doesn't allow you to put code in the 'exiting' code of a level which means you have no way of reseting the flag via LevelASM . . . you could always find the code that executes when you leave a level an manually insert it. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
| Ok, well I have more than enough information to do what I want to do to Yoshi; so I probably won't be updating this thread for a while (unless i get bored and want to map him more for fun).
I hope other people find this information useful; I know I have found the mount and dismout routines very handy. |
|||
|
1169 Red Goomba Since: 03-27-06 From: Gold Coast, Australia Last post: 6222 days Last view: 6222 days |
| ||
Originally posted by MathOnNapkins Handy to know. I knew 7E13C7 was being set every frame, but didn't bother to try find out where as I was focusing more on interaction than rendering; but I am glad someone did (: As for being in the same class as enemies, I think this is both true and partially-untrue. For the most part he acts the same as any other object on screen; but he has a much larger interaction scope than most objects. I suspect most enemies reuse a small set of sub-routines; where as yoshi seems to have quite a few of his own. Also Yoshi is one of the few objects which actively effects the rendering of mario (moving him up and down slightly as Yoshi moves, etc) It will actually be interesting to see (with more detailed testing) wether any of the sub-routines above fire for any other sprites. I ofcourse did many basic tests to confirm they were primarily Yoshi related; but still as many tests as I did I am sure there are a million more to do. Remember as well that there is more than one Yoshi. The little Yoshis, while seemingly still part of the same sprite, do not interact with Mario in the same way... the seem to use the same routines as 'kickable' objects. (edited by lynch82 on 04-02-06 10:06 PM) |
| Pages: 1 2 |
| Acmlm's Board - I3 Archive - - Posts by 1169 |