Language…
17 users online: akawo, Alex No, CroNo, DanMario24YT, Gemini0, Golden Yoshi, Green, Hammerer, kurtistrydiz,  MarioFanGamer, MarkVD100, rafaelfutbal, Rykon-V73, Spedinja, steelsburg, superbot12, Tulip Time Scholarship Games - Guests: 290 - Bots: 657
Users: 64,795 (2,369 active)
Latest user: mathew

The SM64 Console Compatibility thread.

Whoa, that's a lot of back-to-back posts! You can just edit the existing one if you like.

Originally posted by aterraformer
Most hacks still seem unable to inject into wads, which makes no sense to me. For example, SM74 compresses to 41.9mb, Ogre Battle and Majora's Mask are both 47mb but apparently that's still not enough. I was able to inject Bob-omb Richard since somehow it went from 65mb to 24mb!

I never had much success with Ogre Battle or MM WADs. I documented my experiences in Dolphin/Wii VC thread, but I had best experience with MK64 (12MB) and OoT (32MB).
64MB is allocated for the extended ROM regardless of how much is actually used. If only a handful of levels were replaced, the size can be reduced dramatically. If i can get the compression part working, 12-16MB is not an unreasonable target. Still haven't figured out why that doesn't work though.

Originally posted by aterraformer
I hope something could be done about slowdown as well. Dust-Switch of Identity and Flowery Gardens are awful. Not sure how I super cleared both (except for that one bonus crap in Flowery ugh)

It's most likely some combination of too many triangles and/or too many object behaviors. That's not something i can really fix.

Originally posted by aterraformer
I think this shit destroyed my everdrive. Every time I select a rom, any card, I get the error. I can only run by pressing start to load the last played. SM74 runs. So I lost my 91 star file. For no reason. I haven't done much on the card besides inserting and removing hacks and copying the save file out so I could test that I could move the save file and format my usual sd card. Well no amount of formatting actually helped any other card. Also, the save is like 20 different files, all the same name. So when moving, all but one have to be renamed.

I still don't know. After trying Rainbow Road, I experienced similar problems where it had strange audio glitches and locked up. Then I got the error 0xF0 FAT Error. I reformatted my SD card, uncheck quick format, 4k allocation size and it was OK again. I'm going to keep working with cen64 for RR and a few other ROMs until I can work out what is going on.
Sorry about that, will edit for next time. I'll try messing with MK64 and OoT wads for now.
Your layout has been removed.
I have some bad news to report.
First, regarding VC, most SM64 hacks probably won't work. I remembered some notes from David in the Dolphin/Wii VC Thread that said "No expansion pack support as far as I know". The only N64 title that I am aware of that required the expansion pack and was also made into a VC title was Majora's Mask. I can't even get the MM WAD to run in Dolphin though before injection, so I am unable to test it.

The second piece of bad news is I figured out why my compression wasn't working, but can't do much about it at the moment. The tool compresses things nicely, (SM74 < 20MB), but it doesn't run because the buffers for 0x17 level commands are all moved around. Switching to 0x18 commands for compressed data will decompress the data fine, but it runs out of memory in the original allocation pool. I think the two solutions to this are either rewriting the 0x18 command parser to use the expansion RAM or reconfiguring the allocation pool to use expansion RAM, neither of which are easy.
Wow, that really sucks. Wish I was able to get anything running on VC to try and help but it always just locked up.
Your layout has been removed.
(Hi again folks, incoming Mega post here. This is mostly a walkthrough/tutorial on the method I've been using to fix level textures - I've tried (and probably failed) to keep it fairly simple to follow, even for newbies. I've also tried to put the more significant parts in bold and/or in colour to make them stand out some. Hopefully you won't find that too obnoxious. :D)


I'm not sure what Hex editor you've been using aterraformer, but XVI32 let's you use scripts, more or less letting you automate simple changes, or changes you have to make often.

