Kuribo64
Views: 19,852,091 Home | Forums | Uploader | Wiki | Object databases | IRC
Rules/FAQ | Memberlist | Calendar | Stats | Online users | Last posts | Search
03-28-24 07:57 PM
Guest:

0 users reading SM64DS Editor Help Thread - Post your questions here | 3 bots

Main - General SM64DS hacking - SM64DS Editor Help Thread - Post your questions here Hide post layouts | New reply

Pages: 1 2 3 4 5 ... 60 61 62 63 64 65 66
StarPants
Posted on 04-02-18 01:29 PM Link | #93921
Well, the address of the general actor spawner function is 0x02010E2C (source: both ASM patch templates) but i don't think you want to touch that.

According to my recent ram watch session, when a Bob-omb explodes and respawns, the unique ID of the respawned Bob-omb is the same as the original Bob-omb's unique ID. Also, exploded Bob-ombs are "alive" in the Actor Death Table. My conclusion is that the Bob-ombs aren't actually despawned and respawned, they are just hidden for a moment. You would need to programmatically detect when a Bob-omb explodes in order to despawn it, but i don't know how to do that.

dy
(post deleted) #93939

dy
Posted on 04-04-18 01:30 PM (rev. 3 of 04-04-18 01:44 PM) Link | #93954
Yes!! Mini breakthrough for Yoshi lovers - figured out how to make Yoshi able to break red brick blocks and defeat Boos by ground pounding!

Following Fiachra's suggestion of setting a breakpoint on the SpawnActor method (0x02010E2C), which is triggered whenever a coin or other object is spawned, then tracing backwards - managed to figure out that 0x021162C8 is run when either Yoshi/Mario stomp on a Boo, but that the 3 conditional instructions in the red box only run for Yoshi.

So, by changing those 3 instructions to "nop" - Yoshi can ground pound Boos!! I'm guessing r1 is reading some kind of collision or vulnerability flag.

[thumbnail]


It's a bit more straightforward for red brick blocks (below image tutorial courtesy of Fiachra), which have an "OnGroundPounded" callback that enemy objects like Boos/Goombas don't seem to have.

Easiest way is to change the instruction at 0x020B3834 to "mov r2, 0h", which tricks the brick to read the player as being Mario.

[thumbnail]


Boo code is in overlay 63 and brick code is in overlay 2 (has anyone made an overlay search tool yet?)

Now to look into Yoshi's crouch kick / slide kick for Boos, and then other enemies/objects (eg, Bullies being knocked back when hit by egg, etc)! EDIT: Also doesn't work for the slightly bigger Boo with the cage - more work to do!

____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

StarPants
Posted on 04-04-18 03:04 PM Link | #93955
Great job! I tried it and it worked. I wish I was more familiar with No$gba.

StarPants
Posted on 04-08-18 10:42 AM (rev. 3 of 04-08-18 07:10 PM) Link | #93984
How can i use static libraries? What is that offset i need to enter?

Also, if i want to run some code every frame and call functions from my static or dynamic libraries or spawn actors, am i forced to make hooks with NSMBe or is there some other way around?

Edit: unrelatedly, does anyone know the actor id of Yoshi's egg? :P

natnew
Posted on 04-08-18 10:23 PM Link | #93992
Is there a way to make the player start with keys to the locked doors without them doing anything, or any way to get one without a long cutscene? Or just allow all characters to enter 8/30 star doors without keys (only Mario can enter them before the respective Bowser is beaten)

____________________

[image][image][image]

dy
Posted on 04-09-18 11:07 AM Link | #93998
Posted by natnew
Is there a way to make the player start with keys to the locked doors without them doing anything, or any way to get one without a long cutscene? Or just allow all characters to enter 8/30 star doors without keys (only Mario can enter them before the respective Bowser is beaten)


Here are some AR codes for the EUR rom that should do what you want:

Open All Doors
52144D50 E1500001
02144D44 EA00007B
02144E14 EA000047
02145CD8 EA000041
D2000000 00000000

Open Star Doors as Anyone
52145CB8 A3A00000
02145CB4 E3A01000
D2000000 00000000

Open Doors Without Stars
52145CA4 E3A03902
02145C98 E3A000FF
02144D54 EA000018
D2000000 00000000

Always Have Door Key
52144E28 EB000055
02144E24 EA000037
D2000000 00000000


PS: for the 12 and 30 star Bowser doors, you don't have to defeat Bowser first before anyone can enter (you just need Mario to open the door). Yoshi's flutter jump is awesome for these levels, as well as ability to grab hard to reach coins with his tongue.

____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

natnew
Posted on 04-09-18 07:08 PM Link | #94002
I'm looking for a code to add to the ROM, as Mario isn't available at all in my hack. I'm not sure how to add an AR code, as well.

