.init ;junko's final spell card...
mov i00 0 ;i00: stage counter
mov i01 0 ;st1 circle counter, st1: red*28, 16, fair
mov i02 0 ;st2 circle counter, st2: purple*10, 32, fair
mov i03 0 ;st3 circle counter, st3: blue*60, 64, faster, random
mov i04 0 ;st4 circle counter, st4: cyan*25, 8, fastest, fixed
,
.update
add i00 1 ;++i00
mov i05 i00 ;if(i00<=2560)
sub i05 2560
elz i05
jnz i05 +26 ;do not enter st4========================
add i04 1 ;++i04
mov i05 i04 ;if(i04<8)
sub i05 8
ltz i05
jnz i05 +21 ;do not shoot st4 bullets================
mov i04 0
mov i06 0 ;for(i06=0;i06<25;++i06)
mov i07 i06
sub i07 25
ltz i07
jez i07 +15 ;========================================
mov r00 i06
mul r00 0.251327412
add r00 1.570796327
push r00
push 4.0
push 200.0
push 400.0
call createBullet
push 1
push 3
push irt
call setBulletPropi
add i06 1
jmp -17 ;========================================
nop ;end of loop
mov i05 i00 ;if(i00<=1536)
sub i05 1536
elz i05
jnz i05 +94 ;do not enter st3========================
add i03 1 ;++i03
mov i05 i03 ;if(i03<64)
sub i05 64
ltz i05
jnz i05 +89 ;do not shoot st3 bullets================
mov i03 0
push 250.0 ;get random source1
push 150.0
call randr
mov r01 rrt
push 250.0
push 150.0
call randr
mov r02 rrt
push 6.28
push 0.0
call randr
mov r03 rrt
mov i06 0 ;for(i06=0;i06<60;++i06)
mov i07 i06
sub i07 60
ltz i07
jez i07 +27 ;========================================
mov r00 i06
mul r00 0.104719755
sub r00 r03
mov r04 r02 ;r02-=30*sin(r00)
push r00
call sin
mov r06 rrt
mul r06 30
sub r04 r06
mov r05 r01 ;r01-=30*cos(r00)
push r00
call cos
mov r06 rrt
mul r06 30
sub r05 r06
push r00
push 2.5
push r04
push r05
call createBullet
push 6
push 3
push irt
call setBulletPropi
add i06 1
jmp -29 ;========================================
nop ;end of loop1
push 650.0 ;get random source2
push 550.0
call randr
mov r01 rrt
push 250.0
push 150.0
call randr
mov r02 rrt
push 6.28
push 0.0
call randr
mov r03 rrt
mov i06 0 ;for(i06=0;i06<60;++i06)
mov i07 i06
sub i07 60
ltz i07
jez i07 +27 ;========================================
mov r00 i06
mul r00 0.104719755
sub r00 r03
mov r04 r02 ;r02-=30*sin(r00)
push r00
call sin
mov r06 rrt
mul r06 30
sub r04 r06
mov r05 r01 ;r01-=30*cos(r00)
push r00
call cos
mov r06 rrt
mul r06 30
sub r05 r06
push r00
push 2.5
push r04
push r05
call createBullet
push 6
push 3
push irt
call setBulletPropi
add i06 1
jmp -29 ;========================================
nop ;end of loop2
mov i05 i00 ;if(i00<=512)
sub i05 512
elz i05
jnz i05 +94 ;do not enter st2========================
add i02 1 ;++i02
mov i05 i02 ;if(i02<32)
sub i05 32
ltz i05
jnz i05 +89 ;do not shoot st2 bullets================
mov i02 0
push 250.0 ;get random source1
push 150.0
call randr
mov r01 rrt
push 250.0
push 150.0
call randr
mov r02 rrt
push 6.28
push 0.0
call randr
mov r03 rrt
mov i06 0 ;for(i06=0;i06<10;++i06)
mov i07 i06
sub i07 10
ltz i07
jez i07 +27 ;========================================
mov r00 i06
mul r00 0.628318531
sub r00 r03
mov r04 r02 ;r02-=25*sin(r00)
push r00
call sin
mov r06 rrt
mul r06 25
sub r04 r06
mov r05 r01 ;r01-=25*cos(r00)
push r00
call cos
mov r06 rrt
mul r06 25
sub r05 r06
push r00
push 2.5
push r04
push r05
call createBullet
push 3
push 3
push irt
call setBulletPropi
add i06 1
jmp -29 ;========================================
nop ;end of loop1
push 650.0 ;get random source2
push 550.0
call randr
mov r01 rrt
push 220.0
push 180.0
call randr
mov r02 rrt
push 6.28
push 0.0
call randr
mov r03 rrt
mov i06 0 ;for(i06=0;i06<10;++i06)
mov i07 i06
sub i07 10
ltz i07
jez i07 +27 ;========================================
mov r00 i06
mul r00 0.628318531
sub r00 r03
mov r04 r02 ;r02-=25*sin(r00)
push r00
call sin
mov r06 rrt
mul r06 25
sub r04 r06
mov r05 r01 ;r01-=25*cos(r00)
push r00
call cos
mov r06 rrt
mul r06 25
sub r05 r06
push r00
push 2.5
push r04
push r05
call createBullet
push 3
push 3
push irt
call setBulletPropi
add i06 1
jmp -29 ;========================================
nop ;end of loop2
add i01 1 ;++i01,stage 1
mov i05 i01 ;if(i01<16)
sub i05 16
ltz i05
jnz i05 +45 ;do not shoot st1 bullets================
mov i01 0
push 450.0 ;get random source1
push 350.0
call randr
mov r01 rrt
push 250.0
push 150.0
call randr
mov r02 rrt
push 6.28
push 0.0
call randr
mov r03 rrt
mov i06 0 ;for(i06=0;i06<28;++i06)
mov i07 i06
sub i07 28
ltz i07
jez i07 +27 ;========================================
mov r00 i06
mul r00 0.224399475
sub r00 r03
mov r04 r02 ;r02-=40*sin(r00)
push r00
call sin
mov r06 rrt
mul r06 40
sub r04 r06
mov r05 r01 ;r01-=40*cos(r00)
push r00
call cos
mov r06 rrt
mul r06 40
sub r05 r06
push r00
push 2.5
push r04
push r05
call createBullet
push 4
push 3
push irt
call setBulletPropi
add i06 1
jmp -29 ;========================================
nop ;end of loop
,