Here's a script I put together a while ago for Super Mario 74. You would apply this script to a normal Super Mario 74 rom (no other changes, in hex or using sm64compress, are needed). Most of the things this script does are things already taken care of by sm64compress and those two find and replace hex changes you made. The extra thing this script does, in a nutshell, is that it un-breaks the custom levels which use fog.

Originally posted by Me
Step by Step instructions:
1. Download XVI32.
2. Extract it from the zip folder and run xvi32.exe. The main window of xvi32 opens.
3. Click File, then Open File. Choose the hack you want to try fixing (Super Mario 74) and click open.
4. Now click XVIscript, then Editor. This opens up the script interpreter window.
5. Copy and paste this script into the text box, click execute and wait for the changes to be made (should take less than 2 minutes).
7. Once the script has finished executing, close the script interpreter window.
8. Now click File, then Save or Save As, to save the changes to the hack.
9. Try the hack out on your N64 console



Here's the results: https://www.youtube.com/watch?v=aLNhGib0r_w

This script mostly fixes Super Mario 74, but water and lava still stretch and go weird, and you'll still encounter slowdown in some levels.
If mostly fixing Super Mario 74 is all you're interested in, you can stop reading right here - just follow the instructions above.

If, however, you're interested in learning how you can fix the textures in other hacks, get comfy and read on...



Texture Fixing Tutorial/Walkthrough
Part 1 - Background Info



Part 1.A - What are we trying to achieve?
Before we begin, let's just be clear about what we're dealing with here:

FC 12 7F FF FF FF F8 38: FC 12 18 24 FF 33 FF FF or FC 12 7E 24 FF FF F9 FC:
No Fog:
Fog:


The column on the left is what you get if you make no attempt to fix the textures - most levels flicker between white/black, with occasional foggy levels displaying textures correctly.
The column on the right (most levels working, but broken foggy levels) is what you get if you do either of the following:


Code
Find All: FC 12 7F FF FF FF F8 38
Replace With: FC 12 18 24 FF 33 FF FF

Code
Find All: FC 12 7F FF FF FF F8 38
Replace With: FC 12 7E 24 FF FF F9 FC



So, what we want, is to have the top right and bottom left pictures. What we want then, is this:
Levels with No Fog: FC 12 18 24 FF 33 FF FF or FC 12 7E 24 FF FF F9 FC
Levels with Fog: FC 12 7F FF FF FF F8 38


Got it?

Q. What's the deal with FC 12 18 24 FF 33 FF FF and FC 12 7E 24 FF FF F9 FC? Why are there two of them? Why not just one?
A. Kaze pointed FC 12 7E 24 FF FF F9 FC out to me earlier in this thread. Here's what he said:
Originally posted by Kaze
looking at how the FC commands in the original are set, it is weird that frauber chose FC 12 7F FF FF FF F8 38 out of all things. for instance, looking at bowser puzzle pieces or any other object that ive looked at, they use FC 12 7E 24 FF FF F9 FC...

As far as I can tell, you get the same results with either one of them - they seem interchangeable. There probably is a difference, but I don't know what it is. I don't know which of them, if any, is the "correct" one to use. (not a great answer, is it? :/)


Part 1.B - An explanation of the script I posted earlier
Ok. Now I'll walk you through the bits of my script I linked to earlier which deal with texture issues, and explain what each bit is doing.

Code
REM Black and White Textures fix (breaks foggy levels)
REM Starting at 1200000, so will only affect custom levels (leaves unchanged Bowser Battle levels alone)
ADR $1200000
REPLACEALL FC 12 7F FF FF FF F8 38 BY FC 12 7E 24 FF FF F9 FC


