Register - Login
Views: 95157430
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
09-20-18 04:38:43 AM

Jul - SM64 Hacking (Archive) - Super Mario 64: The Missing Stars RELEASED! (Download link on first post) New poll - New thread - New reply
Pages: 1 2 3 4 5 6 7 8 9 10 ... 18 19 20 21 22 23 24 25 26 27Next newer thread | Next older thread
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 285/621
EXP: 987549
For next: 26389

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 47 days

Posted on 10-12-08 11:19:08 PM Link | Quote
Wow, I leave for a few days and this topic now has 4 pages!

It's really nice to see this effort going, it wouldn't be possible without messiaen! It's also nice that you have something to occupy yourselves until I release the .obj importer (probably before the end of the year). Also, this team hack will be a great opportunity to test new universal behaviors and other wonderful stuff before it can be integrated in the .obj importer.

I'll work on TT64 tonight, I'll first try to tackle the speed issues... (unfortunately, working on bugs is not the most interesting part of programming)
messiaen
Catgirl
Level: 65


Posts: 307/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 01:08:40 AM Link | Quote
This will be nice to test extended memory.

I've already set a ROM with a loader (hooked in one of the title screen behaviors) that copies a block of data with custom ASM from ROM into extended memory. This way I don't have to overwrite stuff to get the custom behavior/level commands I'm using. So far it's compatible with the emulators I tested, but in Project64 you have to change "Rom settings" to use 8 MB of RAM.

The main application of extended memory for now will be to load custom ASM and get complex models (such as Yoshi, Bowser or other bosses) easily in any level.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 289/621
EXP: 987549
For next: 26389

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 47 days

Posted on 10-13-08 01:38:30 AM Link | Quote
Originally posted by messiaen
This will be nice to test extended memory.

I've already set a ROM with a loader (hooked in one of the title screen behaviors) that copies a block of data with custom ASM from ROM into extended memory. This way I don't have to overwrite stuff to get the custom behavior/level commands I'm using. So far it's compatible with the emulators I tested, but in Project64 you have to change "Rom settings" to use 8 MB of RAM.

The main application of extended memory for now will be to load custom ASM and get complex models (such as Yoshi, Bowser or other bosses) easily in any level.


Isn't there some bit in the ROM header that tells the emulator that it needs the RAM extension?

It would be nice to eventually be able to replace Mario with some other characters, and switch between them while playing (maybe some power-up could trigger the switch).
messiaen
Catgirl
Level: 65


Posts: 309/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 11:23:10 AM (last edited by messiaen at 10-13-08 11:30 AM) Link | Quote
No, the ROM header (look at the end of file) is simpler than that.

There's this osGetMemSize() function, but Nagra's Mario's Resource doesn't list it (in the very detailed master.cod map of functions), so maybe it isn't in the game.

Both Nemu and Project 64 have a "general" RAM size setting, so that's the only tweak needed for it to run properly.

By the way, to make testing ASM stuff easier, I set a "Nemu-compatible" Flatworld ROM. It's the un-extended ROM with the 'regular' Flatworld replacing Bob-omb and extended memory support. I can share it if anyone is interested.

About playing as other caracters, Yoshi doesn't look that glitchy with Mario's animations, so this could be used in a mini-game. And if I find the Luigi easter egg, I want to try a "select Mario or Luigi" feature . If I get around timers, power-ups could be limited time Gameshark codes (ie, jump higher for 15 seconds).

But getting back to the team hack, I've set a master rom with a few initial areas - actually, levels without the select act screen, using the 0xE8D98 level list. I have yet to adjust some warps (and learn more about doors ) and make the game actually start in these areas instead of the castle interior, but I'll have something to show soon .

So, who exactly is working on a level and how far have you got ?
RomanianGirl

Level: 16


Posts: 17/42
EXP: 16964
For next: 3292

Since: 01-31-08

From: Canada

Since last post: 9.0 years
Last activity: 9.0 years

Posted on 10-13-08 01:00:58 PM Link | Quote
Hey everyone!

Though I'm not really part of the team hack, I've been working on a flat-world hack. It's like a mini run-through course, with one star, and a secret star.
However I need some help with a few things, I'll post a few screenshots soon when it's more complete...

1. I'm having trouble with setting a warp. Also, is there a way to set a one-way warp?
2. Is it possible to remove the flat world floor? (The level is primarily on floating platforms)
3. Is it possible to make very low draw distance settings on a few objects? For example, you can't see a certain platform until you're very close to it?
4. I'm having trouble with putting up a signpost and coins as well on the floating platforms.

