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


GoldenEye Spectrum Emulation Unlocked

 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department
View previous topic :: View next topic  
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1661

 PostPosted: Tue Mar 27, 2012 6:02 pm    Post subject: GoldenEye Spectrum Emulation Unlocked Reply with quote Back to top

GoldenEye Spectrum Emulation Unlocked

Little benownst to the world all this time, GoldenEye (N64) has a fully-functional ZX Spectrum 48x emulator built into it. By feeding it a proper Spectrum monitor program and calling menu 25 to load a snapshot, any Spectrum 48x program can be run.

The emulator started life as a side project to see if Spectrum emulation was possible on N64 and was hooked into GE, the current game in development. It was supposed to be removed before release but was only made inaccessible and inoperable. All the registers, dependancies, and script required to run the emulator still reside in retail GoldenEye carts.

The original list of games were previous Rare titles, then known as Ultimate Play the Game. The embedded filelist is, in order:
Code:
em/data/sabre.seg.rz      Sabre Wulf
em/data/atic.seg.rz      Atic Atac
em/data/jetpac.seg.rz   Jetpac
em/data/jetman.seg.rz   Lunar Jetman
em/data/alien8.seg.rz   Alien 8
em/data/gunfright.seg.rz   Gun Fright
em/data/under.seg.rz      Underwurlde
em/data/knightlore.seg.rz   Knight Lore
em/data/pssst.seg.rz      Pssst
em/data/cookie.seg.rz   Cookie
em/data/spec_rom.seg.rz   Spectrum 16k monitor program


In actual fact, the emulator was supposed to run without the aid of the monitor program. Critical subroutines were copied out or hardcoded. In its current state, however, the monitor is required.

Originally, the emulator was run much the same way that stages are run. Unlike stages which run by switching to menu 11, the emulator runs by switching to menu 25. When initialized, it reads what buttons are held on controller 3. Depending on the button held is which game would be loaded. From there, the monitor program and selected snapshot file are loaded from ROM, and if necessary these files are decompressed.
Only controller 1 is detected. This is mapped as a Kempston joystick on port 31. Necessary buttons to start each game (usually keyboard '0') and any additional keys to play the game are mapped to the keyboard port 254 halfwords. These are set on a per-game basis, but general controls are A/B to start a game, Z for the 'action' button, and L to unload the emulator and return to gameplay.
Each emulation cycle lasts 69888 Spectrum cycles. Each opcode consumes a certain amount of this cycle count. At the end, the screen is drawn to the Spectrum screen buffer, and this is displayed like an image using usual N64 microcode. Emulation continues as long as menu 25 is called.

+_+

Why a Patch Is Required

In its pre-patched state the emulator has some peculiar issues, probably due to the different versions of included files used to compile the retail game.
For instance, the ten games listed above were not all selectable. The initializer only has button masks for eight games, defaulting to SabreWulf. The snapshot loader restricts this list to only the first five. The controller mapping function, however, redirects buttons for all ten titles.

Interestingly, the ROM file table leaves only ten spaces for the ten different snapshot files blank. These are completely blank, without any data or indicies until the final file placeholder. As previously mentioned, the monitor was not supposed to be included but is requested by the snapshot loader. Otherwise, the list would require eleven spaces.

The 'unloader' does not, in fact, work properly. It copies NULLs over the program manager. This, obviously, will cause any number of fatal errors to the current game and make it impossible to return to normal gameplay. Also, there is no capacity to reset the screen registers to default.

+_+

The Patch

The patch will reactivate full emulation support in GoldenEye.
The patch should be applied only to an uneditted, unbyteswapped (big-endian) North American GoldenEye ROM (NGEE). The GoldenEye Setup Editor can apply and byteswap the ROM for you, as well as recalculate the checksum. (Yes, that was a shameless plug.) It should run properly on hardware. Probably ;*)