This is essentially just an alternative to the first find and replace change aterraformer made (I'm using FC 12 7E 24 FF FF F9 FC instead of FC 12 18 24 FF 33 FF FF).
More importantly, the find and replace switch only happens from $120000 onwards. This is the area of the rom where imported levels are stored. Making the changes only from this point onwards leaves out the original SM64 levels, so any left over/recycled/reused levels, such as bowser battles, are unaffected by the change. In other words, no more bowser battles with bad textures. #tb{:)}


Code
REM Snowman's land (Swamp) (Foggy Level Fix)
REM Level layout data starts at 01740000)
REM (Next level data WetDry starts at 01820000)
REM ---------
ADR $177DE90
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $1796EC0
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $1798470
OVERWRITE FC 12 7F FF FF FF F8 38


REM Vanish Cap (Foggy Level Fix)
REM Level layout data starts at 01E40000
REM (Next level data BowserCourse2 starts at 01F20000)
REM ---------
ADR $1E6E690
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $1E7E7E0
OVERWRITE FC 12 7F FF FF FF F8 38


REM Metal Cap (Foggy Level Fix)
REM Level Layout Data starts at 02700000)
REM (Next level data wingcap starts at 027E00000)
REM ---------
ADR $271FDE0
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $2727B40
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $27282C8
OVERWRITE FC 12 7F FF FF FF F8 38



This bit here may look worse than it actually is. For the levels which have fog, I'm undoing the "Replace All" change we just made previously, putting these levels back the way they were. I'll go into much more detail on this part later on, so don't worry.


Part 1.C - The Level Location Table
The table below roughly lists the locations where, I believe, the custom levels are stored. Other people here have a much more detailed understanding of this than I do. My understanding of this is pretty rudimentary, but I think I've just about got the basics down. I used the first few minutes of this video from Kaze as a starting point, and then spent some time filling in the blanks. The table is pretty inaccurate and low in detail, but it's what I've been using and seems to work enough for the purpose of fixing the level textures.
Different locations are used depending on Rom size (Level Importer 1.6 and older produces Rom sizes of 48MB and stores levels at the locations in the left column, while Level Importer 1.7S and newer produces Rom sizes of 64MB and stores levels at the locations in the right column).

Course No.Level48MB64MB
5Haunted House1200000-12E00001200000-1360000
4Cool Cool Mountain12E0000-13C00001360000-14C0000
Inside Castle13C0000-14A000014C0000-1620000
6Hazy Maze Cave14A0000-15800001620000-1780000
8Shifting Sand Land1580000-16600001780000-18E0000
1Bob-Omb's Battlefield1660000-174000018E0000-1A40000
10Snow Man's Land1740000-18200001A40000-1BA0000
11Wet Dry World1820000-19000001BA0000-1D00000
3Jolly Roger Bay1900000-19E00001D00000-1E60000
13Tiny Huge Island19E0000-1AC00001E60000-1FC0000
14Tick Tock Clock1AC0000-1BA00001FC0000-2120000
15Rainbow Ride1BA0000-1C800002120000-2280000
Castle Grounds1C80000-1D600002280000-23E0000
Bowser 1 Course1D60000-1E4000023E0000-2540000
Vanish Cap1E40000-1F200002540000-26A0000
Bowser 2 Course1F20000-200000026A0000-2800000
Secret Aquarium2000000-20E00002800000-2960000
Bowser 3 Course20E0000-21C00002960000-2AC0000
7Lethal Lava Land21C0000-22A00002AC0000-2C20000
9Dire Dire Docks22A0000-23800002C20000-2D80000
2Whomp's Fortress2380000-24600002D80000-2EE0000
End Cake Picture2460000-25400002EE0000-3040000
Castle Courtyard2540000-26200003040000-31A0000
Peach's Secret Slide2620000-270000031A0000-3300000
Metal Cap2700000-27E00003300000-3460000
Wing Cap27E0000-28C00003460000-35C0000
Bowser 1 Battle28C0000-29A000035C0000-3720000
Rainbow Clouds29A0000-2A800003720000-3880000
Bowser 2 Battle2A80000-2B600003880000-39E0000
Bowser 3 Battle2B60000-2C4000039E0000-3B40000
12Tall Tall Mountain2C40000-2D200003B40000-3CA0000