Thank you very much for reading, and I hope someone will help! Until then I'll just have to think of good level design ideas
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 295/621
EXP: 987549
For next: 26389

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 47 days

Posted on 10-13-08 01:35:42 PM Link | Quote
Originally posted by messiaen
No, the ROM header (look at the end of file) is simpler than that.

There's this osGetMemSize() function, but Nagra's Mario's Resource doesn't list it (in the very detailed master.cod map of functions), so maybe it isn't in the game.

Both Nemu and Project 64 have a "general" RAM size setting, so that's the only tweak needed for it to run properly.

By the way, to make testing ASM stuff easier, I set a "Nemu-compatible" Flatworld ROM. It's the un-extended ROM with the 'regular' Flatworld replacing Bob-omb and extended memory support. I can share it if anyone is interested.

About playing as other caracters, Yoshi doesn't look that glitchy with Mario's animations, so this could be used in a mini-game. And if I find the Luigi easter egg, I want to try a "select Mario or Luigi" feature . If I get around timers, power-ups could be limited time Gameshark codes (ie, jump higher for 15 seconds).

But getting back to the team hack, I've set a master rom with a few initial areas - actually, levels without the select act screen, using the 0xE8D98 level list. I have yet to adjust some warps (and learn more about doors ) and make the game actually start in these areas instead of the castle interior, but I'll have something to show soon .

So, who exactly is working on a level and how far have you got ?


Oh well, I guess we'll have to give instructions to people so that they enable the RAM extension in these emus.

As for setting up new levels, don't forget that you'll have to insert new 0x0C and 0x10 commands in the main level script as it's executed each time you warp to a level. I would also suggest that you experiment with "areas" within the same level. This would enable you to make huge levels. As you must know, areas can be seemingly switched in real time when Mario walks or swims over some special collision polygons, as seen in Wet Dry World and the Tall Tall mountain slide (which is split in three areas). I guess that you're still limited by horizontal boundaries, but you could make a level with several stories (a huge underground cave for example).
messiaen
Catgirl
Level: 65


Posts: 312/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 03:16:52 PM Link | Quote
RomanianGirl: I'm assuming you're using the base patch from this thread.

1. Can't help you, I'm still learning about warps .
2. Use the base_patch_v01_empty.ppf file.
3. There's no way to make a platform appear just when you are near it because I patched one function that controls this setting for 'solid' objects so that they are visible all the time.
4. Use Behavior 0x56FC, which will make the collision loaded all the time, and thus usable by most objects. There may be another adjustments depending on the object.

VL-Tone: For now, I'm assigning each level a "00" level ID to get rid of the Select Star screen and create an artificial area feeling. It also get rids of the coin counter, but that's simple to put back.

The advantage to areas is that banks can be switched, but later I may experiment with these areas transition, I never looked much into that.

I wonder if there's space in the "text bank" (by the way, do you have some documentation on that?) to fit in new level names/acts descriptions.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 301/621
EXP: 987549
For next: 26389

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 47 days

Posted on 10-13-08 03:38:23 PM Link | Quote
Originally posted by messiaen
VL-Tone: For now, I'm assigning each level a "00" level ID to get rid of the Select Star screen and create an artificial area feeling. It also get rids of the coin counter, but that's simple to put back.

The advantage to areas is that banks can be switched, but later I may experiment with these areas transition, I never looked much into that.

I wonder if there's space in the "text bank" (by the way, do you have some documentation on that?) to fit in new level names/acts descriptions.


But how can you warp to a different level if they all have the same ID? Warps need to go through the main level script and branch accordingly with the corresponding 0x0C command.

There's no free space in the text bank, there's actually next to no space left in the original 8 MB ROM. If you have short level names and acts descriptions, you could probably add new names. The Text Wrangler would have to be modified tough since it expects the text data to start at a specific place, and you'd have to move the start point to add new offsets in the table preceding the text data.
messiaen
Catgirl
Level: 65


Posts: 315/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 03:53:04 PM Link | Quote
Hmm, I haven't thought about that but... it turns out that the 0xE8D98 list doesn't seem to affect warps!

I just did a quick test and replaced all the values with 00 and warps worked perfectly, so this isn't used by the conditional jump command.

What's the starting offset of the 'text bank'? Perhaps I could try locating the code which loads it and moving it to extended memory.
RomanianGirl

Level: 16


Posts: 20/42
EXP: 16964
For next: 3292

Since: 01-31-08

From: Canada

Since last post: 9.0 years
Last activity: 9.0 years

Posted on 10-13-08 04:00:51 PM Link | Quote
Originally posted by messiaen
RomanianGirl: I'm assuming you're using the base patch from this thread.

