HOME
ACADEMY
LAB
RESOURCES
COREWAR
EN
/
JA
⚙️
☰
MISSIONS
📖
VIEW GUIDE
About CoreWar
MISSIONS (30 STEPS)
CH.1: UI & MEMORY BASICS (1-6)
BASIC
★☆☆
Step 1: The "STEP" Button That Advances Time
🔒
BASIC
★☆☆
Step 2: Process Termination and Restoring with "RESET"
🔒
BASIC
★☆☆
Step 3: "Edit Mode" vs. "Running Mode"
EDIT
🔒
BASIC
★☆☆
Step 4: The Three Rooms of a Memory Box (Changing B)
EDIT
🔒
BASIC
★☆☆
Step 5: Modifying Both the Left Room (A) and Right Room (B)
EDIT
🔒
BASIC
★☆☆
Step 6: Literal Numbers (#) vs. Relative Addresses ($)
EDIT
CH.2: CORE INSTRUCTIONS (7-13)
🔒
ARITHMETIC
★☆☆
Step 7: Observing the "ADD" Instruction
🔒
ARITHMETIC
★☆☆
Step 8: Changing the Number to Add (A-Field)
EDIT
🔒
ARITHMETIC
★☆☆
Step 9: Changing the Target Address (B-Field)
EDIT
🔒
ARITHMETIC
★☆☆
Step 10: Using the Subtraction Instruction "SUB"
EDIT
🔒
BASIC
★☆☆
Step 11: Copying an Entire Box with "MOV"
EDIT
🔒
CONTROL
★☆☆
Step 12: Looping Back in Time with "JMP"
EDIT
🔒
CONTROL
★☆☆
Step 13: Build Your First Program (Automatic Counter)
EDIT
CH.3: VON NEUMANN & DIGITAL LIFE (14-18)
🔒
BASIC
★☆☆
Step 14: Why Does "DAT" Become a Bomb?
EDIT
🔒
BASIC
★☆☆
Step 15: Copying Your Own Instruction (Code = Data)
EDIT
🔒
BASIC
★☆☆
Step 16: Observation: Stepping Through "Imp", the Oldest Digital Organism
🔒
BASIC
★☆☆
Step 17: Modifying the Imp (Copy Destination Experiment)
EDIT
🔒
ARITHMETIC
★★☆
Step 18: Understanding Indirect Addressing (@ Pointers)
EDIT
CH.4: CLASSIC ARCHETYPES (19-24)
🔒
STRATEGY
★★☆
Step 19: Observation: Dissecting the "Dwarf" Bomber Step-by-Step
🔒
STRATEGY
★★☆
Step 20: Modifying Dwarf (Changing the Bombing Interval)
EDIT
🔒
STRATEGY
★★☆
Step 21: First Combat: Tune Your Bomb Interval to Destroy the Target
EDIT
🔒
CONTROL
★★☆
Step 22: Observation: The "SPL" Split Instruction and Mitosis
🔒
CONTROL
★★☆
Step 23: Finding Enemies with Conditional Skip "SEQ / CMP"
EDIT
🔒
STRATEGY
★★☆
Step 24: Stopping an Imp with a Pre-Decrement "Imp-Gate"
EDIT
CH.5: BATTLE EVOLUTION (25-30)
🔒
STRATEGY
★★☆
Step 25: [Stone] High-Speed Bomber and Step Size Tuning
EDIT
🔒
STRATEGY
★★☆
Step 26: [Paper] Observing the Self-Replicating Swarm "Mice"
🔒
STRATEGY
★★★
Step 27: [Modifying Paper] Tune Clone Dispersal Distance to Overwhelm Stone
EDIT
🔒
STRATEGY
★★☆
Step 28: [Scissors] Tuning Scanner Stride to Shred Paper
EDIT
🔒
STRATEGY
★★★
Step 29: [Trap] Abducting Enemy Processes with "Vampire"
EDIT
🔒
STRATEGY
★★★
Step 30: Graduation Exam: Tune Your Warrior and Win the Final Battle
EDIT
RESET PROGRESS
🧬 Unified Memory
📐 Split View
📝 Raw Redcode
👁️ OBSERVATION MODE (Press [STEP])
[Addr]
[Opcode]
[A (Left)]
[B (Right)]
📦 DATA / BOMB (DAT)
0000
▼
MOV
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
#
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0001
▼
MOV
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
<
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
<
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0002
↺
JMN
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0003
❖
SPL
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
@
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
#
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0004
+
ADD
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
#
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0005
↺
JMP
■ DAT - Data / Terminate Process
▼ MOV - Copy (Move A to B)
+ ADD - Add (B + A)
- SUB - Subtract (B - A)
+ MUL - Multiply (B × A)
+ DIV - Divide (B ÷ A)
+ MOD - Modulo (B % A)
↺ JMP - Jump to A
↺ JMZ - Jump to A if B == 0
↺ JMN - Jump to A if B != 0
↺ DJN - Decrement B & Jump if != 0
❖ SPL - Split (Spawn process at A)
◉ CMP - Compare (Skip next if A == B)
◉ SEQ - Skip next if A == B
◉ SNE - Skip next if A != B
◉ SLT - Skip next if A < B
• NOP - No Operation
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
$
# - Immediate (Literal value)
$ - Direct (Relative address)
@ - B-Indirect (Pointer via B)
< - B-Pre-decrement Indirect
> - B-Post-increment Indirect
* - A-Indirect (Pointer via A)
{ - A-Pre-decrement Indirect
} - A-Post-increment Indirect
0006
■
DAT
$
0
$
0
0007
■
DAT
$
0
$
0
0008
■
DAT
$
0
$
0
0009
■
DAT
$
0
$
0
0010
■
DAT
$
0
$
0
0011
■
DAT
$
0
$
0
0012
■
DAT
$
0
$
0
0013
■
DAT
$
0
$
0
0014
■
DAT
$
0
$
0
0015
■
DAT
$
0
$
0
0016
■
DAT
$
0
$
0
0017
■
DAT
$
0
$
0
0018
■
DAT
$
0
$
0
0019
■
DAT
$
0
$
0
0020
■
DAT
$
0
$
0
0021
■
DAT
$
0
$
0
0022
■
DAT
$
0
$
0
0023
■
DAT
$
0
$
0
0024
■
DAT
$
0
$
0
0025
■
DAT
$
0
$
0
0026
■
DAT
$
0
$
0
0027
■
DAT
$
0
$
0
🏟️
ARENA (20 ROWS)
SCOPE: 0000 - 0019
[CORE MEMORY 800 CELLS (20 ROWS × 40 COLS)]
1:1 Row Synced with Editor
↺ RESET
<<
<
PLAY
STEP >
>>
P1:
0
P2:
0
CYC:
0