When you are editing these roms, I'm guessing you're editing the hex instructions as they are and then attempting to run it again? That could run you into these issues of the game reading things incorrectly because its all shifted. What should be done is the whole game disassembled back into its assembly code, then the code edited, run through an assembler, and then loaded. What happens is, when the code is assembled there are loops that are unrolled, jumps referenced to specific locations in the instruction memory, precalculated register and fixed values, etc. that when you just edit hex code or insert a new hex instruction at run-time, you are interfering with what the machine expects to execute. If it assembles and says at instruction 0x1A4 execute instructions 0x1B4-0x1C0 then return to 0x1A8, well if you've inserted an instruction that shifted everything down, the instruction at 0x1A4 saying to jump to 0x1B4 isn't updated to account for the shift to say 0x1B8. Thats why inserting instructions or removing them at run-time is a bad idea, while manipulating them isn't as much. Also, has there been any luck with figuring out how the interrupt handlers work and what registers they update?
I usually just hex edit. It is a hassle erasing instructions. Lol if I was solely just changing instructions, then LemASM would be more convenient, but since I'm also changing data and searching for data, Hex editor is more convenient in some cases. I have a quick MIPS to hex encoder anyway. I need to implement FPU instructions though, but that can wait for when I actually get serious with this. I've lost interest tbh, simply by the fact that I can't get help from very many people. I feel like it's time for me to move on, which is what I'm doing. I might as well pursue more ambitious goals. I usually just replace instructions. Like I'll NOP out conditional jumps, for things like Hitbox mode check. When using a recompiler cpu, NOP's usually generate no instruction anyway lol.
Idk much about interrupt handlers. Have you debugged with Nemu64 yet? Fortunately I got mine working again, although I'm still annoyed that Jabo's plugins don't work for me anymore. I'd hate to be stuck with the default plugin. If you decide to use LemASM, just know that their crc calculator doesn't work for SSB64. I had trouble with that, a few months back.
Now I know this isn't an easy task and it would be much easier if we had their source code or could separate the character and stage files and manipulate them individually without trying to make changes to the engine or game mechanics. I honestly see the cost and burden of this to be much more than any possible gains. In fact, I'm not sure what most people's plans or intentions are with modding and hacking the game other than to flex their technical muscles. Its unlikely any work would be adopted by the community as the standard for competitive play. Adding features like in-game recording, or improved graphics, or online play are more work to be done through hacking as opposed to just creating external applications that kind of piggy back on top of the game and achieve the same result. Gameshark can already give us significant changes and mods to the game that doesn't require reinventing the wheel. The new character and stage idea is interesting but I think the easiest way to do that would be identify a character or stage file, copying it, and then manipulating the copy. As far as internally keeping track of achievements and challenges, it might be more work than its worth. Honestly, creating a site for people to post challenges and report results and going by peoples word or having them upload videos for proof is a much easier design that can reach a very similar result.
Fortunately, finding the specific data actually isn't hard, once you've found the location in RAM. All you have to do is simply search for a specific value.
I definitely agree with you about external applications being a lot easier. I do that myself actually. Rather than going through a bunch of hoops to display combo counter, why not make an external one :D . That's what the Japanese did. I did a much simpler implementation, but mine only displays it for 1 person. It's so easy to modify character moves in runtime, since it's all decompressed for you :D . What's even better than gameshark is an external memory editor. For improved graphics, I'd much rather just use texture packs :D . I'm honestly just interested in character and stage hacks. I suppose gameshark would suffice for my stage stuff, but not character data.
I'm not trying to be a debbie downer, but the more I think about it the more I'm with Madao in saying, if you want it done you're going to have to do most of it yourself because the work is over the heads of most people here and those that have the ability, don't have the interest or time. Its a really cool idea and it would be awesome if its done, but its easier to dream than to do. Its like that farfetched solar freaking roadways youtube video some guy made. Speciously, its awesome, but when you really look at its cost effectiveness, feasibility, and possibility, there are much better alternatives and a lot of pitfalls that are never thought of when you're hyped up with an interesting idea.
Its like you and your friends come up with this crazy great idea of going on this wild road trip for spring break and having all this fun and you guys sit down and plan all your activities and say, hey lets do this, or yeah lets do that, and you get super excited and everyones on board. For days everyones talking about it until one day someone is like lets actually make this a reality. So you start looking at schedules, and you can't really find the time for everyone to be able to do the same trip the same week. Then you start looking at expenses and travel time and all these other costs and you're like, **** this is going to be a lot more of an investment and chore than I thought it would be. And then you start getting your doubts that maybe what you imagined would happen may not happen and you could spend all this money and all these hours on something that may not work out the way you planned and all that awesomeness you had before was really just impulse and dreams are just dreams, not reality.
It's refreshing to see someone agree with me on this issue. People think I'm wrong, but honestly, anyone with an IQ >= 100 can do it. They just lack time, patience, or interest. For me, time is a big issue. I think motivation is the main issue for most people. People may say it's too difficult, but a good amount of them have not put much time into it. If you look at other n64 games that have been hacked, you'd see that it's not impossible to even achieve ambitious goals. Even I would have never imagined a SM64 multiplayer hack! There's just not enough people involved in this scene.
Lol I wish someone made that hack for Kingdom Hearts or Star Ocean!
I think the most important thing is to have realistic expectations. If you know you can get something done in a reasonable time-frame, then that is a good sign. Hopefully @
S
Studstill
can push his brain to new limits, because he's one of the only people I see here with a ton of motivation. He's a beginner right now though, so I'm not sure what he will be able to accomplish. I'm working with him, teaching him some of the stuff I know. Hopefully he can prove me right that the issue is motivation and not difficulty. I'm also glad that @
dpw
is a programmer. That means there's a better chance of him accomplishing his goal.
I had to do a lot on my own, but that didn't stop me. I was determined to accomplish my goals (like hitbox mode) :D . The more people involed, the more that can get done. What I like about working together is, you could excel in one thing while someone else excels in another. I remember I took an ASP.net class that I struggled in, but I worked together with a partner the whole time. I would be good at certain things and he'd excel in other things. We saved each other so many hours and both ended up getting A's. A lot of people dropped the class. Who knows what my grade would have been, if I was on my own.