1. Can't help you, I'm still learning about warps .
2. Use the base_patch_v01_empty.ppf file.
3. There's no way to make a platform appear just when you are near it because I patched one function that controls this setting for 'solid' objects so that they are visible all the time.
4. Use Behavior 0x56FC, which will make the collision loaded all the time, and thus usable by most objects. There may be another adjustments depending on the object.



1. I'll figure out warps somehow.
2. I see my error. I'm moving everything to Whomp's fortress now, which will take a while.
3. Ok, I see. I'll have to make some rearrangements, then.
4. Er. I have no idea how?
messiaen
Catgirl
Level: 65


Posts: 317/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 04:11:21 PM Link | Quote
Are you using the 'base patch' or the Platform Battlefield from the other thread?

The base_patch_v01_empty.ppf replaces Bob-omb Battlefield, not Whomp's Fortress, and the behavior should be accessible in the regular behavior list. Turn the "hexadecimal" setting, otherwise 56FC will be listed as "22268" (decimal).

The best way to copy all objects from one ROM to another is to use a hex editor, but I can write a simple object copier (for the base patch), in fact it will be useful if anyone wants to copy a range of objects.
RomanianGirl

Level: 16


Posts: 21/42
EXP: 16964
For next: 3292

Since: 01-31-08

From: Canada

Since last post: 9.0 years
Last activity: 9.0 years

Posted on 10-13-08 04:17:49 PM Link | Quote
I think I'm using Platform Battlefield, Bob-omb battlefield and Whomp's fortress are both replaced with flatworld...

Alright, will do. I'll probably ask questions if I get stuck.

I haven't hacked levels with a hex editor, so I'd be totally lost. I'm fine with copying the values manually though.
messiaen
Catgirl
Level: 65


Posts: 318/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 04:25:36 PM Link | Quote
This thread is more about the 'base patch'. If you are doing just one level, I guess you could port your work into it, but remember just Bob-omb will work on it. Send me a PM and I can help you copying the objects over, it's simple.
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 305/621
EXP: 987549
For next: 26389

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 47 days

Posted on 10-13-08 04:55:00 PM Link | Quote
Originally posted by messiaen
Hmm, I haven't thought about that but... it turns out that the 0xE8D98 list doesn't seem to affect warps!

I just did a quick test and replaced all the values with 00 and warps worked perfectly, so this isn't used by the conditional jump command.

What's the starting offset of the 'text bank'? Perhaps I could try locating the code which loads it and moving it to extended memory.


Here's how the level system works:

1. A warp command sets the current level ID variable.
2. The main level script is executed.
3. In the main level script, an 0x0C command will branch if its parameter is equal to the current level ID variable.

So the only thing that's defining which ID goes with which level script are the 0x0C commands themselves.

The list at 0xE8D98 is a table that decides which set of level parameters (act names and other stuff) will be used depending on the current level ID variable.

Negative level ID numbers seems to be reserved for things like the title screen, Mario's face, Game Over screen and the debug menu.




As for the text data:

The MIO0 bank starts at 0x800000, but it's loaded with some ASM command and I couldn't replace it with a 0x17 command. So I had to create a fake MIO0 wrapper, much like for banks loaded with command 0x1A.

The actual uncompressed MIO0 data for this bank starts at 0x803156

-------------------------------------------------------------------
DIALOG TEXT
Offset of the table in bank: 0xFFC8
Real ROM address of the table: 0x81311E
170 items in the table.
Each item in the offset table is 16 bytes long.
Offset of actual text is defined in the last two (or three?) bytes.
The first 14 (or 12?) bytes are used for dialog parameters.
Maximum text data size: 32997 bytes
-------------------------------------------------------------------
LEVEL NAMES
Offset of the table in bank: 0x80E5
Real ROM address of the table: 0x80B23B
26 items in the table.
Each item in the offset table is 4 bytes long.
Offset of actual text is defined in the last three bytes.
Maximum text data size: 536 bytes
-------------------------------------------------------------------
ACTS NAMES
Offset of the table in bank: 0x1192C
Real ROM address of the table: 0x814A82
97 items in the table.
Each item in the offset table is 4 bytes long.
Offset of actual text is defined in the last three bytes.
Maximum text data size: 2138 bytes
-------------------------------------------------------------------

Each text chunk ends with 0xFF

Here's the alphabet table: http://homepage.mac.com/qubedstudios/SM64TextTable.txt

messiaen
Catgirl
Level: 65


