Bionic Commando

From NES Hacker Wiki
Revision as of 22:59, 20 March 2015 by Novazero (talk | contribs) (Easy Cheats: Max Infinite Hit Points changed from 6 to 8.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Bionic Commando is a platform game where you play the role of Rad in his battle against the BADDS to rescue Super Joe and stop their evil empire from taking over the world. Rather than allow the player to jump, all vertical movements must be made using your trusty bionic arm. This creates a difficult learning curve, but once arm manipulation is learned, the game becomes relatively easy. Each area ends with a boss battle to win a new power up item.

Easy Cheats

Icon Addr Val Cmp Description
Icon-Lives.png C135 09 02 Start with 9 Lives
Icon-Lives.png C135 63 02 Start with 99 Lives
Icon-Lives-Infinite.png 004A 09 - Infinite Lives
Icon-HitPoints-Infinite.png 0779 08 - Infinite Hit Points
Icon-Invincible.png 07E0 03 - No Damage From Enemies In Side Game
Icon-Armor.png AE72 EE CE Less Damage From Spikes
Icon-Weapon.png 04CC 01 - Start With Rocket Launcher
Icon-Weapon.png 04CD 01 - Start With Wide Cannon
Icon-Weapon.png 04CE 01 - Start With Joe's Machinegun
Icon-Weapon.png 04CF 01 - Start With 3-Way
Icon-Armor.png 04D2 01 - Start With Pendant
Icon-Armor.png 04D3 01 - Start With Helmet
Icon-Armor.png 04D4 01 - Start With Bulletproof Vest
Icon-Item.png 04D9 01 - Start With Flare Bomb
Icon-Item.png 04DA 01 - Start With Medicine
Icon-Item.png 04DB 01 - Start With Permit
Icon-Item.png 04DC 01 - Start With Steel Boots
Icon-Item.png 04DD 01 - Start With Rapid Fire Device
Icon-Item.png 04E1 01 - Start With Beta Communicator
Icon-Item.png 04E2 01 - Start With Gamma Communicator
Icon-Item.png 04E3 01 - Start With Delta Communicator
Icon-Powerup.png 04C2 00 - Infinite Medicine (When equipped)
Icon-Powerup.png 0697 FF - POW Lasts Until You Leave the Room
Icon-Powerup.png 04C1 01 - Flare Bombs Unnecessary In Area 4
Icon-Warp.png 04F7 01 - Hidden Passages Revealed
Icon-Time.png 069F 09 - Infinite Escape Time
Icon-Continue.png 04FA 09 - Infinite Continues
Icon-Challenge.png C135 01 02 Start With 1 Life
Icon-Challenge.png 004A 00 - Start With 1 Life, No 1 Ups
Icon-Challenge.png 0779 00 - No Bonus Hit Points
Icon-Challenge.png 04DA 00 - Can't Obtain Medicine (Item)
Icon-Challenge.png 04FA 00 - No Continues
Icon-Challenge.png BE97 04 06 Only 40 Seconds to Escape
Icon-Challenge.png BE97 03 06 Only 30 Seconds to Escape
How do I use these?

North America

Bionic Commando.png

Memory Addresses

000A - Accumulator Register

000F - Gets set to 0A when an action is performed
0019 - The column of the highlighting box at equipment screen
001A - The row of the highlighting box at equipment screen
001D - Flag for which direction player is facing (00 - left, 01 - right)

004A - Player Lives
004D - Area (Is updated on map screen as helicopter moves) 

0054-0055 - The location as the title logo is drawn on the screen

0057 - The game over screen timeout

005F - Changes with player position or enemy position if one if on the screen (probably a temp variable)

0061 - Player X position on screen (Read only)
0062 - Player Y position on screen (Read only)

006A-006B - Delay after title screen finishes drawing to start intro or demo.

0080 - The cursor toggle (0-Comm / 1-Wire, 0-Desc / 1-Tran)

0082 - Flag during intro story. 08 - Clear text. 09 - Writing text. 0A - Waiting after text. 0B - Fade out.

0085 - Toggles from 1 to 0 as text is being written to the screen during intro

0087-0088 - Delay counters for writing text and clearing text during intro story

00C0-00EF - Loaded palette colors.

A Button
| B Button
| | Start
| | | Select
| | | | Up
| | | | | Down
| | | | | | Left
| | | | | | | Right
| | | | | | | |
0:0:0:0:0:0:0:0

00F8 - Controller 1 Press (0 - Idle, 1 - Right, 2 - left, 4 - Down, 8 - Up, 10 - Start, 20 - Select, 40 - B, 80 - A)
00FA - Controller 1 Down  (0 - Idle, 1 - Right, 2 - left, 4 - Down, 8 - Up, 10 - Start, 20 - Select, 40 - B, 80 - A)

0106 - Destination area part 1 in map mode
0107 - Destination area part 2 in map mode

0150-01F0 - Sound data being processed
01FC-01FF - Stack

H Mirror
| V Mirror
| | Priority
| | | ??? Palette
0:0:0:000 00 ------- Effects Byte

00 - Object Y Position
01 - Object #
02 - Object Flags
03 - Object X Position

0200-02FF - Sprite Memory
0300-03FF - Name Table?

0400-043F - PPU Memory used to animate the background. (Enemy doors, text, fire, etc.)

0440 - Map Helicopter - Process Flag (00 - Ignore, 01 - Active, +80 - Hidden)
0441 - Map Truck 1 - Process Flag
0442 - Map Truck 2 - Process Flag
0443 - Map Truck 3 - Process Flag
0444 - Map Truck 4 - Process Flag
0445 - Map Truck 5 - Process Flag

0449 - Map Helicopter Frame
044A - Map Truck 1 - Pattern (01) The patterns predict how the trucks turn when they reach each area.
044B - Map Truck 2 - Pattern (03)
044C - Map Truck 3 - Pattern (04)
044D - Map Truck 4 - Pattern (05)
044E - Map Truck 5 - Pattern (07)

0450 - Cover up object for secret passage between areas 15 and 18
0451 - Cover up object for secret passage between areas 14 and 17
0452 - Map Helicopter - X
0453 - Map Truck 1 - X
0454 - Map Truck 2 - X
0455 - Map Truck 3 - X
0456 - Map Truck 4 - X
0457 - Map Truck 5 - X

045C - Map Truck 1 - Unknown Counter
045D - Map Truck 2 - Unknown Counter
045E - Map Truck 3 - Unknown Counter
045F - Map Truck 4 - Unknown Counter
0460 - Map Truck 5 - Unknown Counter

0464 - Map Helicopter - Y
0465 - Map Truck 1 - Y
0466 - Map Truck 2 - Y
0467 - Map Truck 3 - Y
0468 - Map Truck 4 - Y
0469 - Map Truck 5 - Y

046D - Map Helicopter Propeller toggle (00 - Spin 1, C0 - Spin 2)
046E - Map Truck 1 - Unknown Counter
046F - Map Truck 2 - Unknown Counter
0470 - Map Truck 3 - Unknown Counter
0471 - Map Truck 4 - Unknown Counter
0472 - Map Truck 5 - Unknown Counter

0476 - Map Helicopter - Graphic offset
0477 - Map Truck 1 - Graphic offset
0478 - Map Truck 2 - Graphic offset
0479 - Map Truck 3 - Graphic offset
047A - Map Truck 4 - Graphic offset
047B - Map Truck 5 - Graphic offset

047F - Map Helicopter - Direction (0 - Right, 1 - Down+Right, 2 - Down, 3 - Down+Left, 4 - Left, 5-Up+Left, 6 - Up, 7 - Up+Right)
0480 - Map Truck 1 - Direction
0481 - Map Truck 2 - Direction
0482 - Map Truck 3 - Direction
0483 - Map Truck 4 - Direction
0484 - Map Truck 5 - Direction

0488 - Map Loop (0 - Reset, 1 - Idle, 2 - Moving)
0489 - Map Truck 1 - Status for next direction (1 - Idle, 2 - Switch to next direction)
048A - Map Truck 2 - Status for next direction
048B - Map Truck 3 - Status for next direction
048C - Map Truck 4 - Status for next direction
048D - Map Truck 5 - Status for next direction

0491 - Map Status (00 - Descend Screen, 01 - Please Instruct Us / Moving, 02 - Descend/Transfer, 03 - Choose Destination)
049A - Map Helicopter Transfer index (2, 4, 6, 8, A) - Also countdown after collision with truck.

04A3 - The number of the truck that you last hit (1-5 trucks, 7 - Passage 18-15 8 - Passage 14-17)
04A4 - Map Truck 1 - Hidden Timeout (Set to FF when you defeat a truck. When it becomes 0, truck flag is ANDed with 80)
04A5 - Map Truck 2 - Hidden Timeout 
04A6 - Map Truck 3 - Hidden Timeout 
04A7 - Map Truck 4 - Hidden Timeout 
04A8 - Map Truck 5 - Hidden Timeout 

04AD - Map Truck 1 - Next index direction
04AE - Map Truck 2 - Next index direction
04AF - Map Truck 3 - Next index direction
04B0 - Map Truck 4 - Next index direction
04B1 - Map Truck 5 - Next index direction

04B5 - Map Helicopter - Area
04B6 - Map Truck 1 - Area
04B7 - Map Truck 2 - Area
04B8 - Map Truck 3 - Area
04B9 - Map Truck 4 - Area
04BA - Map Truck 5 - Area

04BE - The number of the door that you last exited. Used for where to return you when you die.
04BF - Door unlocked flag (00 - No, 01 - Yes) (Only gets checked when an area is initialized, only one door can be locked per map.)

04C1 - Flare used flag (00 - No, 01 - Yes)
04C2 - Medicine used flag (00 - No, 01 - Yes)
04C3 - Armor Counter 
04C4 - Attack Occurred Flag (00 - No, 01 - Yes) (Used in Neutral Zones and Comm Rooms)

04CA - Selected Gun (0 - Rifle, 1 - Launcher, 2 - Wide, 3 - Machine, 4 - 3 Way)
04CB - Rifle Flag
04CC - Rocket Launcher Flag
04CD - Wide Cannon Flag
04CE - Machinegun Flag
04CF - 3-Way Flag
04D0 - Unused Gun Flag 
04D1 - Selected Armor (0 - Pendant, 1 - Helmet, 2 - BPV)
04D2 - Pendant Flag
04D3 - Helmet Flag
04D4 - Bulletproof Vest Flag
04D5 - Unused Armor Flag 1
04D6 - Unused Armor Flag 2
04D7 - Unused Armor Flag 3
04D8 - Selected Item (0 - Flares, 1 - Medicine, etc.)
04D9 - Flare Bomb Flag
04DA - Medicine Flag
04DB - Permit Flag
04DC - Steel Boots Flag
04DD - Rapid Fire Device Flag
04DE - Unused Item Flag
04DF - Selected Communicator (0 - Alpha, 1 - Beta, 2 - Gamma, 3 - Delta)
04E0 - Alpha Communicator Flag
04E1 - Beta Communicator Flag
04E2 - Gamma Communicator Flag
04E3 - Delta Communicator Flag
04E4 - Unused Communicator Flag 1
04E5 - Unused Communicator Flag 2
04E6 - The highlighted position in the item selection screen
04E7 - Bullet Canisters Collected Place holder 9xx
04E8 - Bullet Canisters Collected Place holder x9x
04E9 - Bullet Canisters Collected Place holder xx9
04EA - Maximum Player Hit Points (00 at game start, loaded into current Hit Points)
04EB - Beat Area 1 Flag
04EC - Beat Area 2 Flag
04ED - Beat Area 3 Flag
04EE - Beat Area 4 Flag
04EF - Beat Area 5 Flag
04F0 - Beat Area 6 Flag
04F1 - Beat Area 7 Flag
04F2 - Beat Area 8 Flag
04F3 - Beat Area 9 Flag
04F4 - Beat Area 10 Flag
04F5 - Beat Area 11 Flag
04F6 - Beat Area 12 Flag (Unused?)
04F7 - Underground passage's found flag (00 - No, 01 - Yes)

04FA - Eagle Badges

0537 - Bullet 1 is active flag
0538 - Bullet 2 is active flag
0539 - Bullet 3 is active flag
053A - POW is active flag
053B - Arm Flag (0 - None, 1 - Out, 80 - ?)
053C - Enemy Bullet 1 Active Flag
053D - Enemy Bullet 2 Active Flag
053E - Enemy 1 Active Flag (Main System Bullet counts as enemy)
053F - Enemy 2 Active Flag
0540 - Enemy 3 Active Flag
0541 - Object 1 Active Flag
0542 - Object 2 Active Flag
0543 - Object 3 Active Flag
0544 - Object 4 Active Flag
0545 - Object 5 Active Flag
0546 - Object 6 Active Flag
0547 - Object 7 Active Flag
0548 - Object 8 Active Flag

055D - Player Bullet 1 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left)
055E - Player Bullet 2 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left)
055F - Player Bullet 3 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left)

