ref: c9ac9d446d56335c278c54f11722e6796660f73a
parent: 75e062c7753c7dd4229f00932ffa34f87fd7fead
author: Clownacy <Clownacy@users.noreply.github.com>
date: Mon May 6 14:09:19 EDT 2019
Made Shoot.cpp ASM-accurate
--- a/msvc2003/devilution/comparer-config.toml
+++ b/msvc2003/devilution/comparer-config.toml
@@ -555,6 +555,54 @@
addr = 0x41CB10
[[func]]
+name = "ShootBullet_Frontia1"
+addr = 0x41DBD0
+
+[[func]]
+name = "ShootBullet_PoleStar"
+addr = 0x41DE60
+
+[[func]]
+name = "ShootBullet_FireBall"
+addr = 0x41E110
+
+[[func]]
+name = "ShootBullet_Machinegun1"
+addr = 0x41E3D0
+
+[[func]]
+name = "ShootBullet_Missile"
+addr = 0x41E7B0
+
+[[func]]
+name = "ShootBullet_Bubblin1"
+addr = 0x41EFD0
+
+[[func]]
+name = "ShootBullet_Bubblin2"
+addr = 0x41F280
+
+[[func]]
+name = "ShootBullet_Sword"
+addr = 0x41F580
+
+[[func]]
+name = "ShootBullet_Nemesis"
+addr = 0x41F710
+
+[[func]]
+name = "ResetSpurCharge"
+addr = 0x41F9E0
+
+[[func]]
+name = "ShootBullet_Spur"
+addr = 0x41FA10
+
+[[func]]
+name = "ShootBullet"
+addr = 0x41FE70
+
+[[func]]
name = "PlaySoundObject"
addr = 0x420640
--- a/src/MycParam.cpp
+++ b/src/MycParam.cpp
@@ -2,6 +2,8 @@
#include "SDL.h"
+#include "WindowsWrapper.h"
+
#include "ArmsItem.h"
#include "CommonDefines.h"
#include "Caret.h"
@@ -92,7 +94,7 @@
gArmsData[gSelectedArms].exp = 0;
}
-bool IsMaxExpMyChar()
+BOOL IsMaxExpMyChar()
{
return gArmsData[gSelectedArms].level == 3
&& gArmsData[gSelectedArms].exp >= gArmsLevelTable[gArmsData[gSelectedArms].code].exp[2];
--- a/src/MycParam.h
+++ b/src/MycParam.h
@@ -2,6 +2,8 @@
#include <stdint.h>
+#include "WindowsWrapper.h"
+
struct ARMS_LEVEL
{
int exp[3];
@@ -17,7 +19,7 @@
void AddExpMyChar(int x);
void ZeroExpMyChar();
-bool IsMaxExpMyChar();
+BOOL IsMaxExpMyChar();
void DamageMyChar(int damage);
void ZeroArmsEnergy_All();
void AddBulletMyChar(int no, int val);
--- a/src/Shoot.cpp
+++ b/src/Shoot.cpp
@@ -28,7 +28,10 @@
break;
}
- if (CountArmsBullet(1) <= 3 && gKeyTrg & gKeyShot)
+ if (CountArmsBullet(1) > 3)
+ return;
+
+ if (gKeyTrg & gKeyShot)
{
if (!UseArmsEnergy(1))
{
@@ -86,18 +89,21 @@
int bul_no;
switch (level)
{
- case 2:
- bul_no = 5;
- break;
- case 3:
- bul_no = 6;
- break;
- case 1:
- bul_no = 4;
- break;
+ case 1:
+ bul_no = 4;
+ break;
+ case 2:
+ bul_no = 5;
+ break;
+ case 3:
+ bul_no = 6;
+ break;
}
- if (CountArmsBullet(2) < 2 && gKeyTrg & gKeyShot)
+ if (CountArmsBullet(2) > 1)
+ return;
+
+ if (gKeyTrg & gKeyShot)
{
if (!UseArmsEnergy(1))
{
@@ -107,41 +113,41 @@
{
if (gMC.up)
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
}
}
else if (gMC.down)
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
}
}
else
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x600, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
+ SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0);
- SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
+ SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x600, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
}
}
@@ -160,17 +166,17 @@
switch (level)
{
case 1:
- if (CountArmsBullet(3) >= 2)
+ if (CountArmsBullet(3) > 1)
return;
bul_no = 7;
break;
case 2:
- if (CountArmsBullet(3) >= 3)
+ if (CountArmsBullet(3) > 2)
return;
bul_no = 8;
break;
case 3:
- if (CountArmsBullet(3) >= 4)
+ if (CountArmsBullet(3) > 3)
return;
bul_no = 9;
break;
@@ -186,41 +192,41 @@
{
if (gMC.up)
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x800, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x800, gMC.y - 0x1000, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x800, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x800, gMC.y - 0x1000, 3, 0);
}
}
else if (gMC.down)
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0x800, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x800, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x - 0x800, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x800, gMC.y + 0x1000, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0x800, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x800, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x800, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x800, gMC.y + 0x1000, 3, 0);
}
}
else
{
- if (gMC.direct)
+ if (gMC.direct == 0)
{
- SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x400, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x400, 3, 0);
+ SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0);
}
else
{
- SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0);
- SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0);
+ SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x400, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x400, 3, 0);
}
}
@@ -231,132 +237,135 @@
void ShootBullet_Machinegun1(int level)
{
- if (CountArmsBullet(4) < 5)
+ if (CountArmsBullet(4) > 4)
+ return;
+
+ int bul_no;
+
+ switch (level)
{
- int bul_no;
+ case 1:
+ bul_no = 10;
+ break;
+ case 2:
+ bul_no = 11;
+ break;
+ case 3:
+ bul_no = 12;
+ break;
+ }
+
+ if (!(gKey & gKeyShot))
+ gMC.rensha = 6;
+
+ if (gKey & gKeyShot)
+ {
+ if (++gMC.rensha < 6)
+ return;
- switch (level)
+ gMC.rensha = 0;
+
+ if (!UseArmsEnergy(1))
{
- case 1:
- bul_no = 10;
- break;
- case 2:
- bul_no = 11;
- break;
- case 3:
- bul_no = 12;
- break;
+ PlaySoundObject(37, 1);
+
+ if (empty == 0)
+ {
+ SetCaret(gMC.x, gMC.y, 16, 0);
+ empty = 50;
+ }
+
+ return;
}
-
- if (!(gKey & gKeyShot))
- gMC.rensha = 6;
-
- if (gKey & gKeyShot)
+ else
{
- if (++gMC.rensha > 6)
+ if (gMC.up)
{
- gMC.rensha = 0;
- if (!UseArmsEnergy(1))
+ if (level == 3)
+ gMC.ym += 0x100;
+
+ if (gMC.direct == 0)
{
- PlaySoundObject(37, 1);
-
- if (!empty)
- {
- SetCaret(gMC.x, gMC.y, 16, 0);
- empty = 50;
- }
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x600, gMC.y - 0x1000, 3, 0);
}
else
{
- if (gMC.up)
- {
- if (level == 3)
- gMC.ym += 0x100;
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x600, gMC.y - 0x1000, 3, 0);
+ }
+ }
+ else if (gMC.down)
+ {
+ if (level == 3)
+ {
+ if (gMC.ym > 0)
+ gMC.ym /= 2;
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0x600, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x600, gMC.y - 0x1000, 3, 0);
- }
- else
- {
- SetBullet(bul_no, gMC.x - 0x600, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x600, gMC.y - 0x1000, 3, 0);
- }
- }
- else if (gMC.down)
+ if (gMC.ym > -0x400)
{
- if (level == 3)
- {
- if (gMC.ym > 0)
- gMC.ym /= 2;
-
- if (gMC.ym > -0x400)
- {
- gMC.ym -= 0x200;
- if (gMC.ym < -0x400)
- gMC.ym = -0x400;
- }
- }
-
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0x600, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x600, gMC.y + 0x1000, 3, 0);
- }
- else
- {
- SetBullet(bul_no, gMC.x - 0x600, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x600, gMC.y + 0x1000, 3, 0);
- }
+ gMC.ym -= 0x200;
+ if (gMC.ym < -0x400)
+ gMC.ym = -0x400;
}
- else
- {
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0x1800, gMC.y + 0x600, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
- }
- else
- {
- SetBullet(bul_no, gMC.x - 0x1800, gMC.y + 0x600, 0);
- SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
- }
- }
-
- if (level == 3)
- PlaySoundObject(49, 1);
- else
- PlaySoundObject(32, 1);
}
- }
- }
- else
- {
- static int wait = 0;
-
- ++wait;
- if (gMC.equip & 8)
- {
- if (wait > 1)
+
+ if (gMC.direct == 0)
{
- wait = 0;
- ChargeArmsEnergy(1);
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x600, gMC.y + 0x1000, 3, 0);
}
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x600, gMC.y + 0x1000, 3, 0);
+ }
}
- else
+ else
{
- if (wait > 4)
+ if (gMC.direct == 0)
{
- wait = 0;
- ChargeArmsEnergy(1);
+ SetBullet(bul_no, gMC.x - 0x1800, gMC.y + 0x600, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
}
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x1800, gMC.y + 0x600, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
+ }
}
+
+ if (level == 3)
+ PlaySoundObject(49, 1);
+ else
+ PlaySoundObject(32, 1);
}
}
+ else
+ {
+ static int wait = 0;
+
+ ++wait;
+ if (gMC.equip & 8)
+ {
+ if (wait > 1)
+ {
+ wait = 0;
+ ChargeArmsEnergy(1);
+ }
+ }
+ else
+ {
+ if (wait > 4)
+ {
+ wait = 0;
+ ChargeArmsEnergy(1);
+ }
+ }
+ }
}
-void ShootBullet_Missile(int level, bool bSuper)
+void ShootBullet_Missile(int level, BOOL bSuper)
{
int bul_no;
@@ -375,21 +384,35 @@
break;
}
- if (level == 1)
+ switch (level)
{
- if (CountArmsBullet(10) >= 1 || CountArmsBullet(11) >= 1)
- return;
+ case 1:
+ if (CountArmsBullet(10) > 0)
+ return;
+
+ if (CountArmsBullet(11) > 0)
+ return;
+
+ break;
+
+ case 2:
+ if (CountArmsBullet(10) > 1)
+ return;
+
+ if (CountArmsBullet(11) > 1)
+ return;
+
+ break;
+
+ case 3:
+ if (CountArmsBullet(10) > 3)
+ return;
+
+ if (CountArmsBullet(11) > 3)
+ return;
+
+ break;
}
- else if (level == 2)
- {
- if (CountArmsBullet(10) >= 2 || CountArmsBullet(11) >= 2)
- return;
- }
- else if (level == 3)
- {
- if (CountArmsBullet(10) >= 4 || CountArmsBullet(11) >= 4)
- return;
- }
}
else
@@ -407,150 +430,164 @@
break;
}
- if (level == 1)
+ switch (level)
{
- if (CountArmsBullet(5) >= 1 || CountArmsBullet(6) >= 1)
- return;
+ case 1:
+ if (CountArmsBullet(5) > 0)
+ return;
+
+ if (CountArmsBullet(6) > 0)
+ return;
+
+ break;
+
+ case 2:
+ if (CountArmsBullet(5) > 1)
+ return;
+
+ if (CountArmsBullet(6) > 1)
+ return;
+
+ break;
+
+ case 3:
+ if (CountArmsBullet(5) > 3)
+ return;
+
+ if (CountArmsBullet(6) > 3)
+ return;
+
+ break;
}
- else if (level == 2)
- {
- if (CountArmsBullet(5) >= 2 || CountArmsBullet(6) >= 2)
- return;
- }
- else if ( level == 3 )
- {
- if (CountArmsBullet(5) >= 4 || CountArmsBullet(6) >= 4)
- return;
- }
}
- if (!(gKeyTrg & gKeyShot))
- return;
-
- if (level < 3)
+ if (gKeyTrg & gKeyShot)
{
- if (!UseArmsEnergy(1))
+ if (level < 3)
{
- PlaySoundObject(37, 1);
-
- if (!empty)
+ if (!UseArmsEnergy(1))
{
- SetCaret(gMC.x, gMC.y, 16, 0);
- empty = 50;
- }
+ PlaySoundObject(37, 1);
- return;
- }
+ if (empty == 0)
+ {
+ SetCaret(gMC.x, gMC.y, 16, 0);
+ empty = 50;
+ }
- if (gMC.up)
- {
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
+ return;
}
- else
+
+ if (gMC.up)
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
+ }
}
- }
- else if (gMC.down)
- {
- if (gMC.direct)
+ else if (gMC.down)
{
- SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
+ }
}
else
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0xC00, gMC.y, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y, 3, 0);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0xC00, gMC.y, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y, 3, 0);
+ }
}
}
else
{
- if (gMC.direct)
+ if (!UseArmsEnergy(1))
{
- SetBullet(bul_no, gMC.x + 0xC00, gMC.y, 2);
- SetCaret(gMC.x + 0x1800, gMC.y, 3, 0);
- }
- else
- {
- SetBullet(bul_no, gMC.x - 0xC00, gMC.y, 0);
- SetCaret(gMC.x - 0x1800, gMC.y, 3, 0);
- }
- }
- }
- else
- {
- if (!UseArmsEnergy(1))
- {
- PlaySoundObject(37, 1);
+ PlaySoundObject(37, 1);
- if (!empty)
- {
- SetCaret(gMC.x, gMC.y, 16, 0);
- empty = 50;
+ if (empty == 0)
+ {
+ SetCaret(gMC.x, gMC.y, 16, 0);
+ empty = 50;
+ }
+
+ return;
}
- return;
- }
-
- if (gMC.up)
- {
- if (gMC.direct)
+ if (gMC.up)
{
- SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
- SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
- SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x200, gMC.y - 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
+ }
}
- else
+ else if (gMC.down)
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0);
- SetBullet(bul_no, gMC.x + 0x600, gMC.y, 1);
- SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
+ SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
+ SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
+ }
}
- }
- else if (gMC.down)
- {
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x200, gMC.y + 0x1000, 3, 0);
- SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
- SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
- }
else
{
- SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0);
- SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
- SetBullet(bul_no, gMC.x - 0x600, gMC.y, 3);
+ if (gMC.direct == 0)
+ {
+ SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x200, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y + 0x200, 3, 0);
+ SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 0);
+ SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x200, 0);
+ }
+ else
+ {
+ SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x200, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x200, 3, 0);
+ SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 2);
+ SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x200, 2);
+ }
}
}
- else
- {
- if (gMC.direct)
- {
- SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x200, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x200, 3, 0);
- SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 2);
- SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x200, 2);
- }
- else
- {
- SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x200, 0);
- SetCaret(gMC.x - 0x1800, gMC.y + 0x200, 3, 0);
- SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 0);
- SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x200, 0);
- }
- }
- }
- PlaySoundObject(32, 1);
+ PlaySoundObject(32, 1);
+ }
}
void ShootBullet_Bubblin1(void)
@@ -557,67 +594,73 @@
{
static int wait;
- if (CountArmsBullet(7) <= 3)
+ if (CountArmsBullet(7) > 3)
+ return;
+
+ if (gKeyTrg & gKeyShot)
{
- if (gKeyTrg & gKeyShot)
+ if (!UseArmsEnergy(1))
{
- if (!UseArmsEnergy(1))
+ PlaySoundObject(37, 1);
+
+ if (empty == 0)
{
- PlaySoundObject(37, 1);
- if (!empty)
- {
- SetCaret(gMC.x, gMC.y, 16, 0);
- empty = 50;
- }
+ SetCaret(gMC.x, gMC.y, 16, 0);
+ empty = 50;
}
- else
+
+ return;
+ }
+ else
+ {
+ if (gMC.up)
{
- if (gMC.up)
+ if (gMC.direct == 0)
{
- if (gMC.direct)
- {
- SetBullet(19, gMC.x + 0x200, gMC.y - 0x400, 1);
- SetCaret(gMC.x + 0x200, gMC.y - 0x400, 3, 0);
- }
- else
- {
- SetBullet(19, gMC.x - 0x200, gMC.y - 0x400, 1);
- SetCaret(gMC.x - 0x200, gMC.y - 0x400, 3, 0);
- }
+ SetBullet(19, gMC.x - 0x200, gMC.y - 0x400, 1);
+ SetCaret(gMC.x - 0x200, gMC.y - 0x400, 3, 0);
}
- else if (gMC.down)
+ else
{
- if (gMC.direct)
- {
- SetBullet(19, gMC.x + 0x200, gMC.y + 0x400, 3);
- SetCaret(gMC.x + 0x200, gMC.y + 0x400, 3, 0);
- }
- else
- {
- SetBullet(19, gMC.x - 0x200, gMC.y + 0x400, 3);
- SetCaret(gMC.x - 0x200, gMC.y + 0x400, 3, 0);
- }
+ SetBullet(19, gMC.x + 0x200, gMC.y - 0x400, 1);
+ SetCaret(gMC.x + 0x200, gMC.y - 0x400, 3, 0);
}
- else if (gMC.direct)
+ }
+ else if (gMC.down)
+ {
+ if (gMC.direct == 0)
{
- SetBullet(19, gMC.x + 0xC00, gMC.y + 0x600, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
+ SetBullet(19, gMC.x - 0x200, gMC.y + 0x400, 3);
+ SetCaret(gMC.x - 0x200, gMC.y + 0x400, 3, 0);
}
else
{
+ SetBullet(19, gMC.x + 0x200, gMC.y + 0x400, 3);
+ SetCaret(gMC.x + 0x200, gMC.y + 0x400, 3, 0);
+ }
+ }
+ else
+ {
+ if (gMC.direct == 0)
+ {
SetBullet(19, gMC.x - 0xC00, gMC.y + 0x600, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
}
-
- PlaySoundObject(48, 1);
+ else
+ {
+ SetBullet(19, gMC.x + 0xC00, gMC.y + 0x600, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
+ }
}
+
+ PlaySoundObject(48, 1);
}
- else if (++wait > 20)
- {
- wait = 0;
- ChargeArmsEnergy(1);
- }
}
+ else if (++wait > 20)
+ {
+ wait = 0;
+ ChargeArmsEnergy(1);
+ }
}
void ShootBullet_Bubblin2(int level)
@@ -624,127 +667,133 @@
{
static int wait;
- if (CountArmsBullet(7) <= 15)
+ if (CountArmsBullet(7) > 15)
+ return;
+
+ level += 18;
+
+ if (!(gKey & gKeyShot))
+ gMC.rensha = 6;
+
+ if (gKey & gKeyShot)
{
- level += 18;
+ if (++gMC.rensha < 7)
+ return;
- if (!(gKey & gKeyShot))
- gMC.rensha = 6;
+ gMC.rensha = 0;
- if (gKey & gKeyShot)
+ if (!UseArmsEnergy(1))
{
- if (++gMC.rensha >= 7)
- {
- gMC.rensha = 0;
+ PlaySoundObject(37, 1);
- if (!UseArmsEnergy(1))
- {
- PlaySoundObject(37, 1);
- if (!empty)
- {
- SetCaret(gMC.x, gMC.y, 16, 0);
- empty = 50;
- }
- }
- else
- {
- if (gMC.up)
- {
- if (gMC.direct)
- {
- SetBullet(level, gMC.x + 0x600, gMC.y - 0x1000, 1);
- SetCaret(gMC.x + 0x600, gMC.y - 0x2000, 3, 0);
- }
- else
- {
- SetBullet(level, gMC.x - 0x600, gMC.y - 0x1000, 1);
- SetCaret(gMC.x - 0x600, gMC.y - 0x2000, 3, 0);
- }
- }
- else if (gMC.down)
- {
- if (gMC.direct)
- {
- SetBullet(level, gMC.x + 0x600, gMC.y + 0x1000, 3);
- SetCaret(gMC.x + 0x600, gMC.y + 0x2000, 3, 0);
- }
- else
- {
- SetBullet(level, gMC.x - 0x600, gMC.y + 0x1000, 3);
- SetCaret(gMC.x - 0x600, gMC.y + 0x2000, 3, 0);
- }
- }
- else if (gMC.direct)
- {
- SetBullet(level, gMC.x + 0xC00, gMC.y + 0x600, 2);
- SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
- }
- else
- {
- SetBullet(level, gMC.x - 0xC00, gMC.y + 0x600, 0);
- SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
- }
-
- PlaySoundObject(48, 1);
- }
+ if (empty == 0)
+ {
+ SetCaret(gMC.x, gMC.y, 16, 0);
+ empty = 50;
}
- }
- else if (++wait > 1)
- {
- wait = 0;
- ChargeArmsEnergy(1);
- }
- }
-}
-void ShootBullet_Sword(int level)
-{
- if (CountArmsBullet(9) <= 0)
- {
- int bul_no;
-
- switch (level)
- {
- case 1:
- bul_no = 25;
- break;
- case 2:
- bul_no = 26;
- break;
- case 3:
- bul_no = 27;
- break;
+ return;
}
-
- if (gKeyTrg & gKeyShot)
+ else
{
if (gMC.up)
{
if (gMC.direct == 0)
- SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x800, 1);
+ {
+ SetBullet(level, gMC.x - 0x600, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x - 0x600, gMC.y - 0x2000, 3, 0);
+ }
else
- SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x800, 1);
+ {
+ SetBullet(level, gMC.x + 0x600, gMC.y - 0x1000, 1);
+ SetCaret(gMC.x + 0x600, gMC.y - 0x2000, 3, 0);
+ }
}
else if (gMC.down)
{
if (gMC.direct == 0)
- SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0xC00, 3);
+ {
+ SetBullet(level, gMC.x - 0x600, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x - 0x600, gMC.y + 0x2000, 3, 0);
+ }
else
- SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0xC00, 3);
+ {
+ SetBullet(level, gMC.x + 0x600, gMC.y + 0x1000, 3);
+ SetCaret(gMC.x + 0x600, gMC.y + 0x2000, 3, 0);
+ }
}
else
{
if (gMC.direct == 0)
- SetBullet(bul_no, gMC.x + 0xC00, gMC.y - 0x600, 0);
+ {
+ SetBullet(level, gMC.x - 0xC00, gMC.y + 0x600, 0);
+ SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
+ }
else
- SetBullet(bul_no, gMC.x - 0xC00, gMC.y - 0x600, 2);
+ {
+ SetBullet(level, gMC.x + 0xC00, gMC.y + 0x600, 2);
+ SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
+ }
}
- PlaySoundObject(34, 1);
+ PlaySoundObject(48, 1);
}
}
+ else if (++wait > 1)
+ {
+ wait = 0;
+ ChargeArmsEnergy(1);
+ }
}
+void ShootBullet_Sword(int level)
+{
+ if (CountArmsBullet(9) > 0)
+ return;
+
+ int bul_no;
+
+ switch (level)
+ {
+ case 1:
+ bul_no = 25;
+ break;
+ case 2:
+ bul_no = 26;
+ break;
+ case 3:
+ bul_no = 27;
+ break;
+ }
+
+ if (gKeyTrg & gKeyShot)
+ {
+ if (gMC.up)
+ {
+ if (gMC.direct == 0)
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x800, 1);
+ else
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y + 0x800, 1);
+ }
+ else if (gMC.down)
+ {
+ if (gMC.direct == 0)
+ SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0xC00, 3);
+ else
+ SetBullet(bul_no, gMC.x + 0x200, gMC.y - 0xC00, 3);
+ }
+ else
+ {
+ if (gMC.direct == 0)
+ SetBullet(bul_no, gMC.x + 0xC00, gMC.y - 0x600, 0);
+ else
+ SetBullet(bul_no, gMC.x - 0xC00, gMC.y - 0x600, 2);
+ }
+
+ PlaySoundObject(34, 1);
+ }
+}
+
void ShootBullet_Nemesis(int level)
{
int bul_no;
@@ -762,7 +811,10 @@
break;
}
- if (CountArmsBullet(12) <= 1 && gKeyTrg & gKeyShot)
+ if (CountArmsBullet(12) > 1)
+ return;
+
+ if (gKeyTrg & gKeyShot)
{
if (!UseArmsEnergy(1))
{
@@ -836,9 +888,11 @@
void ShootBullet_Spur(int level)
{
+ static BOOL bMax;
+ BOOL bShot;
int bul_no;
- bool bShot = false;
+ bShot = FALSE;
if (gKey & gKeyShot)
{
@@ -849,42 +903,43 @@
if (++spur_charge / 2 % 2)
{
- if (level == 1)
+ switch (level)
{
- PlaySoundObject(59, 1);
+ case 1:
+ PlaySoundObject(59, 1);
+ break;
+
+ case 2:
+ PlaySoundObject(60, 1);
+ break;
+
+ case 3:
+ if (!IsMaxExpMyChar())
+ PlaySoundObject(61, 1);
+
+ break;
}
- else if (level == 2)
- {
- PlaySoundObject(60, 1);
- }
- else if (level == 3)
- {
- if (!IsMaxExpMyChar())
- PlaySoundObject(61, 1);
- }
}
}
else
{
if (spur_charge)
- bShot = true;
+ bShot = TRUE;
spur_charge = 0;
}
- static bool bMax;
-
if (IsMaxExpMyChar())
{
- if (bMax == false)
+ if (bMax == FALSE)
{
- bMax = true;
+ bMax = TRUE;
PlaySoundObject(65, 1);
}
}
else
{
- bMax = false;
+ bMax = FALSE;
}
if (!(gKey & gKeyShot))
@@ -894,7 +949,7 @@
{
case 1:
bul_no = 6;
- bShot = false;
+ bShot = FALSE;
break;
case 2:
bul_no = 37;
@@ -904,10 +959,14 @@
bul_no = 39;
else
bul_no = 38;
+
break;
}
- if (CountArmsBullet(13) <= 0 && CountArmsBullet(14) <= 0 && (gKeyTrg & gKeyShot || bShot))
+ if (CountArmsBullet(13) > 0 || CountArmsBullet(14) > 0)
+ return;
+
+ if (gKeyTrg & gKeyShot || bShot)
{
if (!UseArmsEnergy(1))
{
@@ -992,64 +1051,64 @@
}
//Run functions
- if (!(gMC.cond & 2))
+ if (gMC.cond & 2)
+ return;
+
+ switch (gArmsData[gSelectedArms].code)
{
- switch (gArmsData[gSelectedArms].code)
- {
- case 1:
- ShootBullet_Frontia1(gArmsData[gSelectedArms].level);
- break;
- case 2:
- ShootBullet_PoleStar(gArmsData[gSelectedArms].level);
- break;
- case 3:
- ShootBullet_FireBall(gArmsData[gSelectedArms].level);
- break;
- case 4:
- ShootBullet_Machinegun1(gArmsData[gSelectedArms].level);
- break;
- case 5:
- ShootBullet_Missile(gArmsData[gSelectedArms].level, false);
- break;
- case 7:
- switch (gArmsData[gSelectedArms].level)
- {
- case 1:
- ShootBullet_Bubblin1();
- break;
- case 2:
- ShootBullet_Bubblin2(2);
- break;
- case 3:
- ShootBullet_Bubblin2(3);
- break;
- }
+ case 1:
+ ShootBullet_Frontia1(gArmsData[gSelectedArms].level);
+ break;
+ case 2:
+ ShootBullet_PoleStar(gArmsData[gSelectedArms].level);
+ break;
+ case 3:
+ ShootBullet_FireBall(gArmsData[gSelectedArms].level);
+ break;
+ case 4:
+ ShootBullet_Machinegun1(gArmsData[gSelectedArms].level);
+ break;
+ case 5:
+ ShootBullet_Missile(gArmsData[gSelectedArms].level, FALSE);
+ break;
+ case 7:
+ switch (gArmsData[gSelectedArms].level)
+ {
+ case 1:
+ ShootBullet_Bubblin1();
+ break;
+ case 2:
+ ShootBullet_Bubblin2(2);
+ break;
+ case 3:
+ ShootBullet_Bubblin2(3);
+ break;
+ }
- break;
- case 9:
- switch (gArmsData[gSelectedArms].level)
- {
- case 1:
- ShootBullet_Sword(1);
- break;
- case 2:
- ShootBullet_Sword(2);
- break;
- case 3:
- ShootBullet_Sword(3);
- break;
- }
+ break;
+ case 9:
+ switch (gArmsData[gSelectedArms].level)
+ {
+ case 1:
+ ShootBullet_Sword(1);
+ break;
+ case 2:
+ ShootBullet_Sword(2);
+ break;
+ case 3:
+ ShootBullet_Sword(3);
+ break;
+ }
- break;
- case 10:
- ShootBullet_Missile(gArmsData[gSelectedArms].level, true);
- break;
- case 12:
- ShootBullet_Nemesis(gArmsData[gSelectedArms].level);
- break;
- case 13:
- ShootBullet_Spur(gArmsData[gSelectedArms].level);
- break;
- }
+ break;
+ case 10:
+ ShootBullet_Missile(gArmsData[gSelectedArms].level, TRUE);
+ break;
+ case 12:
+ ShootBullet_Nemesis(gArmsData[gSelectedArms].level);
+ break;
+ case 13:
+ ShootBullet_Spur(gArmsData[gSelectedArms].level);
+ break;
}
}