You can download the patch via mediafire:
http://www.mediafire.com/download.php?6bnashajw41n5p5

Don't pirate ROMs! In most countries you can legally make a backup copy of a cartridge and apply the patch to that. No direct links to ROMs of any kind, patched or otherwise. Respect the Fuzz!

Emulation can be triggered from the folder select screen after the Eye and title screens by pressing L+R on controller 3. To access each game, hold the button noted below on controller 3 as you press L+R. If no buttons are held or an invalid combination is used it will default to Cookie. For best results, hold the button for the game you want as you press L+R.
Code:
c left      Sabre Wulf
c right   Atic Atac
c up      Jetpac
c down      Luna Jetman
+ left      Alien 8
+ right   Gun Fright
+ up      Underwurlde
+ down      Knight Lore
A button   Pssst
(default)   Cookie


To end emulation at any time, simply press L on controller 1. It should return you to the folder select screen and allow you to continue to play normally. This also conveniently allows you to select another Spectrum game if you wish.

Here's a link to a video of the thing in action. Please keep in mind Nemu's running with some pretty shotty plugins to get the recording rate fairly high.
http://www.youtube.com/watch?v=ONJtqf2lIIM


Briefly, here's the basics to playing each game.

Sabre Wulf L+R, c left
Cut a swath through the jungle collecting loot in search of a legendary treasure.
The game's title screen will clear automatically after a couple seconds.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons
  • Sabre: Z button


Atic Atac L+R, c right
Seek out the golden key and escape the castle!
Collect food to regain health. Keys and other items can be collected with A/B and while carried offer some bonus effect. Keys matching the color of barred doors let you walk through them, items like the whiskey bottle let you walk through certain features like kegs, bookcases, clocks, skeletons, etc., and other items allow you to kill or scare certain kinds of enemies.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons
  • Attack: Z button
  • Collect: A or B button
  • Character Select on Main Menu:

    • + left Knight: passes through clocks
    • + down Wizard: passes through bookcases
    • + right Serf: has momentum and passes through kegs



Jetpac L+R, c up
Rebuild your rocket and refuel it while pillaging each planet. Touch each rocket segment or block of fuel to carry it back to the rocket. When the rocket is entirely purple touch it to take off to the next planet.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons; fly by pressing up, A, or B
  • Fire: Z button


Lunar Jetman L+R, c down
Drop the bomb on the alien bases before they launch their missiles to destroy your rover.
Press B when in the middle of the rover to enter it. Inside the rover you are immune to the aliens outside. Press B again to exit. You can move the rover with left and right but can not move over craters in the ground. B also uses the teleporter.
You fly by pressing up or automatically if you walk over a crater in the ground. This consumes fuel in the meter at the top of the screen. To refuel, stand in the middle of your rover.
Pick up an item by moving over it and pressing A. You drop the item by pressing A again. You can also drop an item on the flat part of your rover to drive it to a location. Teleporting while holding an item also transports the item.
You can repair craters. Stand in the middle of the rover and pressing A to pick up a piece of bridging. Drop the bridging while hovering over the crater by pressing A again. There is an infinite supply of bridges.
To destroy an alien base carry a bomb and drop it from above onto the main building. Dropping a bomb anywhere else simply leaves a crater. Bombs always appear next to the rover and there is an infinite supply of them.
When time is out the aliens fire two missiles, one of which is a dummy. The other will bee-line for the rover and destroy it. If it does the game is over. You can destroy the missile by firing at it or colliding with it. The time bar is at the top of the screen.
In the upper left of the screen is an indicator for what direction your rover is in. The upper right indicates what direction the alien base will be.
Press start to advance past the title screen.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons; fly by pressing up
  • Fire: Z button
  • Collect: A button
  • Enter/Exit: B button