0562 - Enemy bullet 1 flag (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left)
0563 - Enemy bullet 2 flag (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left)
0564 - Enemy 1 flag opposite?
0565 - Enemy 2 flag opposite?
0566 - Enemy 3 flag opposite?
0567 - Object 1 X Screen offset (How many screens away this object is from player)
0568 - Object 2 X Screen offset
0569 - Object 3 X Screen offset
056A - Object 4 X Screen offset
056B - Object 5 X Screen offset
056C - Object 6 X Screen offset
056D - Object 7 X Screen offset
056E - Object 8 X Screen offset
056F - Player X position
0570 - Bullet 1 X position
0571 - Bullet 2 X position
0572 - Bullet 3 X position
0573 - POW X Position
0574 - Arm X position
0575 - Enemy Bullet 1 X position
0576 - Enemy Bullet 2 X position
0577 - Enemy 1 X Position (Main system bullet counts as enemy)
0578 - Enemy 2 X position
0579 - Enemy 3 X position
057A - Object 1 X position
057B - Object 2 X position
057C - Object 3 X position
057D - Object 4 X position
057E - Object 5 X position
057F - Object 6 X position
0580 - Object 7 X position
0581 - Object 8 X position
0582 - Highlighting box X position in prep screen.
0583 - Increments by 20 when player attempts to alter X position.

