Section-Z

From NES Hacker Wiki
Jump to: navigation, search

Section-Z is a scrolling shoot-em-up with a twist. You play Captain Commando who is infiltrating Balangool to destroy L-Brain Master Control, before he enslaves the Earth. The game is broken up into sections, and at the end of each are two transporters that take you to different sections. Bosses separate major areas, and various power ups can be found throughout the game.

Easy Cheats

Icon Addr Val Cmp Description
Icon-Lives.png D2AD 09 03 Start With 9 Lives
Icon-Lives.png D2AD 99 03 Start With 99 Lives
Icon-Lives-Infinite.png 0049 09 - Infinite Lives
Icon-Armor.png F933 00 01 No Damage From Bullets
Icon-Armor.png 9D4E 00 05 No Damage From Dying
Icon-HitPoints.png 86F7
86F9
04
04
02
02
Start With 40 Hit Points (1/2)
Start With 40 Hit Points (2/2)
Icon-HitPoints.png 86F7
86F9
09
09
02
02
Start With 90 Hit Points (1/2)
Start With 90 Hit Points (2/2)
Icon-HitPoints-Infinite.png 005A 09 - Infinite Hit Points (Turn off at the end of stage)
Icon-Invincible.png 03D0 81 - Invulnerable (Turn off to interact with environment)
Icon-Weapon.png 03E4 01 - Have Flash Buster
Icon-Weapon.png 03E4 02 - Have Megasmasher
Icon-Weapon.png 03E4 03 - Have Mega Buster
Icon-Armor.png 0400 01 - Have Barrier Shield
Icon-Armor.png 95EA 3E 1F Barrier Shield Lasts Longer
Icon-Speed.png 03DB 02 - Have High Speed
Icon-Weapon.png 0060 01 - Have Flash Bomb
Icon-Weapon.png 0061 01 - Have Crash Ball
Icon-Challenge.png D2AD 01 03 Start With 1 Life
Icon-Challenge.png 86F7
86F9
01
01
02
02
Start With 10 Hit Points (1/2)
Start With 10 Hit Points (2/2)
How do I use these?


North America

Section-Z.png

Memory Addresses

002E - Amount of Damage to Take

0049 - Lives
004A - Score digit: 9xxxxx
004B - Score digit: x9xxxx
004C - Score digit: xx9xxx
004D - Score digit: xxx9xx
004E - Score digit: xxxx9x
004F - Score digit: xxxxx9

0053 - ? Shifts each time you kill certain enemies

0055 - Sprite work area

005A - Hit Points digit: 9x
005B - Hit Points digit: x9
005C - Max Hit Points digit: 9x
005D - Max Hit Points digit: x9
005E - Section Major (00 = 0, 20 = 1, 40 = 2)
005F - Section Minor (0-13 - Add this value to the Major Section)
0060 - Flash Bomb Flag (00 = No, 01 = Yes)
0061 - Crash Ball Flag (00 = No, 01 = Yes)

0065 - Next Graphics Set to Load
	00 - Title Screen
	01 - Title Screen
	02 - Captain Commando During Intro
	03 - Stage 1
	04 - Stage 2
	05 - Stage 3
	06 - Boss 1
	07 - Boss 2
	08 - Boss 3
	09 - End of Stage
	0A - Alt - Alphabet 1
	0B - L-Brain
	0C - Entering 
	0D - Ending Balangool
	0E - Alt - Alphabet 2
	0F - Portals
	10 - Introduction
	11 - Captain Commando During Intro
	12 - Blank

0075 - Flag: End of Section

00D0-00EF - Palette

00F7 - Controller 1 poll

0200-02FF - PPU Memory

0360 - Flag: Weapon Barrier Shield?
0363 - Flag: Weapon Megasmasher?
0366 - Flag: Weapon Flash Buster?
037D - Section Minor Version?
03D0 - Invulnerable Flag (01 = No, 81 = Yes)
03DB - Speed (0-3)
03D3 - Player X
03D5 - Player Y
03D7 - Player Last Direction
	00 - Right
	01 - Down-Right
	02 - Down
	03 - Down-Left
	04 - Left
	05 - Up-Left
	06 - Up
	07 - Up-Right
