Last night I've played a lot with Project64 emulator and it's videos plugins. It seems that for a few reasons like internal fights and disagreements things didn't worked out as it should. There's one plugin made by Jabo, and just a single version of it (1.6) supports changing the roms POV in a few games, so I've tested Zelda Majora's Mask last night and true 16:9 is really awesome. But there's another plugin named Glide64 that support Rice High Resolution Texture to be loaded but does not support widescreen geometry hacking. So as you can see each plugin has it's benefits but there's none that supports both. And I'm wondering if it would be possible to hack the rom to enable widescreen geometry hack or if it would be possible to insert the high resolution texture directly in the rom. This way it would be possible to have the best out of two worlds. Does anyone here have experience with N64 rom modifications?
Changing video output isn't technically complicated, but you do need enough available rdram for the larger screen buffer. Presuming you had the room, totally do-able. In fact, a few games do have native support for 16:9. As for implementing it, you'd really have to find somebody more well-versed in the game to tell you how badly you can abuse memory. As for embedding hi-res textures, the simple answer is "no". The more complicated answer is that for each rendered triangle you can only have 4kb of texture data loaded. This is technically possible, but you'd have to subsample the textures at a rate 2^n of whatever the scale difference is, then split every object's surfaces by the same amount. In other words, doubling image depth on hardware (except in edge-cases) requires doubling the number of surfaces you're applying them to in order to remain under the texture data bottleneck. On the flip side, this eats rdram and increases the amount of work the RSP and RDP get burdened with. So, the simple answer is "no". Incidentally, Nemu's native plugin allows a free-roaming camera. It's a bit of a novelty, really.
I knew somebody would pop up from the shadows with an answer. So high resolution is a no go, ok. The geometry hack I believe it might be doable for every game with something like the same .pff file or the same modification method since it's the same plugin for every game. I could look into the rom and start poking. Is there a way to decrypt N64 roms?
Aegh... Hi-res video is vastly more plausible than a joint telemetry+image hack. The only restriction is available rdram, which would probably be more of a problem if you go the other route anyway. Plus, the framerate hit you get for doing it isn't nearly as bad as that for double-depth models. Chances are getting the video output mode you want is a matter of changing the index in the output modes struct, plus increasing the allocation size. There should be a bit of wiggle room anyway to support PAL and FPAL. Could be rather simple really depending how the memory manager is set up. Look into it. When ROM hacking, don't use HLE as reference. Internally there's different microcode varieties for RSP processing, meaning different display list commands and storage methods. There's no way to one-shot all N64 games. N64 ROMs aren't encrypted. At worst, they might be byteswapped. They should be big-endian, and the ROM itself has no special encoding. Past the first 0x1000 bytes there's no standard format. You're somewhat lucky though, since the game uses an internal filetable telling you all filesizes and indicating which are compressed. What you're probably thinking of is the game's compression, which is a heavily documented LZ variety. There's a lot of tools around. Incidentally, Yaz is a different storage format for Yay, despite them being the same compression. Something I didn't mention before is that there is a bottleneck on how detailed of a texture you can see on a given surface due to the difference in the way console and emulators post-process textures. Any detail gained could be washed away.
Right, so this has become a quest of sorts for me ever since I found out NGC hackers had been creating tailor-built widescreen hacks for games. N64 emu could really use this kind of thing, ESPECIALLY for the games that have popular textures packs which mostly comes down to the Zelda games on that platform. I spoke with Ralf over at gc-forever about this and while he apparently doesn't know enough about N64 hacking to do it himself, he did have what seems like valuable advice for anyone who'd like to try themselves. So I decided to try poking around myself but I'm in way over my head. I've been sitting here messing with Mupen running Majora's Mask (U) with Cheat Engine running beside it for hours and I haven't gotten anywhere really. I've identified 2 addresses that might control aspect ratio in the (U) version of the ROM: 00B52FBC and 6D1E3000. I pretty much have no idea how to even mess with them using cheat engine. I THOUGHT I did, it's not my first time using this particular program but it is the first time I've tried to come up with hacks myself. We'd actually probably prefer to use the (E) versions else convert the codes ultimately since the main texture packs for these games are designed for the (E) versions. If anyone has any advice, I would love to hear it.
Which version are they talking about here? The original Japanese release? The others (US, J+, maybe others) are full rebuilds and not emulated ROMs. On an N64 perspective modification is not the same as display resolution. The "black box" approach to 16:9 is a smaller and much less clear picture. Actually outputting 16:9 would require freeing more rdram.
Which is not a problem on emulators. About the code, isn't that a hex string? Do you need to "unpack" the game and repack it with the sdk? I wonder if all you need to do is change that value on the hex editor.