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


Get 11 More Level IDs Functioning...

 
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: Mon Mar 23, 2020 9:11 pm    Post subject: Get 11 More Level IDs Functioning... Reply with quote Back to top

So in the GE Tournament Edition, I wanted to try and get some kind of cheat working that would change the eleven multiplayer maps into their mirrored versions. The simplest method I could think of was to make use of the unused level IDs. Turns out, there were a perfect count of eleven. However, they didn't want to load. Most would crash immediately, and Citadel (ID 28) would hang while music played. After some time poking at it, I was able to determine the primary cause was a lack of proper text file support. Even though most had a file, they weren't being utilized. Each level ID needs to refer to a valid text file, and have a working bank of text. If not, the level will not get past a black screen, music or no music.

Anyway, I apologize for the lengthiness of the next bit, but I tried to cover as much as I could. I noted each of the eleven level IDs, and what they are lacking. You'll need to add new setup files for most, import backgrounds and clipping over their empty files, or other things. Refer to each level to see what you need. Depending on your goal, you may need to move and extend certain tables. Music, only if you want specific level music for your new maps, as well as memory allocations. Level ID 39 takes a bit of extra work, though I now have included an alternate method that utilizes ID 15 instead.

Also, yes, there are more "unused" level IDs. 00-08, 0A-13, and 15. However, none of them are currently supported in the level ID setup table. Also, 00-08 would not be supported within many tables. There would be more hope for the other ones, as they are at least within table range.


LEVEL IDs and WHAT THEY LACK


28 cat "citadel"
-setup file
[add "UsetupcatZ" and/or "Ump_setupcatZ" files]

-valid text bank table pointer
[at 3AE4C in 21990, type ROM/RAM address to valid text bank ID entry]

-briefing file
[add "UbriefcatZ" file]
[*3.]



2A sho
-setup file
[add "UsetupshoZ" and/or "Ump_setupshoZ" files]

-clipping file
[add "Tbg_sho_all_p_stanZ" file]

