Announcement

Collapse
No announcement yet.

Jet Force Gemini - true infinite health?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Jet Force Gemini - true infinite health?

    I really need a gameshark code for true infinite health - I believe it uses dynamic allocation so the health value moves around.

    Is anyone interested in hacking this?

  • #2
    Jet Force Gemini GameShark Codes By Zeld (N64)

    Originally posted by vgcuts View Post
    I really need a gameshark code for true infinite health - I believe it uses dynamic allocation so the health value moves around.

    Is anyone interested in hacking this?
    Maybe this will help.

    Jet Force Gemini GameShark Codes By Zeld (N64)

    I'm Zeld. So I could have titled it "My N64 Work." But that's a bit elitist. But so am I. Hrm...

    Right anyway

    JET FORCE GEMINI

    No wait I'll save that for last...it's just too good. You guys wouldn't even read the rest of this post if I started with that game.

    Okay, all that stuff was lame. I suppose I should have started with JFG anyhow. I mostly did GBA hacking and then went into N64 and did some stuff on those games, then I did a nice chunk on Diddy Kong Racing (I already posted that stuff in the unhackable codes thread so I'm not reposting it), and then I did the most N64 hacking I've ever done on Jet Force Gemini.

    So, here's the JFG stuff that I'm so proud of:

    First I'm going to post remakes of the old codes that needed some work.

    Example:

    The all guns codes required you to collect a gun before activating the codes on pain of not being able to switch weapons. Well, that's not a problem anymore.

    All guns for all characters in single player:

    801E6251 0002
    811E61EC FFFF
    801E62C7 0002
    811E6262 FFFF
    801E61DB 0002
    811E6176 FFFF

    and in Multiplayer:

    800FEDD5 0002
    810FED70 FFFF
    800FEE75 0002
    810FEE10 FFFF
    800FEF15 0002
    810FEEB0 FFFF
    800FEFB5 0002
    810FEF50 FFFF

    I spiffed up the infinite ammo codes so that they would put ammo into the kick ass beta weapon that apparently nobody knew about:

    Single player:

    50001002 0000
    811E626C 03E7
    50001002 0000
    811E61F6 03E7
    50001002 0000
    811E6180 03E7

    Multiplayer:

    50001002 0000
    810FED7A 03E7
    50001002 0000
    810FEE1A 03E7
    50001002 0000
    810FEEBA 03E7
    50001002 0000
    810FEF5A 03E7

    Now for the good stuff.

    Shoot through walls:

    81018DC4 2400
    81018DC8 2400

    AUTOAIM:
    8103A548 2400
    8103A5B0 2400
    8103A5B8 2400
    8103A5C8 2400
    8103A5EC 2400
    8103A614 2400
    8103A650 2400
    8103A660 2400
    8103A6B0 2400
    8103A6B8 2400
    8103A714 2400
    8103A720 2400
    8103A75C 2400
    8103A788 2400
    8103A790 2400
    8103A7C4 2400
    8103A7DC 2400
    8103A7F8 2400

    and a code to make the autoaim not shoot at your teammates ("Teammates? What teammates?" Um, yeah, teammates...I'll keep that a surprise for now :3) or the cell switches in S.S. Anubis (unless the switch has yet to be shot):

    8103A80C 0810
    8103A80E 0200
    81400800 81CF
    81400802 003A
    81400804 55E0
    81400806 0001
    81400808 240E
    8140080A 0000
    8140080C 3C0F
    8140080E 800A
    81400810 81EF
    81400812 5060
    81400814 11E0
    81400816 000D
    81400818 3C0F
    8140081A 800A
    8140081C 81E8
    8140081E 325D
    81400820 3C0F
    81400822 8040
    81400824 25EF
    81400826 17F0
    81400828 8DF8
    8140082A 0000
    8140082C 2718
    8140082E F810
    81400830 530E
    81400832 0001
    81400834 240E
    81400836 0000
    81400838 2508
    8140083A FFFF
    8140083C 1100
    8140083E 0003
    81400840 25EF
    81400842 0004
    81400844 0810
    81400846 020A
    81400848 2400
    8140084C 0800
    8140084E EA05
    81400850 2400

    Yes. 1080 degree autoaim, but it tends to have better luck locking onto things in front of you, after which you can turn and face the other direction and fire at things you can't see with dead on accuracy. Works great with a rapid fire sniper rifle. Of which I have.

    Single player "Uber" Code:

    This code does a lot of shit. Infinite Health, Infinite Jetpack Fuel, Rapid Fire, Instant and full charged gun meter, and even a nifty pointer dumping sequence that places the pointer to your DMA'd data in a static location, after which my other codes can use that pointer for various nifty effects.

    Keep in mind the original codes that did what this code does only worked in certain rooms, because they didn't use ASM editing to take care of the nasty DMA.

    But wait, there's a MULTIPLAYER version of this code! YAY

    81011C4C 0810
    81011C4E 0400
    81401000 2442
    81401002 0001
    81401004 8DC1
    81401006 004C
    81401008 A020
    8140100A FE04
    8140100C A020
    8140100E FE0E
    81401010 2404
    81401012 00FF
    81401014 A024
    81401016 FE0B
    81401018 2404
    8140101A 0DD0
    8140101C A424
    8140101E FE58
    81401020 2404
    81401022 0040
    81401024 A024
    81401026 0006
    81401028 3C04
    8140102A 8040
    8140102C AC85
    8140102E 0FFC
    81401030 2484
    81401032 17F0
    81401034 8C85
    81401036 0000
    81401038 1025
    8140103A 000D
    8140103C 2484
    8140103E 0004
    81401040 3C05
    81401042 8040
    81401044 24A5
    81401046 1800
    81401048 1485
    8140104A FFFA
    8140104C 3C05
    8140104E 8040
    81401050 00A0
    81401052 2025
    81401054 8CA5
    81401056 0FF8
    81401058 30A5
    8140105A 000F
    8140105C 0085
    8140105E 2021
    81401060 AC81
    81401062 17F0
    81401064 24A5
    81401066 0004
    81401068 3C04
    8140106A 8040
    8140106C AC85
    8140106E 0FF8
    81401070 3C05
    81401072 800A
    81401074 80A5
    81401076 325D
    81401078 0005
    8140107A 2880
    8140107C 3C04
    8140107E 8040
    81401080 8C81
    81401082 0FF8
    81401084 5025
    81401086 0001
    81401088 0025
    8140108A 0823
    8140108C AC9A
    8140108E 17D4
    81401090 AC9B
    81401092 17D8
    81401094 AC81
    81401096 17DC
    81401098 AC82
    8140109A 17E0
    8140109C AC83
    8140109E 17E4
    814010A0 3C1A
    814010A2 800A
    814010A4 835B
    814010A6 5060
    814010A8 1360
    814010AA 0018
    814010AC 3C01
    814010AE 8010
    814010B0 8421
    814010B2 5304
    814010B4 3821
    814010B6 0030
    814010B8 1420
    814010BA 0014
    814010BC 3C1B
    814010BE 8040
    814010C0 8342
    814010C2 325D
    814010C4 2442
    814010C6 FFFF
    814010C8 277B
    814010CA 17F0
    814010CC 8F61
    814010CE 0000
    814010D0 1040
    814010D2 000E
    814010D4 2400
    814010D8 8F7A
    814010DA 0004
    814010DC 277B
    814010DE 0004
    814010E0 2442
    814010E2 FFFF
    814010E4 8C23
    814010E6 F81C
    814010E8 AF43
    814010EA F81C
    814010EC 8C23
    814010EE F820
    814010F0 AF43
    814010F2 F820
    814010F4 8C23
    814010F6 F824
    814010F8 AF43
    814010FA F824
    814010FC 8423
    814010FE F9E8
    81401100 A743
    81401102 F9E8
    81401104 0810
    81401106 0434
    81401108 2400
    8140110C 8C9A
    8140110E 17D4
    81401110 8C9B
    81401112 17D8
    81401114 8C81
    81401116 17DC
    81401118 8C82
    8140111A 17E0
    8140111C 8C83
    8140111E 17E4
    81401120 AC81
    81401122 0FF8
    81401124 8C85
    81401126 0FFC
    81401128 0800
    8140112A 4715
    8140112C 8DC4
    8140112E 0068

    "Why in the HELL is that so long?!"

    Well, the actual invincibility/rapid fire/jetpack fuel (yes, jetpack fuel in multiplayer :3) business only takes up a small chunk of code. The rest is dedicated to using logical checks to systematically dump the pointers of to each player's data into static addresses that are ordered based on which player is which. VERY useful for things such as player specific codes.

    I'm gonna take a temporary break and edit the rest into this post after I'm sure it's all going to submit properly...

    Alright. Okay, let me just say this really quick. HyperHacker and I have been friends for a while and another friend of mine in addition to HyperHacker himself recommended this site to me, so I was quite excited to finally get to post all the rewards of what I've spent the past few months doing. So, if I'm acting really noobtarded in my excitement, please forgive me. I don't mean to sound too arrogant. :3

    Right, now, a code that makes use of those pointer dumps.

    The SPEED code. Makes you run UBER fast.

    81009A48 0810
    81009A4A 0300
    81400C00 3C04
    81400C02 8040
    81400C04 8C84
    81400C06 17EC
    81400C08 2484
    81400C0A FF44
    81400C0C 10E4
    81400C0E 0017
    81400C10 2401
    81400C12 0000
    81400C14 3C04
    81400C16 8040
    81400C18 8C84
    81400C1A 17F0
    81400C1C 2484
    81400C1E F810
    81400C20 10E4
    81400C22 0012
    81400C24 2401
    81400C26 0000
    81400C28 3C04
    81400C2A 8040
    81400C2C 8C84
    81400C2E 17F4
    81400C30 2484
    81400C32 F810
    81400C34 10E4
    81400C36 000D
    81400C38 2421
    81400C3A 0008
    81400C3C 3C04
    81400C3E 8040
    81400C40 8C84
    81400C42 17F8
    81400C44 2484
    81400C46 F810
    81400C48 10E4
    81400C4A 0008
    81400C4C 2421
    81400C4E 0008
    81400C50 3C04
    81400C52 8040
    81400C54 8C84
    81400C56 17FC
    81400C58 2484
    81400C5A F810
    81400C5C 10E4
    81400C5E 0003
    81400C60 2421
    81400C62 0008
    81400C64 2400
    81400C68 0810
    81400C6A 032D
    81400C6C 0020
    81400C6E 2025
    81400C70 3C01
    81400C72 8010
    81400C74 0024
    81400C76 0825
    81400C78 8021
    81400C7A 5307
    81400C7C 3C04
    81400C7E 40A0
    81400C80 4484
    81400C82 9000
    81400C84 5020
    81400C86 0001
    81400C88 2421
    81400C8A FFFF
    81400C8C 0020
    81400C8E 082A
    81400C90 5020
    81400C92 0001
    81400C94 4612
    81400C96 2102
    81400C98 4604
    81400C9A 1480
    81400C9C 4484
    81400C9E 2000
    81400CA0 5020
    81400CA2 0001
    81400CA4 4604
    81400CA6 5282
    81400CA8 460A
    81400CAA 7100
    81400CAC 0800
    81400CAE 2695
    81400CB0 3C04
    81400CB2 800A
    81400CB4 0800
    81400CB6 2693
    81400CB8 4604
    81400CBA 1480

    Works for each individual player. :3

    And now, an all purpose escape-the-map code for getting past ANY, and I mean ANY obstacle:

    Press Left and Right C to escape the map (player 1's controller only)

    81016AB4 0C10
    81016AB6 0100
    81016AD8 0C10
    81016ADA 0100
    81400400 3C18
    81400402 8010
    81400404 8718
    81400406 5304
    81400408 3318
    8140040A 0003
    8140040C 3B18
    8140040E 0003
    81400410 1700
    81400412 0004
    81400414 2400
    81400418 3C18
    8140041A 42C8
    8140041C 4498
    8140041E 3000
    81400420 03E0
    81400422 0008
    81400424 2400
    81400428 33F8
    8140042A 000C
    8140042C 1300
    8140042E 0003
    81400430 C4C6
    81400432 0000
    81400434 03E0
    81400436 0008
    81400438 2400
    8140043C C4C6
    8140043E 0008
    81400440 03E0
    81400442 0008
    81400444 2400

    And a quick code to make the machine gun shoot in a STRAIGHT LINE, which is just...sweet. Except the rapid fire sniper rifle with autoaim and shoot through walls makes it pointless.

    81038748 2400
    81038764 2400

    And now for the best part of my JFG hacking. I was able to bring the start menu of single player into multiplayer, which allows you to access the MAP menu and select a single player level.

    This effectively means 4 PLAYER CO OP MODE, of which there are tons of pictures of on my photobucket. :3

    This code could use some work, though.

    D00A5060 0001
    80403FF7 0001
    D00A5060 0000
    80403FF7 0000
    D0403FF7 0001
    800A4FC4 0001
    D0105304 0010
    800A4FC4 0000
    D00A4FC4 0001
    800A325D 000?
    D00A4FC4 0000
    800A325D 0001

    Where "?" is the number of players you will be playing with. Most of that code is just there to disable the split screen when in single player mode. In Co Op mode, entering a single player level will turn off the split screen, so you have to force it to stay on or else the other players will be playing but unable to see what they're doing XD

    Now, lots of Co Op mode bugs and issues revolve around the odd spawn points for the unaccounted players. Players 2, 3, and 4 have no business being in story mode, so the game just kinda puts them places. Well, here's a code that will fix that by warping them to wherever player 1 is, and facing the same direction, once player 1 presses L and R:

    No wait. I just remembered. This code was merged into the same hook as the Multiplayer "Uber" Code, so scroll back up to that and you'll see that the code is so long because it dumps the pointers dynamically, makes the players uber, AND warps them to wherever player 1 is when player 1 presses L and R.

    But really, that code is only my second longest code. :3

    Before I post my LONGEST and possible my best code, I'll post the layout for multiplayer and single player player data in case anyone else wants to hack this game too.

    But first I'm gonna hit submit again and make sure this all processes X_x

    Okay, cool. Now, the long code.

    Why is it long? Because it's a completely custom save and load routine that allows you to save and load files in Co Op mode! All of your files will be completely interchangeable between single player mode and co op mode, but you may need to have at least two friends so that player 3 can load Lupus's data...Lupus tends to freeze Co Op mode because his data structure is too weird (in fact, the infinite health part of my uber code doesn't work on him, but the rest of it does :3).

    81075030 0810
    81075032 0800
    81075034 3C1A
    81075036 8010
    81075038 2400

    81402000 FF41
    81402002 57B0
    81402004 3C1A
    81402006 800A
    81402008 835B
    8140200A 5060
    8140200C 1760
    8140200E 0018
    81402010 3C1A
    81402012 8010
    81402014 875B
    81402016 5304
    81402018 3B7B
    8140201A 0020
    8140201C 1760
    8140201E 001D
    81402020 3C1A
    81402022 801E
    81402024 275A
    81402026 6010
    81402028 3C1B
    8140202A 8040
    8140202C 277B
    8140202E 4000
    81402030 AF60
    81402032 FFF8
    81402034 AF60
    81402036 FFFC
    81402038 8F41
    8140203A 0000
    8140203C AF61
    8140203E 0000
    81402040 275A
    81402042 0004
    81402044 277B
    81402046 0004
    81402048 3C01
    8140204A 801E
    8140204C 2421
    8140204E 6580
    81402050 103A
    81402052 0010
    81402054 2400
    81402058 3C01
    8140205A 8040
    8140205C 2421
    8140205E 4570
    81402060 103A
    81402062 000C
    81402064 2400
    81402068 0810
    8140206A 080E
    8140206C 2400
    81402070 3C1A
    81402072 8040
    81402074 8F5B
    81402076 3FFC
    81402078 1760
    8140207A 0006
    8140207C 275A
    8140207E 4000
    81402080 3C1B
    81402082 801E
    81402084 277B
    81402086 6010
    81402088 AF5B
    8140208A FFFC
    8140208C 0810
    8140208E 080E
    81402090 2400
    81402094 3C1A
    81402096 800A
    81402098 835B
    8140209A 5060
    8140209C 1360
    8140209E 0043
    814020A0 3C1A
    814020A2 8040
    814020A4 8F5B
    814020A6 3FF8
    814020A8 1760
    814020AA 0024
    814020AC 3C1A
    814020AE 8010
    814020B0 875B
    814020B2 5304
    814020B4 3B7B
    814020B6 0020
    814020B8 1760
    814020BA 003C
    814020BC 3C1B
    814020BE 8040
    814020C0 AF7B
    814020C2 3FF8
    814020C4 3C1B
    814020C6 8010
    814020C8 277B
    814020CA ED66
    814020CC 3C1A
    814020CE 8040
    814020D0 275A
    814020D2 415C
    814020D4 8741
    814020D6 0000
    814020D8 A761
    814020DA 0000
    814020DC 275A
    814020DE 0002
    814020E0 277B
    814020E2 0002
    814020E4 3C01
    814020E6 8040
    814020E8 2421
    814020EA 41D2
    814020EC 503A
    814020EE FFF9
    814020F0 277B
    814020F2 002A
    814020F4 3C01
    814020F6 8040
    814020F8 2421
    814020FA 4248
    814020FC 503A
    814020FE FFF5
    81402100 277B
    81402102 002A
    81402104 3C01
    81402106 8040
    81402108 2421
    8140210A 42BE
    8140210C 143A
    8140210E 0005
    81402110 2400
    81402114 277B
    81402116 002A
    81402118 275A
    8140211A FE28
    8140211C 0810
    8140211E 0835
    81402120 2400
    81402124 3C01
    81402126 8040
    81402128 2421
    8140212A 415C
    8140212C 143A
    8140212E FFE9
    81402130 2400
    81402134 0810
    81402136 086B
    81402138 2400
    8140213C 3C1B
    8140213E 8010
    81402140 277B
    81402142 ED66
    81402144 3C1A
    81402146 801E
    81402148 275A
    8140214A 616C
    8140214C 8761
    8140214E 0000
    81402150 A741
    81402152 0000
    81402154 275A
    81402156 0002
    81402158 277B
    8140215A 0002
    8140215C 3C01
    8140215E 801E
    81402160 2421
    81402162 61E2
    81402164 503A
    81402166 FFF9
    81402168 277B
    8140216A 002A
    8140216C 3C01
    8140216E 801E
    81402170 2421
    81402172 6258
    81402174 503A
    81402176 FFF5
    81402178 277B
    8140217A 002A
    8140217C 3C01
    8140217E 801E
    81402180 2421
    81402182 62CE
    81402184 143A
    81402186 0005
    81402188 2400
    8140218C 277B
    8140218E 002A
    81402190 275A
    81402192 FE28
    81402194 0810
    81402196 0853
    81402198 2400
    8140219C 3C01
    8140219E 801E
    814021A0 2421
    814021A2 616C
    814021A4 143A
    814021A6 FFE9
    814021A8 2400
    814021AC 3C1A
    814021AE 8010
    814021B0 0801
    814021B2 D40E
    814021B4 275A
    814021B6 5790

    Yes. I know. Terrible. But it works, so whatever, you know?

    Here's how you use it.

    First, you go into the single player file load menu. You copy the file you want to load to the slot you want to save in; this selects the slot you'll be saving in and loads the data of the file into the RAM. If you want to start a new game, do this anyway, because starting a new game still requires this unless you don't care where you save. Now, press L to copy the save data that was loaded into the RAM to a new place in the expansion pak area. (Oh, by the way, all my ASM editing codes require the expansion pak. I'm just that lazy.)

    Press B and select multiplayer mode and get a game going with the co op menu code active. Now, either press L to load your save file, or pause and press Z to save your game, effectively starting a new file and skipping that over long intro cutscene (yay!). Because of the nature of the code, I advise resetting after saving a new game and then loading that new game file normally, because the L button will load the file you didn't want to load and overwrite your new game if you haven't pressed it while in multiplayer. It only stops overwriting after the first press, after which it starts copying multiplayer data back to save RAM. Because of this, until you load a co op game normally you won't be able to save most things.

    Because the code now fully loads and saves all save data and has allocated space in the save data for a fourth player, it can load and save everything now (at least, it should). As far as I can tell you can play through the whole game in co op mode, except for the rooms that still seem to freeze the game (which is every single room if someone is playing as Lupus, apparently).

    Certain levels like Water Ruin will spawn the extra players on top of the ship, finishing a level prematurely and preventing play. To avoid this, hold L and R with the multiplayer uber code on as the landing cutscene ends. The game won't load the screen until you release the buttons, so while you're sitting in darkness waiting for the level to load, count to like 5 before releasing L and R and it should finally load the level with all four players in player one's spawn position.

    "What if I want to play the Water Ruin by using the code to place all players in player one's position, but don't want to cheat by having the invincibility and rapid fire effects, etc.?"

    I'll work on some guide on which codes to NOP to deactivate specific parts of the code. Sure, you can disassemble the code and see the writes and nop them yourself, but you'd have to know which write is which to nop specific cheats.

    Oh, I forgot to post that data format, huh? Silly me.

    Here it is:

    Single Player

    [afb4:0024] 80058F08: SW s4[00000000],0024h(sp[800F8DD0])
    [afb1:0018] 80058F0C: SW s1[801BD7DC],0018h(sp[800F8DD0])

    Offsets F8A0C and F8DE8 may contain, but will not always contain, player data block base pointer (+0x0BC)

    S1=Player data base pointer + 0x0BC; add the following to S1 to acquire the addresses represented by the additives' labels
    +0x03A Byte that is set to 1 when an S.S. Anubis cell switch is destroyed
    +0x11C Angle facing halfword; usually equal to horizontal aim halfword
    +0x130 Vector added X?
    +0x1A4 Pointer to data of enemy that has been targeted
    +0x1C6/*1CA*/1CE/1DE Aim offsets (halfwords) - 1CA is horizontal aim and 1CE is gun's facing angle player-relative
    +0x250 Vector added X?
    +0x538 Timer that counts to 0 before the next bullet can be fired; set to 0 for ceaseless rapid fire for all guns
    +0x53F Gun fuel byte; set to 0xA0-0xFF for infinite
    +0x542 Pistol fuel byte; set to 0 for ceaseless rapid fire
    +0x58C Jetpack fuel halfword; set to 0xDD0 for infinite
    +0x7FA True health value; set to 0x40 for infinite

    S1-0x0BC relative:
    +0x00C/0x014 Horizontal position floats
    +0x010 Vertical Position float
    +0x020 Falling Speed
    +0x09B Green flash from lock on when this byte < 4

    Multiplayer

    -0x7F0 Data Start
    -0x7E4 X
    -0x7E0 Z
    -0x7DC Y
    -0x618 Angle facing halfword
    -0x1FC Timer that counts to 0 before the next bullet can be fired; set to 0 for ceaseless rapid fire for all guns
    -0x1F5 Gun fuel byte; set to 0xA0-0xFF for infinite
    -0x1F2 Pistol fuel byte; set to 0 for ceaseless rapid fire
    -0x1A8 Jetpack fuel halfword; set to 0xDD0 for infinite
    +0x006 Health byte

    And last and possibly least, the first code I made for this game.

    Have All Ship Parts:
    811E6044 FFFF

    Edit: Let it be noted that the bits for the ship parts are 1111 1111 ???? 1111. That is, bits 7-4 aren't related to the ship parts (there's only 12 ship parts, see). I don't know why there's a gap there or what those 4 bits are for but setting the halfword to 0xFFFF doesn't seem to hurt anything anyway.

    That ought to cover my currently short and still sweet N64 hacking career. No wait, I'm not getting paid for this (I ought to be!), so I guess it's not a career. Blast.
    The Hackmaster

    Comment


    • #3
      Thanks, but it looks like the only bit that might be useful is the 'Uber' code that isn't actually there (only the multiplayer version is).

      Comment

      Working...
      X