Alien 8 L+R, + left
Find and collect the power cores and return them to the cryo units to revive the crew.
Start Game: Start, A, or B buttons
    Controls
  • Forward: up on control stick, + pad, c buttons
  • Turn: left/right on control stick, + pad, c buttons
  • Collect: A or B button
  • Jump: Z button


Gun Fright L+R, + right
Track down each varmit and plug 'em full of lead to collect the bounty on their head.
In the bonus and gunfight modes move the crosshairs and press Z to fire at the bags of money or the criminal.
In town, avoid touching any of the townsfolk. Some of the townsfolk will be hopping up and down pointing in the general direction of the criminal. When you see a criminal, fire your gun with Z to start a gunfight with them.
    Controls
  • Movement: control stick, + pad, c buttons
  • Fire: Z button


Underwurlde L+R, + up
Defeat the dark lord within the depths of the Underwurlde.
Enemies do not kill you in Underwurlde. You only die if you fall too far to the ground. Collecting gems temporarily makes you blue and immune to death.
You will not be able to attack enemies until you have collected a weapon. You should start with one just to your left. Move over it and press B to collect it. You may carry up to three items.
Guardians are stationary monsters that can only be defeated using a particular item.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons
  • Jump: up on control stick, + pad, c buttons or press the A button
  • Collect: B button
  • Fire: Z button


Knight Lore L+R, + down
Feed the charms hidden within the castle to the cauldron to produce a potion to cure your lycanthropy.
The day/night counter in the lower right indicates how long it will be before you transform. When you transform you'll be immobile and vulnerable for a few seconds. You should only enter the cauldron room as a human, but otherwise there is no actual difference between the human and wolf.
    Controls
  • Start Game: Start, A, or B buttons
  • Forward: up on control stick, + pad, c buttons
  • Turn: left/right on control stick, + pad, c buttons
  • Collect: A or B button
  • Jump: Z button


Pssst L+R, A
Spray the blasted pests before they eat your prized Thyrgodian Megga Chrisanthodil.
Each type of spray kills a different kind of pest. If you use the wrong one the pest stops for a second and then continues. If two or more pests latch onto the flower it will begin to wit and die.
To grab an item or spraycan press against it. To drop off an item, press it into one of the nooks on the side of the screen.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons
  • Fire: Z button


Cookie L+R
Whap the ingredients into the pot with a well-timed blast of flour. Smack everything else into the wastebaskets.
The flour will fire in the last direction you pressed.
    Controls
  • Start Game: Start, A, or B buttons
  • Movement: control stick, + pad, c buttons
  • Fire: Z button


+_+

For those interested in how much code the patch affected, here's a brief summary.
  1. To hook the emulator in, eight lines were added into menu 5's interface to test for controller three. Room was allocated by condensing the usual control stick tests.
  2. A 2-byte fix was used to allow access to ROM filelist entry 0x2DF. This bug was only present in NGEE and corrected in later versions.
  3. ROM filelist entries were added for each snapshot and the program monitor. Since the monitor is necessary in this iteration of the emulator but is commandeering a snapshot entry, the unused text file LwaxJ has been overwritten with cookie.seg.rz. All other entries fill blank, unused placeholders.
  4. As previously mentioned, the file loader was limitted to the first five titles. This test was changed into a simple invalidity test. Changes were made in-place (crudely) and affect a total of five lines.
  5. Menu 25's initializer, used to determine which of the games should be loaded by testing the held buttons on controller 3, has been completely rewritten. Games are no longer had-coded to masks but use a table. A final NULL entry indicates the end of the list and simultaneously the index of the default snapshot. The masks used are identical to those used by Rare, with the exception of the default entry being overridden with the unregistered game Cookie. One line was also added to stop the main menu music.
  6. Within the controller mappings, L's assigned function no longer nullifies the program manager. It now calls the title object, returning to the previously-loaded menu 05 (folder select). This consists of four lines, replacing a loop and shortening the code generally.
  7. Although unneccessary, the Start button was mapped to mirror the A/B start game option for all titles.


