ShootersForever.com Forum Index

GoldenEye 007 Nintendo 64 Community, GoldenEye X, Nintendo 64 Games Discussion
GoldenEye Cheats, GoldenEye X Codes, Tips, Help, Nintendo 64 Gaming Community


Moving + Extending MP / Character Tables...
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department
View previous topic :: View next topic  
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jul 08, 2018 12:14 pm    Post subject: Moving + Extending MP / Character Tables... Reply with quote Back to top

Playing around with the ROM and 21990 file, I was able to relocate certain tables used for multiplayer, and extend them to include more choices. This includes the character roster, and the weapon sets.

Expanding / Moving the MP Character Roster

Inside the 21990 file, it stores the multiplayer character roster.

@ A408 : The characters for multiplayer.
There are a few different pieces of information setup for each character. Name (text string), Gender (for sound played when injured), Photograph, Body, Head, and POV (float point for your eye level). Each entry is 0xC in length, and the full roster uses 0x300. That allows for a maximum of 0x40 (or 64 decimal) character choices.

@ A404 : Currently available MP characters.
This value will be updated based on your agent file and what you've done. By default, there are 0x8 unlocked. Once you complete the Cradle level, it goes up to 0x21. Finally, if you use the button code to activate the rest of the developer characters, it's 0x40.


In the ROM, there are address pointers to tell where to read each part of the character roster block from.

@ 44E22 : Head ID (B19E)
@ 44E32 : Head ID (B19E)

@ 44E72 : Gender (B19A)
@ 44E82 : Gender (B19A)

@ 44EC2 : Body ID (B19C)
@ 44ED2 : Body ID (B19C)

@ 44F36 : POV (B1A0)
@ 44F46 : POV (B1A0)

@ 470AE : Photograph (B198)

@ 475E7 : Name (B198)

Other Locations (unconfirmed uses at this time)…
@ 467CE : Unsure (B198)



The position I am currently using to move and extend the character roster to is 0x7700 (80028490 in RAM) - will allow for a huge increase of up to 100 selectable characters! You must delete debug data with the GoldenEye Editor's Game Configurations menu first, as other data exists at that location. By shifting the entire table there, you must update the addresses in ROM to match the following...

@ 44E22 : from B19E to 8496
@ 44E32 : from B19E to 8496

@ 44E72 : from B19A to 8492
@ 44E82 : from B19A to 8492

@ 44EC2 : from B19C to 8494
@ 44ED2 : from B19C to 8494

@ 44F36 : from B1A0 to 8498
@ 44F46 : form B1A0 to 8498

@ 467CE : from B198 to 8490

@ 470AE : from B198 to 8490

@ 475E7 : from B198 to 8490


Other useful data...

@ 468A7 : Number of MP Characters by Default (0x08)

@ 4688F : Level to Complete for Additional MP Characters (0x11 = Cradle)

@ 468AB : Number of MP Characters after Cradle (0x21)

@ 44DB3 : Number of MP Characters with Cheat Pt.1 (0x40)
@ 46883 : Number of MP Characters with Cheat Pt.1 (0x40)


Without actually extending the number of character bodies and heads you can actually have in the game, this extension does still offer up some good uses. You can utilize the three civilian characters that went completely unused. One female, and two males. Also, the different costumes for Bond, Natalya and Trevelyan can all be added in. And if you want to make your own fun combinations (like Jungle Camo with Balaclava head, or Siberian Guard [brown coat] with Biker head], you can really get creative.

*note: I have locations for where the address of the currently available MP characters are (8002B194) in ROM, but there probably isn't a real important need to move it. It's only 0x4 in size, and still works fine being left at the original position. You won't really gain anything by moving it, I'd say.

.END

============================

Expanding / Moving the MP Weapon Sets

Inside the 21990 file, it stores the weapon set data.

@ 28360 : The table of sets.
This comprises of text, then a RAM address to the weapon data. There are 14 dec by default. The weapon data is stored directly above this table, pointed to by each individual weapon set entry as a RAM address. Each set is 0xC0 in length, comprised of eight 0x18 sized blocks.

@ 283D0 : Currently Selected Weapon Set
This spot stores the ID of whatever set you currently have chosen. By default, it starts with 0x0B, which is the Rockets set. You can change this in your 21990 file to be something else, if you want a different default. I do recommend not moving this, but you probably could if you really wanted to.


In the ROM, there are three important things that define the weapon set position and number of entries.

