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"
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]]
name = "Call_Escape"
addr = 0x40DD70
@ -342,6 +554,54 @@ addr = 0x41C8F0
name = "MakePixelWaveData"
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

File diff suppressed because it is too large Load diff

View file

@ -34,7 +34,7 @@ void ActCaret01(CARET *crt)
{64, 24, 72, 32},
{72, 24, 80, 32},
{80, 24, 88, 32},
{88, 24, 92, 32},
{88, 24, 96, 32},
};
if (!crt->act_no)
@ -55,10 +55,10 @@ void ActCaret01(CARET *crt)
crt->cond = 0;
}
if (crt->direct)
crt->rect = rcRight[crt->ani_no];
else
if (crt->direct == 0)
crt->rect = rcLeft[crt->ani_no];
else
crt->rect = rcRight[crt->ani_no];
}
void ActCaret02(CARET *crt)
@ -88,32 +88,39 @@ void ActCaret02(CARET *crt)
case 0:
crt->ym -= 0x10;
crt->y += crt->ym;
if (++crt->ani_wait > 5)
{
crt->ani_wait = 0;
++crt->ani_no;
}
if ( crt->ani_no > 3 )
if (crt->ani_no > 3)
crt->cond = 0;
crt->rect = rect_left[crt->ani_no];
break;
case 1:
crt->rect = rect_up[++crt->ani_wait / 2 % 3];
if (crt->ani_wait > 24)
crt->cond = 0;
break;
case 2:
if ( ++crt->ani_wait > 2 )
if (++crt->ani_wait > 2)
{
crt->ani_wait = 0;
++crt->ani_no;
}
if ( crt->ani_no > 3 )
if (crt->ani_no > 3)
crt->cond = 0;
crt->rect = rect_right[crt->ani_no];
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->rect = rect[crt->ani_no + 3 * crt->direct];
crt->rect = rect[3 * crt->direct + crt->ani_no];
}
void ActCaret05(CARET *crt)
@ -243,9 +250,10 @@ void ActCaret09(CARET *crt)
RECT rcLeft = {0, 80, 16, 96};
RECT rcRight = {48, 64, 64, 80};
if (++crt->ani_wait <= 4)
if (++crt->ani_wait < 5)
crt->y -= 0x800;
if (crt->ani_wait == 32 )
if (crt->ani_wait == 32)
crt->cond = 0;
if (crt->direct == 0)
@ -268,33 +276,37 @@ void ActCaret10(CARET *crt)
++crt->ani_wait;
if (crt->direct)
if (crt->direct == 0)
{
if (crt->ani_wait < 20)
crt->y -= 0x200;
crt->y -= 0x400;
if (crt->ani_wait == 80)
crt->cond = 0;
}
else
{
if (crt->ani_wait < 20)
crt->y -= 0x400;
crt->y -= 0x200;
if (crt->ani_wait == 80)
crt->cond = 0;
}
if (crt->direct)
crt->rect = rcRight[crt->ani_wait / 2 % 2];
else
if (crt->direct == 0)
crt->rect = rcLeft[crt->ani_wait / 2 % 2];
else
crt->rect = rcRight[crt->ani_wait / 2 % 2];
}
void ActCaret11(CARET *crt)
{
unsigned char deg;
if (!crt->act_no)
{
crt->act_no = 1;
uint8_t deg = Random(0, 0xFF);
deg = Random(0, 0xFF);
crt->xm = 2 * GetCos(deg);
crt->ym = 2 * GetSin(deg);
}
@ -346,7 +358,7 @@ void ActCaret13(CARET *crt)
{0, 0, 0, 0},
};
if (!crt->act_no)
if (crt->act_no == 0)
{
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->ym = 4 * crt->ym / 5;
break;
}
crt->x += crt->xm;
@ -502,10 +516,16 @@ CARETFUNCTION gpCaretFuncTbl[] =
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)
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)
{
for (int c = 0; c < CARET_MAX; c++)
{
if (!gCrt[c].cond)
{
int c;
for (c = 0; c < CARET_MAX; c++)
if (gCrt[c].cond == 0)
break;
if (c == CARET_MAX)
return;
memset(&gCrt[c], 0, sizeof(CARET));
gCrt[c].cond = 0x80;
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_top = gCaretTable[code].view_top;
gCrt[c].direct = dir;
break;
}
}
}

View file

@ -59,7 +59,7 @@ void PutStripper()
}
//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++)
{

View file

@ -37,7 +37,7 @@ struct ISLAND_SPRITE
void ActionStripper();
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 ActionIllust();
void PutIllust();

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -83,7 +83,7 @@ extern int gSuperXpos;
extern int gSuperYpos;
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 SetDestroyNpChar(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);
}
void PlayDramObject(unsigned char key, int mode,char track)
void PlayDramObject(unsigned char key, int mode, signed char track)
{
switch(mode)
{

View file

@ -56,7 +56,7 @@ void MakeWaveTables(void)
// White noise wave
rep_srand(0);
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)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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