Everything else is untouched, including all aspects of actual emulation. You are playing Rare's actual embedded Spectrum emulator and nothing else.

+_+

As always, disassemblies and disertations are always available. Comments, queries, and quirks can be reported either by email or at the Shooters Forever forums: http://www.shootersforever.com/forums_message_boards

-Zoinkity
_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
mistamontiel
007
007


Joined: 17 Apr 2011
Posts: 796
Location: Miami, FL, CUBA

 PostPosted: Tue Mar 27, 2012 8:41 pm    Post subject: Reply with quote Back to top

This is great, I'm having trouble though

I keep running Cookie. I was surprised my keyboard wouldn't send three keys together. And so I even set P3 on my adapter, set L, R and Left C (not on any "axis buttons"), held Left C, to L+R and nothing just Cookie

It's the Mayflash dual N64 adapter by the way
 
View user's profile Send private message Visit poster's website
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1661

 PostPosted: Wed Mar 28, 2012 7:50 am    Post subject: Reply with quote Back to top

Can't say. Does work fine on hardware, so must be a funny setting. L+R is what triggers the switch to emu, and any other buttons held during that time select the game.

One kinda screwball thing you can do to switch them around is to change pointer order to the game names. The pointers span from 8004ED2C-8004ED54. The correspondance is:
Code:
8005C020   em/data/sabre.seg.rz
8005C038   em/data/atic.seg.rz
8005C04C   em/data/jetpac.seg.rz
8005C064   em/data/jetman.seg.rz
8005C07C   em/data/alien8.seg.rz
8005C094   em/data/gunfright.seg.rz
8005C0B0   em/data/under.seg.rz
8005C0C8   em/data/knightlore.seg.rz
8005C0E4   em/data/pssst.seg.rz
8005C0FC   em/data/cookie.seg.rz


To change the order, you can change which game cookie is pointer to. So, by using this code you can substitute games for cookie.
8004ED53 00xx
values:
Code:
20   sabre.seg.rz
38   atic.seg.rz
4C   jetpac.seg.rz
64   jetman.seg.rz
7C   alien8.seg.rz
94   gunfright.seg.rz
B0   under.seg.rz
C8   knightlore.seg.rz
E4   pssst.seg.rz
FC   cookie.seg.rz


The only issue with doing this is games with specific button mappings won't be mapped properly. For basic games though (run & gun) you'll be okay.

Otherwise, to change order or button masks you'd have to make some changes within the TLB segment, easiest done on the ROM side of things.
_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
bmw
Hacker
Hacker


Joined: 04 Jan 2006
Posts: 1349
Location: Michigan

 PostPosted: Wed Mar 28, 2012 6:28 pm    Post subject: Reply with quote Back to top

So 15 years after the game's release, we're just now discovering that on top of all the other crazy things we've found in the game, now we've found a bunch of embedded arcade games?

Amazing.
 
View user's profile Send private message Visit poster's website
EternallyAries
007
007


Joined: 05 Oct 2009
Posts: 1942
Location: Las Vegas

 PostPosted: Thu Mar 29, 2012 10:31 am    Post subject: Reply with quote Back to top

This is just insane. I mean really I never knew there such thing as hidden Arcade games in Goldeneye. This is a wonderful discovery. Very Happy
_________________
There totally nothing to read here.
 
View user's profile Send private message
acceptable67
007
007


Joined: 16 Jan 2010
Posts: 1733
Location: Florida

 PostPosted: Thu Mar 29, 2012 10:33 am    Post subject: Reply with quote Back to top

I had read this post earlier but didn't grasp very much what it was about, then someone pointed out they were arcade games.

Nice find dude!!!
_________________
Rare wrote:
Perfect Dark Forever.
 
View user's profile Send private message
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1661

 PostPosted: Thu Mar 29, 2012 2:00 pm    Post subject: I'd be remiss if he wasn't plugged at all. Reply with quote Back to top