-valid text bank table pointer
[at 3AE54 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-briefing file
[add "UbriefshoZ" file]
[*3.]



2C eld
-setup file
[add "UsetupeldZ" and/or "Ump_setupeldZ" files]

-valid text bank table pointer
[at 3AE5C in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefeldZ" file]
[*3.]



2F lue
-setup file
[add "UsetuplueZ" and/or "Ump_setuplueZ" files]

-valid text bank table pointer
[at 3AE68 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbrieflueZ" file]
[*3.]



31 rit
-setup file
[add "UsetupritZ" and/or "Ump_setupritZ" files]

-valid text bank table pointer
[at 3AE70 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefritZ" file]
[*3.]



33 ear
-setup file
[add "UsetupearZ" and/or "Ump_setupearZ" files]

-valid text bank table pointer
[at 3AE78 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefearZ" file]
[*3.]



34 lee
-setup file
[add "UsetupleeZ" and/or "Ump_setupleeZ" files]

-valid text bank table pointer
[at 3AE7C in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefleeZ" file]
[*3.]



35 lip
-setup file
[add "UsetuplipZ" and/or "Ump_setuplipZ" files]

-valid text bank table pointer
[at 3AE80 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbrieflipZ" file]
[*3.]



37 wax
-setup file
[add "UsetupwaxZ" and/or "Ump_setupwaxZ" files]

-text bank table pointer
[at 3AE88 in 21990, type ROM/RAM address to valid text bank ID entry]
[*4. must update count at F6117 in ROM +1, as 0x2F]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefwaxZ" file]
[*3.]



38 pam
-setup file
[add "UsetuppamZ" and/or "Ump_setuppamZ" files]

-text bank table pointer
[at 3AE8C in 21990, type ROM/RAM address to valid text bank ID entry]
[*4. must update count at F6117 in ROM +2, as 0x30]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefpamZ" file]
[*3.]



39 x [EASIER ALTERNATE METHOD BELOW!]
-setup file
[add "UsetupxZ" and/or "Ump_setupxZ" files]

-setup table pointer
[at 16838 in 21990, type "80055A54"]
[at 34CC4 in 21990, type "UsetupxZ", adding valid setup name]

-clipping file
[add "TbgxZ" file]

-background file
[add "bg/bgx.seg" file]

-text file
[add "LxE" file]

-text bank entry
[at 3AAEC in 21990, type "LxE", adding valid text name]

[at 27744 in 21990, type "8005B87C", activating E bank 00xx]
[at 27748 in 21990, type "8005B87C", activating J bank 00xx]


-text bank table pointer
[*4. must move and extend table at 3ADD0 in 21990]
[*4. must update count at F6117 in ROM +3, as 0x31]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefxZ" file]
[*3.]



ALTERNATE of 39 x - Using ID 15
[requires one less table move/extension]

-level ID
[at 23A77 in 21990, change 0x39 into 0x15, to update level ID]

-setup file
[add "UsetupxZ" and/or "Ump_setupxZ" files]

-setup table pointer
[at 34B00 in 21990, write over with "UsetupxZ", adding valid setup name]

-clipping file
[add "TbgxZ" file]

-background file
[add "bg/bgx.seg" file]

-text file
[add "LxE" file]

-text bank entry
[at 3AAEC in 21990, type "LxE", adding valid text name]

[at 27744 in 21990, type "8005B87C", activating E bank 00xx]
[at 27748 in 21990, type "8005B87C", activating J bank 00xx]


-text bank table pointer
[at 3AE00 in 21990, type ROM/RAM address to valid text bank ID entry]

-sky block
[change ID of an unused entry to match, if required]

-memory allocations
[*1.]

-music slot
[*2.]

-briefing file
[add "UbriefxZ" file]
[*3.]




*1. Move/Extend Memory Allocations Table

Original table at 342C in 21990 [800241BC in RAM].
0x10 sized each entry.
Format is level ID, then RAM Pointer to memory values.
Can share same RAM Pointer between multiple levels.

Locations in ROM...
6E3A [41BC]
6E56 [41BC]
6E9E [41BC]
6EB6 [41BC]

*correct pairings?
*6E36 [8002]
6E46 [8002] for 800241A8?
*6E4E [8002]
*6E96 [8002]
6EAA [8002] for 800241A8?
*6EB2 [8002]

Format for memory values...
-ml0 -me0 -mgfx### -mvtx### -mt### -ma###
(uses space [0x20] between each type)
(end with null padding until next 0x4)




*2. Move/Extend Music By Level Table

Original ID Table at 2DD80 in 21990 [8004EB10 in RAM].
0x8 sized per entry.
Format is level ID, main theme, background, and X track.

Original Random Selection Table at 2DE40 in 21990 [8004EBD0 in RAM].
0x2 sized per entry.
Format is music entry ID.

Locations in ROM...
107252 [8005] [actual address 8004]
107266 [8005] [actual address 8004]
10726A [8005] [actual address 8004]
107286 [8005] [actual address 8004]
107296 [8005] [actual address 8004]
1072C6 [8005] [actual address 8004]
107312 [8005] [actual address 8004]
107342 [8005] [actual address 8004]
10737A [8005] [actual address 8004]
107382 [8005] [actual address 8004]
1073C2 [8005] [actual address 8004]
1073CA [8005] [actual address 8004]

107256 [EB10]
10726E [EB10]
10737E [EB10]
107386 [EB10]
1073C6 [EB10]
1073CE [EB10]

107292 [EBD0]
1072A2 [EBD0]
1072DA [EBD0]
10730E [EBD0]
10731E [EBD0]
107356 [EBD0]




*3. Briefing Update

The mission table starts at 9E54 in 21990 [8002ABE4 in RAM].
Each entry is 0x1C in size.
There are two types: Mission and Part.
Mission is a header (9 of), and Part is the level (20 of).
At 0x18 in Part, is RAM Pointer to Briefing file name.
To use a new level ID briefing, do one of two things.
One is to rename an old file it uses (in 8004F3XX area).
Or, add a new "Ubrief_Z" name in 21990 and point to it.
Be sure text bank matches what is set for level ID or will crash.

Dissection of Mission/Part Block
0x00: RAM Pointer to Mission/Part Number Text
0x04: Text
0x06: Text (for icon, else uses same as 0x04)
0x08: Level ID (or FFFFFFFF if header)
0x0C: Row #? (00-04, Aztec and Egypt use 04)
0x10: If Level (00000000) or If header (00000001)
0x14: Level # (00-13) or FFFFFFFF if header
0x18: RAM Pointer to Briefing File name (or blank if header)




*4. Move/Extend Text Bank By Level ID Table

PART A - setting bank for levels 09-38

Original Table at 3ADD0 in 21990 [8005BB60 in RAM].
Full table is 0xC0 sized [0xB8 used, 0x8 extra empty].
0x4 sized per entry.
Uses ROM Pointer [can also use RAM Pointer!].
Add support for ID 37 at 3AE88 and ID 38 at 3AE8C.


Locations in ROM...

Number of entries in table
F6117 [2E] [09-36 range by default]

RAM location of table
F6122 [8006] [actual address 8005]
F612A [BB60]

Format of bank setup
03 E0 00 08 24 02 00 ##
[Include additional in ROM or 21990 to support more levels]
[can also share same bank between multiple levels]

## =
*00 x [00 - if added to start]
01 library [04]
02 archives [08]
03 facility [0C]
04 stack [10]
05 aztec [14]
06 cat "citadel" [18]
07 caverns [1C]
08 control [20]
09 cradle [24]
0A egypt [28]
0B dam [2C]
0C depot [30]
0D frigate [34]
0E temple [38]
0F ear [3C]
10 eld [40]
11 basement [44]
12 jungle [48]
13 lee [4C]
14 cuba [50]
15 lip [54]
16 lue [58]
17 caves [5C]
18 pam [60]
19 streets [64]
1A complex [68]
1B rit [6C]
1C runway [70]
1D bunker 2 [74]
1E bunker 1 [78]
1F surface 1 [7C]
20 surface 2 [80]
21 sho [84]
22 silo [88]
23 statue [8C]
24 train [90]
25 wax [94]
26 gun [98]
27 title [9C]
28 mpmenu [A0]
29 probobj [A4]
2A mpweapons [A8]
2B options [AC]
2C misc [B0]

*NOTE:
Bank entry "0000" is skipped in most cases (shows under folder briefing?).
You may want to leave 0000 blank and start your text at 0001.
No issue with intro cameras, door renames, cast roll, end credits, etc.
TESTED ON CONSOLE, did not run into trouble.
[renames and some others use 00000000 for nothing/empty]



PART B - Extend Table Beyond IDs 09-38 (for 39 x)
*do not use if 39 was changed to 15

To extend the table to allow for more IDs, this is suggested.
At 3AAF0 in 21990, is a list of all valid text file names.
Condense the list by deleting all "L_J" text strings.
This will reduce size from 0x2E0 down to 0x170.
You can include "LxE" or others at the end.


Now you can move the text by level ID table up.
To allow for ID 39 (which it was too short for), shift it up 0x10.
This would put the start at 3ADC0, instead of 3ADD0.
Add your ROM or RAM Pointers to the table (normal ends with 36 Cuba).
If you need to reference a new bank, you can add a line to 21990.

03 E0 00 08 24 02 00 ##
## = Bank ID in list (see list above)

Example:
At 3ADB0 in 21990, type 03 E0 00 08 24 02 00 00
At 3AE80 in 21990, set 8005BB40
This will make level ID 39 use text bank 00.

Be sure to update the ROM to use the new location and count...
At F6117 in ROM, update from 0x2E to 0x31
At F612A in ROM, update from 0xBB60 to 0xBB50


At 27744 in 21990, there are RAM Pointers to "L_E" and "L_J" names.
You'll need to update them all to match their new locations.
Also, as the "L_J" no longer exist, simply refer to "L_E" twice.


Remember, it starts at bank 00, and each bank is 0x8 of RAM Pointers.
Bank 00 has no file references normally, but can use them.
Examples: Bank 04 is "LameE/J", and Bank 2C is "LdamE/J".
It ends after bank B0 (B4 may have conflicts, though it does work).
In RAM, 8008C640 will load a RAM Pointer to the loaded bank 00 file.
Some vital text banks are always loaded in, such as LgunE.


Last edited by Wreck on Tue Mar 24, 2020 2:21 pm; edited 1 time in total
 
View user's profile Send private message Visit poster's website
00action
00 Agent
00 Agent


Joined: 21 Feb 2007
Posts: 445
Location: UK

 PostPosted: Tue Mar 24, 2020 4:01 am    Post subject: Reply with quote Back to top

Fantastic information! Thanx for taking the time to write it up.
It would be great to see this as part of the editor.
_________________
My YouTube Channel
https://www.youtube.com/channel/UCGWK44nRWYkQyNUcauIiIYQ
My Twitch Channel
https://www.twitch.tv/00action
 
View user's profile Send private message
Wreck
Administrator
Administrator


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

 PostPosted: Tue Mar 24, 2020 2:31 pm    Post subject: Reply with quote Back to top

Thanks. I just added an alternate method that turns ID 39 into 15, which is another unused one. But because it is included within the range of IDs in different tables, it means there is less work to do to get in functioning.

I'm sure some of this could be supported by the editor. The alternate method that doesn't require ID 39 moving and extending a table certainly helps. The main thing is getting the text files working for their levels. Users would obviously need to import the necessary files (setup, background, clipping) for each level. Certain ones are missing, and need to be added to the list. Others exist, but are blank. My list should point out the important details. If SubDrag would like to include it as an option, I'd be more than happy to give him any info he needs.
 
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 Mar 24, 2020 4:23 pm    Post subject: Reply with quote Back to top

I've had some success moving and extending the image banks that include those used for multiplayer levels. It usually ends at 0x10 (Random), but I have made 0x11 use the Surface ii image. However, the Editor apparently hates this. Both the older one I use (gives an out of memory error), and newer (just shows the progress bar forever) won't cooperate with the ROM.

Now, it could maybe be because I replaced the final demo data with the table? Even though I modified the address in 21990 where the last demo should be, so it reuses the one before it. The original table is still in its original place. I copied it over to 2E2600 in ROM, and added 4 images at the end (so the end is 0x1430, instead of 0x1400). So if it is still looking there, it should find it. This extension would be very useful, should we have a second page of multiplayer levels accessible (even if by cheat toggle for now). As of now, there are only seventeen unique image entries. Subtract one for Random, and we have sixteen. That is six short of the max 22 images needed for two pages (assuming random is on each). Some can reuse, like Library and its variations.


Edit: Further testing, I confirmed at least level images 11-14 all work. I did not try any more than that. I did, however, extend the character select portraits by one. Thankfully, it seems the game already knows the format, and uses each group of four textures as the picture. Other possible uses for extending these image banks are: adding more screen images for monitor animations, and possibly having additional water textures - though the water may have more going on with it. This might just allow for more skybox water images.

Editor seems to run into trouble as soon as the image table is moved. If the address doesn't match (29D160), it fails to load the ROM correctly. It's like it does look for that address in ROM (at 100B33 + 100B3A), but doesn't know what to do if it has changed from the default location.
 
View user's profile Send private message Visit poster's website
00action
00 Agent
00 Agent


Joined: 21 Feb 2007
Posts: 445
Location: UK

 PostPosted: Wed Mar 25, 2020 12:22 pm    Post subject: Reply with quote Back to top

I hate to tell you this but the editor can already add multiplayer level images!

Under the Fonts/Screens tab, click add by the Screen Bank, it will add C4 and C5 to the selection, change these to level images you want, now go to the Multiplayer tab and check the drop down of photographs for stage and you will see the two new extra images.
I've been working on a mod for a while to allow multiplayers for all levels in one rom, I used this option to get all the single player level images in and Citadel.

As far as I know though there is no way to extend the Character Roster photograph back so that would still be cool to see.
_________________
My YouTube Channel
https://www.youtube.com/channel/UCGWK44nRWYkQyNUcauIiIYQ
My Twitch Channel
https://www.twitch.tv/00action
 
View user's profile Send private message
Wreck
Administrator
Administrator


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

 PostPosted: Wed Mar 25, 2020 1:57 pm    Post subject: Reply with quote Back to top

Interesting. Maybe it isn't in my older editor build that I still use. I'll need to take a look at it. If it's already got some support, than surely more could be added. Thanks for letting me know. I'm not sure what immediately follows the image bank in ROM. Only note I found was sound related. Moving it to replace the final demo scene (which is Train, that - in my opinion - is too far into the game to show off) gives a ton of room for more images.
 
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 Mar 25, 2020 6:52 pm    Post subject: Reply with quote Back to top

Looks like it was in my older build, but I didn't notice it. I've posted my info and suggestions in the main Editor discussion thread. Hopefully SubDrag can take a stab at it one day. It does already have part of it taken care of, so I can't see it being too bad...
 
View user's profile Send private message Visit poster's website
MultiplayerX
007
007


Joined: 29 Jan 2006
Posts: 1210
Location: USA

 PostPosted: Mon Mar 30, 2020 9:50 am    Post subject: Whoa :O Reply with quote Back to top

Excuse my dumbness and noob level of hacking to the great Wreckster buuuuuut does this mean it might be possible to integrate this stage ID switching to make the Campaign screen just load the levels as Multiplayer ones? Very Happy

Sure would be nifty to write all the stuff in a one pack deal for sure Smile
_________________
http://codelegends.proboards.com/
 
View user's profile Send private message Visit poster's website
Wreck
Administrator
Administrator


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

 PostPosted: Mon Mar 30, 2020 10:42 pm    Post subject: Reply with quote Back to top

There are probably different applications this information could be used for. Mainly, right now, it is most useful for multiplayer. With an additional eleven level IDs, the perfect amount for a full page of multi stages (plus random), it would fill out a second page worth of MP maps. Currently, Carnivorous came up with a way to make a cheat option change which level IDs are used in each of the eleven slots. If that was taken a step farther, it would also change out the level pictures and text. This would be the best option to have a second set of levels in muti, until (possibly at some point) redoing things in ROM so a "Next" tab could be utilized to make it read from another table of levels.
 
View user's profile Send private message Visit poster's website
MultiplayerX
007
007


Joined: 29 Jan 2006
Posts: 1210
Location: USA

 PostPosted: Tue Mar 31, 2020 5:41 am    Post subject: Oh wow Reply with quote Back to top

That is awesome. Very Happy. Well once I fix Goldeneye Legend with correct weapon placement entities I'll have to update all the levels to use this memory extension as one multi mod instead of two parts. Smile

**BTW** Is Carnie working on integrating this into editor updates? Cool
_________________
http://codelegends.proboards.com/
 
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 Mar 31, 2020 2:55 pm    Post subject: Reply with quote Back to top

Well, for starters, Carnivorous is no longer making direct updates to the Editor, anymore. He's still doing things, and will provide info as needed, but SubDrag has once again resumed updating and maintenance.

As for a custom cheat, it is usually on a case by case basis, depending on your ROM, what can be / has been replaced, and your needs.

Getting the levels to work might be something the Editor could support. I can talk with Sub about ideas.
 
View user's profile Send private message Visit poster's website
MultiplayerX
007
007


Joined: 29 Jan 2006
Posts: 1210
Location: USA

 PostPosted: Tue Mar 31, 2020 3:01 pm    Post subject: Cool! Reply with quote Back to top

Neat to know old Sub is back in the game Smile Really neat seeing people come back! You just can't get away from this game I'm telling ya Wink It's like no other game Cool
_________________
http://codelegends.proboards.com/
 
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department All times are GMT - 8 Hours
Page 1 of 1

 
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 ]