Arkanoid

From NES Hacker Wiki
Jump to: navigation, search

The NES port of the arcade game Arkanoid went well. It is an action game similar to Breakout. You control a paddle named Vaus at the bottom of the screen that bounces a ball up at bricks near the top. The objective is to break all the the bricks on the screen to get to the next level. Arkanoid also has several power up bonuses that you get from certain blocks. These power ups include catch, expand, laser, disrupt, break, player extend, and slow. You will confront the final boss Doh at stage 36.

Easy Cheats

Icon Addr Val Cmp Description
Icon-Lives.png 9C13 09 03 Start With 9 Lives (1 player game)
Icon-Lives.png 9C13 63 03 Start With 99 Lives (1 player game)
Icon-Lives.png 9C2A 09 03 Start With 9 Lives (2 player game)
Icon-Lives.png 9C2A 63 03 Start With 99 Lives (2 player game)
Icon-Lives-Infinite.png 000D 07 - Infinite Lives (Both players)
Icon-Powerup.png 0100 05 - Have Slow (Most of the time)
Icon-Powerup.png 0129 04 - Have Laser
Icon-Powerup.png 0129 02 - Have Extension
Icon-Powerup.png 0128 01 - Have Catch
Icon-Powerup.png 0138 10 - Catch Doesn't Release Automatically
Icon-Warp.png 9C1F 05 01 Start On Round 5
Icon-Warp.png 9C1F 0A 01 Start On Round 10
Icon-Warp.png 9C1F 0F 01 Start On Round 15
Icon-Warp.png 9C1F 14 01 Start On Round 20
Icon-Warp.png 9C1F 19 01 Start On Round 25
Icon-Warp.png 9C1F 1E 01 Start On Round 30
Icon-Warp.png 9C1F 23 01 Start On Round 35
Icon-Warp.png 9C1F 24 01 Start On Final Round
Icon-Challenge.png 9C13 01 03 Start With 1 Life (1 player game)
Icon-Challenge.png 9C2A 01 03 Start With 1 Life (2 player game)
Icon-Challenge.png 0129 00 - No Laser or Extend
Icon-Challenge.png 0100 09 - Ball Always Moves Fast
How do I use these?

North America

Arkanoid.png

Memory Addresses

000D - Current Player's Lives
000E - Lives displayed on the screen
000F - Number of bricks remaining

001C - Current Player's Round
001D - P1 Lives
001E - P2 Lives

0021 - Current Player's Round (00-24)
0023 - P1 Round
0024 - P2 Round

008C - Capsule Type
	01 - Slow
	02 - Catch
	03 - Extend
	04 - Disrupt
	05 - Laser
	06 - Break
	07 - Player Extend
008D - Capsule Animation Delay x4
008E - Capsule Animation Delay x1
008F - Capsule Graphic Position
0090 - Capsule Graphic Position
0091 - Capsule Y Position
0092 - Capsule Animation Offset
0093 - Capsule Palette
0094 - Capsule X Position


0100 - Ball Speed (Updates when ball hits Vaus or wall)
0101 - Ball Speed Copy

010C - Ball Grid Y
010D - Ball Grid X

011A - Vaus very left bloc X Pos
011B - Vaus left bloc X Pos
011C - Vaus middle left bloc X Pos
011D - Vaus middle right bloc X Pos
011E - Vaus right bloc X Pos
011F - Vaus very right bloc X Pos

0128 - Catch flag
0129 - Set Vaus Status To (Use this to set Vaus size)
	01 - Normal
	02 - Extended
	04 - Laser
012A - Vaus Status
	01 - Normal
	02 - Extended
	04 - Laser

012E - Ball Grid Y
012F - Ball Grid X

0138 - Delay before ball automatically releases
013B - Screen Change Delay counter
0166 - Hits on Doh (Set to 0F and next hit will kill)
0167 - Hits on Doh - Copy