Steve Ellis, who originally created the emulator, sent an email to clarify how the original Spectrum ROM was set up. Since it wasn't included and the copyright was lifted by Amstrad I've included the complete one with the patch.
Here's the letter though, and be certain to check out Crash Lab. Really! Even if you aren't interested in the games be sure to read the little notes on the state of the programming world. Concider the one about trying to market Tetris nowadays in light of Capcom's recent psychotic policies.
Steve Ellis wrote:
Hi,


I see various posts about this on the web now. I thought I'd clarify the point about spec_rom.seg.rz - the contents of this file fill the bottom 16kb of the Spectrum's memory. On the original Spectrum, the bottom 16kb would have included the whole operating system (the BASIC programming language, functions for loading from and saving to cassettes, etc.). Since the ROM is copyrighted we weren't able to use it. However, some of the games that we were emulating wanted to call one or two Spectrum ROM functions. The solution to this was to create an empty ROM (99.9% filled with NOP's), but with newly-created (copyright-free) replacements for the few short functions that the games needed to call. The games should run with this minimal replacement ROM.


BTW, if you'd like to send any people in the direction of @CrashLab or facebook.com/CrashLab, I'd be grateful. We're going to release something later this year that hopefully should appeal to fans of "old-school" games.


Regards

--
Steve Ellis
Crash Lab


www.crashlab.co.uk
www.facebook.com/CrashLab
www.twitter.com/CrashLab

_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
Kerr Avon
007
007


Joined: 26 Oct 2006
Posts: 751

 PostPosted: Fri Mar 30, 2012 1:25 am    Post subject: Reply with quote Back to top

Assuming this is genuine, and not a (brilliant Razz ) early April Fool's joke, can the emulator be activate by a Gameshark (well, Exploder or Equaliser, for us PAL users), or does it need the actual ROM file to be altered meaning that Gamesharks can't enable it?
 
View user's profile Send private message
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1661

 PostPosted: Fri Mar 30, 2012 4:04 am    Post subject: Reply with quote Back to top

Via GS would require upload. The issue is that the code requiring changing falls within the TLB range. The only way to prevent it being swapped out and reloaded would be to use a replacement hook. We've written replacement hooks before but they're long. Once example would be the hook used to allow Co-Op support. The entirety of "Co-op (2)" replaces four bytes in one loaded file. Or was it eight? No, should be four.

In order to get it to work via GS, the initializer would require being rewritten so that it doesn't attempt to load either the Speccy ROM or game snapshot. If it looks at any invalid filename it will get caught in infinite recursion. The ideal would be to completely replace that JAL with handmade code to initialize it some other way, and I'm thinking you can get away with maybe 40-50 codes in that respect if you jump to the original to finish things out. In the end you'll need to allocate three blocks in bank 4 and initialize them with data. Zeroes would be easy since there's a function for that, but the 01 stuff means a loop.

You'd have to use a minimum spec_rom for this to work. Basically just keyboard read + map. There's some stuff in the 200's and 600's(?) that could be written out. If memory is initialized (3-4 ops, max 8 codes) then all you have to worry about is typing out the generic called routines.

Loading menu 25 is simple actually. Activator + set menu number, so two lines.

The issue is though that between a massive generic hook to replace code in three address ranges, your own long snippet of code, and the minimum Speccy ROM support you're well over the limit. Now, via upload you can cut out the ROM loader entirely and just allocate a couple small swap banks and write the files direct.

Oh, and one other thing. You'd need an activator in order to map the 'select joystick' button to each game. They don't have any capacity to set joystick input. Still should just be two lines, an activator and single byte keyboard mask.

+_+