Posts: 319/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-13-08 05:55:10 PM Link | Quote
Thanks, this will be handy! Perhaps loading Mario/Behaviors/Shared banks in extended memory will leave enough space for the game to allocate expanded text/interface graphics/sequence data.

I will make some tests and see what I can come up with.

Here's in Luigi exploring the interior of a house:

GhostMaster3000
Member
Level: 17


Posts: 44/53
EXP: 23839
For next: 904

Since: 04-07-08

From: United States

Since last post: 8.0 years
Last activity: 8.0 years

Posted on 10-13-08 11:39:21 PM Link | Quote
I so far have to flood flatworld, but I took your advise and used the slanted platforms for the beach. I still need to test the floating behaviors when I get flatworld flooded. I am still trying to think of some acts and what to add onthe the level. I might try and do something with the water raiser/lowerer
Kenshi
Member
Level: 20


Posts: 34/75
EXP: 41194
For next: 1245

Since: 09-15-07

From: NY

Since last post: 3.0 years
Last activity: 2.0 years

Posted on 10-14-08 12:11:22 AM Link | Quote
BTW messiaen, the base patch isnt Mac friendly, or at least it isn't friendly with mine. Same result as the last time you made a patch however finally trying your platform battlefield it is actually working! Good job on it and hope to have another base patch!
messiaen
Catgirl
Level: 65


Posts: 320/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-14-08 12:50:13 AM Link | Quote
mortalkenshi2: I just uploaded a "Mac" version to the hack folder (mac_base_patch_v01.zip). Read the second page of this thread for instructions on using the patch.

GhostMaster3000: Tell me when you get it "flooded" so I can try setting up the water polygons. The main level collision starts at 0x1215000.

I guess platforms with custom trajectories would work nice in that level, I can help with that. Dorrie could show up too, now with extended memory it will be easier to get it inside the level. Perhaps I could use the 'Super Mario Bros' Water theme port there .
vingamer234
User
Level: 8


Posts: 10/10
EXP: 1967
For next: 220

Since: 02-13-08


Since last post: 9.0 years
Last activity: 9.0 years

Posted on 10-14-08 07:55:59 PM (last edited by vingamer234 at 10-14-08 07:57 PM) Link | Quote
Originally posted by messiaen
vingamer234: The "While processing the graphics data an exception occurred, you may need to restart the emulator" is some error on the emulator side (I guess you are using Project64). It's sort of rare, but if you load the ROM again or just wait a few seconds it will work fine, this error doesn't crash the emulator.



I just figured out the problem, that's actually not it. It's the starting cutscene with Peach that causes the error.

I know this because I used a Gameshark code in Project64 that gives me 175 Stars (there's also a code that skips the cutscene all together) and I started inside the castle, with no errors. However, when I start a new game I get an error because of the cutscene. At least I think that's the problem...


Also, is this how the level in your patch is supposed to look? As in the ground texture.

tinyshit/11ifpzc.jpg
messiaen
Catgirl
Level: 65


Posts: 325/1085
EXP: 2248041
For next: 87587

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 10-15-08 12:04:17 PM (last edited by messiaen at 10-15-08 02:24 PM) Link | Quote
Yes, the ground is supposed to look like that. I chose a random texture just to make it different from the "grass" texture, which is used by some of the platforms.

That graphical exception error may happen anytime, it's sort of random, but it makes sense that it happens on Peach intro because it isn't supposed to happen in the "Inside Castle" level. Later on I will patch the "Skip Peach Intro" code to the ROM, I want first to look more close at what it does, it may lead to some other useful discoveries.

Here is a video of a Select Mario/Luigi interface. You switch it by pressing one of the D-Buttons at the title screen. I didn't want to upload it to YouTube before there's a plubic release of TT64 with the Luigi Easter Egg, that's why it's on Mediafire.

I am having some problems with a hardcoded starting position on the Castle Grouds level, I still can't get rid of it, so the first part of the video (after you choose Mario or Luigi) is edited. But the Mario/Luigi works perfectly.

Celux: Could you send me a PPF patch of your updated "DDR" mod? I want to see how can I include it in the hack.
Pages: 1 2 3 4 5 6 7 8 9 10 ... 18 19 20 21 22 23 24 25 26 27Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Super Mario 64: The Missing Stars RELEASED! (Download link on first post) New poll - New thread - New reply




Rusted Logic

Acmlmboard - commit 5d36857 [2018-03-03]
©2000-2018 Acmlm, Xkeeper, Inuyasha, et al.

31 database queries, 14 query cache hits.
Query execution time: 0.174633 seconds
Script execution time: 0.033106 seconds
Total render time: 0.207739 seconds
Memory used: 786432