058B - Increments by 20 when enemy attempts to alter X position.
058C - Increments by 20 when enemy attempts to alter X position.
058D - Increments by 20 when enemy attempts to alter X position.

058F - Enemy Cycle by 20

05A1 - Object 1 Y Screen offset (How many screens away this object is from player)
05A2 - Object 2 Y Screen offset 
05A3 - Object 3 Y Screen offset 
05A4 - Object 4 Y Screen offset 
05A5 - Object 5 Y Screen offset 
05A6 - Object 6 Y Screen offset 
05A7 - Object 7 Y Screen offset 
05A8 - Object 8 Y Screen offset 
05A9 - Player Y position
05AA - Bullet 1 Y Position
05AB - Bullet 2 Y Position
05AC - Bullet 3 Y Position
05AD - POW Y Position
05AE - Arm Y Position
05AF - Enemy Bullet 1 Y position
05B0 - Enemy Bullet 2 Y position
05B1 - Enemy 1 Y Position (Main system bullet counts as enemy)
05B2 - Enemy 2 Y Position
05B3 - Enemy 3 Y Position
05B4 - Object 1 Y position
05B5 - Object 2 Y position
05B6 - Object 3 Y position
05B7 - Object 4 Y position
05B8 - Object 5 Y position
05B9 - Object 6 Y position
05BA - Object 7 Y position
05BB - Object 8 Y position
05BC - Highlighting box Y position in prep screen.
05BD - Increments by 20 when player attempts to alter Y position.

05C5 - Increments by 20 when enemy attempts to alter X position.
05C6 - Increments by 20 when enemy attempts to alter X position.
05C7 - Increments by 20 when enemy attempts to alter X position.

05D0 - Player Frame (26 - Idle, 4B - Walking, 71 - Duck/Arm Angle, FD - Arm Up, 
05DA - Enemy 1 state
05DB - Enemy 1 Graphic pointer
05DD - Enemy 1 Frame
05DE - Main System Explosion Frame
05DF - Enemy 2 state
05E0 - Enemy 3 state
05E9 - Player Swing Frame
05EF - Enemy 1 Graphic pointer 2

05F8 - Player Frame (00 - Idle, 48 - connected up, 60 - connected angle 2A, 5?, 8? - Walking)

0604 - Enemy Animation Frame
060A - Player State
	00 - Idle
	01 - Walking
	02 - Ducking
	03 - Arm attached Directly Up
	04 - Arm attached angle
	05 - Falling
	06 - Parachuting
	08 - Arm attached duck/walk
	0A - Injured
	10 - Dead
	11 - Passing through a door)