@ FB10F : This is the number of entries to read
[0x0E by default]

@ FB132 / FB136 : This is where the text begins
[800590F0 (actual 800490F0) = 28360 in 21990]

@ FB14E / FB15E : This is where the RAM addresses begin
[800590F4 (actual 800490F4) = 28364 in 21990]

@ FB106 : Current / Default Weapon ID Spot
[80059160 (actual 80049160) = 283D0 in 21990]

@ FB12E : Current / Default Weapon ID Spot
[80059160 (actual 80049160) = 283D0 in 21990]

@ FB14A : Current / Default Weapon ID Spot
[80059160 (actual 80049160) = 283D0 in 21990]

@ FB16A : Current / Default Weapon ID Spot
[80059160 (actual 80049160) = 283D0 in 21990]

@ FB17A : Current / Default Weapon ID Spot
[80059160 (actual 80049160) = 283D0 in 21990]


Scenario Related to Weapons...

@ 45033 (0x0E) Normal (total number of available weapon sets)
@ 45043 (0x0D) Normal (max weapon set ID)

@ 45063 (0x0E) You Only Live Twice (total number of available weapon sets)
@ 45073 (0x0D) You Only Live Twice (max weapon set ID)

@ 450AB (0x0E) The Living Daylights (total number of available weapon sets)
@ 450BB (0x0D) The Living Daylights (max weapon set ID)

@ 450EB (0x0D) The Man with the Golden Gun weapon switch (goes to Golden Gun)

@ 4511F (0x01) License to Kill weapon switch (goes to Pistols)

@ 36963 (0x02) The Living Daylights Scenario for the following...
@ 36972 (0x014D) The Living Daylights Inhibit Respawn (prevents flag from respawning)

@ 3698F (0x03) The Man with the Golden Gun Scenario for the following...
@ 3699E (0x00D0) The Man with the Golden Gun Inhibit Respawn (prevents gun from respawning)


Now, the actual weapon set data is large. It's 0xA80 in size. You really can't just up and move the whole thing to a new spot, as there isn't enough room inside the file for it. But, luckily for us, each set has its own defined position within the file. So, this is what I have done...

First, you must delete the debug data and J text to clear up room inside the 21990 file to utilize. Then, you export your 21990 file to view in a Hex Editor.

Find the final weapon set entry in the table (80049030 = 282A0). Each set is 0xC0 in size. What we want to do is copy that data and paste it into a new empty space. I went to 33870 (which in RAM is 80054600). This allows us to shift the table upward. For every 0x10 you move it up, you can include 2 more weapon sets. Personally, I tried moving it up by 0x20 (which put it at 28340). You'll now need to add your extra sets in.


