Merge pull request #9 from Clownacy/master

Merge Clownacy/master into master
This commit is contained in:
Gabriel Ravier 2019-05-06 21:27:06 +02:00 committed by GitHub
commit 1f055ccfe8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 1466 additions and 1121 deletions

View file

@ -59,6 +59,218 @@ addr = 0x403650
name = "HitBulletMap" name = "HitBulletMap"
addr = 0x403740 addr = 0x403740
[[func]]
name = "InitBullet"
addr = 0x403C00
[[func]]
name = "CountArmsBullet"
addr = 0x403C40
[[func]]
name = "CountBulletNum"
addr = 0x403CB0
[[func]]
name = "DeleteBullet"
addr = 0x403D10
[[func]]
name = "ClearBullet"
addr = 0x403D80
[[func]]
name = "PutBullet"
addr = 0x403DC0
[[func]]
name = "SetBullet"
addr = 0x403F80
[[func]]
name = "ActBullet_Frontia1"
addr = 0x404160
[[func]]
name = "ActBullet_Frontia2"
addr = 0x4043F0
[[func]]
name = "ActBullet_PoleStar"
addr = 0x4047B0
[[func]]
name = "ActBullet_FireBall"
addr = 0x404B30
[[func]]
name = "ActBullet_MachineGun"
addr = 0x405120
[[func]]
name = "ActBullet_Missile"
addr = 0x4055A0
[[func]]
name = "ActBullet_Bom"
addr = 0x405D80
[[func]]
name = "ActBullet_Bubblin1"
addr = 0x405F30
[[func]]
name = "ActBullet_Bubblin2"
addr = 0x406190
[[func]]
name = "ActBullet_Bubblin3"
addr = 0x4064D0
[[func]]
name = "ActBullet_Spine"
addr = 0x4068B0
[[func]]
name = "ActBullet_Sword1"
addr = 0x406BB0
[[func]]
name = "ActBullet_Sword2"
addr = 0x406E60
[[func]]
name = "ActBullet_Sword3"
addr = 0x407110
[[func]]
name = "ActBullet_Edge"
addr = 0x4075E0
[[func]]
name = "ActBullet_Drop"
addr = 0x4078A0
[[func]]
name = "ActBullet_SuperMissile"
addr = 0x407910
[[func]]
name = "ActBullet_SuperBom"
addr = 0x408080
[[func]]
name = "ActBullet_Nemesis"
addr = 0x408230
[[func]]
name = "ActBullet_Spur"
addr = 0x408710
[[func]]
name = "ActBullet_SpurTail"
addr = 0x408AE0
[[func]]
name = "ActBullet_EnemyClear"
addr = 0x408F40
[[func]]
name = "ActBullet_Star"
addr = 0x408F90
[[func]]
name = "ActBullet"
addr = 0x408FC0
[[func]]
name = "IsActiveSomeBullet"
addr = 0x4095C0
[[func]]
name = "InitCaret"
addr = 0x409650
[[func]]
name = "ActCaret00"
addr = 0x409670
[[func]]
name = "ActCaret01"
addr = 0x409680
[[func]]
name = "ActCaret02"
addr = 0x409880
[[func]]
name = "ActCaret03"
addr = 0x409B80
[[func]]
name = "ActCaret04"
addr = 0x409C70
[[func]]
name = "ActCaret05"
addr = 0x409E00
[[func]]
name = "ActCaret07"
addr = 0x409F60
[[func]]
name = "ActCaret08"
addr = 0x40A120
[[func]]
name = "ActCaret09"
addr = 0x40A1B0
[[func]]
name = "ActCaret10"
addr = 0x40A280
[[func]]
name = "ActCaret11"
addr = 0x40A3F0
[[func]]
name = "ActCaret12"
addr = 0x40A5A0
[[func]]
name = "ActCaret13"
addr = 0x40A650
[[func]]
name = "ActCaret14"
addr = 0x40A7E0
[[func]]
name = "ActCaret15"
addr = 0x40A8F0
[[func]]
name = "ActCaret16"
addr = 0x40A9E0
[[func]]
name = "ActCaret17"
addr = 0x40AAA0
[[func]]
name = "ActCaret"
addr = 0x40AB50
[[func]]
name = "PutCaret"
addr = 0x40ABC0
[[func]]
name = "SetCaret"
addr = 0x40AC90
[[func]] [[func]]
name = "Call_Escape" name = "Call_Escape"
addr = 0x40DD70 addr = 0x40DD70
@ -342,6 +554,54 @@ addr = 0x41C8F0
name = "MakePixelWaveData" name = "MakePixelWaveData"
addr = 0x41CB10 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]] [[func]]
name = "PlaySoundObject" name = "PlaySoundObject"
addr = 0x420640 addr = 0x420640

File diff suppressed because it is too large Load diff

View file