060C - Player Frame number (2-6 walking, A - Idle, 1 - duck, more)

0611 - Arm swinging
0620 - Flag for direction Player is facing (0 - Right, 1 - Left)

0625 - Player position on swing and swing failure values (1-7)

062C - Flag for direction Enemy 1 is facing
0633 - Flag for direction Player is facing (0 - Right, 1 - Left)
0634 - Flag for direction bullet 1 is moving (0 - Right, 1 - Left)
0635 - Flag for direction bullet 1 is moving (0 - Right, 1 - Left)
0636 - Flag for direction bullet 1 is moving (0 - Right, 1 - Left)

063B-0644 - Flag for direction Enemy/NPC 1 is facing

0648 - Bullet 1 active Flag (Flare counts as a bullet)
0649 - Bullet 1 active Flag
064A - Bullet 1 active Flag
064B - POW active flag
064C - Arm State (0 - none, 1 - out, 2 - connected)
0647 - Enemy 1 X position

0652 - Darkness status (0 - Light, 1 - Pitch Black, 2 - Eyes Adjusted)
0654 - Gets set from 1 to 0 when you pickup the delta comm

065A - Player State
	00 - Idle
	01 - Walking
	02 - Ducking
	03 - Arm attached Directly Up
	04 - Arm attached angle
	05 - Falling at an angle
	07 - Falling straight down
	0A - Recoiling from damage
	10 - Dead

0665 - Enemy 1 State (0 - Idle, Walking, 2/3 - Jumping down, etc.) Changes per enemy
0666 - Enemy 2 State (0 - Idle, Walking, 2/3 - Jumping down, etc.)

Delays
0680 - Delay from death to reset.
0681 - Bullet 1 duration
0682 - Bullet 1 duration
0683 - Bullet 1 duration
0684 - POW duration x256
0685 - 
0686 - 
0687 - 
0688 - 
0689 - 
068A - 
068B - The timeout for resetting the palette to semi dark in area 4.
068C - 
068D - 
068E - 
068F - Final Countdown x9
0690 - 
0691 - Neutral Zone background flashing duration.

0697 - POW duration x1

069E - Affect darkness timeouts
069F - Final Countdown 9x

06A7 - Bullet 1 state
	00 - none
	02 - Hit something/Timed Out
	08 - remove
	0A - in flight
	+10 - if bullet is a 2x2 sprite like rocket launcher or 3-way.
06A8 - Bullet 2 state
06A9 - Bullet 3 state

06AB - Flag for arm attached (00 - not attached, F7 - attached)
06AC - Enemy Bullet 1 effects
06AD - Enemy Bullet 2 effects
06AE - Object 1 effects (Add 10 for shimmering, 20 for behind background, 40 for flashing)
06AF - Object 2 effects
06B0 - Object 3 effects
06B1 - Object 4 effects
06B2 - Object 5 effects
06B3 - Object 6 effects
06B4 - Object 7 effects
06B5 - Object 8 effects

06BA - Affects player collisions

06BF - Arm distance from Player

06D2 - Arm throw state (3 - Up, 6 - Up angle, 4 - Straight, 5 - Ducking)

06D7 - Slow accumulator

0711 - Object 1 bouncing flag
0712 - Object 2 bouncing flag
0713 - Object 3 bouncing flag
0714 - Object 4 bouncing flag

0719 - Player Y velocity

0724 - Object 1 Y velocity
0725 - Object 2 Y velocity

072C - Increments by 10 as player flies through the air.

0737 - Object 1 counter
0738 - Object 2 counter
0739 - Object 3 counter
073A - Object 4 counter

073F - Unknown player status (00 - Init, Move - A0, 20 - Falling)

074A - Enemy jumping status (BD - Normal, 28 - Jumping)

075D - Object 1 incrementer (for soldiers it counts down from 8. When 0 is reached, they jump)
075E - Object 2 incrementer (Bullet canisters count up by 10 each time they bounce)
075F - Object 3 incrementer
0760 - Object 4 incrementer

0771 - Object secondary value 1
0772 - Object secondary value 1
0773 - Object secondary value 1
0774 - Object secondary value 1

0779 - Player hit points (0-8)
077A - Player bullet's damage, bullet 1
077B - Player bullet's damage, bullet 2
077C - Player bullet's damage, bullet 3
077D - POW Damage (in overhead, bullet 4 damage / Arm Flag)

0781 - Enemy 1 HP   When killed = FF until bullet goes away. Includes bosses, main systems, even albatross.
0782 - Enemy 2 HP
0783 - Enemy 3 HP
0784 - Enemy 4 HP
0785 - Enemy 5 HP
0786 - Enemy 6 HP
0787 - Enemy 7 HP
0788 - Enemy 8 HP
0789 - Enemy 9 HP
078A - Enemy 10 HP
078B - Enemy 11 HP
078C - Enemy 12 HP

0791 - Arm value of some sort

0796 - Enemy invincibility time

07AA - Bullet canister 1 timeout and hop count
07AB - Bullet canister 2 timeout and hop count
07AC - Bullet canister 3 timeout and hop count

07B2 - Graphic pointer?

