(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
03-29-24 01:15 PM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - can i have help with super metroid hex editing? New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
me-is-liam
Newcomer








Since: 12-09-06
From: barnsley, england, earth, the milky way, the universe

Last post: 6267 days
Last view: 6258 days
Posted on 01-27-07 04:56 PM Link | Quote
hi, iv'e been working on a hack for a while, but theres a few things i need to know to finish it. can anyone please help me with a few questions about editing it in hex?

*what are the addresses for the beams? i'd like to edit there individual speed and damage, and allow only charge and one other beam to be equiped at once.

*how can i add a new room, or new type of enemy or item?

*how can i protect my rom from being opened in SMILE?

*how can i make samus start with some items/ make her lose items at a certain point?

there were a few more but i can't remeber the at this moment in time,

thanks in advance.
Registrar
Newcomer


 





Since: 01-28-07

Last post: 6269 days
Last view: 6268 days
Posted on 01-28-07 10:20 AM Link | Quote
1) check out Kejardon's documentation on SM at http://drewseph.zophar.net/Kejardon/ .He may have information on the properties of the beams

2) There have been plenty of questions like this in the past. You should be able to find some documentation on using SMILE

3) to lock out people from editing your hack in smile, just change $80:82A6 to any value other that $04

4) to make Samus start with different items would be a very easy ASM hack. First you need to look at the values at $7E:09A2 - 09A9.

$7E:09A2-09A3 = Equipped Inventory 
-----------------------------------------------------------===================
$7E:09A4-09A5 | Inventory | $ - - x - x x x x---->[ Varia Suit ]
------------------------------ | | | | | | | +=================+
| | | | | | | '------>[ Spring Ball ]
| | | | | | | +=================+
| | | | | | '-------->[ Morph Ball ]
| | | | | | +=================+
| | | | | '---------->[ Screw Attack ]
| | | | | +=================+
| | | | '------------>[ *Unused* ]
| | | | +=================+
| | | '-------------->[ Gravity Suit ]
| | | +=================+
| '-'---------------->[ *Unused* ]
| ===================
| $ x x x x - - x x---->[ High Jump Boots ]
| | | | | | | | +=================+
| | | | | | | '------>[ Space Jump ]
| | | | | | | +=================+
| | | | | '-'-------->[ *Unused* ]
| | | | | +=================+
| | | | '------------>[ Bomb ]
| | | | +=================+
| | | '-------------->[ Speed Booster ]
| | | +=================+
| | '---------------->[ Grapple Beam ]
| | +=================+
| '------------------>[ X-Ray Scope ]
| ===================
-----------------------------------------------------------===================
$7E:09A6-09A7 | Equipped Beam| $ - - - - x x x x---->[ Wave Beam ]
------------------------------ | | | | | | | +=================+
| | | | | | | '------>[ Ice Beam ]
| | | | | | | +=================+
*$0000 = Power Beam Equiped | | | | | | '-------->[ Spazer ]
| | | | | | +=================+
*$0020 = Machine Gun Equiped | | | | | '---------->[ Plasma Beam ]
| | | | | +=================+
| '-'-'-'------------>[ *Unused* ]
| ===================
| $ - - - x - - - -
| | | | | | | | | +=================+
| | | | | '-'-'-'---->[ *Unused* ]
| | | | | +=================+
| | | | '------------>[ Charge Beam ]
| | | | +=================+
| '-'-'-------------->[ *Unused* ]
| ===================
------------------------------------------------------------------------------
$09A8-09A9 = Beam Inventory



Next, when a new game begins, you need to see where the game sets up the initial values at these locations by using a debugger that breaks when these values are modified. after that point in the program, simply insert a piece of code that logically ORs in the desired settings.

On having equipment being removed, thats more tricky, because you need to add an ASM program that is triggered when you want the equipment removed. The actual process of removing the equipment is easy. Just check to see if the equipment you want to remove is present by ANDing the desired values, then (if you have the equipment) proceed to Exclusive OR the equipment in order to remove it. If you fail to test if you have the equipment, in the case that you don't you will actually be given what was to be taken away!

(edit by freedos+: you suck at <pre>


(edited by FreeDOS + on 01-28-07 05:21 AM)
Jathys

Goomba


 





Since: 12-26-05

Last post: 6252 days
Last view: 6250 days
Posted on 01-28-07 06:14 PM Link | Quote
>3) to lock out people from editing your hack in smile, just change $80:82A6 to
>any value other that $04

No, that won't work. Why? Because it is now public knowledge. If you try to protect it using that byte, anyone can unprotect it simply by changing it back.

There are several ways of protecting your ROM with/from SMILE (and many of these can be found by researching the "known issues" document included with SMILE and doing a little experimentation).

*Why* protect hacks? Not to prevent people from "stealing" your work. The only real reason is to make people actually *try* to beat the game before they cheat at it by editing it. There are always work-arounds, but what is important is the *effort*. When I release Alliance, it will be as fully protected as SMILE will allow. A month or two later, I will release a non-protected version. Why? Because people will be curious as to how certain things are done (the hackers), but I want other people to have to put forth a good effort first (the players).


(edited by Jathys on 01-28-07 12:38 PM)
me-is-liam
Newcomer








Since: 12-09-06
From: barnsley, england, earth, the milky way, the universe

Last post: 6267 days
Last view: 6258 days
Posted on 01-28-07 09:16 PM Link | Quote
thanks, your replies helped alot, but i'm still a little unsure about the first one and i have another question:

how can i disable the intro, but keep the ceres bit?


(edited by me-is-liam on 01-28-07 03:27 PM)
Registrar
Newcomer


 





Since: 01-28-07

Last post: 6269 days
Last view: 6268 days
Posted on 01-28-07 11:26 PM Link | Quote
To make the game skip the intro, but not Ceres is going to take a little research on your part, but it should not be too tough.

One way to do this is to recognize that if you start a new game and watch the intro all the way to the point that you are actually in Ceres standing on the elevator, and then if you reset the game without doing anything, then the game will remember that you already watched the intro and not force you to watch it again when you open the file back up. This means that the game modified SRAM (Save RAM starting at $70:0000 (i believe)) in such a way to remember this. All you have to do is have the game write to SRAM to the location telling it that the intro has been watched immediately after the game starts a new game. It is a simple ASM hack, but you need to discover where in SRAM the flag for this behavior lies, and you also need to find where in the program the 'start new game' program is. Once again a debugger is your best friend.

Alternatively you could look at RAM location $7E:0998, which describes the game mode the program is in. For instance, a value of #$08 means the game is running the main engine. If you watch this value as the game progresses, you can see what number corresponds to 'initiate new game mode' , and following that, you can discover how the game uses it to redirect to the ' initiate new game' routine. Once you find the location of the routine, modify it to your hearts content.

I know this is a little bit dense, but these are fairly basic hacking techniques. Nobody said hacking was easy. I might start a thread on SNES ASM in a bit to ease the steep learning curve of SNES hacking.
me-is-liam
Newcomer








Since: 12-09-06
From: barnsley, england, earth, the milky way, the universe

Last post: 6267 days
Last view: 6258 days
Posted on 01-30-07 05:08 PM Link | Quote
thanks, you can probably tell i'm kind of a beginner, ive only been hacking a few months, but that seems quite simple.
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - can i have help with super metroid hex editing? |


ABII

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

Page rendered in 0.015 seconds; used 380.94 kB (max 457.49 kB)