@ -34,7 +34,7 @@ void ActCaret01(CARET *crt)
{64, 24, 72, 32}, {64, 24, 72, 32},
{72, 24, 80, 32}, {72, 24, 80, 32},
{80, 24, 88, 32}, {80, 24, 88, 32},
{88, 24, 92, 32}, {88, 24, 96, 32},
}; };
if (!crt->act_no) if (!crt->act_no)
@ -55,10 +55,10 @@ void ActCaret01(CARET *crt)
crt->cond = 0; crt->cond = 0;
} }
if (crt->direct) if (crt->direct == 0)
crt->rect = rcRight[crt->ani_no];
else
crt->rect = rcLeft[crt->ani_no]; crt->rect = rcLeft[crt->ani_no];
else
crt->rect = rcRight[crt->ani_no];
} }
void ActCaret02(CARET *crt) void ActCaret02(CARET *crt)
@ -88,20 +88,17 @@ void ActCaret02(CARET *crt)
case 0: case 0:
crt->ym -= 0x10; crt->ym -= 0x10;
crt->y += crt->ym; crt->y += crt->ym;
if (++crt->ani_wait > 5) if (++crt->ani_wait > 5)
{ {
crt->ani_wait = 0; crt->ani_wait = 0;
++crt->ani_no; ++crt->ani_no;
} }
if (crt->ani_no > 3) if (crt->ani_no > 3)
crt->cond = 0; crt->cond = 0;
crt->rect = rect_left[crt->ani_no];
break;
case 1: crt->rect = rect_left[crt->ani_no];
crt->rect = rect_up[++crt->ani_wait / 2 % 3];
if (crt->ani_wait > 24)
crt->cond = 0;
break; break;
case 2: case 2:
@ -110,10 +107,20 @@ void ActCaret02(CARET *crt)
crt->ani_wait = 0; crt->ani_wait = 0;
++crt->ani_no; ++crt->ani_no;
} }
if (crt->ani_no > 3) if (crt->ani_no > 3)
crt->cond = 0; crt->cond = 0;
crt->rect = rect_right[crt->ani_no]; crt->rect = rect_right[crt->ani_no];
break; break;
case 1:
crt->rect = rect_up[++crt->ani_wait / 2 % 3];
if (crt->ani_wait > 24)
crt->cond = 0;
break;
} }
} }
@ -158,7 +165,7 @@ void ActCaret04(CARET *crt)
crt->cond = 0; crt->cond = 0;
} }
crt->rect = rect[crt->ani_no + 3 * crt->direct]; crt->rect = rect[3 * crt->direct + crt->ani_no];
} }
void ActCaret05(CARET *crt) void ActCaret05(CARET *crt)
@ -243,8 +250,9 @@ void ActCaret09(CARET *crt)
RECT rcLeft = {0, 80, 16, 96}; RECT rcLeft = {0, 80, 16, 96};
RECT rcRight = {48, 64, 64, 80}; RECT rcRight = {48, 64, 64, 80};
if (++crt->ani_wait <= 4) if (++crt->ani_wait < 5)
crt->y -= 0x800; crt->y -= 0x800;
if (crt->ani_wait == 32) if (crt->ani_wait == 32)
crt->cond = 0; crt->cond = 0;
@ -268,33 +276,37 @@ void ActCaret10(CARET *crt)
++crt->ani_wait; ++crt->ani_wait;
if (crt->direct) if (crt->direct == 0)
{ {
if (crt->ani_wait < 20) if (crt->ani_wait < 20)
crt->y -= 0x200; crt->y -= 0x400;
if (crt->ani_wait == 80) if (crt->ani_wait == 80)
crt->cond = 0; crt->cond = 0;
} }
else else
{ {
if (crt->ani_wait < 20) if (crt->ani_wait < 20)
crt->y -= 0x400; crt->y -= 0x200;
if (crt->ani_wait == 80) if (crt->ani_wait == 80)
crt->cond = 0; crt->cond = 0;
} }
if (crt->direct) if (crt->direct == 0)
crt->rect = rcRight[crt->ani_wait / 2 % 2];
else
crt->rect = rcLeft[crt->ani_wait / 2 % 2]; crt->rect = rcLeft[crt->ani_wait / 2 % 2];
else
crt->rect = rcRight[crt->ani_wait / 2 % 2];
} }
void ActCaret11(CARET *crt) void ActCaret11(CARET *crt)
{ {
unsigned char deg;
if (!crt->act_no) if (!crt->act_no)
{ {
crt->act_no = 1; crt->act_no = 1;
uint8_t deg = Random(0, 0xFF); deg = Random(0, 0xFF);
crt->xm = 2 * GetCos(deg); crt->xm = 2 * GetCos(deg);
crt->ym = 2 * GetSin(deg); crt->ym = 2 * GetSin(deg);
} }
@ -346,7 +358,7 @@ void ActCaret13(CARET *crt)
{0, 0, 0, 0}, {0, 0, 0, 0},
}; };
if (!crt->act_no) if (crt->act_no == 0)
{ {
crt->act_no = 1; crt->act_no = 1;
@ -363,10 +375,12 @@ void ActCaret13(CARET *crt)
} }
} }
if (!crt->direct) switch (crt->direct)
{ {
case 0:
crt->xm = 4 * crt->xm / 5; crt->xm = 4 * crt->xm / 5;
crt->ym = 4 * crt->ym / 5; crt->ym = 4 * crt->ym / 5;
break;
} }
crt->x += crt->xm; crt->x += crt->xm;
@ -502,10 +516,16 @@ CARETFUNCTION gpCaretFuncTbl[] =
void ActCaret() void ActCaret()
{ {
for (int i = 0; i < CARET_MAX; i++) int i;
int code;
for (i = 0; i < CARET_MAX; i++)
{ {
if (gCrt[i].cond & 0x80) if (gCrt[i].cond & 0x80)
gpCaretFuncTbl[gCrt[i].code](&gCrt[i]); {
code = gCrt[i].code;
gpCaretFuncTbl[code](&gCrt[i]);
}
} }
} }
@ -527,10 +547,14 @@ void PutCaret(int fx, int fy)
void SetCaret(int x, int y, int code, int dir) void SetCaret(int x, int y, int code, int dir)
{ {
for (int c = 0; c < CARET_MAX; c++) int c;
{ for (c = 0; c < CARET_MAX; c++)
if (!gCrt[c].cond) if (gCrt[c].cond == 0)
{ break;
if (c == CARET_MAX)
return;
memset(&gCrt[c], 0, sizeof(CARET)); memset(&gCrt[c], 0, sizeof(CARET));
gCrt[c].cond = 0x80; gCrt[c].cond = 0x80;
gCrt[c].code = code; gCrt[c].code = code;
@ -539,7 +563,4 @@ void SetCaret(int x, int y, int code, int dir)
gCrt[c].view_left = gCaretTable[code].view_left; gCrt[c].view_left = gCaretTable[code].view_left;
gCrt[c].view_top = gCaretTable[code].view_top; gCrt[c].view_top = gCaretTable[code].view_top;
gCrt[c].direct = dir; gCrt[c].direct = dir;
break;
}
}
} }