07C5 - Something for dropping objects
07CB - X location for when object drop starts
07CF - Flag for Dropping objects
07D7 - Flag for Dropping objects
07D9 - Delay between dropped objects
07DB - Number of objects that drop
07DD - Object Number that is dropping in this level See Object Table

07E0 - Player Invincible Timeout (00-FF)
07E1 - Something to do with Player Invincibility

07E3 - Flag for player falling (0 - falling, 1 - on ground or arm attached)

07E6 - Player State
	00 - Not on screen
	01 - Walking
	02 - Ducking
	03 - Arm Up
	04 - Arm walking
	05 - Arm ducking
	06 - Arm Angle
	09 - Climbing
	0A - Parachuting
	0B - Falling
	0C - Swinging 1
	0D - Swinging 2
	0E - Swinging 3
	10 - Idle
	11 - Injured
	12 - Dead)
07E7 - Mirror of 07E6

07EB - Hyper Bazooka flag

ROM Addresses

28010-2B00F - Bank containing Sprite data

2F2DC - Main map Tilemap. Describes what 8x8 tile make up each tile the Area map.
        (Within the map window. The map grid is 26 tiles wide and 18 tiles high.)

3652F - For each Area (01 to 19): Determines if hero enters Area with parachute or not.
        Values:
        01: Parachute in
        00: Enter through door

369AF - Main map Trucks: Pattern and starting Area, combined into one byte for each truck.
        Format:
        High 4 bits: Truck movement pattern.
        Low 4 bits: Starting Area (decides starting X and Y).

3E3CD - Main map Attribute Table buffer.
        3E3CD (23) : VRAM Address High
        3E3CE (C0) : VRAM Address Low
        3E3CF (30) : Number of bytes to write
        3E3D0 and on : Attribute table data. Used to determine what BG palette is used
            for every 16x16 pixel piece of the main game map.

3F60A - For each Room Id from $37 to $44, Item found in special room.
        (Changes what item you get, but does not change sprite)
        3F60B (0F) : Item (Flare bomb) found in 2nd chamber in Area 13. 
        3F60C (18) : Item (Gamma communicator) found in 1st chamber in Area 14.
        3F60F (19) : Item (Delta communicator) found in 2nd chamber in Area 15.
        3F610 (17) : Item (Beta communicator) found in 1st chamber in Area 16.
        3F614 (04) : Item (Machine gun) found in 1st chamber in Area 18.
        3F615 (04) : Item (Machine gun) found in 2nd chamber in Area 18.

3F618 - For each Room Id from $37 to $44, Sprite Address for Item in chamber.
        Each chamber has a 16-bit Address. The value is $FFFF if there is no
        Item in the chamber.
        3F61A (AAC2) : Sprite address (Flare bomb) for 2nd chamber in Area 13.
        3F61C (AAF5) : Sprite address (Gamma comm.) for 1st chamber in Area 14.
        3F622 (AAE4) : Sprite address (Delta comm.) for 2nd chamber in Area 15.
        3F624 (AAD3) : Sprite address (Beta comm.) for 1st chamber in Area 16.
        3F62C (AB06) : Sprite address (Machine gun) for 1st chamber in Area 18.
        3F62E (AB06) : Sprite address (Machine gun) for 2nd chamber in Area 18.

Map Notes

Power Technical Requirements
8  - Must beat areas 1-6 and have gamma communicator
10 - Must beat area 7 and have delta communicator
12 - Must beat areas 10-11.

                        +--+     +--+
                        |10|=====|12|
+--+  +--+  +--+  +--+  +--+     +--+
|13|  |04|==|15|  |07|   || \\    ||
+--+  +--+  +--+  +--+   ||   \\  ||
 || //    \\ ||    || \\ ||    \\ ||
+--+  +--+  +--+  +--+  +--+     +--+
|01|  |16|==|05|  |18|  |08|     |11|
+--+  +--+  +--+  +--+  +--+     +--+
 ||    || // ||       // || \\
 ||   +--+   ||     //  +--+  +--+
 ||   |02|   ||    //   |09|  |19|
 ||   +--+   ||   //    +--+  +--+
 ||    ||    || //       ||
+--+  +--+  +--+  +--+  +--+
|00|  |03|==|06|==|14|  |17|
+--+  +--+  +--+  +--+  +--+

Truck and Helicopter X,Y position for each area
ROM Address: $36824
Area  X, Y
00 - 28, 98
01 - 28, 58
02 - 48, 78
03 - 48, 98
04 - 48, 38
05 - 68, 58
06 - 68, 98
07 - 88, 38
08 - A8, 58
09 - A8, 78
10 - A8, 28
11 - D8, 58
12 - D8, 28
13 - 28, 38
14 - 88, 98
15 - 68, 38
16 - 48, 58
17 - A8, 98
18 - 88, 58
19 - C8, 78

Truck Patterns (beginning with their initial position)
Truck 1 - 4,5,15,4,1,4...
Truck 2 - 3,6,5,2,16,5,6,3...
Truck 3 - 7,8,10,8,19,8,6,8,7...
Truck 4 - 8,19,8,7,18,7,8...
Truck 5 - 10,12,11,10...

Data Tables

Object Table

This table in a lookup of all the enemies in the game.

00 - Soldier
01 - Shielded Soldier
02 - Suicide Bomber
03 - Boss
04 - ?
05 - Radio Drone
06 - Moth
07 - Twin Turret
08 - Enemy Bullet
09 - Thrown Bomb
0A - Bomb Explosion
0B - Crane Chain
0C - Twin Turret Bullet
0D - Paratrooper
0E - ?
0F - ?
10 - Barrier Soldier
11 - Elevator
12 - Spider
13 - ?
14 - Explosion
15 - ?