03DD - Player State
	00 - Normal
	01 - Falling / Moving through a door, No control.
	02 - Dead / Paralyzed
	03 - Being Pulled into Section 1, no control.
	04 - Entering a Section
	05 - Coming into Section 1, no control.
	06 - Injured
03E4 - Current Weapon
	00 - Laser
	01 - Flash Buster
	02 - Megasmasher
	03 - Mega Buster

03F8 - Weapon Cursor Position (00-03)

03FE - Invincible Time Out (00-1F)

0400 - Barrier Shield Flag (00 - No, 01 - Yes)
0402 - Barrier Shield Sprite offset (06)
0403 - Barrier Shield X Pos
0405 - Barrier Shield Y Pos
0408 - Barrier Shield Graphic (04 - Small, 09 - Large)
0409 - Barrier Shield Sprite offset (96)
040A - Barrier Shield Throb Delay
040A - Barrier Shield Sprite value?
0410 - Barrier Shield Hit Points (00-1F)

0420-04EF - Enemy Variables
05B0 - Flag: Missile has been taken and will fire the next time you shoot
05CE - Shell is visible timeout (also crash ball timeout)
05D0 - Flag: Shell is showing and can be taken
05E0-064F - Enemy Bullet Variables
0760-07DF - Music Variables

86F7 - Starting Hit Points: 9x
86F9 - Starting Max Hit Points: 9x

Code

Load Starting Values

86E2:A2 0C     LDX #$0C       ; for(x=#0c; x>0; x--;)
86E4:BD F4 86  LDA $86F4,X    ; Load A from $86F4, offset X
86E7:95 57     STA $57,X      ; Store A into $0057, offset X.
86E9:CA        DEX            
86EA:10 F8     BPL $86E4      ; loop while x > 0
86EC:60        RTS

Setup Barrier Shield

95E9:A9 1F     LDA #$1F       ; Load Barrier Shield Hit Points
95EB:8D 10 04  STA $0410      ; Store Barrier Shield Hit Points
95EE:A9 06     LDA #$06
95F0:8D 02 04  STA $0402
95F3:AD E1 03  LDA $03E1
95F6:8D 0E 04  STA $040E
95F9:A2 00     LDX #$00
95FB:A0 96     LDY #$96
95FD:4C 3F F0  JMP $F03F

Player Died

9D42:20 66 F0  JSR $F066
9D45:AD 85 03  LDA $0385
9D48:D0 ED     BNE $9D37
9D4A:EE DD 03  INC $03DD      ; Else set Player State to #01 (falling to death)
9D4D:A9 05     LDA #$05       ; Load 5 damage into A.
9D4F:20 6C F0  JSR $F06C      ; Call Damage routine.
9D52:A5 5A     LDA $005A      ; Load Hit Points: 9x
9D54:05 5B     ORA $005B      ; OR Hit Points: 9x with Hit Points: x9
9D56:D0 03     BNE $9D5B      ; If Hit Points != #00, goto 9D5B
9D58:EE DD 03  INC $03DD      ; Else set Player State to #01 (falling to death)
9D5B:60        RTS

Load Starting Lives

D2AC:A9 03     LDA #$03       ; Load A with #03.
D2AE:85 49     STA $0049      ; Store A into Player Lives.
D2B0:20 A9 D1  JSR $D1A9
D2B3:A2 05     LDX #$05       ; Loop through player score, setting each digit to #00.
D2B5:A9 00     LDA #$00
D2B7:95 4A     STA $4A,X
D2B9:CA        DEX
D2BA:10 F9     BPL $D2B5      ; Loop

Player Hit By Bullet

F932:A9 01     LDA #$01       ; Load 1 damage to do into A.
F934:20 E6 F9  JSR $F9E6      ; Call Damage routine.

Damage

This block of code takes the value of A and subtracts it from the player's hit points. This is used when you get hit by an enemy bullet, but also used at the end of a major section. Because of this, it may be harder than normal to make a simple cheat code for infinite hit points that doesn't need to be turned off.

