Announcement

Collapse
No announcement yet.

Request Super Probotector Codes

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

  • Request Super Probotector Codes

    I'm looking for Game Genie codes for Super Probotector The Alien Wars Pal Version for Super Nintendo. Infinite health for both side scrolling levels and overhead levels.

  • #2
    Code:
    Infinite Lives - Side View Levels (both players)
    CBB8-0461
    
    Infinite Lives - Top View Levels (both players)
    CBBB-6F0B
    
    Player 1 Invincible (Side View Levels)
    89C1-D469 + 89BD-0761
    Credit: Converted Hackwiz's Contra III code to Super Probotector
    
    Player 2 Invincible (Side View Levels)
    89CB-D709 + 89B8-0DD1
    Credit: Converted Hackwiz's Contra III code to Super Probotector
    
    Both Players Invincible (Top View Levels)
    8961-6F08
    Credit: Hackwiz's Contra III code, works without conversion
    I hope the Infinite Lives or Invincibility codes are what you are after, I didn't see a health meter in this game.

    I'd never heard of Super Probotector, however through a quick Google search I found out Super Probotector is the same game as Contra III, just with some GFX changes for European release by the looks of it. As such, most of the game code is the same, however there are differences in the ROM addresses meaning most codes will need conversion.

    If you look at the GG codes for Contra III (USA), most of them should be able to be converted to Super Probotector. In some cases they may not need conversion at all. The RAW codes should work without needing any conversion as both games appear to use the same RAM addresses for everything.

    As a note for the more adventurous, some of the GG codes can be converted with a simple offset change.

    If the decoded version starts with 01xxxx you should be able to convert it to Super Probotector by subtracting the hex value 1D7 from the base address. This can be done with the Windows calculator.

    As an example the Game Genie code 89B3-6F01 decodes to 019AE5:B5. If you take the address 9AE5, subtract 1D7 (using Windows calculator, click View and switch to Programmer mode) you end up with 990E. Put the code back together as 01990E:B5, then use an online GG code converter and the result is 89BD-0761. That code should then work on Probotector.

    Anyways I just wanted to mention that in case you're handy with hex values and encoding/decoding GG codes. If you want any other codes converted I am happy to help, just let me know.

    Have fun!


    Code Development Notes:
    Spoiler Alert! Click to view...


    Infinite Lives - Side View Levels (both players)
    CBB8-0461

    Infinite Lives - Top View Levels (both players)
    CBBB-6F0B

    Code:
    After doing some RAM searches, I found that $7E:1F8A holds 1P number of lives, 
    and $7E:1FCA holds 2P number of lives. It turns out these are the same RAM
    addresses that Contra III uses, so that's convenient.
    
    1P:
    $01/99BA DE 8A 1D    DEC $1D8A,x[$05:1F8A]   A:0000 X:0200 Y:0000 P:envmxdiZC
    $01/99BD F0 03       BEQ $03    [$99C2]      A:0000 X:0200 Y:0000 P:envmxdiZC
    
    2P:
    $01/99BA DE 8A 1D    DEC $1D8A,x[$05:1FCA]   A:0000 X:0240 Y:0000 P:envmxdiZC
    $01/99BD F0 03       BEQ $03    [$99C2]      A:0000 X:0240 Y:0000 P:envmxdizC
    
    The same routine runs for both players when a life is lost.
    
    Change DEC into LDA to prevent life counter from decrementing:
    
    0199BA:A9 = CBB8-0461 (Infinite Lives - Side View Levels)
    
    Top-view levels use a different routine, therefore need a different code:
    $02/9695 DE CA 10    DEC $10CA,x[$05:1F8A]   A:0003 X:0EC0 Y:0000 P:eNvmxdizc
    $02/9698 10 03       BPL $03    [$969D]      A:0003 X:0EC0 Y:0000 P:envmxdizc
    
    029695:A9 = CBBB-6F0B (Infinite Lives - Top View Levels)

    Player 1 Invincible (Side View Levels)
    89C1-D469 + 89BD-0761

    Player 2 Invincible (Side View Levels)
    89CB-D709 + 89B8-0DD1

    Code:
    Looking at Hackwiz's codes for Contra III the Alien Wars for conversion to Probotector:
    
    Contra III Versions:
    89B3-6F01
    89C0-6D09
    decoded:
    019AE5:B5
    01A641:B5
    
    Set execution BP for $01:A641:
    
    w/ Always invincible code enabled:
    $01/A641 B5 16       LDA $16,x  [$00:0216]   A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A643 89 03 00    BIT #$0003              A:0003 X:0200 Y:0000 P:envmxdizC
    $01/A646 D0 05       BNE $05    [$A64D]      A:0003 X:0200 Y:0000 P:envmxdizC
    $01/A64D A9 00 3A    LDA #$3A00              A:0003 X:0200 Y:0000 P:envmxdizC
    $01/A650 22 CF A6 01 JSL $01A6CF[$01:A6CF]   A:3A00 X:0200 Y:0000 P:envmxdizC
    $01/A6CF 95 02       STA $02,x  [$00:0202]   A:3A00 X:0200 Y:0000 P:envmxdizC
    
    w/o code #1 enabled:
    $01/A641 95 16       STA $16,x  [$00:0216]   A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A643 89 03 00    BIT #$0003              A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A646 D0 05       BNE $05    [$A64D]      A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A64D A9 00 3A    LDA #$3A00              A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A650 22 CF A6 01 JSL $01A6CF[$01:A6CF]   A:3A00 X:0200 Y:0000 P:envmxdizC
    $01/A6CF 95 02       STA $02,x  [$00:0202]   A:3A00 X:0200 Y:0000 P:envmxdizC
    
    w/o code #2 enabled:
    $01/9AE5 95 16       STA $16,x  [$00:0216]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/9AE7 9E 88 1D    STZ $1D88,x[$05:1F88]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/9AEA 6B          RTL                     A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/A69E A5 BC       LDA $BC    [$00:00BC]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/A6A0 F0 0E       BEQ $0E    [$A6B0]      A:0001 X:0200 Y:00C8 P:envmxdizc
    $01/A6A2 A9 00 60    LDA #$6000              A:0001 X:0200 Y:00C8 P:envmxdizc
    $01/A6A5 85 B8       STA $B8    [$00:00B8]   A:6000 X:0200 Y:00C8 P:envmxdizc
    $01/A6A7 A9 00 61    LDA #$6100              A:6000 X:0200 Y:00C8 P:envmxdizc
    
    So both codes are preventing writes to address $7E0216 by changing STA to LDA.
    
    To find Probotector equivalent, set read a BP for $7E0216:
    $01/A46A 95 16       STA $16,x  [$00:0216]   A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A46C 89 03 00    BIT #$0003              A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A46F D0 05       BNE $05    [$A476]      A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A476 A9 00 3A    LDA #$3A00              A:0001 X:0200 Y:0000 P:envmxdizC
    $01/A479 22 F8 A4 01 JSL $01A4F8[$01:A4F8]   A:3A00 X:0200 Y:0000 P:envmxdizC
    $01/A4F8 95 02       STA $02,x  [$00:0202]   A:3A00 X:0200 Y:0000 P:envmxdizC
    $01/A4FA 22 5A C1 00 JSL $00C15A[$00:C15A]   A:3A00 X:0200 Y:0000 P:envmxdizC
    
    01A46A:B5 = 89C1-D469 (Player 1 Invincible - Side View Levels 1/2)
    
    2nd code:
    $01/990E 95 16       STA $16,x  [$00:0216]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/9910 9E 88 1D    STZ $1D88,x[$05:1F88]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/9913 6B          RTL                     A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/A4C7 A5 BC       LDA $BC    [$00:00BC]   A:8000 X:0200 Y:00C8 P:eNvmxdizc
    $01/A4C9 F0 0E       BEQ $0E    [$A4D9]      A:0001 X:0200 Y:00C8 P:envmxdizc
    $01/A4CB A9 00 60    LDA #$6000              A:0001 X:0200 Y:00C8 P:envmxdizc
    $01/A4CE 85 B8       STA $B8    [$00:00B8]   A:6000 X:0200 Y:00C8 P:envmxdizc
    $01/A4D0 A9 00 61    LDA #$6100              A:6000 X:0200 Y:00C8 P:envmxdizc
    
    01990E:B5 = 89BD-0761 (Player 1 Invincible - Side View Levels 2/2)
    
    Subtract Probotector code address from Contra III code address to find offset:
    
    Code #1 offset: A641 - A46A = 1D7
    Code #2 offset: 9AE5 - 990E = 1D7
    
    So we can likely convert most codes by subtracting 0x1D7 from Contra III GG codes.
    Definitely not guaranteed, but makes a good shot in the dark for a first attempt.
    
    
    P2 Invincible - Side View Levels Contra III GG codes by Hackwiz:
    01A674:B5
    019B87:B5
    
    Attempted conversion to Probotector by subtracting 0x1D7 from addresses:
    01A49D:B5 = 89CB-D709 (Player 2 Invincible - Side View Levels 1/2)
    0199B0:B5 = 89B8-0DD1 (Player 2 Invincible - Side View Levels 2/2)
    
    Tested and works great! :)
    Code:
    Looking at Hackwiz's code for Contra III: 8961-6F08 decoded: 028E65:B5
    
    Contra III disassembly:
    $02/8E65 95 16       STA $16,x  
    $02/8E67 A9 02 00    LDA #$0002 
    $02/8E6A 29 02 00    AND #$0002 
    $02/8E6D 4A          LSR A      
    $02/8E6E 95 00       STA $00,x  
    
    Probotector disassembly:
    $02/8E65 95 16       STA $16,x  
    $02/8E67 A9 02 00    LDA #$0002 
    $02/8E6A 29 02 00    AND #$0002 
    $02/8E6D 4A          LSR A      
    $02/8E6E 95 00       STA $00,x  
    
    Exact same in this area of ROM, so Hackwiz's code will work on Probotector.
    "One man's garbage is another man-person's good un-garbage." -- Ricky from Trailer Park Boys

    Comment


    • #3
      Tried these codes but unfortunately none of them work. Is there a level select code for Super Probotector?
      Last edited by Lyvallian; 09-21-2017, 11:21:01 AM.

      Comment

      Working...
      X