Sound Effect Table

20 - Click
21 - Thud
22 - Thud
23 - Arm Out
24 - Noisy Buzz
25 - ?
26 - Plant Alert
27 - Plant Close
28 - ?
29 - Thud
2A - Elevator Drop
2B - Connection Established
2C - Connection Established
2D - Short Noise
2E - Disconnect
2F - Blip
30 - Item Select
31 - Helicopter
32 - Alert
33 - Siren
34 - Acquire Eagle Badge
35 - Big Explosion

Portraits Table

00 - Empty
01 - Nazi Mustache
02 - Cyborg
03 - Rad
04 - Super Joe
05 - Nazi Generic
06 - Ally Generic
07 - Generic NPC
08 - Headquarters
09 - Nazi Commander
0A - Generalissimo Killt
0B - Hitler Pop 1
0C - Hitler Pop 2
0D - Hitler Pop 3
0E - Adolf Hitler
0F - Neutral Guard

Items Table

01 - Rifle
02 - Rocket Launcher
03 - Wide Cannon
04 - Joe's Machinegun
05 - 3-Way
08 - Pendant
09 - Helmet
0A - Bulletproof Vest
0F - Flare Bomb
10 - Medicine
11 - Permit
12 - Steel Boots
13 - Rapid Fire Device
16 - Alpha Communicator
17 - Beta Communicator
18 - Gamma Communicator
19 - Delta Communicator


Code

Give Eagle Badge

9045:60        RTS
9046:20 F1 8E  JSR $8EF1        ; Check to see if played collided with badge.
9049:B0 FA     BCS $9045        ; Did player get badge?
904B:A0 34     LDY #$34         ; Load Eagle Badge Acquire sound effect.
904D:20 54 D7  JSR $D754        ; Play Sound.
9050:AD FA 04  LDA $04FA        ; Load Eagle Badges into A.
9053:C9 09     CMP #$09         ; Compare Eagle Badges with 9
9055:F0 03     BEQ $905A        ; If player has fewer than 9 Eagle Badges
9057:EE FA 04  INC $04FA        ; Increment Eagle Badges
905A:4C CA D6  JMP $D6CA

Load Crouching Rifle Soldier

99B6:A9 00     LDA #$00         ; Load movement type (stationary).
99B8:9D BA 06  STA $06BA,X      ; Set movement type.
99BB:A9 02     LDA #$02         ; Load rifle soldier's hit points.
99BD:9D 79 07  STA $0779,X      ; Store rifle soldier's hit points.
99C0:A9 09     LDA #$09         ; Load rifle bullet generation position.
99C2:9D 66 07  STA $0766,X      ; Store rifle bullet generation position.
99C5:20 FD D6  JSR $D6FD
99C8:9D 33 06  STA $0633,X      ; Set state.
99CB:FE 47 06  INC $0647,X
99CE:60        RTS

Load Laser Barrier

9A90:A0 6E     LDY #$6E
9A92:A9 8D     LDA #$8D
9A94:20 C7 D6  JSR $D6C7
9A97:A9 01     LDA #$01         ; Load HP.
9A99:9D 79 07  STA $0779,X @    ; Store 
9A9C:FE 47 06  INC $0647,X @
9A9F:60        RTS

Load Crane Enemy

This routine loads a enemy crane into the enemy slot in the X register.

9B9F:A9 10     LDA #$10         ; Load Chain Position.
9BA1:9D 66 07  STA $0766,X      ; Store Chain Position
9BA4:A0 76     LDY #$76
9BA6:A9 8E     LDA #$8E
9BA8:20 C7 D6  JSR $D6C7
9BAB:A9 04     LDA #$04         ; Load Movement Type (Back and forth).
9BAD:9D BA 06  STA $06BA,X      ; Store Movement Type.
9BB0:A9 09     LDA #$09         ; Load Crane's hit points.
9BB2:9D 79 07  STA $0779,X      ; Store Crane's hit points.
9BB5:A0 00     LDY #$00
9BB7:BD 49 05  LDA $0549,X
9BBA:C9 1A     CMP #$1A
9BBC:F0 01     BEQ $9BBF
9BBE:C8        INY
9BBF:98        TYA
9BC0:9D 33 06  STA $0633,X      ; Store Crane's State
9BC3:9D 20 06  STA $0620,X      ; Store Direction.
9BC6:A9 BD     LDA #$BD
9BC8:9D 93 06  STA $0693,X
9BCB:FE 47 06  INC $0647,X
9BCE:60        RTS

Trapped Wire Tapping

AC11:E6 CD     INC $00CD
AC13:A5 80     LDA $0080
AC15:85 CE     STA $00CE
AC17:F0 15     BEQ $AC2E
AC19:A5 4D     LDA $004D        ; Load the Area into A
AC1B:C9 01     CMP #$01         ; Compare with 1
AC1D:F0 0F     BEQ $AC2E        ; If Area = 1, no trap.
AC1F:20 F4 D6  JSR $D6F4        ; Check if this area is trapped
AC22:29 03     AND #$03
AC24:C9 01     CMP #$01
AC26:D0 06     BNE $AC2E        ; If area isn't trapped goto AC2E
AC28:EE C4 04  INC $04C4        ; Increment the Attack Flag
AC2B:20 E6 D5  JSR $D5E6
AC2E:A4 4D     LDY $004D
AC30:B9 83 AC  LDA $AC83,Y
AC33:CD DF 04  CMP $04DF
AC36:F0 27     BEQ $AC5F
AC38:E6 CD     INC $00CD
AC3A:A0 62     LDY #$62
AC3C:4C 30 D7  JMP $D730
AC3F:E6 CD     INC $00CD
AC41:A9 1F     LDA #$1F
AC43:85 57     STA $0057
AC45:A0 2E     LDY #$2E
AC47:4C 54 D7  JMP $D754
AC4A:A9 08     LDA #$08
AC4C:85 CD     STA $00CD
AC4E:A5 4B     LDA $004B
AC50:85 4C     STA $004C
AC52:20 42 CB  JSR $CB42
AC55:20 B5 D6  JSR $D6B5
AC58:20 C3 C6  JSR $C6C3
AC5B:A9 23     LDA #$23
AC5D:85 B5     STA $00B5
AC5F:60        RTS

