Memory offsets: NES (North American)
From Bionic Commando Database
Memory Locations Main Break down 0000-0FFF - Variable Memory 0000-07FF - Usable Memory 0800-0FFF - An exact copy of 0000-07FF. 1000-1FFF - An exact copy of 0000-0FFF. 2000-3FFF - Constant data, changes when a room loads. 4000-5FFF - Unknown. Keeps accumulating. 6000-7FFF - Empty memory 8000-FFFF - Program Memory Memory - Description 0001 - 0004 - 0005 - 0006 - 000A - Accumulator Register 000C - 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 ego is facing (00 - left, 01 - right) 0033 - 0036 - 0039 - 003B - 003C - 0040 - 0041 - 0042 - 0043 - 0044 - 0045 - 0046 - 0047 - 0048 - 0049 - 004A - Player Lives 004B - 004C - 004E - 004F - 0050 - 0051 - 0052 - 0053 - 0054-0055 - The location as the title logo is drawn on the screen 0055 - 0056 - 0057 - The game over screen timeout 0058 - 0059 - 005A - 005B - 005C - 005E - 005F - Changes with ego position or enemy position if one if on the screen (probably a temp variable) 0060 - 0061 - Ego X position on screen 0062 - Ego Y position on screen 0063 - 0064 - 0065 - 0066 - 0067 - 0068 - 0069 - 006A-006B - Delay after title screen finishes drawing to start intro or demo. 006B - 006C - 006E - 006F - 0070 - 0071 - 0072 - 0073 - 0074 - 0075 - 0076 - 0077 - 0078 - 0079 - 007A - 007B - 007C - 007E - 007F - 0080 - The cursor toggle (0-Comm / 1-Wire, 0-Desc / 1-Tran) 0081 - 0082 - Flag during intro story. 08 - Clear text. 09 - Writing text. 0A - Waiting after text. 0B - Fade out. 0083 - 0084 - 0085 - Toggles from 1 to 0 as text is being written to the screen during intro 0086 - 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 Press (0 - Idle, 1 - Right, 2 - left, 4 - Down, 8 - Up, 10 - Start, 20 - Select, 40 - B, 80 - A) 00FA - Controller 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 - Objects on screen (Note, changing these objects only works for one cycle before they're reset) 0300-03FF - Screen background tiles and palette? 0400-043F - PPU Memory used to animate the background. (Enemy doors, text, fire, etc.) Power Techincal Requirements 8 - Must beat areas 1-6 and have gamma communicator 10 - Must beat area 7 and have delta communicator 12 - ? +--+ +--+ |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 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... 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 0446 - 0447 - 0448 - 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) 044F - 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 0558 - 0459 - 045A - 045B - 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 0461 - 0462 - 0463 - 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 046A - 046B - 046C - 046D - Map Helicopter Propellor 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 0473 - 0474 - 0475 - 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 047C - 047D - 047E - 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 0485 - 0486 - 0487 - 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 048E - 048F - 0490 - 0491 - Map Status (00 - Decend Screen, 01 - Please Instruct Us / Moving, 02 - Decend/Transfer, 03 - Choose Destination) 0492 - 0493 - 0494 - 0495 - 0496 - 0497 - 0498 - 0499 - 049A - Map Helicopter Transfer index (2, 4, 6, 8, A) - Also countdown after collision with truck. 049B - 049C - 049D - 049E - 049F - 04A0 - 04A1 - 04A2 - 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 04A9 - 04AA - 04AB - 04AC - 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 04B2 - 04B3 - 04B4 - 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 04BB - 04BC - 04BD - 04BE - The number of the door that you last exited. Used for where to return you when you die. 04BF - Door locked flag (only gets checked when an area is initilized) Only one door can be locked per map. 04C0 - 04C1 - Flare used flag 04C2 - Medicine used flag 04C3 - 04C4 - 04C5 - 04C6 - 04C7 - 04C8 - 04C9 - 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 3 04E8 - Bullet Canisters Collected Place holder 2 04E9 - Bullet Canisters Collected Place holder 1 (Moves when >9) 04EA - Player 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 - 04F7 - Underground passage's found flag 04F8 - 04F9 - 04FA - Eagle Badges 04FB - 04FC - 04FD - 04FE - 04FF - 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 0549 - 054A - 054B - 054C - 054D - 054E - 054F - 055C - 055D - Ego Bullet 1 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left) 055E - Ego Bullet 2 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left) 055F - Ego Bullet 3 flag. (00 - Moving or hit wall, 01 - Off Screen right, FF - Off screen left) 0560 - 0561 - 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 ego) 0568 - Object 2 X Screen offset (How many screens away this object is from ego) 0569 - Object 3 X Screen offset (How many screens away this object is from ego) 056A - Object 4 X Screen offset (How many screens away this object is from ego) 056B - Object 5 X Screen offset (How many screens away this object is from ego) 056C - Object 6 X Screen offset (How many screens away this object is from ego) 056D - Object 7 X Screen offset (How many screens away this object is from ego) 056E - Object 8 X Screen offset (How many screens away this object is from ego) 056F - Ego 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 ego attempts to alter X position. 0584 - 0585 - 0586 - 0587 - 0588 - 0589 - 058A - 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 05A0 - 05A1 - Object 1 Y Screen offset (How many screens away this object is from ego) 05A2 - Object 2 Y Screen offset (How many screens away this object is from ego) 05A3 - Object 3 Y Screen offset (How many screens away this object is from ego) 05A4 - Object 4 Y Screen offset (How many screens away this object is from ego) 05A5 - Object 5 Y Screen offset (How many screens away this object is from ego) 05A6 - Object 6 Y Screen offset (How many screens away this object is from ego) 05A7 - Object 7 Y Screen offset (How many screens away this object is from ego) 05A8 - Object 8 Y Screen offset (How many screens away this object is from ego) 05A9 - Ego 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 ego attemptx to alter Y position. 05BE - 05BF - 05C0 - 05C1 - 05C2 - 05C3 - 05C4 - 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 - Ego 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 - Ego Swing Frame 05EF - Enemy 1 Graphic pointer 2 05F8 - Ego Frame (00 - Idle, 48 - connected up, 60 - connected angle 2A, 5?, 8? - Walking) 0604 - Enemy Animation Frame 060A - Ego State (0 - Idle, 1 - Walking, 2 - Ducking, 3 - Arm attached Directly Up, 4 - Arm attached angle, 5 - Falling, 6 - Parachuting, 8 - Arm attached duck/walk, A - Injured, 10 - Dead, 11 - Passing through a door) 060C - Ego Frame number (2-6 walking, A - Idle, 1 - duck, more) 0611 - Arm swinging 0620 - Flag for direction Ego is facing (0 - Right, 1 - Left) 0625 - Ego position on swing and swing failure values (1-7) 062C - Flag for direction Enemy 1 is facing 0633 - Flag for direction Ego 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) 063E - Flag for direction Enemy 1 is facing 0642 - Outside neutral zone flag 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 - Ego State (00 - idle, 01 - Walking, 02 - Ducking, 03 - Arm attached Directly Up, 04 - Arm attached angle, 05 - Falling at an angle, 07 - Falling stright 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. 0697 - POW duration x1 069E - Effect darkness timeouts 06A7 - Bullet 1 state (0 - none, 2 - Hit something/Timed Out, 8 - remove, A - in flight) Add 10 if bullet is a 2x2 sprite like rocket launcher or 3-way. 06A8 - Bullet 1 state (0 - none, 2 - Hit something/Timed Out, 8 - remove, A - in flight) Add 10 if bullet is a 2x2 sprite like rocket launcher or 3-way. 06A9 - Bullet 1 state (0 - none, 2 - Hit something/Timed Out, 8 - remove, A - in flight) Add 10 if bullet is a 2x2 sprite like rocket launcher or 3-way. 06AA - 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 - Effects ego colissions 06BF - Arm distance from ego 06D2 - Arm throw state (3 - Up, 6 - Up angle, 4 - Stright, 5 - Ducking) 06D7 - Slow accumulator 0700 - 0711 - Object 1 bouncing flag 0712 - Object 2 bouncing flag 0713 - Object 3 bouncing flag 0714 - Object 4 bouncing flag 0719 - Ego Y velocity 0724 - Object 1 Y velocity 0725 - Object 2 Y velocity 072C - Increments by 10 as ego flies through the air. 0737 - Object 1 counter 0738 - Object 2 counter 0739 - Object 3 counter 073A - Object 4 counter 073F - Unknown Ego 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, xthey jump) 075E - Object 2 incrementer (Bullet canisters count up by 10 each time they bounce) 075F - Object 3 incrementer 0760 - Object 4 incrementer 0779 - Ego hit points 077A - Ego bullet's damage value 1 077B - Ego bullet's damage value 2 077C - Ego bullet's damage value 3 077D - 077E - 077F - 0780 - 0781 - 0782 - 0783 - Enemy 1 HP When killed = FF until bullet goes away. Includes bosses and main systems. 0784 - Enemy 2 HP 0785 - Enemy 3 HP 0786 - Enemy 4 HP 0787 - Enemy 5 HP 0788 - Enemy 6 HP 0789 - Enemy 7 HP 078A - Enemy 8 HP 078B - Enemy 9 HP 078C - Enemy 10 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 07E3 - Flag for ego falling (0 - falling, 1 - on ground or arm attached) 07E6 - Ego State (0 - Not on screen, 1 - Walking, 2 - Ducking, 3 - Arm Up, 4 - Arm walking, 5 - Arm ducking, 6 - Arm Angle, 9 - Climbing, A - Parachuting, B - Falling, C,D,E - Swinging, 10 - Idle, 11 - Injured, 12 - Dead) 07E7 - Same as above. 07EB - Hyper Bazooka flag Subroutines 9749 - B9AD - C000 - Beginning of code D6A0 - 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 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)