03A0-03AA - Bricks Row 1
03AB-03B6 - Bricks Row 2
03B7-03C0 - Bricks Row 3
03C1-03CB - Bricks Row 4
03CC-03D6 - Bricks Row 5
03D7-03E1 - Bricks Row 6
03E2-03EC - Bricks Row 7
03ED-03F7 - Bricks Row 8
03F8-0403 - Bricks Row 9
0404-040D - Bricks Row 10
040E-0418 - Bricks Row 11
0419-0423 - Bricks Row 12
0424-042E - Bricks Row 13
042F-0439 - Bricks Row 14
043A-0444 - Bricks Row 15
0445-044F - Bricks Row 16
0450-045A - Bricks Row 17
045B-0465 - Bricks Row 18
0466-0470 - Bricks Row 19
0471-047B - Bricks Row 20
047C-0486 - Bricks Row 21
0487-0491 - Bricks Row 22
0492-049C - Bricks Row 23
049D-04A7 - Bricks Row 24

	Brick values are broken out by nybble.

	High nybble is the color/type
	0 - No brick
	1-D - Color assigned by level
	E - Silver
	F - Gold

	Low nybble is the number of hits the brick will take.
	If it is a 9 the brick will break at the first hit and drop a capsule.
	Anything else will decrement the low nybble.

0366 - Hi Score: 9xxxxx
0367 - Hi Score: x9xxxx
0368 - Hi Score: xx9xxx
0369 - Hi Score: xxx9xx
036A - Hi Score: xxxx9x
036B - Hi Score: xxxxx9
0370 - P1 Score: 9xxxxx
0371 - P1 Score: x9xxxx
0372 - P1 Score: xx9xxx
0373 - P1 Score: xxx9xx
0374 - P1 Score: xxxx9x
0375 - P1 Score: xxxxx9
0376 - P2 Score: 9xxxxx
0377 - P2 Score: x9xxxx
0378 - P2 Score: xx9xxx
0379 - P2 Score: xxx9xx
037A - P2 Score: xxxx9x
037B - P2 Score: xxxxx9
037C - Score Incrementer 9xxxxx
037D - Score Incrementer x9xxxx
037E - Score Incrementer xx9xxx
037F - Score Incrementer xxx9xx
0380 - Score Incrementer xxxx9x
0381 - Score Incrementer xxxxx9 - Setting this continually increases the score.
0382 - Display Score: 9xxxxx
0383 - Display Score: x9xxxx
0384 - Display Score: xx9xxx
0385 - Display Score: xxx9xx
0386 - Display Score: xxxx9x
0387 - Display Score: xxxxx9

Code

Starting Level

This is an excerpt from the starting routine.

; Starting with 1 player.
9C12:A9 03     LDA #$03         ; Load #03 into A.
9C14:85 1D     STA $001D        ; Store A into P1 Lives.
9C16:AD 32 01  LDA $0132        ;
9C19:C9 05     CMP #$05
9C1B:90 01     BCC $9C1E
9C1D:60        RTS
9C1E:A9 01     LDA #$01         ; Load #01 into A.
9C20:85 21     STA $0021        ; Store A into Level.
9C22:85 23     STA $0023
9C24:A9 00     LDA #$00
9C26:85 22     STA $0022
9C28:60        RTS

; Starting using 2 players.
9C29:A9 03     LDA #$03         ; Load #03 into A.
9C2B:85 1D     STA $001D        ; Store A into P1 Lives.
9C2D:85 1E     STA $001E        ; Store A into P2 Lives.

Text

Arkanoid's text table is pretty standard. There are a couple other tiny amounts of text elsewhere in the ROM, but it this covers the title and ending text.

00=0
01=1
02=2
03=3
04=4
05=5
06=6
07=7
08=8
09=9
0A=A
0B=B
0C=C
0D=D
0E=E
0F=F
10=G
11=H
12=I
13=J
14=K
15=L
16=M
17=N
18=O
19=P
1A=Q
1B=R
1C=S
1D=T
1E=U
1F=V
20=W
21=X
22=Y
23=Z
24=”
25=,
26=-
27=.
28=©
29=/
2A=“


Japan

Arkanoid (J).png


Memory Addresses

000D - Current Player's Lives

0021 - Current Player's Round (00-24)
0023 - P1 Round
0024 - P2 Round

0100 - Ball Speed (Updates when ball hits Vaus or wall)

0128 - Catch flag
0129 - Set Vaus Status To (Use this to set Vaus size)
	01 - Normal
	02 - Extended
	04 - Laser

0166 - Hits on Doh (Set to 0F and next hit will kill)

Code

Game Start

Sets the starting round. The Japanese Round seems to be decimal rather than hex and gets incremented differently.

; 2-Player game.
9BAC:A9 01     LDA #$01
9BAE:85 21     STA $0021        ; Store A into P1 Stage
9BB0:85 23     STA $0023        ; Store A into P1 Stage

; 1-Player game.
9C44:A9 01     LDA #$01
9C46:85 21     STA $0021
9C48:85 23     STA $0023