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,32 +88,39 @@ 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]; crt->rect = rect_left[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;
case 2: case 2:
if ( ++crt->ani_wait > 2 ) if (++crt->ani_wait > 2)
{ {
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,9 +250,10 @@ 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;
if (crt->direct == 0) if (crt->direct == 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)
{ {
crt->xm = 4 * crt->xm / 5; case 0:
crt->ym = 4 * crt->ym / 5; crt->xm = 4 * crt->xm / 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,19 +547,20 @@ 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)
{
memset(&gCrt[c], 0, sizeof(CARET));
gCrt[c].cond = 0x80;
gCrt[c].code = code;
gCrt[c].x = x;
gCrt[c].y = y;
gCrt[c].view_left = gCaretTable[code].view_left;
gCrt[c].view_top = gCaretTable[code].view_top;
gCrt[c].direct = dir;
break; break;
}
} if (c == CARET_MAX)
return;
memset(&gCrt[c], 0, sizeof(CARET));
gCrt[c].cond = 0x80;
gCrt[c].code = code;
gCrt[c].x = x;
gCrt[c].y = y;
gCrt[c].view_left = gCaretTable[code].view_left;
gCrt[c].view_top = gCaretTable[code].view_top;
gCrt[c].direct = dir;
} }

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();

File diff suppressed because it is too large Load diff

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