At the former end of the table, there will be zeroes. You will have to add in a text entry (brand new ones that you'll be including in the LmpweaponsE text file later [starting at A80E]), as well as include the RAM address to where your new set is being stored. Since there is plenty of room for a few more after where we pasted the previous final entry, we go there.

New set A: 800546C0 [33930]
New set B: 80054780 [339F0]
New set C: 80054840 [33AB0]
New set D: 80054900 [33B70]
*you have enough room there for one more @ 800549C0 [33C30]
*but you must shift the table up 0x10 more to 28330!

You can copy and paste other weapon sets to those spots, and alter them manually afterward. Just remember each one is 0xC0 sized.

Alright, so now we have our table moved up to 28340 [800490D0 - in ROM as 800590D0], and four more sets included with good RAM addresses. (if you added five, just make sure to increase the number of entries in the upcoming bit). Save your 21990 file and import it into the Game Configurations menu.

Once it has imported, go to Stage Options and choose the LmpweaponsE text file from the list. Save it, and open it up in the Text Editor. You will see that "0D Throwing Knives" is the last one in the list. You must add your new text entries for your sets (example: 0E Hunting Knives, 0F Magnums, 10 Exotics, 11 Explosives, 12 Stealth) and save your new text file. Once saved, import it over the original. Next, save your ROM.

Pop open your ROM in a Hex Editing program. Make the following changes...

@ FB10F : from 0x0E to 0x12 (or 0x13 if you added 5 sets and not 4!)

@ FB136 : from 90F0 to 90D0 (or 90C0 if you added 5 sets and not 4!)

@ FB15E : from 90F4 to 90D4 (or 90C4 if you added 5 sets and not 4!)

@ 45033 : from 0x0E to 0x12 (or 0x13 if you added 5 sets and not 4!)
@ 45043 : from 0x0D to 0x11 (or 0x12 if you added 5 sets and not 4!)

@ 45063 : from 0x0E to 0x12 (or 0x13 if you added 5 sets and not 4!)
@ 45073 : from 0x0D to 0x11 (or 0x12 if you added 5 sets and not 4!)

@ 450AB : from 0x0E to 0x12 (or 0x13 if you added 5 sets and not 4!)
@ 450BB : from 0x0D to 0x11 (or 0x12 if you added 5 sets and not 4!)

Save your ROM. You may either need to update the ROM with a tool like RN64CRC.exe, or possibly reopen it with the Editor Game Configuration menu and resave. This will update the checksum in the ROM header, so that it will start up and run properly.

Now just start up your game, enter multiplayer, and check out your new weapon set additions. (if you did not update the six spots in the 45000 area of ROM listed above, than there will be weird behaviour when you switch scenarios and have selected any weapon set past Golden Gun)


As a side note, the format for the weapon sets could be reduced by 1/3 (from 0xC0 per set, to 0x80). That alone would open up a lot of room, and allow us to keep using the same area. Rather than 0xA80 full sized, it would shrink down to 0x700. That would give us an extra six, with only needing to shift the main table up a bit to include the new entries.

0x18 per weapon (original)
00 00 00 06 00 00 00 CD 40 40 00 00 00 00 00 01
00 00 00 32 00 00 00 01

->

0x10 per weapon (proposed)
00 06 00 CD 40 40 00 00 00 01 00 32 00 00 00 01
(unless there is something happening once in RAM)


EDITOR Support...
Looking at the Multiplayer menu of the Game Configurations section, it looks like we could include the RAM address for the weapon set in between the "Text" and "Weapon #" boxes. Number of entries would be calculated automatically, based on how many you have. An "Add Set" button included, perhaps next to "Import" on the right. Then, of course, a Move Table spot where players would enter the area in 21990.

============================================

I will discuss other things soon, such as characters and the level select menu.


Last edited by Wreck on Mon Jul 23, 2018 7:52 pm; edited 23 times in total
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jul 08, 2018 8:16 pm    Post subject: Reply with quote Back to top

I'm not sure if this was done for Goldfinger 64 or not, or anyone else's custom mod projects, but I was just tinkering around for a while to try and extend the character body / head table. The way I have it setup now, so long as where I moved the one table to is a safe zone, you could potentially include an extra 11 models (bodies, heads or combos). I threw in Connery, Dalton and Moore (bodies and heads), which used up six slots (0x50-0x55), and everything seems to run fine, even on console. I'll end up getting into this info soon, though it may already be known by some individuals already. [actually, rethinking about it, I should be able to get more than just 11... I will see tomorrow when my mind is refreshed. Quick look might be close to 30.]
 
View user's profile Send private message Visit poster's website
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 6118

 PostPosted: Mon Jul 09, 2018 1:06 pm    Post subject: Reply with quote Back to top

I believe you can already extend the objects, guns, and guards in the editor - both were done for GF64, though you have to figure out how to use it, it's complicated, requires the 7 meg patch, and I think moves it to upper RAM and end of ROM and copies on boot or something crazy. The main limit you run into though, is the # of files. The limit is 0x2DF I think?, something around there.
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Mon Jul 09, 2018 5:11 pm    Post subject: Reply with quote Back to top

Ah, I suppose it would be easier to shift all the tables to an unused section with the memory expansion. My method is maintaining the original game size, and making use of empty space inside 21990 (debug data). You do need to rename files to make room for more, but that's easy and doesn't hurt much of anything. So long as you keep track of what's what (C00Z = Janus Special Forces, C4FZ = Natalya Cuba, etc), the names aren't necessary in great detail.

I don't think the Editor currently supports moving / extending the weapon sets or character roster in multi? Could be a few things to implement.

Edit: Alright, so I believe I have found the max for characters with my extension (not the actual maximum). Original was 0x4F (80 dec), and new is 0x6C (109 dec). That's an additional 29 heads, bodies or combos that could be included - without needing to tap into the memory expansion. Reducing the internal names to simple "C##Z" shortened the lists quite a bit, which gives room for extras. The total files listed is saying 2C7, so there is some more wiggle room for things.
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Tue Jul 10, 2018 4:25 pm    Post subject: Reply with quote Back to top

Interesting thing I came across after renaming all the C_Z files and trying to find all the character table related RAM addresses stored in ROM. If you rename "Csuit_lf_handZ", the game will crash as soon as you attempt to pause (bring up your watch menu). Don't know if it is hardcoded somewhere, but when I changed it to "C29Z" the game did not like it.

The Editor is crashing when I attempt to load in a modified 21990 file that places four weapon sets where the mp character list used to occupy. Must be reading some data that doesn't react well with it. Hopefully some of this can be supported as I keep plugging away at it and post more data.

I also extended the mp character list to include all the missing characters. That includes four versions of Bond, Natalya in Cuba, Trevelyan as 006, and the three civilians (two male, one female). I do also have Connery, Moore and Dalton. Is there any easy way to increase the memory for the folder menus, so corruption doesn't happen with having the extra Bond photos added?
 
View user's profile Send private message Visit poster's website
pavarini
00 Agent
00 Agent


Joined: 07 May 2015
Posts: 479

 PostPosted: Tue Jul 10, 2018 4:37 pm    Post subject: Reply with quote Back to top

Have you tried increasing the menu allocation string? You can edit it via export all allocations and editing entry 5A, then importing the text file.
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Tue Jul 10, 2018 4:58 pm    Post subject: Reply with quote Back to top

I'm used to just doing it manually via 21990 file export, but will give it a shot. I wasn't sure if the memory for the folders was hardcoded, and was unsure which of the three memory allocations with higher ID's (5A, 5B, 63) might affect it. I'll test it out soon.
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Tue Jul 10, 2018 10:26 pm    Post subject: Reply with quote Back to top

I tried increasing the -mt on ID 5A from 646 to 666, and it does appear to help. May have to test it better another time, but no corruption that I could find in any menu.

Out of curiosity, I wanted to look into the global image bank, which contains the mp characters and levels. I was able to move and expand it, so now four more images were added to make up the 0x10 character image. Levels were unaffected. You could likely add more, and also optionally remove some of the level images. GE only actually uses 10 dec of the 17 dec included. This could potentially be used in a GF64 update, for certain important characters who don't have their own photo (so long as -mt memory increase can allow it).
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Wed Jul 11, 2018 10:19 pm    Post subject: Reply with quote Back to top

I ran into some strange behaviour (actually used in the original game) when switching scenarios. I knew setting The Man With The Golden Gun mode forced that set on, but I never noticed that License to Kill switched the set to Pistols. I found that with any set higher than the Golden Gun (new additions), when you switched to either Normal, You Only Live Twice and The Living Daylights, would set the Golden Gun as your weapon set. I believe I found everything responsible for that, so the weirdness is gone. I will post my findings on it tomorrow.

For a quick test, I moved the entire monitor animation table from 21990 into ROM (where demo data was stored), to see if it would work. It seemed fine being there, from what I could tell. I am just not sure how tricky it would be to add more monitor animations. Putting in extra images into global bank is one thing, but rigging up a new animation is another.
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Thu Jul 12, 2018 9:59 am    Post subject: Reply with quote Back to top

Included some more info on the MP weapon sets. These are tests to see how many total weapon sets there are, and affects what set is chosen when you pick various Scenarios. If you have over 14 dec sets (default), choosing one beyond Golden Gun and then switching the scenario to either Normal, You Only Live Twice, or The Living Daylights, will reset the weapon back to the previous max (Golden Gun). Updating these values to match your extension should fix that problem, and maintain your choice without reverting to Golden Gun. I also included locations for the forced Pistols and Golden Gun sets for their respective scenarios (License to Kill and The Man with the Golden Gun), as well as where the model tests based on scenario will prevent specific items from respawning (only dropped versions by players will continue to appear).
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sat Jul 14, 2018 3:27 pm    Post subject: Reply with quote Back to top

Posted info on how to move and extend the MP character roster table in first post. I really hope that some of this stuff can begin to be supported by the Editor, so people can start to add even more content to the game.
 
View user's profile Send private message Visit poster's website
MRKane
007
007


Joined: 11 Dec 2008
Posts: 1073

 PostPosted: Sun Jul 15, 2018 2:12 am    Post subject: Reply with quote Back to top

Any chance of getting this as an xdelta or something? Very Happy
_________________
No Mr. Bond, I expect you to be re-coded!
 
View user's profile Send private message MSN Messenger
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 6118

 PostPosted: Sun Jul 15, 2018 4:37 am    Post subject: Reply with quote Back to top

OK so it seems I had hidden all the extend options, because they are a bit crazy, and have to be used in right order, or crash. I guess I never really intended to release them heh, but that's alright I suppose (is there even really interest for extending this?? It is only needed for crazy mods, otherwise just replace unused models). If you don't do it in the exact order I say, it'll crash editor and make rom unusable. I unlocked them and posted to beta. You must extend objects (even if keeping same #), then head/hat, then objects, all 3 in that order. They were never designed to be done not in that order.

The way it works, is it basically writes the data uncompressed to ROM (the guard, head/hat, and object tables), and then on boot, copies them to 8070000.

So the order must be:
WARNING - GUARDS MUST ALWAYS BE MOVED, THEN HEAD/HAT THEN OBJECTS, or ROM is corrupt. You can set things to the original values, they don't need to be extended, but do need to be moved in that order. You cannot just do objects for example.
1) Open 7 meg Zoinkity ROM in Tools->Game Configuration
2) Delete debug data
3) Create the .txt files for the extension, I added 5 of each here and you name them to what you want for the new ones. For now, I repeated existing ones so game loads, but you would want to do new names.
Sample Guard: https://www.mediafire.com/file/3gmnvm0ouuk0kv3/guardnamesfile.txt/file
Sample Object: https://www.mediafire.com/file/ihvmzbzjwfgwv1z/objectnamesfile.txt/file
4) Open Model Details and set path to local version of the move guard chunk names.
5) Change Move Guard Chunk New Address to be where in ROM you want. If you are using a 16 meg version, you can use B0FFD000, but if 12 meg, you have to set to B0BFD000.
6) In Model Details, set the new count for, so for me, it was 55 for guards.
7) Don't change any options, and Click Move and write new ROM.
8 ) Change the move head-hat address, for 12-meg ROM to B0BF8800 and 16-meg B0FF8800.
9) Change the New End for the Move Head Hats to number of guards, 55, and then click Move and write new ROM.
10) Set path to local version of the move object chunk names.
11) Change the New Address to B0FF0000 for 16-meg ROM and B0BF0000 for 12-meg ROM.
12) Change the New Count to your new amount, 158 here, and click Move and write ROM.
13) Add your new files to the ROM of the new names.
14) Set the object/head-hat guard parameters for each of the new names as well.
15) Write ROM and it should be extended.