I should probably go back and make a patch for NGEJ. PAL, on the other hand, has been stripped. Nothing of the emulation code or the dependancies is left. Its TLB range ends at 0x1047F0 and the final functions are the ones preceeding the emulation code. Sorry, but if you want to play it on a PAL system all of the code will need to be ported. Incidentally, you could also do that with an upload with some modifications to remove all the JR dependancies.
Hmm... It would be rather cool to make it standalone.
_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1661

 PostPosted: Fri Mar 30, 2012 6:30 am    Post subject: DK64 debunkery! Reply with quote Back to top

Here's confirmation that DK64 isn't running Jetpac under emulation.

Grabbed a copy of ram via GameShark from the North American DK64 retail release. That's NDOE internally. Jetpac was run from the Bonus menu, and the ram dump was taken in-game.
Firstly, there isn't Spectrum code or any semblance of a Speccy ROM. Even string conventions are wrong. In the Speccy:
Code:
JETPAC GAME SELECTIO╬1   1 PLAYER GAM┼2   2 PLAYER GAM┼3   KEYBOAR─4   KEMPSTON JOYSTIC╦5   START GAM┼

Note the 0x80 END marker on each string. This is the comparable block within DK at 8002E9D0:
Code:
1UP.%d!.2UP.HI..%06d....%06d....%06d....JETPAC GAME SELECTION...1@@@1@PLAYER@GAME...2@@@2@PLAYER@GAME...3@@@KEYBOARD....4@@@KEMPSTON@JOYSTICK...5   START GAME..%c1983 A.C.G. ALL RIGHTS RESERVED...RETURN..DELETE@HISCORE..EXIT@@JETPAC....RAREWARE COIN COLLECTED.GAME OVER PLAYER %d

The @ symbols really are @ symbols, by the way. This is used exclusively in ASM for normal string display.

NDOE @ 80024478:
Code:
//80024478:
3C058003   LUI   A1,8003
AFA20010   SW   V0,0010 (SP)
00601025   OR   V0,V1,R0
24A5E9D0   ADDIU   A1,A1,E9D0   ;A1=8002E9D0: b"1UP"
02C02025   OR   A0,S6,R0
24060038   ADDIU   A2,R0,0038
24070018   ADDIU   A3,R0,0018
AFA30050   SW   V1,0050 (SP)
0C00ABBF   JAL   80002AEF   ;print string A1 at (A2,A3) in DL A0
AFA3004C   SW   V1,004C (SP)
//800244A0:
3C118003   LUI   S1,8003
3C138003   LUI   S3,8003
2631EC4C   ADDIU   S1,S1,EC4C   ;S1=8002EC4C: scores, high, 2pl, 1pl or something like that
2673E9D4   ADDIU   S3,S3,E9D4   ;S3=8002E9D4: b"%d!"
00008025   OR   S0,R0,R0
27B50060   ADDIU   S5,SP,0060
24140002   ADDIU   S4,R0,0002
8E260008   LW   A2,S1,0008   ;A2=1UP score
02A02025   OR   A0,S5,R0
02602825   OR   A1,S3,R0
etc.


Point here being that the scores and menus are all printed via N64 ASM and not under Spectrum emulation. For that matter, at no point will the input read routine from Jetpac be found.
In the Spectrum version you'd have this:
Code:
@6204
3A.F35C   LD A,(0x5CF3)
57   LD D,A
3E.F7   LD A,0xF7
D3.FD   OUT 0xFD,A
DB.FE   IN A,(0xFE)
2F   CPL
CB47   BIT 0,A
28.02   JR Z,+2
CB82   RES 0,D

Simple. Reads input and tests masks for pressed number keys, changing entries accordingly. At no point is this present in a DK64 snapshot.

No emulation. They recompiled it as N64 code, for good reason. No reason for a whle emulator when you only need to run one game.
_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 5763

 PostPosted: Fri Mar 30, 2012 6:41 am    Post subject: Reply with quote Back to top

Was DK arcade not Spectrum? That would've been a second game if Spectrum, I guess was different source entirely?
_________________
http://www.goldeneyevault.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 ]