(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
04-23-23 05:41 PM
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
Posted on 03-27-06 10:12 AM, in Custom Block Woes Link
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
Posted on 03-27-06 10:25 AM, in Custom Block Woes Link
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
Posted on 03-27-06 11:49 AM, in Custom Tooltips for Imported (Custom) Blocks Link
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
Posted on 03-28-06 10:04 AM, in Custom Tooltips for Imported (Custom) Blocks Link
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
Posted on 03-29-06 09:17 AM, in RAM Addresses? Link
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
Posted on 03-29-06 11:20 AM, in New Hacker - Looking for some info; clearly worded ASM questions. Please help if you can. Link
== 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
Posted on 03-29-06 11:39 AM, in RAM Addresses? Link
Excellent, thank you greatly.
1169

Red Goomba


 





Since: 03-27-06
From: Gold Coast, Australia

Last post: 6222 days
Last view: 6222 days
Posted on 03-29-06 11:04 PM, in New Hacker - Looking for some info; clearly worded ASM questions. Please help if you can. Link
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
Posted on 03-30-06 12:09 AM, in New Hacker - Looking for some info; clearly worded ASM questions. Please help if you can. Link
Originally posted by HyperMackerel
Most of the time you'll have to patch into them to have them jump to some free space elsewhere. All you really have to do is replace as many instructions of it as you need with a jump/call, and make sure to execute those instructions somewhere in your new code.


/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
Posted on 03-30-06 01:21 AM, in SMB3 Cannons Link
Originally posted by Bio
come on, just release it to everybody...

that remind me, I should release my metroid code

edit: enter this code in MWR: 000012041080E78F0DE8 over a sprite
after, go to an empty area and enter this code: (replace the XX with the sprite number)

08 E2 30 B5 9E C9 XX F0 0C 28 B9 D7 8F 95 B6 B9 DF 8F 95 AA 6B A5 97 DD D4 14 90 10 F0 02 80 16 A5 96 69 08 D5 D8 90 04 F0 08 80 0A A9 F0 95 AA 80 08 74 AA 80 04 A9 10 95 AA A5 95 DD E0 14 90 0E F0 02 80 14 A5 94 D5 E4 90 04 F0 08 80 0A A9 F0 95 B6 80 08 74 B6 80 04 A9 10 95 B6 28 6B

then go to 0x91FE and put a JSL to the code you have entered and finally change 0x9202 to 0x9207 by EA, I will post the disasambly soon

note:this is the version without the glitch


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
Posted on 03-30-06 09:46 AM, in Yoshi related ASM sub-routines Link
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
Posted on 03-30-06 10:35 AM, in Yoshi related ASM sub-routines Link
Originally posted by ghettoyouth
xF4FF the subroutine for yoshi's tongue

sound effect adresses:

xF957 SFX that is played when Yoshi's egg breaks.
xA4C6 SFX that is played after the egg is broken.
xEF60 SFX that is played when Mario jumps on Yoshi
xF50F SFX that is played when Yoshi's tongue comes out.


Excellent (: thanks.
1169

Red Goomba


 





Since: 03-27-06
From: Gold Coast, Australia

Last post: 6222 days
Last view: 6222 days
Posted on 03-30-06 11:25 AM, in Yoshi related ASM sub-routines Link
Originally posted by ghettoyouth
no problem, i'm looking an adress to disable the ducking of yoshi. so if anyone finds it please post it here


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
Posted on 03-30-06 09:30 PM, in Yoshi related ASM sub-routines Link
Originally posted by Stephan Reiken

Dude, you are doing things way beyond the scope of most beginners. I don't really consider myself a vet, really I'm not that great at all, but you've come into this way ahead. Don't sell yourself short .

I don't know how much help it'd be, but there is some pretty in-depth stuff at http://www.zophar.net/tech/snes.html


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
Posted on 03-30-06 09:40 PM, in My hack so far... bubble bobble themed(SS) Link
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
Posted on 03-31-06 01:05 AM, in I'm at my wit's end, here... Link
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
Posted on 04-01-06 07:42 AM, in Yoshi related ASM sub-routines Link
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
Posted on 04-02-06 08:17 PM, in Quick LevelASM question from newbie Link
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
Posted on 04-02-06 10:12 PM, in Yoshi related ASM sub-routines Link
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
Posted on 04-02-06 11:02 PM, in Yoshi related ASM sub-routines Link
Originally posted by MathOnNapkins
I was going to post this a few days ago, but I was bored so I wanted to see if there actually was a quick way to change yoshi's color and behavior - mid level.

I used Geiger's Snes9x Debugger and set a write breakpoint on $7E13C7. Turns out this value was getting updated every frame from a location in the array at $7E15F6, X. I don't know that location very well, but it appears to be in the middle of a group of other sprite information. This says to me that Yoshi is just another sprite object on screen that Mario interacts with... am I wrong? Like, is he in the same class as the enemies or is he seperate from them.

Anyways, if you can locate the entry in $7E15F6, X that corresponds to Yoshi, you can change his color to one of the values listed (4, 6, 8, A) and his color and behavior will change within the next frame. I could not figure out how the game knows which entry is Yoshi's since Geiger's isn't as advanced as I wanted it to be. That would have required breakpoints on things like writes to the X register, and being able to filter out certain addresses when using breakpoints. My point is that Yoshi is allocated as soon as he gets on screen, just like any other sprite, and thus his entry could appear at $7E15FE, $7E15F8, or any other byte in that array. I suspect the array is only 10 byte long but again I'm not familiar enough with this game to know for sure.


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


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.034 seconds; used 449.73 kB (max 576.15 kB)