F9E6:A2 01     LDX #$01       ; Set X to $01
F9E8:8E 7F 03  STX $037F      ; Set $0375 to X. Saving X for later use.
F9EB:38        SEC            ; Set Carry Flag.
F9EC:85 2E     STA $002E      ; Store A into Damage.
F9EE:A5 5B     LDA $005B      ; Load second digit of Hit Points into A.
F9F0:E5 2E     SBC $002E      ; Subtract Damage from A.
F9F2:B0 03     BCS $F9F7      ; If we didn't need to borrow, goto $F9F7.
F9F4:69 0A     ADC #$0A       ; Add #$0A to A to make it the positive result of the subtraction.
F9F6:18        CLC            ; Clear Carry Flag.
F9F7:85 5B     STA $005B      ; Store A into second digit of Hit Points.
F9F9:A5 5A     LDA $005A      ; Load first digit of Hit Points into A.
F9FB:E9 00     SBC #$00       ; Subtract #$00 from Hit Points.
F9FD:10 04     BPL $FA03      ; If second digit of Hit Points > 0, goto $FA03.
F9FF:A9 00     LDA #$00       ; Load #$00 into A (Player has lost all Hit Points)
FA01:85 5B     STA $005B      ; Store A into second digit of Hit Points.
FA03:85 5A     STA $005A      ; Store A into first digit of Hit Points.
FA05:60        RTS

ROM Data

00000-0000F: iNES Header
00010-0400F: Graphics
04010-0490F: Patternless
04910-0600F: Patterned
06010-0800F: Empty
08010-085E5: Patterned
08630-086CE: Patterned
086D9-08D0F: Patterned
08D10-0900F: Empty
09010-0942F: Patterned
09430-0A00F: Empty
0A010-0A839: Patterned
0A8D0-0A90F: Patterned
0A910-0B00F: Empty
0B010-0D00F: Patterned
0D010-0D60F: Empty
0D610-1000F: Graphics
10010-1110F: Patterned
11110-1180F: Empty
11810-12C0F: Graphics
12C10-1300F: Empty
13010-1400F: Graphics
14010-1500F: Patterned
15010-1580F: Empty
15810-1780F: Graphics
17810-1800F: Empty
18010-1B72F: Patternless
1B730-1C00F: Empty
1C010-1C9F3: Patternless
1CAD0-1CB3F: Patterned
1CB40-1D00F: Empty
1D010-2000F: Patternless/Patterned/Graphics/Empty

Text

There are four character sets in the Section-Z ROM. One for the title screen and a couple of messages, one for another set of messages, one for the end game credits, and one for the push start message. The people who laid out the graphics created a section to make a copyright on the screen, but the final title screen doesn't use the graphics for it. Most likely they decided to increase the title screen's text and switched to the full alphabet later in the game's design.

Copyright / Push Start

086CF-086D8: Text - Push Start

E1=7
E3=C
E5=A
E7=P
E9=O
EB=M
ED=U
EF=S
F1=H
F3=T
F5=R
F6=©
F8=1
F9=.
FB=.,
FC=9
FD=/
FE=8

Title / Messages

085E6-0862F: Text - Title Screen
1C9F4-1CACF: Text - Messages (Both tables)

00=0
01=1
02=2
03=3
04=4
05=5
06=6
07=7
08=8
09=9
20= 
41=A
42=B
43=C
44=D
45=E
46=F
47=G
48=H
49=I
4A=J
4B=K
4C=L
4D=M
4E=N
4F=O
50=P
51=Q
52=R
53=S
54=T
55=U
56=V
57=W
58=X
59=Y
5A=Z
5B=.
5C=!
5D=/
F6=©
F9=.
FB=.,

Messages

1C9F4-1CACF: Text - Messages (Both tables)

20= 
C1=A
C2=B
C3=C
C4=D
C5=E
C6=F
C7=G
C8=H
C9=I
CA=J
CB=K
CC=L
CD=M
CE=N
CF=O
D0=P
D1=Q
D2=R
D3=S
D4=T
D5=U
D6=V
D7=W
D8=X
D9=Y
DA=Z

Credits

"h" is a heart, "rb" is the letters RB
0A83A-0A8CF: Text - End Credits

21= 
E1=P
E2=A
E3=Q
E4=B
E5=R
E6=C
E7=S
E8=D
E9=T
EA=E
EB=U
EC=F
ED=V
EE=G
EF=W
F0=H
F1=X
F2=I
F3=Y
F4=J
F5=Z
F6=K
F7=.
F8=L
F9=h
FA=M
FB=rb
FC=N
FE=O


Famicom Disk System

Section-Z (FDS).png

Section-Z was released in Japan only on the Famicom Disk System.