Bionic Commando
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.
Contents
- 1 Easy Cheats
- 2 North America
- 2.1 Memory Addresses
- 2.2 ROM Addresses
- 2.3 Map Notes
- 2.4 Data Tables
- 2.5 Code
- 2.5.1 Give Eagle Badge
- 2.5.2 Load Crouching Rifle Soldier
- 2.5.3 Load Laser Barrier
- 2.5.4 Load Crane Enemy
- 2.5.5 Take Damage From Spikes
- 2.5.6 End of Area Code
- 2.5.7 End of Area Inventory Items Table
- 2.5.8 Give Hyper Bazooka
- 2.5.9 Load Final Countdown Time
- 2.5.10 Clear an Object's Variables
- 2.5.11 Injure Player
- 2.5.12 Clear Bionic Arm
- 2.5.13 Hit While Wearing Armor
- 2.5.14 Unknown Routines
- 2.6 Text
- 3 Japan
- 4 Europe
- 5 Links
Easy Cheats
Icon | Addr | Val | Cmp | Description |
---|---|---|---|---|
![]() |
C135 | 09 | 02 | Start with 9 Lives |
![]() |
C135 | 63 | 02 | Start with 99 Lives |
![]() |
004A | 09 | - | Infinite Lives |
![]() |
0779 | 06 | - | Infinite Hit Points |
![]() |
07E0 | 03 | - | No Damage From Enemies In Side Game |
![]() |
AE72 | EE | CE | Less Damage From Spikes |
![]() |
04CC | 01 | - | Start With Rocket Launcher |
![]() |
04CD | 01 | - | Start With Wide Cannon |
![]() |
04CE | 01 | - | Start With Joe's Machinegun |
![]() |
04CF | 01 | - | Start With 3-Way |
![]() |
04D2 | 01 | - | Start With Pendant |
![]() |
04D3 | 01 | - | Start With Helmet |
![]() |
04D4 | 01 | - | Start With Bulletproof Vest |
![]() |
04D9 | 01 | - | Start With Flare Bomb |
![]() |
04DA | 01 | - | Start With Medicine |
![]() |
04DB | 01 | - | Start With Permit |
![]() |
04DC | 01 | - | Start With Steel Boots |
![]() |
04DD | 01 | - | Start With Rapid Fire Device |
![]() |
04E1 | 01 | - | Start With Beta Communicator |
![]() |
04E2 | 01 | - | Start With Gamma Communicator |
![]() |
04E3 | 01 | - | Start With Delta Communicator |
![]() |
04C2 | 00 | - | Infinite Medicine (When equipped) |
![]() |
0697 | FF | - | POW Remains Until You Leave the Room |
![]() |
04C1 | 01 | - | Flare Bombs Unnecessary In Area 4 |
![]() |
04F7 | 01 | - | Hidden Passages Revealed |
![]() |
069F | 09 | - | Infinite Escape Time |
![]() |
04FA | 09 | - | Infinite Continues |
![]() |
C135 | 01 | 02 | Start With 1 Life |
![]() |
004A | 00 | - | Start With 1 Life, No 1 Ups |
![]() |
0779 | 00 | - | No Bonus Hit Points |
![]() |
04DA | 00 | - | Can't Obtain Medicine (Item) |
![]() |
04FA | 00 | - | No Continues |
![]() |
BE97 | 04 | 06 | Only 40 Seconds to Escape |
![]() |
BE97 | 03 | 06 | Only 30 Seconds to Escape |
How do I use these? |
North America
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 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.) 0680 - Delay from death to reset. 0681 - Bullet 1 duration 0682 - Bullet 1 duration 0683 - Bullet 1 duration 0684 - POW duration x256 068B - The timeout for resetting the palette to semi dark in area 4. 068F - Final Countdown x9 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
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
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
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
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
- romhacking.net/utilities/859 - Groen Level Editor.
- thealmightyguru.com/Games/Hacking/Hacking-Programs.html - Bionic Commando Editor.