View file

@ -59,7 +59,7 @@ void PutStripper()
} }
//Create a cast object //Create a cast object
void SetStripper(int x, int y, char *text, int cast) void SetStripper(int x, int y, const char *text, int cast)
{ {
for (int s = 0; s < MAX_STRIP; s++) for (int s = 0; s < MAX_STRIP; s++)
{ {

View file

@ -37,7 +37,7 @@ struct ISLAND_SPRITE
void ActionStripper(); void ActionStripper();
void PutStripper(); void PutStripper();
void SetStripper(int x, int y, char *text, int cast); void SetStripper(int x, int y, const char *text, int cast);
void RestoreStripper(); void RestoreStripper();
void ActionIllust(); void ActionIllust();
void PutIllust(); void PutIllust();

View file

@ -16,9 +16,9 @@ struct FADE
int mode; int mode;
BOOL bMask; BOOL bMask;
int count; int count;
char ani_no[FADE_HEIGHT][FADE_WIDTH]; signed char ani_no[FADE_HEIGHT][FADE_WIDTH];
char flag[FADE_HEIGHT][FADE_WIDTH]; // Not a BOOLEAN (those are unsigned) signed char flag[FADE_HEIGHT][FADE_WIDTH]; // Not a BOOLEAN (those are unsigned)
char dir; signed char dir;
}; };
static FADE gFade; static FADE gFade;
@ -41,7 +41,7 @@ void ClearFade()
gFade.mode = 0; gFade.mode = 0;
} }
void StartFadeOut(char dir) void StartFadeOut(signed char dir)
{ {
gFade.mode = 2; gFade.mode = 2;
gFade.count = 0; gFade.count = 0;
@ -58,7 +58,7 @@ void StartFadeOut(char dir)
} }
} }
void StartFadeIn(char dir) void StartFadeIn(signed char dir)
{ {
int x; int x;
int y; int y;

View file

@ -5,8 +5,8 @@
void InitFade(); void InitFade();
void SetFadeMask(); void SetFadeMask();
void ClearFade(); void ClearFade();
void StartFadeOut(char dir); void StartFadeOut(signed char dir);
void StartFadeIn(char dir); void StartFadeIn(signed char dir);
void ProcFade(); void ProcFade();
void PutFade(); void PutFade();
BOOL GetFadeActive(); BOOL GetFadeActive();

View file

@ -2,6 +2,8 @@
#include "SDL.h" #include "SDL.h"
#include "WindowsWrapper.h"
#include "ArmsItem.h" #include "ArmsItem.h"
#include "CommonDefines.h" #include "CommonDefines.h"
#include "Caret.h" #include "Caret.h"
@ -92,7 +94,7 @@ void ZeroExpMyChar()
gArmsData[gSelectedArms].exp = 0; gArmsData[gSelectedArms].exp = 0;
} }
bool IsMaxExpMyChar() BOOL IsMaxExpMyChar()
{ {
return gArmsData[gSelectedArms].level == 3 return gArmsData[gSelectedArms].level == 3
&& gArmsData[gSelectedArms].exp >= gArmsLevelTable[gArmsData[gSelectedArms].code].exp[2]; && gArmsData[gSelectedArms].exp >= gArmsLevelTable[gArmsData[gSelectedArms].code].exp[2];

View file

@ -2,6 +2,8 @@
#include <stdint.h> #include <stdint.h>
#include "WindowsWrapper.h"
struct ARMS_LEVEL struct ARMS_LEVEL
{ {
int exp[3]; int exp[3];
@ -17,7 +19,7 @@ extern ARMS_LEVEL gArmsLevelTable[14];
void AddExpMyChar(int x); void AddExpMyChar(int x);
void ZeroExpMyChar(); void ZeroExpMyChar();
bool IsMaxExpMyChar(); BOOL IsMaxExpMyChar();
void DamageMyChar(int damage); void DamageMyChar(int damage);
void ZeroArmsEnergy_All(); void ZeroArmsEnergy_All();
void AddBulletMyChar(int no, int val); void AddBulletMyChar(int no, int val);

View file

@ -53,7 +53,7 @@ void SetUniqueParameter(NPCHAR *npc)
npc->view.bottom = gNpcTable[code].view.bottom << 9; npc->view.bottom = gNpcTable[code].view.bottom << 9;
} }
bool LoadEvent(char *path_event) bool LoadEvent(const char *path_event)
{ {
char path[PATH_LENGTH]; char path[PATH_LENGTH];
sprintf(path, "%s/%s", gDataPath, path_event); sprintf(path, "%s/%s", gDataPath, path_event);

View file

@ -83,7 +83,7 @@ extern int gSuperXpos;
extern int gSuperYpos; extern int gSuperYpos;
void InitNpChar(); void InitNpChar();
bool LoadEvent(char *path_event); bool LoadEvent(const char *path_event);
void SetNpChar(int code_char, int x, int y, int xm, int ym, int dir, NPCHAR *npc, int start_index); void SetNpChar(int code_char, int x, int y, int xm, int ym, int dir, NPCHAR *npc, int start_index);
void SetDestroyNpChar(int x, int y, int w, int num); void SetDestroyNpChar(int x, int y, int w, int num);
void SetDestroyNpCharUp(int x, int y, int w, int num); void SetDestroyNpCharUp(int x, int y, int w, int num);

View file

@ -303,7 +303,7 @@ void ChangeDramVolume(int32_t volume, int8_t track)
lpDRAMBUFFER[track]->SetVolume((volume - 0xFF) * 8); lpDRAMBUFFER[track]->SetVolume((volume - 0xFF) * 8);
} }
void PlayDramObject(unsigned char key, int mode,char track) void PlayDramObject(unsigned char key, int mode, signed char track)
{ {
switch(mode) switch(mode)
{ {

View file

@ -56,7 +56,7 @@ void MakeWaveTables(void)
// White noise wave // White noise wave
rep_srand(0); rep_srand(0);
for (i = 0; i < 256; ++i) for (i = 0; i < 256; ++i)
gWaveModelTable[5][i] = (char)(rep_rand() & 0xFF) / 2; gWaveModelTable[5][i] = (signed char)(rep_rand() & 0xFF) / 2;
} }
BOOL MakePixelWaveData(const PIXTONEPARAMETER *ptp, unsigned char *pData) BOOL MakePixelWaveData(const PIXTONEPARAMETER *ptp, unsigned char *pData)

View file

@ -40,7 +40,7 @@ bool IsProfile()
return true; return true;
} }
bool SaveProfile(char *name) bool SaveProfile(const char *name)
{ {
//Get path //Get path
char path[PATH_LENGTH]; char path[PATH_LENGTH];
@ -119,7 +119,7 @@ bool SaveProfile(char *name)
return true; return true;
} }
bool LoadProfile(char *name) bool LoadProfile(const char *name)
{ {
//Get path //Get path
char path[PATH_LENGTH]; char path[PATH_LENGTH];

View file

@ -25,12 +25,12 @@ struct PROFILE
ARMS arms[8]; ARMS arms[8];
ITEM items[32]; ITEM items[32];
PERMIT_STAGE permitstage[8]; PERMIT_STAGE permitstage[8];
char permit_mapping[0x80]; signed char permit_mapping[0x80];
char FLAG[4]; char FLAG[4];
uint8_t flags[1000]; uint8_t flags[1000];
}; };
bool IsProfile(); bool IsProfile();
bool SaveProfile(char *name); bool SaveProfile(const char *name);
bool LoadProfile(char *name); bool LoadProfile(const char *name);
bool InitializeGame(); bool InitializeGame();

View file

@ -28,7 +28,10 @@ void ShootBullet_Frontia1(int level)
break; break;
} }
if (CountArmsBullet(1) <= 3 && gKeyTrg & gKeyShot) if (CountArmsBullet(1) > 3)
return;
if (gKeyTrg & gKeyShot)
{ {
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
@ -86,18 +89,21 @@ void ShootBullet_PoleStar(int level)
int bul_no; int bul_no;
switch (level) switch (level)
{ {
case 1:
bul_no = 4;
break;
case 2: case 2:
bul_no = 5; bul_no = 5;
break; break;
case 3: case 3:
bul_no = 6; bul_no = 6;
break; break;
case 1:
bul_no = 4;
break;
} }
if (CountArmsBullet(2) < 2 && gKeyTrg & gKeyShot) if (CountArmsBullet(2) > 1)
return;
if (gKeyTrg & gKeyShot)
{ {
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
@ -107,42 +113,42 @@ void ShootBullet_PoleStar(int level)
{ {
if (gMC.up) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1); SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0); 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) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3); SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0); 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 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0); SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x600, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0); SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
} }
else
{
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x600, 2);
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
}
} }
if (level == 3) if (level == 3)
@ -160,17 +166,17 @@ void ShootBullet_FireBall(int level)
switch (level) switch (level)
{ {
case 1: case 1:
if (CountArmsBullet(3) >= 2) if (CountArmsBullet(3) > 1)
return; return;
bul_no = 7; bul_no = 7;
break; break;
case 2: case 2:
if (CountArmsBullet(3) >= 3) if (CountArmsBullet(3) > 2)
return; return;
bul_no = 8; bul_no = 8;
break; break;
case 3: case 3:
if (CountArmsBullet(3) >= 4) if (CountArmsBullet(3) > 3)
return; return;
bul_no = 9; bul_no = 9;
break; break;
@ -186,42 +192,42 @@ void ShootBullet_FireBall(int level)
{ {
if (gMC.up) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x1000, 1); SetBullet(bul_no, gMC.x - 0x800, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x800, gMC.y - 0x1000, 3, 0); 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);
}
} }
else if (gMC.down) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x800, gMC.y + 0x1000, 3); SetBullet(bul_no, gMC.x - 0x800, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x800, gMC.y + 0x1000, 3, 0); 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);
}
} }
else 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0); SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x400, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0); SetCaret(gMC.x - 0x1800, gMC.y + 0x400, 3, 0);
} }
else
{
SetBullet(bul_no, gMC.x + 0xC00, gMC.y + 0x400, 2);
SetCaret(gMC.x + 0x1800, gMC.y + 0x400, 3, 0);
}
} }
PlaySoundObject(34, 1); PlaySoundObject(34, 1);
@ -231,8 +237,9 @@ void ShootBullet_FireBall(int level)
void ShootBullet_Machinegun1(int level) void ShootBullet_Machinegun1(int level)
{ {
if (CountArmsBullet(4) < 5) if (CountArmsBullet(4) > 4)
{ return;
int bul_no; int bul_no;
switch (level) switch (level)
@ -253,18 +260,22 @@ void ShootBullet_Machinegun1(int level)
if (gKey & gKeyShot) if (gKey & gKeyShot)
{ {
if (++gMC.rensha > 6) if (++gMC.rensha < 6)
{ return;
gMC.rensha = 0; gMC.rensha = 0;
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
PlaySoundObject(37, 1); PlaySoundObject(37, 1);
if (!empty) if (empty == 0)
{ {
SetCaret(gMC.x, gMC.y, 16, 0); SetCaret(gMC.x, gMC.y, 16, 0);
empty = 50; empty = 50;
} }
return;
} }
else else
{ {
@ -273,16 +284,16 @@ void ShootBullet_Machinegun1(int level)
if (level == 3) if (level == 3)
gMC.ym += 0x100; gMC.ym += 0x100;
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(bul_no, gMC.x - 0x600, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x600, gMC.y - 0x1000, 3, 0); 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) else if (gMC.down)
{ {
@ -299,29 +310,29 @@ void ShootBullet_Machinegun1(int level)
} }
} }
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(bul_no, gMC.x - 0x600, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x600, gMC.y + 0x1000, 3, 0); 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 (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(bul_no, gMC.x - 0x1800, gMC.y + 0x600, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 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) if (level == 3)
@ -330,7 +341,6 @@ void ShootBullet_Machinegun1(int level)
PlaySoundObject(32, 1); PlaySoundObject(32, 1);
} }
} }
}
else else
{ {
static int wait = 0; static int wait = 0;
@ -354,9 +364,8 @@ void ShootBullet_Machinegun1(int level)
} }
} }
} }
}
void ShootBullet_Missile(int level, bool bSuper) void ShootBullet_Missile(int level, BOOL bSuper)
{ {
int bul_no; int bul_no;
@ -375,20 +384,34 @@ void ShootBullet_Missile(int level, bool bSuper)
break; break;
} }
if (level == 1) switch (level)
{ {
if (CountArmsBullet(10) >= 1 || CountArmsBullet(11) >= 1) case 1:
if (CountArmsBullet(10) > 0)
return; return;
}
else if (level == 2) if (CountArmsBullet(11) > 0)
{
if (CountArmsBullet(10) >= 2 || CountArmsBullet(11) >= 2)
return; return;
}
else if (level == 3) break;
{
if (CountArmsBullet(10) >= 4 || CountArmsBullet(11) >= 4) case 2:
if (CountArmsBullet(10) > 1)
return; return;
if (CountArmsBullet(11) > 1)
return;
break;
case 3:
if (CountArmsBullet(10) > 3)
return;
if (CountArmsBullet(11) > 3)
return;
break;
} }
} }
@ -407,33 +430,46 @@ void ShootBullet_Missile(int level, bool bSuper)
break; break;
} }
if (level == 1) switch (level)
{ {
if (CountArmsBullet(5) >= 1 || CountArmsBullet(6) >= 1) case 1:
if (CountArmsBullet(5) > 0)
return; return;
}
else if (level == 2) if (CountArmsBullet(6) > 0)
{
if (CountArmsBullet(5) >= 2 || CountArmsBullet(6) >= 2)
return; return;
}
else if ( level == 3 ) break;
{
if (CountArmsBullet(5) >= 4 || CountArmsBullet(6) >= 4) case 2:
if (CountArmsBullet(5) > 1)
return; return;
if (CountArmsBullet(6) > 1)
return;
break;
case 3:
if (CountArmsBullet(5) > 3)
return;
if (CountArmsBullet(6) > 3)
return;
break;
} }
} }
if (!(gKeyTrg & gKeyShot)) if (gKeyTrg & gKeyShot)
return; {
if (level < 3) if (level < 3)
{ {
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
PlaySoundObject(37, 1); PlaySoundObject(37, 1);
if (!empty) if (empty == 0)
{ {
SetCaret(gMC.x, gMC.y, 16, 0); SetCaret(gMC.x, gMC.y, 16, 0);
empty = 50; empty = 50;
@ -444,42 +480,42 @@ void ShootBullet_Missile(int level, bool bSuper)
if (gMC.up) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1); SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0); 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) 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);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3); SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0); 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 else
{ {
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(bul_no, gMC.x - 0xC00, gMC.y, 0);
SetCaret(gMC.x - 0x1800, gMC.y, 3, 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 else
@ -488,7 +524,7 @@ void ShootBullet_Missile(int level, bool bSuper)
{ {
PlaySoundObject(37, 1); PlaySoundObject(37, 1);
if (!empty) if (empty == 0)
{ {
SetCaret(gMC.x, gMC.y, 16, 0); SetCaret(gMC.x, gMC.y, 16, 0);
empty = 50; empty = 50;
@ -499,114 +535,122 @@ void ShootBullet_Missile(int level, bool bSuper)
if (gMC.up) 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 + 0x600, gMC.y, 1);
SetBullet(bul_no, gMC.x - 0x600, gMC.y, 1);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1); SetBullet(bul_no, gMC.x - 0x200, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x200, gMC.y - 0x1000, 3, 0); 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);
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 if (gMC.down) 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 - 0x600, gMC.y, 3);
SetBullet(bul_no, gMC.x + 0x600, gMC.y, 3);
}
else
{ {
SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3); SetBullet(bul_no, gMC.x - 0x200, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x200, gMC.y + 0x1000, 3, 0); 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);
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 else
{ {
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(bul_no, gMC.x - 0xC00, gMC.y + 0x200, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x200, 3, 0); SetCaret(gMC.x - 0x1800, gMC.y + 0x200, 3, 0);
SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 0); SetBullet(bul_no, gMC.x, gMC.y - 0x1000, 0);
SetBullet(bul_no, gMC.x + 0x800, gMC.y - 0x200, 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);
}
} }
} }
PlaySoundObject(32, 1); PlaySoundObject(32, 1);
} }
}
void ShootBullet_Bubblin1(void) void ShootBullet_Bubblin1(void)
{ {
static int wait; 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); PlaySoundObject(37, 1);
if (!empty)
if (empty == 0)
{ {
SetCaret(gMC.x, gMC.y, 16, 0); SetCaret(gMC.x, gMC.y, 16, 0);
empty = 50; empty = 50;
} }
return;
} }
else else
{ {
if (gMC.up) if (gMC.up)
{ {
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(19, gMC.x - 0x200, gMC.y - 0x400, 1);
SetCaret(gMC.x - 0x200, gMC.y - 0x400, 3, 0); 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);
}
} }
else if (gMC.down) else if (gMC.down)
{ {
if (gMC.direct) if (gMC.direct == 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); SetBullet(19, gMC.x - 0x200, gMC.y + 0x400, 3);
SetCaret(gMC.x - 0x200, gMC.y + 0x400, 3, 0); 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) }
else
{
if (gMC.direct == 0)
{
SetBullet(19, gMC.x - 0xC00, gMC.y + 0x600, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
}
else
{ {
SetBullet(19, gMC.x + 0xC00, gMC.y + 0x600, 2); SetBullet(19, gMC.x + 0xC00, gMC.y + 0x600, 2);
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0); SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
} }
else
{
SetBullet(19, gMC.x - 0xC00, gMC.y + 0x600, 0);
SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
} }
PlaySoundObject(48, 1); PlaySoundObject(48, 1);
@ -618,14 +662,14 @@ void ShootBullet_Bubblin1(void)
ChargeArmsEnergy(1); ChargeArmsEnergy(1);
} }
} }
}
void ShootBullet_Bubblin2(int level) void ShootBullet_Bubblin2(int level)
{ {
static int wait; static int wait;
if (CountArmsBullet(7) <= 15) if (CountArmsBullet(7) > 15)
{ return;
level += 18; level += 18;
if (!(gKey & gKeyShot)) if (!(gKey & gKeyShot))
@ -633,74 +677,80 @@ void ShootBullet_Bubblin2(int level)
if (gKey & gKeyShot) if (gKey & gKeyShot)
{ {
if (++gMC.rensha >= 7) if (++gMC.rensha < 7)
{ return;
gMC.rensha = 0; gMC.rensha = 0;
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
PlaySoundObject(37, 1); PlaySoundObject(37, 1);
if (!empty)
if (empty == 0)
{ {
SetCaret(gMC.x, gMC.y, 16, 0); SetCaret(gMC.x, gMC.y, 16, 0);
empty = 50; empty = 50;
} }
return;
} }
else else
{ {
if (gMC.up) if (gMC.up)
{ {
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(level, gMC.x - 0x600, gMC.y - 0x1000, 1);
SetCaret(gMC.x - 0x600, gMC.y - 0x2000, 3, 0); 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) else if (gMC.down)
{ {
if (gMC.direct) if (gMC.direct == 0)
{
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); SetBullet(level, gMC.x - 0x600, gMC.y + 0x1000, 3);
SetCaret(gMC.x - 0x600, gMC.y + 0x2000, 3, 0); SetCaret(gMC.x - 0x600, gMC.y + 0x2000, 3, 0);
} }
} else
else if (gMC.direct)
{ {
SetBullet(level, gMC.x + 0xC00, gMC.y + 0x600, 2); SetBullet(level, gMC.x + 0x600, gMC.y + 0x1000, 3);
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0); SetCaret(gMC.x + 0x600, gMC.y + 0x2000, 3, 0);
}
} }
else else
{
if (gMC.direct == 0)
{ {
SetBullet(level, 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); SetCaret(gMC.x - 0x1800, gMC.y + 0x600, 3, 0);
} }
else
{
SetBullet(level, gMC.x + 0xC00, gMC.y + 0x600, 2);
SetCaret(gMC.x + 0x1800, gMC.y + 0x600, 3, 0);
}
}
PlaySoundObject(48, 1); PlaySoundObject(48, 1);
} }
} }
}
else if (++wait > 1) else if (++wait > 1)
{ {
wait = 0; wait = 0;
ChargeArmsEnergy(1); ChargeArmsEnergy(1);
} }
} }
}
void ShootBullet_Sword(int level) void ShootBullet_Sword(int level)
{ {
if (CountArmsBullet(9) <= 0) if (CountArmsBullet(9) > 0)
{ return;
int bul_no; int bul_no;
switch (level) switch (level)
@ -743,7 +793,6 @@ void ShootBullet_Sword(int level)
PlaySoundObject(34, 1); PlaySoundObject(34, 1);
} }
} }
}
void ShootBullet_Nemesis(int level) void ShootBullet_Nemesis(int level)
{ {
@ -762,7 +811,10 @@ void ShootBullet_Nemesis(int level)
break; break;
} }
if (CountArmsBullet(12) <= 1 && gKeyTrg & gKeyShot) if (CountArmsBullet(12) > 1)
return;
if (gKeyTrg & gKeyShot)
{ {
if (!UseArmsEnergy(1)) if (!UseArmsEnergy(1))
{ {
@ -836,9 +888,11 @@ void ResetSpurCharge(void)
void ShootBullet_Spur(int level) void ShootBullet_Spur(int level)
{ {
static BOOL bMax;
BOOL bShot;
int bul_no; int bul_no;
bool bShot = false; bShot = FALSE;
if (gKey & gKeyShot) if (gKey & gKeyShot)
{ {
@ -849,42 +903,43 @@ void ShootBullet_Spur(int level)
if (++spur_charge / 2 % 2) if (++spur_charge / 2 % 2)
{ {
if (level == 1) switch (level)
{ {
case 1:
PlaySoundObject(59, 1); PlaySoundObject(59, 1);
} break;
else if (level == 2)
{ case 2:
PlaySoundObject(60, 1); PlaySoundObject(60, 1);
} break;
else if (level == 3)
{ case 3:
if (!IsMaxExpMyChar()) if (!IsMaxExpMyChar())
PlaySoundObject(61, 1); PlaySoundObject(61, 1);
break;
} }
} }
} }
else else
{ {
if (spur_charge) if (spur_charge)
bShot = true; bShot = TRUE;
spur_charge = 0; spur_charge = 0;
} }
static bool bMax;
if (IsMaxExpMyChar()) if (IsMaxExpMyChar())
{ {
if (bMax == false) if (bMax == FALSE)
{ {
bMax = true; bMax = TRUE;
PlaySoundObject(65, 1); PlaySoundObject(65, 1);
} }
} }
else else
{ {
bMax = false; bMax = FALSE;
} }
if (!(gKey & gKeyShot)) if (!(gKey & gKeyShot))
@ -894,7 +949,7 @@ void ShootBullet_Spur(int level)
{ {
case 1: case 1:
bul_no = 6; bul_no = 6;
bShot = false; bShot = FALSE;
break; break;
case 2: case 2:
bul_no = 37; bul_no = 37;
@ -904,10 +959,14 @@ void ShootBullet_Spur(int level)
bul_no = 39; bul_no = 39;
else else
bul_no = 38; bul_no = 38;
break; 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)) if (!UseArmsEnergy(1))
{ {
@ -992,8 +1051,9 @@ void ShootBullet()
} }
//Run functions //Run functions
if (!(gMC.cond & 2)) if (gMC.cond & 2)
{ return;
switch (gArmsData[gSelectedArms].code) switch (gArmsData[gSelectedArms].code)
{ {
case 1: case 1:
@ -1009,7 +1069,7 @@ void ShootBullet()
ShootBullet_Machinegun1(gArmsData[gSelectedArms].level); ShootBullet_Machinegun1(gArmsData[gSelectedArms].level);
break; break;
case 5: case 5:
ShootBullet_Missile(gArmsData[gSelectedArms].level, false); ShootBullet_Missile(gArmsData[gSelectedArms].level, FALSE);
break; break;
case 7: case 7:
switch (gArmsData[gSelectedArms].level) switch (gArmsData[gSelectedArms].level)
@ -1042,7 +1102,7 @@ void ShootBullet()
break; break;
case 10: case 10:
ShootBullet_Missile(gArmsData[gSelectedArms].level, true); ShootBullet_Missile(gArmsData[gSelectedArms].level, TRUE);
break; break;
case 12: case 12:
ShootBullet_Nemesis(gArmsData[gSelectedArms].level); ShootBullet_Nemesis(gArmsData[gSelectedArms].level);
@ -1052,4 +1112,3 @@ void ShootBullet()
break; break;
} }
} }
}

View file

@ -10,7 +10,7 @@ struct STAGE_TABLE
char back[0x20]; char back[0x20];
char npc[0x20]; char npc[0x20];
char boss[0x20]; char boss[0x20];
char boss_no; signed char boss_no;
char name[0x20]; char name[0x20];
}; };

View file

@ -141,7 +141,7 @@ bool LoadTextScript2(const char *name)
} }
//Load stage .tsc //Load stage .tsc
bool LoadTextScript_Stage(char *name) bool LoadTextScript_Stage(const char *name)
{ {
//Open Head.tsc //Open Head.tsc
char path[PATH_LENGTH]; char path[PATH_LENGTH];

View file

@ -16,10 +16,10 @@ struct TEXT_SCRIPT
char *data; char *data;
//Mode (ex. NOD, WAI) //Mode (ex. NOD, WAI)
char mode; signed char mode;
//Flags //Flags
char flags; signed char flags;
//Current positions (read position in buffer, x position in line) //Current positions (read position in buffer, x position in line)
unsigned int p_read; unsigned int p_read;
@ -37,7 +37,7 @@ struct TEXT_SCRIPT
int next_event; int next_event;
//Yes/no selected //Yes/no selected
char select; signed char select;
//Current face //Current face
int face; int face;
@ -61,7 +61,7 @@ BOOL InitTextScript2();
void EndTextScript(); void EndTextScript();
void EncryptionBinaryData2(uint8_t *pData, int size); void EncryptionBinaryData2(uint8_t *pData, int size);
bool LoadTextScript2(const char *name); bool LoadTextScript2(const char *name);
bool LoadTextScript_Stage(char *name); bool LoadTextScript_Stage(const char *name);
void GetTextScriptPath(char *path); void GetTextScriptPath(char *path);
BOOL StartTextScript(int no); BOOL StartTextScript(int no);
void StopTextScript(); void StopTextScript();

View file

@ -13,6 +13,12 @@ typedef int BOOL;
#define TRUE 1 #define TRUE 1
#endif #endif
#define SET_RECT(rect, l, t, r, b) \
rect.left = l; \
rect.top = t; \
rect.right = r; \
rect.bottom = b;
struct RECT struct RECT
{ {
union union