Still with me? A table full of hex addresses might look a bit intimidating, but it's actually pretty straight forward to use. I'll show you how you can use this table to fix the level textures in Super Mario 74. The same process should also work on most other SM64 hacks. It's not so bad, you'll see. #tb{:)}


Part 2 - Worked Example


Step 1 - Find the Foggy Levels
The first step is to find out which levels use fog (and will therefore be broken by the Replace All fix). I actually find this to be the most time consuming and tedious part of the whole process. I really hope there's a better way to find out by just looking at data in the Rom, but so far, I've just been playing the hacks on console to find out. Sometimes I would place down a bunch of warp doors in the starting area (using Toads Tool) so I could more quickly check all the levels in the Rom. Not ideal at all, but it works.

So, not including reused bowser levels (which aren't a problem any more), you'll find there are three levels which use fog in Super Mario 74:
Swampy Spring
Toxic-Switch of Danger
Dust-Switch of Identity

aterraformer correctly identified these. #tb{:)}


Step 2 - Find out which Original SM64 levels these foggy custom levels replace
Now we need to find which of the original SM64 levels these new levels with fog replace.* A lot of the time, it's pretty obvious with level is replaced; new metal cap and vanish cap stages probably replace the original ones. The main course levels, when you enter them, all show their course number on the star select screen, so you can work it out from there. For example, Swampy Spring in Super Mario 74 is course number 10, which we know is the course number of Snowman's Land, so Swampy Spring replaces Snowman's Land. (I've listed the level course numbers in the table above, to help you).

But it's not always so easy to tell. For example, would you know which level this start area in the Year of the Plumber demo replaces? I wouldn't, without checking.
To check, simply open the hack in Toads Tool and try loading up different levels until you find one that looks like it matches (like this). Educated guesses help here - hub worlds will probably replace Inside Castle, Castle Grounds, or Castle Courtyard. "Misc" levels might replace Peach's Secret Slide, Secret Aquarium or Rainbow Clouds.


*The Original SM64 levels aren't actually overwritten when you import a new level into the rom to replace one of them. All the original SM64 levels remain in the rom. If you import a custom level into the rom, replacing, say, Whomp's Fortress, the new level will be placed in one of the two areas set out in the table above, depending on which Level Importer version you use (2380000-2460000 or 2D80000-2EE0000). The original Whomp's Fortress is still in the rom, but is cut off and not normally accessible. It's a bit like the lost Citadel level in Goldeneye, if you're familiar with that.


Step 3 - Find out the Rom size of the hack - 48MB or 64MB?
Now you know which custom levels have fog, and you know which original SM64 levels they replace. There's one more thing we need to check before we can open the Hex editor - the size of the rom. 48MB or 64MB. Simple, ish.


Step 4 - Find the addresses of instances of "FC 12 7F FF FF FF F8 38" within the ranges of the foggy levels
Hex editor time! Open up Super Mario 74 in your hex editor. We know that SM74 is a 48MB hack, so that's the column in the table we're going to be focusing on.