____________________

[image][image][image]

dy
Posted on 04-10-18 12:54 AM (rev. 9 of 04-25-18 12:18 AM) Link | #94003
Once you learn how to interpret AR codes (http://nintendq.forumotion.com/t45-action-replay-code-types), it should be fairly easy to convert the to a ROM edit.

For example, the "Open Star Doors as Anyone" code is saying:
    52145CB8 A3A00000 // if value at address 02145CB8 is "A3A00000"
    02145CB4 E3A01000 // change the value at address 02145CB4 to "E3A01000"
    D2000000 00000000 // end the if-block

So now you just need to find where in the ROM to make this change. For addresses in the range 0201xxxx it's pretty easy, just drop the 2 and you have the offset for the ROM file. However, the 021xxxxx address tells me it's likely in an overlay (which are loaded and unloaded by the game as needed), so it's a bit trickier to find.

Below memory addresses assume the EUR rom, but same process applies for US/JAP roms (you just need to find the right AR codes for your ROM):

  1. Open the ROM in no$gba debugger (freeware, available here: http://problemkaputt.de/gba.htm. Make sure to get the debug version).

  2. When inside the castle, go to memory address 02145CB8 and note that, yes, the value at the address is "A3A00000" (this means we currently have the correct overlay loaded in-game):

  3. [thumbnail]

  4. Make a note of a couple of the values in that area - we'll need to search the overlays one by one until we find those values. Note also you need to reverse the order of the bytes (eg, "12345678" will appear as "78 56 34 12" in the ROM/overlays).

  5. You can use SM64DSe to extract the overlays. Make sure to decompress the overlays first before dumping ("More" > "Decompress Overlays Within Game").

  6. Now open each overlay in a hex editor and search for the relevant values - I usually pick a sequence of about 3 values to reduce risk of false positives. (UPDATE: just found out you can narrow down which overlays to look in by looking at arm9ovt.bin, see this post). I found the relevant values in overlay 100. Note how the values in the green/orange/red boxes match up against the values in no$gba (reversed bytes):

  7. [thumbnail]

  8. Now the AR code says we want to change the value at address 02145CB4 (the red boxes). From the above process, we now know this is offset 0x4F34 in overlay 100.

  9. Last step, create a new patch using SM64DSe ("More" > "Additional Patches"), making sure to tick the "Apply to Overlay (ID)" box and specify "100" in the field next to it. Now, in between START EUR and END EUR type the following:

    • 00004F34:
      00 10 A0 E3

    This tells the patch to change offset 00004F34 of overlay 100 to the specified value (note again how the bytes are reversed from the value given in the Action Replay code). Then just save and apply patch!

    ____________________

    - ASM resource for customising behaviour of player/objects/levels
    - NSMBe with direct overwrite feature

Summoned_Blade
Posted on 04-14-18 01:59 AM Link | #94054
I'm trying to change the amount of stars required to open the big star doors and was wondering if it is possible. If it is how would I do it.

dy
Posted on 04-14-18 08:06 AM (rev. 4 of 04-14-18 02:42 PM) Link | #94057
Posted by Summoned_Blade
I'm trying to change the amount of stars required to open the big star doors and was wondering if it is possible. If it is how would I do it.

@Summoned_Blade: Saw your post last week, just took me a while to get around to it. Just figured it out!

1. In SM64DSe, go to the "ARM 9 Overlays" tab and decompress and then extract Overlay_100
2. Open in a hex editor and go to offset 0x7610. The values you want to edit are as follows (remember to convert to hexadecimal): https://i.imgur.com/a7Fiph6.png
3. Open the SM64DSe text editor and change the following entries accordingly (note the use of hexadecimal for the "You need __ more" code): https://i.imgur.com/fD809a4.png
4. Finally, go back to the "ARM 9 Overlays" and replace Overlay_100 with your edited file. And your done!

Note: Editing the number of stars required for the 80 Star Door doesn't affect the endless stairs (there must be another check hardcoded somewhere). Also, if you change the number of stars required for the 80 Star Door to anything other than 80 (0x50 in hexadecimal), it will behave like the other Star Doors and not open unless you have the required number of stars. So change the text appropriately.


Update: Figured out how to change the star/character requirements for the Endless Stairs as well. See: https://kuribo64.net/board/thread.php?id=3550

____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

Summoned_Blade
Posted on 04-15-18 05:25 AM Link | #94072
@dy

Thank you so much and sorry for asking the question twice.

Summoned_Blade
Posted on 04-17-18 08:29 AM Link | #94116
I have another issue with the big star doors.

After collecting a certain amount of stars messages appears saying that you can open a certain big star door. I'm changing how many stars are required to open the big star doors. So how would I make the messages display when you have more stars to match the required amount of stars to open the big star doors?

dy
Posted on 04-18-18 06:48 AM Link | #94118
Here is the function that calls checks how many stars the player has and chooses which message to display (it's in overlay 2):

[thumbnail]

The numbers in red are in hexadecimal and should look familiar. It's basically a giant switch table - bgt means goto if greater than, bge means goto if greater than or equal, blt means goto if less than, beq means goto if equal.

It's a fair bit of work for not much gameplay value. Alternatively, just change the instruction at 0x020C6E38 to "b 20C6EB4" (unconditional goto) and this will make it simply not display any messages when you get 1/3/8/12/30/50/80 stars.

If you don't know how to make ASM hacks yet, see the ASM Hacking section of the stickied tutorial: https://kuribo64.net/board/thread.php?id=2319

____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

Summoned_Blade
Posted on 04-19-18 08:26 AM (rev. 5 of 04-22-18 03:01 AM) Link | #94126
@dy

Thank you again. So do I need to do that with ASM or can I do that in overlay 2? I'm not sure what the offsets are (I'm only going to change when the big star door messages appear).

Also when I collect 100 coins in a secret stage no 100 coin star appears. How would I make a 100 coin star appear in a secret stage or is it not possible?

Sorry to have to ask these questions but I'm fairly new to hacking.

dy
Posted on 04-21-18 04:47 PM (rev. 3 of 04-21-18 04:47 PM) Link | #94140
There's an Action Replay code which lets 100 Coin Stars spawn in any level. See my post a few pages up on how to convert AR codes into ROM changes (for the last step, rather than create a patch you can just edit the overlay directly since you know how to do that).
    Can Collect 100 Coin Star Inside Castle
    520B1920 E350000F
    020B191C E3A0000E
    D2000000 00000000


To change when the "You've recovered __ Power Stars" messages appear, you don't have to use the ASM Patch Template... You can use a similar process as the one for converting AR codes to find the offset of each number I circled in red (remembering to reverse bytes as described), and manually hex edit each of those entries.

As I said, a lot of work though and easy to get things wrong...

The ASM Patch Template takes a while to set up and get used to, but it lets you insert new code or change existing code without having to use a hex editor, reverse bytes or find the overlay offset. Well worth it if you want to look into making more ROM changes in future (see the link in my signature for some cool things you can do with ASM - for example, did you know you can make Yoshi punch/grab/throw enemies!? I just discovered it today!)

____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

Summoned_Blade
Posted on 04-22-18 02:31 AM (rev. 6 of 04-22-18 05:07 AM) Link | #94145
@dy

Thanks again for answering my question. I'll maybe look into ASM hacking.
Also with the big star door messages I just edited the text instead of changing when the messages appear.

Edit: I found the overlay and offset to change to make a 100 coin star appear in any stage. Its in overlay 2 at the offset 42BC and change 0D 87 FD EB to 0E 00 A0 E3.

dy
Posted on 04-24-18 11:53 PM (rev. 3 of 04-24-18 11:56 PM) Link | #94180
Good job.

Also, I'm a bit late to the party, but just found out for myself there's a way to narrow down which overlays to look in. arm9ovt.bin (you'll need NSMBe to extract it) tells the game where to load the various overlays, and it's also how NSMBe knows where to insert ASM hooks without being told the overlay offset.

[thumbnail]

Overlays have overlapping memory addresses, so you'll still need to search a couple to confirm, but this should help quickly narrow down which overlays to look in.


____________________

- ASM resource for customising behaviour of player/objects/levels
- NSMBe with direct overwrite feature

natnew
Posted on 05-11-18 11:33 PM Link | #94269
Uhh... Issue.

I tried following the process for allowing all characters to enter star doors. Of course, I had to start over, since I'm using a USA ROM which doesn't use that code. So, I just have to find a new code...

...

...There is none. Great.

Any other ideas? Editing the ROM directly might work but I don't even know where to begin with that.

____________________

[image][image][image]

AtomElectron
Posted on 05-12-18 06:30 AM Link | #94271
I would like to play these Super Mario 64 DS hacks on an actual DS. However, I don't know how to burn or possibly upload a hack onto a blank DS cartridge. So, how would I do this or would I have to use a separate piece of hardware to make it possible?
Pages: 1 2 3 4 5 ... 60 61 62 63 64 65 66

Main - General SM64DS hacking - SM64DS Editor Help Thread - Post your questions here Hide post layouts | New reply

Page rendered in 0.048 seconds. (2048KB of memory used)
MySQL - queries: 29, rows: 239/239, time: 0.014 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.