I also tried to add the weapon set movement stuff, but really, I think Mark Kane's idea of just a sample patch setup already, with like 5 extra weapon sets, may be more useful for people.


Last edited by SubDrag on Sat Jul 09, 2022 3:56 am; edited 1 time in total
 
View user's profile Send private message
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7197
Location: Ontario, Canada

 PostPosted: Sun Jul 15, 2018 11:51 am    Post subject: Reply with quote Back to top

I was kind of hoping for something a bit more simple, like what we did in PD, and not relying on the Expansion Pak ROM extension. A way to simply shift one table to a new spot, and add more entries onto end.

Also, the character roster in multiplayer becomes more important to extend once you begin to include brand new bodies. Sure, you can replace the developers with other stuff, but eventually you may still hit the max. I've added on the four Bond outfits, alternate Natalya and Trevelyan, and the three leftover civilians. That's already an easy 9.

MRKane: I had thought of putting out a patch that extends many tables, but the Editor would need to at least read from the new addresses so that issues don't occur. You currently have to do edits manually, since the Editor is still reading from the original locations. And if I put another table or other data in place of the moved character roster, the Editor crashes when loading in the 21990.
 
View user's profile Send private message Visit poster's website
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 6118

 PostPosted: Sun Jul 15, 2018 12:44 pm    Post subject: Reply with quote Back to top

It was pretty complicated setting up the editor for extra characters. Without the head hat as well normal guards don't work, and you need to add more space for the character filename. There was a reason I had to move it all, though I had a bit more characters, like 0x60. The best I can offer is to have the editor not crash and read in the data maybe and write it out if you've already set it up.
 
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department All times are GMT - 8 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Cobalt 2.0 BB theme/template by Jakob Persson.
Copyright © 2002-2004 Jakob Persson


Powered by BB © 01, 02 BB Group

 


Please Visit My Other Sites: GoldenEyeForever.com | GrandTheftAutoForever.com

Got kids? Check out my Dora The Explorer site with games and coloring pages!

Our forums feature Nintendo 64 games, GoldenEye 007 N64 New Maps and Missions, GoldenEye Cheats, N64 Emulator, Gameshark, GoldenEye Multiplayer and more!

[ Privacy Policy ]