Reminder - the levels with fog we need to take a look at are:
Swampy Spring (replaces Snow Man's Land)
Toxic-Switch of Danger (replaces Metal Cap stage)
Dust-Switch of Identity (replaces Vanish Cap stage)


Let's begin with Swampy Spring. As we touched on before, Swampy Spring is course number 10 - so it replaces Snowman's Land.

So, look on the Snowman's Land row in the 48MB column, and you'll find 1740000-1820000. This is the area of the rom where the imported level Swampy Spring is stored.

Navigate to $1740000 in your hex editor. In this location, you should see 80 08 00 00...


Now, use the Hex editor to find the next case of "FC 12 7F FF FF FF F8 38", after $1740000. You should find that the first case of FC 12 7F FF FF FF F8 38, after the position of $1740000, is at offset $177DE90.

177DE90 falls within the range of where the Swampy Springs level is stored (it falls within 1740000-1820000), so take a note of this address, we'll need it later.

Now find the next instance of FC 12 7F FF FF FF F8 38, after 177DE90. You should find it at $1796EC0. Does this address fall within our range (1740000-1820000)? Yes it does, so take a note.

Again, find the next instance. This time it's at $1798470. Within the range, so take a note.

And again, find the next case. This time, it's at address $1855360. Does this fall within our range? No, it doesn't, so we'll leave it.


Ok, so now we have taken a note of all the cases of FC 12 7F FF FF FF F8 38 within the area of the rom where Swampy Springs is stored.
Here's what we've got:
177DE90: FC 12 7F FF FF FF F8 38
1796EC0: FC 12 7F FF FF FF F8 38
1798470: FC 12 7F FF FF FF F8 38



The idea now, is that after doing the following Replace All change, which breaks all the custom levels which use fog...
Code
ADR $1200000
REPLACEALL FC 12 7F FF FF FF F8 38 BY FC 12 7E 24 FF FF F9 FC

...we can then do the following to put the Swampy Spring level back the way it was, to undo the previous change for just that level.
Code
ADR $177DE90
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $1796EC0
OVERWRITE FC 12 7F FF FF FF F8 38
ADR $1798470
OVERWRITE FC 12 7F FF FF FF F8 38



And that's the basic idea. This is how we get to have both the top right AND bottom left picture, to have both levels with and without fog to show textures properly.
I'll go over the remaining two foggy levels in Super Mario 74 now in a bit less detail.


Toxic-Switch of Danger and Dust-Switch of Identity, we can safely assume, replace the metal cap and vanish cap stages, but you can make sure if you like by checking the rom in Toads Tool.

We'll take Toxic-Switch of Danger first. Looking at the Metal Cap row in the 48MB column, we find 2700000-27E0000. So go to $2700000 in your hex editor, and then find the next few cases of FC 12 7F FF FF FF F8 38 which lie within the range of 2700000-27E0000. You should find them at:
271FDE0
2727B40
27282C8

And doing the same for the Dust-Switch of Danger level (looking at the Vanish Cap stage row in the table, using the range of 1E40000-1F20000), you should find the cases of FC 12 7F FF FF FF F8 38 at these addresses:
1E6E690
1E7E7E0
1E7FA80


Step 5 - Make the Hex changes
Finally, we're ready to make the hex changes to fix the level textures in Super Mario 74! Time to bring it all together.

First, go to address $1200000, then replace all cases of FC 12 7F FF FF FF F8 38 from then on, with either of the following:
FC 12 18 24 FF 33 FF FF
FC 12 7E 24 FF FF F9 FC

This will fix the textures of all the imported levels which don't use fog, without touching original SM64 levels that may have been reused, such as Bowser battles or the Castle overworld.

Next, we go back and fix those imported levels which did use fog, which we just now broke. Make the following changes:

177DE90: FC 12 7F FF FF FF F8 38 (<- Swampy Spring)
1796EC0: FC 12 7F FF FF FF F8 38 (<- Swampy Spring)
1798470: FC 12 7F FF FF FF F8 38 (<- Swampy Spring)
271FDE0: FC 12 7F FF FF FF F8 38 (<- Toxic-Switch of Danger)
2727B40: FC 12 7F FF FF FF F8 38 (<- Toxic-Switch of Danger)
27282C8: FC 12 7F FF FF FF F8 38 (<- Toxic-Switch of Danger)
1E6E690: FC 12 7F FF FF FF F8 38 (<- Dust-Switch of Identity)
1E7E7E0: FC 12 7F FF FF FF F8 38 (<- Dust-Switch of Identity)
1E7FA80: FC 12 7F FF FF FF F8 38 (<- Dust-Switch of Identity)

Then you just need to save, and that's it - you've fixed the level textures!

If you're fixing a 64MB rom, such as the Year of the Plumber demo, remember to use the 64MB column in the table instead.
Originally posted by macN64
Post above

Woah, this is a pretty awesome. So pretty much any hack can be fixed to work on console? Or is there more work that needs to be done to make hacks work on console?
Well, my previous post is about fixing texture issues in imported level models. I would expect that method to work on most hacks. But as I say, it deals with the textures of level models - lots of other issues to take into account, some we have fixes for, some we don't.

Originally posted by macN64
The first step is to find out which levels use fog (and will therefore be broken by the Replace All fix). I actually find this to be the most time consuming and tedious part of the whole process. I really hope there's a better way to find out by just looking at data in the Rom, but so far, I've just been playing the hacks on console to find out. Sometimes I would place down a bunch of warp doors in the starting area (using Toads Tool) so I could more quickly check all the levels in the Rom. Not ideal at all, but it works.

I should have probably mentioned this a long time ago, but there is an easy way to determine if a custom level uses fog just by looking at the Fast3D commands.

Check if fog is enabled in a level

The fog is enabled in a level using a 0xB7 (F3D_SETGEOMETRYMODE) command, by setting the bit flag 0x10000 in the parameters. Now all levels have a 0xB7 command to enable stuff like Z-buffering and lighting, but frauber decided to have a separate 0xB7 command for enabling fog (even though it's not needed).

This means for all current hacks you can just look for this inside a level's fast3D code:
Code
B7 00 00 00 00 01 00 00

I currently use this in my importer tool just because I was lazy and copied skelux's fast3d structure. I do plan on rewriting a lot of code to be more efficient in future versions, so I wouldn't say that this is future proof.

The most important thing is that the sixth byte from the left must have a 0x1 in it for fog to be enabled.

Check intensity of fog used in the level

Skelux's SM64 editor/importer has a lot of different options for the intensity of the fog. To check for these, you just have to look for a 0xBC (F3D_MOVEWORD) command.

Code
BC 00 00 08 19 00 E8 00 = FOG_SUBTLE_1
BC 00 00 08 12 00 F0 00 = FOG_SUBTLE_2
BC 00 00 08 0E 49 F2 B7 = FOG_MODERATE_1
BC 00 00 08 0C 80 F4 80 = FOG_MODERATE_2
BC 00 00 08 0A 00 F7 00 = FOG_MODERATE_3
BC 00 00 08 08 55 F8 AB = FOG_MODERATE_4
BC 00 00 08 07 24 F9 DC = FOG_INTENSE
BC 00 00 08 05 00 FC 00 = FOG_VERY_INTENSE
BC 00 00 08 02 50 FF 00 = FOG_HARDCORE


Fog color

The fog's color setting is simple and straightforward. Just look for a 0xF8 (G_SETFOGCOLOR) command.

Code
F8 00 00 00 RR GG BB FF

RR = red value (0-255)
GG = green value (0-255)
BB = blue value (0-255) 


I hope this information helps. #tb{:)}
Can confirm Super Mario 74 Extreme Edition works on console! I was unable to get Twisted Adventure or 2.0 to work on console though and I'm not really sure why. It gives the same graphical error as it tries to boot as Star Road does and I thought that at least booted on console. Has anyone tried it since the newest scripts? I would imagine it still being damn near unplayably slow but at least the textures might load.
Your layout has been removed.
Originally posted by Davideesk
I should have probably mentioned this a long time ago, but there is an easy way to determine if a custom level uses fog just by looking at the Fast3D commands.

Great! I hoped there would be a simple check like this, thank you for laying it out so clearly. This should speed things up quite a bit.


Originally posted by aterraformer
Can confirm Super Mario 74 Extreme Edition works on console!

Just to be clear, can I ask what did you do to get SM74 Extreme Edition working? I just want to be sure that you didn't use that script I posted earlier. That script was tailored to Super Mario 74, and unless Extreme Edition has the same foggy levels as SM74 (Snowman's Land, Metal and Vanish Caps), there'll be graphical problems in those levels. I might not have made that clear before.

Originally posted by aterraformer
It gives the same graphical error as it tries to boot as Star Road does and I thought that at least booted on console.

I think the graphical problems you're seeing is to do with a RCVI hack, which doesn't work on console. Try this:
Code
$F00C2: 02 0D


I think the change above also requires you to recalculate or just skip the crc checksum... thing.

You can fix it with one of these tools:
rn64rcrc.exe http://www.smwcentral.net/?p=section&a=details&id=8799
chksum64.exe https://github.com/mikeryan/n64dev/blob/master/util/u64asm/chksum64.exe (I haven't actually tried this one myself, I assume it works...)

..Or you can just skip it altogether with this (in which case you don't need to bother using the tools above):
Code
$66C: 00 00 00 00 00 00 00 00
$678: 00 00 00 00 00 00 00 00
I was trying the script on all of them. Ah man, I didn't realize that was specific for SM74. I didn't encounter any problems yet but only had 10 stars and didn't beat Bowser 1.

I honestly don't understand how to make the changes you are referring to.
Your layout has been removed.
I'm back. :)

OK aterraformer. If you managed to use my script before, then you must have used xvi32 to do it. That makes things easier for me, as I can just give you another preprepared script to run. #tb{:)}

Here are the two hex changes from my last post, but in the form of an xsc script:
Code
REM Undo RCVI hack
ADR $F00C2
OVERWRITE 02 0D

REM Skip CRC Checksum
ADR $66C
OVERWRITE 00 00 00 00 00 00 00 00
ADR $678
OVERWRITE 00 00 00 00 00 00 00 00


So all you would do, like before, is copy the script above, paste it into the text box, click the exectue button and save the changes to your rom. I think these changes should take care of the start up problems you were having with some hacks.


Originally posted by macN64
Originally posted by Davideesk
I should have probably mentioned this a long time ago, but there is an easy way to determine if a custom level uses fog just by looking at the Fast3D commands.
Great! I hoped there would be a simple check like this, thank you for laying it out so clearly. This should speed things up quite a bit.

I've been trying this method out on a few hacks. It's been working well, apart from one strange case with Course 1 in the Year of the Plumber demo. There are occurances of B7 00 00 00 00 01 00 00 at $193C030 and $193C5E0 (within the Bob-omb Battlefield range for a 64MB rom), which indicates that fog is used in this level. However, when you actually play the level, there doesn't seem to be any fog effect in use (you get black and white flickering instead of textures, for example). Maybe I've done something wrong...

Originally posted by macN64
I've been trying this method out on a few hacks. It's been working well, apart from one strange case with Course 1 in the Year of the Plumber demo. There are occurances of B7 00 00 00 00 01 00 00 at $193C030 and $193C5E0 (within the Bob-omb Battlefield range for a 64MB rom), which indicates that fog is used in this level. However, when you actually play the level, there doesn't seem to be any fog effect in use (you get black and white flickering instead of textures, for example). Maybe I've done something wrong...


It seems like that section is just left-over data from an older import. The SM64 Level Editor/Importer doesn't clear out old data, but rather overwrites what is already there.

Looking at the Geometry Layout for bob-omb battlefield in the Year of the plumber demo shows two display lists for the level geometry:

Code
018E1760 / 19001760 [ 15 01 00 00 0E 03 24 C0 ] // Display list with opaque textures (starts at 0x19224C0, ends at 0x192D2A0)
018E1768 / 19001768 [ 15 04 00 00 0E 04 84 40 ] // Display list with transparent textures (starts at 0x1938440, ends at 0x193A480) 

As you can see the display lists won't ever get to 0x193C030, so you don't have to worry about it. #tb{:)}

I'm currently working on fixing up frauber's "The Missing Stars" ROM hack, and one of the weird visual bugs I encountered is the grass plane moving on it's own. It appears that there seems to be some sort of triangle size limit on console.


(Gameplay from CEN64)

The grass plane in the first hub is 16384x16384 units and is only made up of only 2 triangles. I first tried reducing the square down to 14336x14336, which reduced the effect significantly but still appeared. I then reduced the square down to 12288x12288 and now it seems to work perfectly fine. I highly doubt many hacks will have triangles this large, but I thought that this little bug was pretty interesting. The easy fix for this sorta thing is to just sub-divide the triangles so they won't be so big.
Will you treat the same thing with Angrylion's Per-Pixel RDP, the pixel-accurate emulator plugin?
Originally posted by queueRAM
5. Additional music settings and sequences
What this step does:
Moves music to 0x3e00000, updates pointers, overrides soundAlloc() call
Explicitly, the fix makes these ASM changes:
Code
0d4714  lui  a0,0x2f0   -> lui  a0,0x3e0
--
0d4768  lui  a0,0x2f0   -> lui  a0,0x3e0
--
0d4784  lui  a1,0x2f0   -> lui  a1,0x3e0
--
0d48b4  jal  800317040  -> lui  v0,0x803d
0d48b8  li   a1,256     -> ori  v0,v0,0x0
--
0dc0b8  swc1 ft1,32(a3) -> nop

How exactly do I use this?
Your layout has been removed.
Originally posted by aterraformer
Originally posted by queueRAM
5. Additional music settings and sequences
What this step does:
Moves music to 0x3e00000, updates pointers, overrides soundAlloc() call
Explicitly, the fix makes these ASM changes:
Code
0d4714  lui  a0,0x2f0   -> lui  a0,0x3e0
--
0d4768  lui  a0,0x2f0   -> lui  a0,0x3e0
--
0d4784  lui  a1,0x2f0   -> lui  a1,0x3e0
--
0d48b4  jal  800317040  -> lui  v0,0x803d
0d48b8  li   a1,256     -> ori  v0,v0,0x0
--
0dc0b8  swc1 ft1,32(a3) -> nop

How exactly do I use this?


This is one of the last steps that SM64 Editor does to the ROM to prepare it for level or music importing. The issue with it is moving the sound allocation buffer to 0x803D0000. See the line just below that.

Originally posted by queueRAM
Turns out 0x803D0000 is not a good choice for sound allocation. Using 0x807B0000 instead allows it to run on the console. This is done by changing one byte at ROM offset 0xd48b7 from 0x3D to 0x7B. See This post for more details
So there isn't really a way to fix the hacks with the sound glitch yet? I was working with Luigi's Mansion 64 (not .5) and a few others.
Your layout has been removed.
Originally posted by queueRAM
I have some bad news to report.
First, regarding VC, most SM64 hacks probably won't work. I remembered some notes from David in the Dolphin/Wii VC Thread that said "No expansion pack support as far as I know". The only N64 title that I am aware of that required the expansion pack and was also made into a VC title was Majora's Mask. I can't even get the MM WAD to run in Dolphin though before injection, so I am unable to test it.


Good news! And it's not about the Dacia Sandero either:



EDIT: ...tne file name (which is supposed to be moderately random) of that screenshot is strangely relevant to the image's contents. Oh, and fun fact: the letter L is the 15th letter from the end of the alphabet and, well, you know...8+7=15



EDIT 2: And just a heads up, the 2017 builds of Cen64 are currently broken on Windows - you'll just get the following error message if you try to run a game (more info):



If you aren't into compiling your own build of Cen64, then you might want to just use the last archived version instead (from 2016-11-14):
http://wayback.archive.org/web/20161114190036/http://www.cen64.com/
Would anyone be interested in making this hack work on console with fixed textures like SM74? I have had it running before (2.0) but for some reason when I tried 2.1, it wouldn't boot. I'm guessing I just missed a step. It should be very similar to 74, it will probably just lag in more levels.
Your layout has been removed.