Take Damage From Spikes

AE67:AD 20 06  LDA $0620        ; Load player's direction.
AE6A:49 01     EOR #$01         ; Flip direction.
AE6C:8D 33 06  STA $0633        ; Save new player direction.
AE6F:20 99 D7  JSR $D799        ; Clear Bionic Arm
AE72:CE 79 07  DEC $0779        ; Decrement player hit points once.
AE75:CE 79 07  DEC $0779        ; Decrement player hit points twice.
AE78:4C 96 D7  JMP $D796
AE7B:BD 6D 06  LDA $066D,X
AE7E:20 A0 D6  JSR $D6A0

End of Area Code

ROM Address: 2B144
B134:C6 6B     DEC $006B        ; Decrease 006B (Delay for reading the end screen dialog)
B136:D0 36     BNE $B16E        ;
B138:C6 6A     DEC $006A        ; Decrease 006A (Delay for reading the end screen dialog)
B13A:10 32     BPL $B16E        ;
B13C:A4 4D     LDY $004D        ; Load Y with the {Area #}
B13E:A9 01     LDA #$01         ; 
B140:99 EA 04  STA $04EA,Y      ; Set the area flag to true for the area we're in
B143:B9 6E B1  LDA $B16E,Y      ; Load the inventory item for this area into A
B146:A8        TAY              ; Transfer A to Y
B147:D0 06     BNE $B14F        ; If there isn't an item...
B149:20 C3 D7  JSR $D7C3        ; ...jump to sub D7C3. Else...
B14F:A9 01     LDA #$01         ; Set A to TRUE
B151:99 CA 04  STA $04CA,Y      ; Set the inventory flag specified by Y to TRUE (See Bionic Commando#End of Area Inventory Items Table)
B154:A9 0A     LDA #$0A         ; Load 10 bullets.
B156:85 26     STA $0026        ; Store the 10 bullets
B158:20 BA D7  JSR $D7BA        ; Call acquire bullets routine.

End of Area Inventory Items Table

Use the Items Table to change. Note: This doesn't change the game text, you must alter that as well.

Memory Address: B16F
ROM Address: 2B17F
10 - Area 01 - Medicine
08 - Area 02 - Pendant
13 - Area 03 - Rapid Fire Device
03 - Area 04 - Wide Cannon
02 - Area 05 - Rocket Launcher
11 - Area 06 - Permit
00 - Area 07 - Nothing
12 - Area 08 - Steel Boots
05 - Area 09 - 3-Way
00 - Area 10 - Nothing (1up)
0A - Area 11 - Bullet Proof Vest
00 - Area 12 - Nothing

Give Hyper Bazooka

BA8A:EE EB 07  INC $07EB        ; Increment the Hyper Bazooka flag.
BA8D:A9 CC     LDA #$CC
BA8F:20 8A D7  JSR $D78A
BA92:FE 5A 06  INC $065A,X
BA95:60        RTS

Load Final Countdown Time

BE96:A9 06     LDA #$06         ; Load A with #06 for the ten's place of Final Countdown Seconds.
BE98:9D 80 06  STA $0680,X      ; Store A, offset X. Note: X is supposed to be #0C for Final Countdown Seconds.
BE9B:A9 00     LDA #$00         ; Load A with #00 for the one's place of Final Countdown Seconds.
BE9D:9D 93 06  STA $0693,X      ; Store A, offset X.

Clear an Object's Variables

DAD7:A9 00     LDA #$00         ; Clear the accumulator.
DAD9:9D 36 05  STA $0536,X
DADC:9D 47 06  STA $0647,X
DADF:9D 5A 06  STA $065A,X
DAE2:9D 6D 06  STA $066D,X
DAE5:9D 79 07  STA $0779,X      ; Hit Points
DAE8:9D A6 06  STA $06A6,X
DAEB:9D 8C 07  STA $078C,X
DAEE:9D 9F 07  STA $079F,X
DAF1:60        RTS

Injure Player

E7C5:AD 36 05  LDA $0536
E7C8:09 81     ORA #$81
E7CA:8D 36 05  STA $0536
E7CD:A9 0A     LDA #$0A
E7CF:8D 5A 06  STA $065A        ; Store player state (0A = injured)
E7D2:A9 00     LDA #$00
E7D4:8D 6D 06  STA $066D
E7D7:CE 79 07  DEC $0779        ; Lose 1 HP.
E7DA:30 0A     BMI $E7E6        ; If HP < 0 Then Goto E7E6
E7DC:A9 7E     LDA #$7E         
E7DE:8D E0 07  STA $07E0        ; Player Invincible For 7E
E7E1:A9 00     LDA #$00
E7E3:8D E1 07  STA $07E1        ; Clear 07E1.
E7E6:60        RTS

Clear Bionic Arm

E7E7:A9 00     LDA #$00         ; Clear A
E7E9:8D 3B 05  STA $053B        ; Clear Arm Status
E7EC:8D AB 06  STA $06AB        ; Clear Arm Attached
E7EF:8D 4C 06  STA $064C        ; Clear Arm State
E7F2:8D 5F 06  STA $065F        ; 
E7F5:8D 72 06  STA $0672        ; 
E7F8:60        RTS

Hit While Wearing Armor

; Bulletproof Vest
F00F:EE C3 04  INC $04C3        ; Increment Armor counter.
F012:AD C3 04  LDA $04C3        ; Load the Armor counter into A.
F015:29 01     AND #$01         ; AND A with #01
F017:D0 06     BNE $F01F        ; If the value is odd, Goto F01F.
F019:20 CA D6  JSR $D6CA        ; Take the hit.
F01C:4C 54 EF  JMP $EF54        
F01F:8A        TXA
F020:A8        TAY
F021:4C EA EB  JMP $EBEA        ; Bounce the bullet.

; Pendant / Helmet
F024:AD C3 04  LDA $04C3        ; Load the Armor Counter
F027:D0 06     BNE $F02F        ; If it's note zero, Goto F02F
F029:20 CA D6  JSR $D6CA        ; Take the hit.
F02C:4C 54 EF  JMP $EF54
F02F:CE C3 04  DEC $04C3        ; Decrement the Armor Counter
F032:8A        TXA
F033:A8        TAY
F034:4C EA EB  JMP $EBEA        ; Bounce the bullet


Check For Attack In Neutral Zones

F9E4:AD C4 04  LDA $04C4        ; Load Player Attacked flag into A.
F9E7:D0 15     BNE $F9FE
F9E9:BD 5C 05  LDA $055C,X      ;
F9EC:D0 08     BNE $F9F6
F9EE:BD 6F 05  LDA $056F,X      ; Load player's position
F9F1:CD 6F 05  CMP $056F        ; 
F9F4:B0 25     BCS $FA1B
F9F6:AD 37 05  LDA $0537        ; Load player bullet 1 active flag.
F9F9:F0 20     BEQ $FA1B        ; If bullet is not active, return.
F9FB:8D C4 04  STA $04C4        ; Set the Player Attacked flag.
F9FE:A9 3F     LDA #$3F         ; Load A with 3F.
FA00:9D 80 06  STA $0680,X      ; Store A into Neutral Zone Flashing Duration.
FA03:20 2A D7  JSR $D72A
FA06:A5 4C     LDA $004C        ; Load 004C into A.
FA08:48        PHA              ; Push A onto the stack.
FA09:A9 6F     LDA #$6F         ; Load A with 6F
FA0B:85 4C     STA $004C        ; Save A into 004C.
FA0D:A9 03     LDA #$03         ; Load A with 3.
FA0F:20 E2 D6  JSR $D6E2
FA12:20 03 AC  JSR $AC03
FA15:68        PLA              ; Pop the stack into A.
FA16:85 4C     STA $004C        ; Store A back into 004C.
FA18:FE 47 06  INC $0647,X
FA1B:60        RTS

Unknown Routines

9749 - 
B085 -
B9AD - 
C000 - Beginning of code
D6A0 - 
D6C1 - 
D6C7 - Load the graphic from register Y and A
D6CD - 
D6EB - 
D6F1 - 
D754 - Play sound from register Y
D75D - 
D760 - 
D778 - Gets called at game init
D79C - 
D7BA - 
D7BD - Gets called at game init
E8DF - Check for level up?
EA8F - 
F04F - 

FEE2 matches ROM location 3FEF2 (start of truck movement values)

FFFA - Non-Maskable Interrupt (NMI) Address (2 bytes)
FFFC - Reset Vector (2 bytes)
FFFE - IRQ/BRK Vector (2 bytes)

Text

Bionic Commando has a very strange table. The letters are jumbled up in a bizarre offset, most likely due to poor translation (which the game's text also suffers from). There are two files, one for the title screen the other for the game.

Title

20= 
C2='
C4=©
C5=1
C6=9
C7=8
C9=C
CA=A
CC=C
CD=O
CE=M
CF=T
D1=S
D2=R
D3=N
D4=I
D5=U
D6=E
D7=G
D8=V
D9=B
DA=P
DB=H
DC=.,
DD=.
DE=D
DF=L
E0=Y
E1=F
E2=X
E3=!
E4=@
E5=/

Game

00= 
01=F
02=0
03=G
04=1
05=H
06=2
07=I
08=3
09=J
0A=4
0B=K
0C=5
0D=L
0E=6
0F=M
10=7
11=N
12=8
13=O
14=9
15=P
16=A
17=Q
18=B
19=R
1A=C
1B=S
1C=D
1D=T
1E=E
1F=U
20=V
21=+
22=W
23=Δ
24=X
26=Y
28=Z
2A=,
2C='
2E=*
30=.
32=?
34=!
36=α
38=β
3A=γ
3C=d
3E=δ

Japan

Hitler no Fukkatsu - Top Secret.png

The Original Japanese version of the game is called ヒットラーの復活 トップシークレット (Hitler no Fukkatsu: Top Secret)​ translated: Top Secret: The Resurrection of Hitler. In the game, you blast away at Nazis and there are swastikas all over the place.


Europe

Bionic Commando (E).png

The European version of Bionic Commando is nearly identical to the North American version. No attempt was even made to re-synch the audio for the slower PAL frame rate.

Text

The text tables are identical to the North American release.


Links