I LOVE STEALING PIRACY STEALING LURAICHU'S CODE FROM RECSBR - https://github.com/BTTRG/recsbr
This commit is contained in:
parent
88b7892c26
commit
3bedf7136a
27 changed files with 501 additions and 234 deletions
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 10 KiB |
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.1 KiB |
BIN
game_english/data/Wav/BladeShoot.wav
Normal file
BIN
game_english/data/Wav/BladeShoot.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Cursor.wav
Normal file
BIN
game_english/data/Wav/Cursor.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/EnemyHurt.wav
Normal file
BIN
game_english/data/Wav/EnemyHurt.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Go.wav
Normal file
BIN
game_english/data/Wav/Go.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Hurt.wav
Normal file
BIN
game_english/data/Wav/Hurt.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Message.wav
Normal file
BIN
game_english/data/Wav/Message.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Select.wav
Normal file
BIN
game_english/data/Wav/Select.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Shatter.wav
Normal file
BIN
game_english/data/Wav/Shatter.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/Shoot.wav
Normal file
BIN
game_english/data/Wav/Shoot.wav
Normal file
Binary file not shown.
BIN
game_english/data/Wav/YesNo.wav
Normal file
BIN
game_english/data/Wav/YesNo.wav
Normal file
Binary file not shown.
214
src/Caret.cpp
214
src/Caret.cpp
|
|
@ -7,10 +7,11 @@
|
|||
#include "Draw.h"
|
||||
#include "Game.h"
|
||||
#include "Triangle.h"
|
||||
#include "Map.h"
|
||||
|
||||
CARET gCrt[CARET_MAX];
|
||||
|
||||
CARET_TABLE gCaretTable[18] = {
|
||||
CARET_TABLE gCaretTable[24] = {
|
||||
{0, 0},
|
||||
{0x800, 0x800},
|
||||
{0x1000, 0x1000},
|
||||
|
|
@ -28,7 +29,13 @@ CARET_TABLE gCaretTable[18] = {
|
|||
{0x2800, 0x2800},
|
||||
{0x800, 0x800},
|
||||
{0x2800, 0x800},
|
||||
{0x6800, 0x800}
|
||||
{0x6800, 0x800},
|
||||
{0x1000, 0x1000},
|
||||
{0x1000, 0x1000},
|
||||
{0x1000, 0x1000},
|
||||
{0x800, 0x800},
|
||||
{0x800, 0x800},
|
||||
{0x800, 0x800},
|
||||
};
|
||||
|
||||
void InitCaret(void)
|
||||
|
|
@ -249,7 +256,7 @@ void ActCaret05(CARET *crt)
|
|||
crt->rect = rect[crt->ani_no];
|
||||
}
|
||||
|
||||
void ActCaret07(CARET *crt)
|
||||
void ActCaret07(CARET *crt) // Booster smoke
|
||||
{
|
||||
RECT rcLeft[7] = {
|
||||
{56, 0, 64, 8},
|
||||
|
|
@ -401,16 +408,20 @@ void ActCaret11(CARET *crt)
|
|||
|
||||
void ActCaret12(CARET *crt)
|
||||
{
|
||||
RECT rcLeft[2] = {
|
||||
RECT rcLeft[5] = {
|
||||
{0, 193, 32, 225},
|
||||
{112, 0, 144, 32},
|
||||
{64, 192, 96, 225},
|
||||
{144, 0, 176, 32},
|
||||
//{144, 192, 176, 225},
|
||||
{184, 192, 216, 225},
|
||||
};
|
||||
|
||||
if (++crt->ani_wait > 2)
|
||||
{
|
||||
crt->ani_wait = 0;
|
||||
|
||||
if (++crt->ani_no > 1)
|
||||
if (++crt->ani_no > 4)
|
||||
{
|
||||
crt->cond = 0;
|
||||
#ifdef FIX_BUGS
|
||||
|
|
@ -549,8 +560,191 @@ void ActCaret17(CARET *crt)
|
|||
crt->rect = rcLeft[1];
|
||||
}
|
||||
|
||||
void ActCaret18(CARET* crt)
|
||||
{
|
||||
RECT rcLeft[7] = {
|
||||
{0, 153, 16, 169},
|
||||
{16, 153, 32, 169},
|
||||
{32, 153, 48, 169},
|
||||
{48, 153, 64, 169},
|
||||
{64, 153, 80, 169},
|
||||
{80, 153, 96, 169},
|
||||
{96, 153, 112, 169}
|
||||
};
|
||||
|
||||
switch (crt->act_no)
|
||||
{
|
||||
case 0:
|
||||
crt->ym = Random(-0x500, 0x500);
|
||||
crt->xm = Random(-0x500, 0x500);
|
||||
crt->act_no = 1;
|
||||
case 1:
|
||||
crt->ym += 0x20;
|
||||
crt->rect = rcLeft[crt->ani_no];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
crt->x += crt->xm;
|
||||
crt->y += crt->ym;
|
||||
|
||||
//crt->rect = rcLeft[0];
|
||||
crt->rect = rcLeft[crt->ani_no];
|
||||
if (++crt->ani_wait > 6) // Animation counter, how many frames until we advance to next frame
|
||||
{
|
||||
crt->ani_wait = 0; // Reset counter
|
||||
++crt->ani_no; // Increase animation frame by one
|
||||
}
|
||||
if (crt->ani_no > 6)
|
||||
{
|
||||
crt->cond = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void ActCaret19(CARET* crt)
|
||||
{
|
||||
RECT rect[4] = {
|
||||
{112, 32, 128, 48},
|
||||
{128, 32, 144, 48},
|
||||
{144, 32, 160, 48},
|
||||
{160, 32, 176, 48},
|
||||
};
|
||||
|
||||
if (++crt->ani_wait > 2)
|
||||
{
|
||||
crt->ani_wait = 0;
|
||||
|
||||
if (++crt->ani_no > 3)
|
||||
{
|
||||
crt->cond = 0;
|
||||
#ifdef FIX_BUGS
|
||||
return; // The code below will use 'ani_no' to access 'rect', even though it's now too high
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
crt->rect = rect[crt->ani_no];
|
||||
}
|
||||
|
||||
void ActCaret20(CARET* crt) // Splash caret
|
||||
{
|
||||
RECT rect[4] = {
|
||||
{0, 65, 8, 72},
|
||||
{8, 65, 16, 72},
|
||||
{16, 65, 24, 72},
|
||||
{24, 65, 32, 72},
|
||||
|
||||
};
|
||||
//crt->ym += 0x20;
|
||||
//crt->ani_no = Random(0, 4);
|
||||
crt->rect = rect[crt->ani_no];
|
||||
if (++crt->ani_wait > 6) // Animation counter, how many frames until we advance to next frame
|
||||
{
|
||||
crt->ani_wait = 0; // Reset counter
|
||||
++crt->ani_no; // Increase animation frame by one
|
||||
}
|
||||
if (crt->ani_no > 3)
|
||||
{
|
||||
crt->ani_no = 3;
|
||||
crt->cond = 0;
|
||||
}
|
||||
|
||||
switch (crt->act_no)
|
||||
{
|
||||
case 0:
|
||||
crt->ym = Random(-0x200, 0x80);
|
||||
crt->xm = Random(-0x200, 0x200);
|
||||
crt->act_no = 1;
|
||||
case 1:
|
||||
crt->ym += 0x20;
|
||||
crt->rect = rect[crt->ani_no];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (crt->ym > 0x5FF)
|
||||
crt->ym = 0x5FF;
|
||||
crt->x += crt->xm;
|
||||
crt->y += crt->ym;
|
||||
|
||||
crt->rect = rect[crt->ani_no];
|
||||
|
||||
if (crt->direct == 2)
|
||||
{
|
||||
crt->rect.top += 2;
|
||||
crt->rect.bottom += 2;
|
||||
}
|
||||
|
||||
/*if (++crt->act_wait > 10)
|
||||
{
|
||||
if (crt->flag & 1)
|
||||
crt->cond = 0;
|
||||
if (crt->flag & 4)
|
||||
crt->cond = 0;
|
||||
if (crt->flag & 8)
|
||||
crt->cond = 0;
|
||||
if (crt->flag & 0x100)
|
||||
crt->cond = 0;
|
||||
}*/
|
||||
|
||||
if (crt->y > gMap.length * 0x200 * 0x10)
|
||||
crt->cond = 0;
|
||||
}
|
||||
void ActCaret21(CARET* crt)
|
||||
{
|
||||
RECT rect[1] = {
|
||||
{128, 120, 136, 128},
|
||||
};
|
||||
|
||||
if (++crt->count1 > 30)
|
||||
crt->cond = 0;
|
||||
|
||||
if (crt->count1 < 3)
|
||||
crt->ym = -8 * 0x200;
|
||||
else
|
||||
crt->ym = 0;
|
||||
|
||||
crt->y += crt->ym;
|
||||
crt->rect = rect[crt->ani_no];
|
||||
}
|
||||
// I FUCKING HATE THIS
|
||||
void ActCaret22(CARET* crt)
|
||||
{
|
||||
RECT rect[1] = {
|
||||
{136, 120, 144, 128},
|
||||
};
|
||||
|
||||
if (++crt->count1 > 30)
|
||||
crt->cond = 0;
|
||||
|
||||
if (crt->count1 < 3)
|
||||
crt->ym = -8 * 0x200;
|
||||
else
|
||||
crt->ym = 0;
|
||||
|
||||
crt->y += crt->ym;
|
||||
crt->rect = rect[crt->ani_no];
|
||||
}
|
||||
void ActCaret23(CARET* crt)
|
||||
{
|
||||
RECT rect[1] = {
|
||||
{144, 120, 152, 128},
|
||||
};
|
||||
|
||||
if (++crt->count1 > 30)
|
||||
crt->cond = 0;
|
||||
|
||||
if (crt->count1 < 3)
|
||||
crt->ym = -8 * 0x200;
|
||||
else
|
||||
crt->ym = 0;
|
||||
|
||||
crt->y += crt->ym;
|
||||
crt->rect = rect[crt->ani_no];
|
||||
}
|
||||
typedef void (*CARETFUNCTION)(CARET*);
|
||||
CARETFUNCTION gpCaretFuncTbl[18] =
|
||||
CARETFUNCTION gpCaretFuncTbl[24] =
|
||||
{
|
||||
ActCaret00,
|
||||
ActCaret01,
|
||||
|
|
@ -570,6 +764,12 @@ CARETFUNCTION gpCaretFuncTbl[18] =
|
|||
ActCaret15,
|
||||
ActCaret16,
|
||||
ActCaret17,
|
||||
ActCaret18,
|
||||
ActCaret19,
|
||||
ActCaret20,
|
||||
ActCaret21,
|
||||
ActCaret22,
|
||||
ActCaret23,
|
||||
};
|
||||
|
||||
void ActCaret(void)
|
||||
|
|
@ -623,4 +823,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;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#include "WindowsWrapper.h"
|
||||
|
||||
#define CARET_MAX 0x40
|
||||
#define CARET_MAX 0x43
|
||||
|
||||
struct CARET_TABLE
|
||||
{
|
||||
|
|
@ -25,13 +25,15 @@ struct CARET
|
|||
int ani_wait;
|
||||
int view_left;
|
||||
int view_top;
|
||||
int count1;
|
||||
int count2;
|
||||
RECT rect;
|
||||
};
|
||||
|
||||
extern CARET gCrt[CARET_MAX];
|
||||
extern CARET_TABLE gCaretTable[18];
|
||||
extern CARET_TABLE gCaretTable[24];
|
||||
|
||||
void InitCaret(void);
|
||||
void ActCaret(void);
|
||||
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);
|
||||
|
|
@ -748,6 +748,7 @@ static int ModeAction(void)
|
|||
if (g_GameFlags & 2)
|
||||
{
|
||||
PutMyLife(TRUE);
|
||||
PutCion();
|
||||
PutArmsEnergy(TRUE);
|
||||
PutMyAir((WINDOW_WIDTH / 2) - 40, (WINDOW_HEIGHT / 2) - 16);
|
||||
PutActiveArmsList();
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
enum
|
||||
{
|
||||
SOUND_TYPE_PIXTONE,
|
||||
SOUND_TYPE_OTHER
|
||||
SOUND_TYPE_OTHER,
|
||||
SOUND_TYPE_DABABYAUDIO
|
||||
};
|
||||
|
||||
static const struct
|
||||
|
|
@ -28,93 +29,94 @@ static const struct
|
|||
const char *path;
|
||||
int type;
|
||||
} ptp_table[] = {
|
||||
// TODO - Name the files
|
||||
{1, "PixTone/001.pxt", SOUND_TYPE_PIXTONE},
|
||||
{2, "PixTone/002.pxt", SOUND_TYPE_PIXTONE},
|
||||
{3, "PixTone/003.pxt", SOUND_TYPE_PIXTONE},
|
||||
{4, "PixTone/004.pxt", SOUND_TYPE_PIXTONE},
|
||||
{5, "PixTone/005.pxt", SOUND_TYPE_PIXTONE},
|
||||
{6, "PixTone/006.pxt", SOUND_TYPE_PIXTONE},
|
||||
{7, "PixTone/007.pxt", SOUND_TYPE_PIXTONE},
|
||||
{11, "PixTone/011.pxt", SOUND_TYPE_PIXTONE},
|
||||
{12, "PixTone/012.pxt", SOUND_TYPE_PIXTONE},
|
||||
{14, "PixTone/014.pxt", SOUND_TYPE_PIXTONE},
|
||||
{15, "PixTone/015.pxt", SOUND_TYPE_PIXTONE},
|
||||
{16, "PixTone/016.pxt", SOUND_TYPE_PIXTONE},
|
||||
{17, "PixTone/017.pxt", SOUND_TYPE_PIXTONE},
|
||||
{18, "PixTone/018.pxt", SOUND_TYPE_PIXTONE},
|
||||
{20, "PixTone/020.pxt", SOUND_TYPE_PIXTONE},
|
||||
{21, "PixTone/021.pxt", SOUND_TYPE_PIXTONE},
|
||||
{22, "PixTone/022.pxt", SOUND_TYPE_PIXTONE},
|
||||
{23, "PixTone/023.pxt", SOUND_TYPE_PIXTONE},
|
||||
{24, "PixTone/024.pxt", SOUND_TYPE_PIXTONE},
|
||||
{25, "PixTone/025.pxt", SOUND_TYPE_PIXTONE},
|
||||
{26, "PixTone/026.pxt", SOUND_TYPE_PIXTONE},
|
||||
{27, "PixTone/027.pxt", SOUND_TYPE_PIXTONE},
|
||||
{28, "PixTone/028.pxt", SOUND_TYPE_PIXTONE},
|
||||
{29, "PixTone/029.pxt", SOUND_TYPE_PIXTONE},
|
||||
{30, "PixTone/030.pxt", SOUND_TYPE_PIXTONE},
|
||||
{31, "PixTone/031.pxt", SOUND_TYPE_PIXTONE},
|
||||
{32, "PixTone/032.pxt", SOUND_TYPE_PIXTONE},
|
||||
{33, "PixTone/033.pxt", SOUND_TYPE_PIXTONE},
|
||||
{34, "PixTone/034.pxt", SOUND_TYPE_PIXTONE},
|
||||
{35, "PixTone/035.pxt", SOUND_TYPE_PIXTONE},
|
||||
{37, "PixTone/037.pxt", SOUND_TYPE_PIXTONE},
|
||||
{38, "PixTone/038.pxt", SOUND_TYPE_PIXTONE},
|
||||
{39, "PixTone/039.pxt", SOUND_TYPE_PIXTONE},
|
||||
{40, "PixTone/040.pxt", SOUND_TYPE_PIXTONE},
|
||||
{41, "PixTone/041.pxt", SOUND_TYPE_PIXTONE},
|
||||
{42, "PixTone/042.pxt", SOUND_TYPE_PIXTONE},
|
||||
{43, "PixTone/043.pxt", SOUND_TYPE_PIXTONE},
|
||||
{44, "PixTone/044.pxt", SOUND_TYPE_PIXTONE},
|
||||
{45, "PixTone/045.pxt", SOUND_TYPE_PIXTONE},
|
||||
{46, "PixTone/046.pxt", SOUND_TYPE_PIXTONE},
|
||||
{47, "PixTone/047.pxt", SOUND_TYPE_PIXTONE},
|
||||
{48, "PixTone/048.pxt", SOUND_TYPE_PIXTONE},
|
||||
{49, "PixTone/049.pxt", SOUND_TYPE_PIXTONE},
|
||||
{50, "PixTone/050.pxt", SOUND_TYPE_PIXTONE},
|
||||
{51, "PixTone/051.pxt", SOUND_TYPE_PIXTONE},
|
||||
{52, "PixTone/052.pxt", SOUND_TYPE_PIXTONE},
|
||||
{53, "PixTone/053.pxt", SOUND_TYPE_PIXTONE},
|
||||
{54, "PixTone/054.pxt", SOUND_TYPE_PIXTONE},
|
||||
{55, "PixTone/055.pxt", SOUND_TYPE_PIXTONE},
|
||||
{56, "PixTone/056.pxt", SOUND_TYPE_PIXTONE},
|
||||
{57, "PixTone/057.pxt", SOUND_TYPE_PIXTONE},
|
||||
{58, "PixTone/058.pxt", SOUND_TYPE_PIXTONE},
|
||||
{59, "PixTone/059.pxt", SOUND_TYPE_PIXTONE},
|
||||
{60, "PixTone/060.pxt", SOUND_TYPE_PIXTONE},
|
||||
{61, "PixTone/061.pxt", SOUND_TYPE_PIXTONE},
|
||||
{62, "PixTone/062.pxt", SOUND_TYPE_PIXTONE},
|
||||
{63, "PixTone/063.pxt", SOUND_TYPE_PIXTONE},
|
||||
{64, "PixTone/064.pxt", SOUND_TYPE_PIXTONE},
|
||||
{65, "PixTone/065.pxt", SOUND_TYPE_PIXTONE},
|
||||
{70, "PixTone/070.pxt", SOUND_TYPE_PIXTONE},
|
||||
{71, "PixTone/071.pxt", SOUND_TYPE_PIXTONE},
|
||||
{72, "PixTone/072.pxt", SOUND_TYPE_PIXTONE},
|
||||
{100, "PixTone/100.pxt", SOUND_TYPE_PIXTONE},
|
||||
{101, "PixTone/101.pxt", SOUND_TYPE_PIXTONE},
|
||||
{102, "PixTone/102.pxt", SOUND_TYPE_PIXTONE},
|
||||
{103, "PixTone/103.pxt", SOUND_TYPE_PIXTONE},
|
||||
{104, "PixTone/104.pxt", SOUND_TYPE_PIXTONE},
|
||||
{105, "PixTone/105.pxt", SOUND_TYPE_PIXTONE},
|
||||
{106, "PixTone/106.pxt", SOUND_TYPE_PIXTONE},
|
||||
{107, "PixTone/107.pxt", SOUND_TYPE_PIXTONE},
|
||||
{108, "PixTone/108.pxt", SOUND_TYPE_PIXTONE},
|
||||
{109, "PixTone/109.pxt", SOUND_TYPE_PIXTONE},
|
||||
{110, "PixTone/110.pxt", SOUND_TYPE_PIXTONE},
|
||||
{111, "PixTone/111.pxt", SOUND_TYPE_PIXTONE},
|
||||
{112, "PixTone/112.pxt", SOUND_TYPE_PIXTONE},
|
||||
{113, "PixTone/113.pxt", SOUND_TYPE_PIXTONE},
|
||||
{114, "PixTone/114.pxt", SOUND_TYPE_PIXTONE},
|
||||
{115, "PixTone/115.pxt", SOUND_TYPE_PIXTONE},
|
||||
{116, "PixTone/116.pxt", SOUND_TYPE_PIXTONE},
|
||||
{117, "PixTone/117.pxt", SOUND_TYPE_PIXTONE},
|
||||
// TODO - Remove names
|
||||
{1, "PixTone/007.pxt", SOUND_TYPE_PIXTONE}, //menu move blip
|
||||
{2, "Wav/Message.wav", SOUND_TYPE_OTHER}, //msg blip
|
||||
{3, "PixTone/003.pxt", SOUND_TYPE_PIXTONE}, //bonkhead
|
||||
{4, "PixTone/004.pxt", SOUND_TYPE_PIXTONE}, //switch weapon
|
||||
{5, "Wav/YesNo.wav", SOUND_TYPE_OTHER}, //menu prompt
|
||||
{6, "PixTone/006.pxt", SOUND_TYPE_PIXTONE}, //critter hop(?)
|
||||
{7, "PixTone/007.pxt", SOUND_TYPE_PIXTONE}, //nothing, DO NOT EDIT OR I'LL KILL YOU
|
||||
{11, "PixTone/011.pxt", SOUND_TYPE_PIXTONE},//swell sound, used in ballos fight
|
||||
{12, "PixTone/012.pxt", SOUND_TYPE_PIXTONE},//door
|
||||
{14, "PixTone/045.pxt", SOUND_TYPE_PIXTONE},//destroy snack block
|
||||
{15, "PixTone/015.pxt", SOUND_TYPE_PIXTONE},//touch exp dorito
|
||||
{16, "Wav/Hurt.wav", SOUND_TYPE_OTHER},//jump
|
||||
{17, "PixTone/007.pxt", SOUND_TYPE_PIXTONE},//hurt
|
||||
{18, "Wav/Select.wav", SOUND_TYPE_OTHER},//RIP
|
||||
{20, "PixTone/020.pxt", SOUND_TYPE_PIXTONE},//menu select
|
||||
{21, "PixTone/021.pxt", SOUND_TYPE_PIXTONE},//health refill
|
||||
{22, "PixTone/022.pxt", SOUND_TYPE_PIXTONE},//bubble
|
||||
{23, "PixTone/023.pxt", SOUND_TYPE_PIXTONE},//chest open
|
||||
{24, "PixTone/024.pxt", SOUND_TYPE_PIXTONE},//quote thud
|
||||
{25, "PixTone/025.pxt", SOUND_TYPE_PIXTONE},//walking
|
||||
{26, "PixTone/026.pxt", SOUND_TYPE_PIXTONE},//funne explosion!
|
||||
{27, "PixTone/027.pxt", SOUND_TYPE_PIXTONE},//quake (BOMMMMMMM)
|
||||
{28, "PixTone/028.pxt", SOUND_TYPE_PIXTONE},//level up
|
||||
{29, "PixTone/029.pxt", SOUND_TYPE_PIXTONE},//shot hit
|
||||
{30, "PixTone/030.pxt", SOUND_TYPE_PIXTONE},//teleporter sound effect
|
||||
{31, "PixTone/031.pxt", SOUND_TYPE_PIXTONE},//critter jump
|
||||
{32, "PixTone/032.pxt", SOUND_TYPE_PIXTONE},//shot bounce, played when shooting an an invincible enemy (clink!)
|
||||
{33, "PixTone/033.pxt", SOUND_TYPE_PIXTONE},//polar star shot level 1-2
|
||||
{34, "PixTone/034.pxt", SOUND_TYPE_PIXTONE},//woooosh sound, I think this has something to do with a weapon
|
||||
{35, "PixTone/035.pxt", SOUND_TYPE_PIXTONE},//fireball shot
|
||||
{37, "PixTone/037.pxt", SOUND_TYPE_PIXTONE},//fat ass explosion
|
||||
{38, "PixTone/038.pxt", SOUND_TYPE_PIXTONE},//no ammo
|
||||
{39, "Wav/Shoot.wav", SOUND_TYPE_OTHER},//get item
|
||||
{40, "PixTone/040.pxt", SOUND_TYPE_PIXTONE},//labyrinth critter fire bubble (I think)
|
||||
{41, "PixTone/041.pxt", SOUND_TYPE_PIXTONE},//Waterway stream
|
||||
{42, "PixTone/042.pxt", SOUND_TYPE_PIXTONE},//get missle
|
||||
{43, "PixTone/043.pxt", SOUND_TYPE_PIXTONE},//computer bep
|
||||
{44, "PixTone/044.pxt", SOUND_TYPE_PIXTONE},//missle hit
|
||||
{45, "PixTone/045.pxt", SOUND_TYPE_PIXTONE},//xp dorito bounce
|
||||
{46, "PixTone/046.pxt", SOUND_TYPE_PIXTONE},//ironH shot fly
|
||||
{47, "PixTone/047.pxt", SOUND_TYPE_PIXTONE},//fast, short explosion (explosion2)
|
||||
{48, "PixTone/048.pxt", SOUND_TYPE_PIXTONE},//bubbler lv. 1 shot
|
||||
{49, "PixTone/049.pxt", SOUND_TYPE_PIXTONE},//lv. 3 polar star shot
|
||||
{50, "PixTone/050.pxt", SOUND_TYPE_PIXTONE},//mimiga death squeak
|
||||
{51, "Wav/EnemyHurt.wav", SOUND_TYPE_OTHER},//enemy hurt
|
||||
{52, "Wav/EnemyHurt.wav", SOUND_TYPE_OTHER},//big enemy hurt
|
||||
{53, "Wav/EnemyHurt.wav", SOUND_TYPE_OTHER},//small enemy hurt
|
||||
{54, "Wav/EnemyHurt.wav", SOUND_TYPE_OTHER},//"cool" enemy hurt
|
||||
{55, "PixTone/055.pxt", SOUND_TYPE_PIXTONE},//another enemy squeak
|
||||
//{56, "PixTone/056.pxt", SOUND_TYPE_PIXTONE},//watersplash
|
||||
{57, "PixTone/057.pxt", SOUND_TYPE_PIXTONE},//weird and fast enemy hurt sfct
|
||||
{58, "PixTone/058.pxt", SOUND_TYPE_PIXTONE},//short noise???
|
||||
{59, "PixTone/059.pxt", SOUND_TYPE_PIXTONE},//spur charge 1
|
||||
{60, "PixTone/060.pxt", SOUND_TYPE_PIXTONE},//spur charge 2
|
||||
{61, "PixTone/061.pxt", SOUND_TYPE_PIXTONE},//spur charge 3
|
||||
{62, "PixTone/062.pxt", SOUND_TYPE_PIXTONE},//spur fire lv. 2
|
||||
{63, "PixTone/063.pxt", SOUND_TYPE_PIXTONE},//spur fire lv. 3
|
||||
{64, "PixTone/064.pxt", SOUND_TYPE_PIXTONE},//spur fire MAX
|
||||
{65, "PixTone/065.pxt", SOUND_TYPE_PIXTONE},//Honey, your spur is fully charged
|
||||
{70, "Wav/Shatter.wav", SOUND_TYPE_OTHER},//small explosion
|
||||
{71, "PixTone/071.pxt", SOUND_TYPE_PIXTONE},//lil crash
|
||||
{72, "PixTone/072.pxt", SOUND_TYPE_PIXTONE},//fat ass crash
|
||||
{100, "PixTone/100.pxt", SOUND_TYPE_PIXTONE},//I have no idea, sounds like a click
|
||||
{101, "PixTone/101.pxt", SOUND_TYPE_PIXTONE},//Lightning strike (RIP king fly high)
|
||||
{102, "PixTone/102.pxt", SOUND_TYPE_PIXTONE},//"jaws"
|
||||
{103, "PixTone/103.pxt", SOUND_TYPE_PIXTONE},//curly charges her gun
|
||||
{104, "PixTone/104.pxt", SOUND_TYPE_PIXTONE},//I have no idea, sounds like a squeal
|
||||
{105, "PixTone/105.pxt", SOUND_TYPE_PIXTONE},//puppy bark
|
||||
{106, "PixTone/106.pxt", SOUND_TYPE_PIXTONE},//blade shot
|
||||
{107, "PixTone/107.pxt", SOUND_TYPE_PIXTONE},//block move LMAO
|
||||
{108, "PixTone/108.pxt", SOUND_TYPE_PIXTONE},//idk, sounds like a large enemy hop or a fart
|
||||
{109, "PixTone/109.pxt", SOUND_TYPE_PIXTONE},//critter FLY
|
||||
{110, "PixTone/110.pxt", SOUND_TYPE_PIXTONE},//idk, click
|
||||
{111, "PixTone/111.pxt", SOUND_TYPE_PIXTONE},//idk, low pitched thud
|
||||
{112, "PixTone/112.pxt", SOUND_TYPE_PIXTONE},//idk, slightly higher pitched thud
|
||||
{113, "PixTone/113.pxt", SOUND_TYPE_PIXTONE},//booster
|
||||
{114, "PixTone/114.pxt", SOUND_TYPE_PIXTONE},//ALERT: CORE IS WOUNDED, CORE IS WOUNDED
|
||||
{115, "PixTone/115.pxt", SOUND_TYPE_PIXTONE},//Core thrusting towards your ass
|
||||
{116, "PixTone/116.pxt", SOUND_TYPE_PIXTONE},//epic idk sound
|
||||
{117, "PixTone/117.pxt", SOUND_TYPE_PIXTONE},//idk sound
|
||||
{150, "PixTone/150.pxt", SOUND_TYPE_PIXTONE},
|
||||
{151, "PixTone/151.pxt", SOUND_TYPE_PIXTONE},
|
||||
{152, "PixTone/152.pxt", SOUND_TYPE_PIXTONE},
|
||||
{153, "PixTone/153.pxt", SOUND_TYPE_PIXTONE},
|
||||
{154, "PixTone/154.pxt", SOUND_TYPE_PIXTONE},
|
||||
{155, "PixTone/155.pxt", SOUND_TYPE_PIXTONE}
|
||||
|
||||
};
|
||||
|
||||
// Original decompiled from `PTone103.exe` - has since been modified
|
||||
|
|
@ -186,6 +188,7 @@ static BOOL LoadPixToneFile(const char *filename, PIXTONEPARAMETER *pixtone_para
|
|||
p += increment;
|
||||
sscanf(p, "cy :%d\n\n%n", &pixtone_parameters[i].pointCy, &increment);
|
||||
p += increment;
|
||||
|
||||
}
|
||||
|
||||
free(file_buffer);
|
||||
|
|
@ -196,6 +199,7 @@ static BOOL LoadPixToneFile(const char *filename, PIXTONEPARAMETER *pixtone_para
|
|||
return success;
|
||||
}
|
||||
|
||||
|
||||
BOOL LoadGenericData(void)
|
||||
{
|
||||
int pt_size;
|
||||
|
|
@ -235,6 +239,13 @@ BOOL LoadGenericData(void)
|
|||
|
||||
if (bError)
|
||||
return FALSE;
|
||||
|
||||
LoadSoundObject("data/PixTone/150.wav", 150);
|
||||
LoadSoundObject("data/PixTone/151.wav", 151);
|
||||
LoadSoundObject("data/PixTone/152.wav", 152);
|
||||
LoadSoundObject("data/PixTone/153.wav", 153);
|
||||
LoadSoundObject("data/PixTone/154.wav", 154);
|
||||
LoadSoundObject("data/PixTone/155.wav", 155);
|
||||
|
||||
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_SCREEN_GRAB, TRUE);
|
||||
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_BACKGROUND, FALSE);
|
||||
|
|
@ -246,7 +257,6 @@ BOOL LoadGenericData(void)
|
|||
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1, FALSE);
|
||||
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2, FALSE);
|
||||
MakeSurface_Generic(320, 16 * (MAX_STRIP - 1), SURFACE_ID_CREDIT_CAST, FALSE);
|
||||
|
||||
pt_size = 0;
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(ptp_table) / sizeof(ptp_table[0]); ++i)
|
||||
|
|
@ -265,6 +275,7 @@ BOOL LoadGenericData(void)
|
|||
++ptp_num;
|
||||
|
||||
pt_size += MakePixToneObject(pixtone_parameters, ptp_num, ptp_table[i].slot);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
@ -274,6 +285,46 @@ BOOL LoadGenericData(void)
|
|||
ExtraSound_LoadSFX(path.c_str(), ptp_table[i].slot);
|
||||
break;
|
||||
#endif
|
||||
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,,,,,,***/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@@*.....,.@@%,,,,,,,,,,,/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@..........@.@*,,,,,,,,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@.....,,...*@@@@@/,,,,,*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@.....@@@..(@@/@@@,,,*,**,*,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@.....**/,.,,.,,,,,,*,,,***,&@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@*...... . .,@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@. .% &...,,,,... . @@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@ ,,,,*,*.,,**//(//*****//#//@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@@@,,*,*,,.,,,**///*,.,*//((%&(/*%@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@@@#,##,,,,*..,,,,/((*,,*(#((/(***,/**@@@@@@@@@@@@@@@@@@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@@@*/.,,.,*,,,**,,*,*((((#(//(##(*(,/*(,**,#@@@@@@@@@/%&*@@@@@
|
||||
//@@@@@@@@@@@@@@@@@@@*/**//.,,*/((*,*,*/(#&%(#/,*(##(//@@,,****,,****@@@*#*(@@@@@@
|
||||
//@@@@@@(%@@@@@@@@**/*,*//,@(,,**.,****,../#%####(.//.@@@@@@,,**,/(/((((//(#@@@@@@
|
||||
//@@@@@@((#&@@@*//(***#(*&@@@#.,.,,*/****////*, .(//,@@@@@...,,,/(((((%((###*@@@@@
|
||||
//@@@@@@*******//**/(#(/(*,@@@*.,,*,.(#&&@@&%%//#/*,@@@@@@,,..,/((/(//(((/#%#@@@@@
|
||||
//@@@@@@*/***/*/*/((//((%#(*@@@@/,,**//#(#(((((#(//*@@@@@@,,,,*///(*((((######@@@@
|
||||
//@@@@@@/***/*///*///#(*,//@&&&&@#.,**,,,..,*((#/,,/(@&@@@@@@**,**/*((#((#%#%(@@@@
|
||||
//@@@@@#***////**((((//(/(/&&&&&/,.. ,***////(/..,,.&@@@@@&@@@@@&/,*//(((#%%%%#(@@
|
||||
//@@@@@***///(/****/(////&&@&&&&%#,.. ,,,.....,,&%@@@@@@@&@@@@@@@@*****#&#%@#&@
|
||||
//@@@@@*////((((((/**%&&&&&&&&&&@(&&&%%%&%%&&&&&&&&,@@@@&@@@@@@@@@@@@&@***,(@@@@@%
|
||||
//@@@@***//(((((//%&&&&&&&&&&&&&&*%%&&&%%&&&&&&&%##&&&@@@@@@@@@@@@@@&@%&#%&,&(@@@@
|
||||
//@@@@**,*(//((/&&&&&&&&&&@&&&&&&%*&&&&&&&&&&&&%/%&&@@@@@&@@@@@@@@@&@@@@,,,,,((((/
|
||||
//@@((**,**//((@@@@@@&&@@@@&&@@@@@&(&@@&&&&&&&%/#&&@@@@@@@@@@@@@@@@@@@@@**,/*/##(/
|
||||
//@@@#.,&#/((((%&@@@@@&&@@@@@@&@@@&&&&@@@&&&&&%%&&&&&@@@@@@@@@@@@@@@@@@@&***///###
|
||||
//@@,,,**,%(%%%&&&&@@&&&&@@@@@@@@@@%/&@@@&&&%&(&&&&&&&&&&&@@@@@@@@@@@@@@@*,,////(#
|
||||
//@*,,,,/**,/(@&&&&&&&&@@@@@@@@&&@@@&#@@@@&&&%&&&&%&&&&&&&&&@@@@@@@@&@*,****////(#
|
||||
//&,**,,**,*((/%&&&&&&&&@@@@@@@@@@@@&%*&&(*&&&&&&&&&&&&&&&&&&&@@@@@/***,*****((///
|
||||
|
||||
case SOUND_TYPE_DABABYAUDIO:
|
||||
{
|
||||
std::string path = std::string("data/") + ptp_table[i].path;
|
||||
LoadSoundObject(path.c_str(), ptp_table[i].slot);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -282,4 +333,4 @@ BOOL LoadGenericData(void)
|
|||
// sprintf(str, "PixTone = %d byte", pt_size);
|
||||
// There must have been some kind of console print function here or something
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -39,6 +39,7 @@ void InitMyChar(void)
|
|||
gMC.life = 3;
|
||||
gMC.max_life = 3;
|
||||
gMC.unit = 0;
|
||||
cion = 0;
|
||||
|
||||
// This is initialized with the values the game uses in vanilla
|
||||
gMC.physics_normal.max_dash = 0x32C;
|
||||
|
|
@ -445,7 +446,7 @@ void ActMyChar_Normal(BOOL bKey)
|
|||
if (bKey)
|
||||
{
|
||||
// Look up and down
|
||||
if (gKey & gKeyUp)
|
||||
/*if (gKey & gKeyUp)
|
||||
gMC.up = TRUE;
|
||||
else
|
||||
gMC.up = FALSE;
|
||||
|
|
@ -453,7 +454,7 @@ void ActMyChar_Normal(BOOL bKey)
|
|||
if (gKey & gKeyDown && !(gMC.flag & 8))
|
||||
gMC.down = TRUE;
|
||||
else
|
||||
gMC.down = FALSE;
|
||||
gMC.down = FALSE;*/
|
||||
|
||||
if (gKeyTrg & gKeyJump && (gMC.flag & 8 || gMC.flag & 0x10 || gMC.flag & 0x20))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -800,7 +800,8 @@ void HitMyCharNpChar(void)
|
|||
if (hit != 0 && gNPC[i].code_char == 1)
|
||||
{
|
||||
PlaySoundObject(14, SOUND_MODE_PLAY);
|
||||
AddExpMyChar(gNPC[i].exp);
|
||||
// AddExpMyChar(gNPC[i].exp);
|
||||
cion+= 1;
|
||||
gNPC[i].cond = 0;
|
||||
}
|
||||
|
||||
|
|
@ -914,4 +915,4 @@ void HitMyCharBoss(void)
|
|||
|
||||
if (gMC.ques)
|
||||
SetCaret(gMC.x, gMC.y, 9, 0);
|
||||
}
|
||||
}
|
||||
198
src/MycParam.cpp
198
src/MycParam.cpp
|
|
@ -37,19 +37,35 @@ ARMS_LEVEL gArmsLevelTable[14] =
|
|||
{{40, 60, 200}}
|
||||
};
|
||||
|
||||
|
||||
void SetDestroyMyChar(int x, int y, int w, int num)
|
||||
{
|
||||
int i;
|
||||
int offset_x;
|
||||
int offset_y;
|
||||
|
||||
// Create smoke
|
||||
w /= 0x200;
|
||||
for (i = 0; i < num; ++i)
|
||||
{
|
||||
offset_x = Random(-w, w) * 0x200;
|
||||
offset_y = Random(-w, w) * 0x200;
|
||||
SetNpChar(4, x + offset_x, y + offset_y, 0, 0, 1, NULL, 0x100);//SetNpChar(NPC_SMOKE, x + offset_x, y + offset_y, 0, 0, 0, NULL, 0x100);
|
||||
}
|
||||
|
||||
// Flash effect
|
||||
SetCaret(x, y, 12, 0);
|
||||
}
|
||||
void AddExpMyChar(int x)
|
||||
{
|
||||
int lv = gArmsData[gSelectedArms].level - 1;
|
||||
/*int lv = gArmsData[gSelectedArms].level - 1;
|
||||
int arms_code = gArmsData[gSelectedArms].code;
|
||||
|
||||
gArmsData[gSelectedArms].exp += x;
|
||||
|
||||
if (lv == 2)
|
||||
{
|
||||
if (gArmsData[gSelectedArms].exp >= gArmsLevelTable[arms_code].exp[lv])
|
||||
{
|
||||
gArmsData[gSelectedArms].exp = gArmsLevelTable[arms_code].exp[lv];
|
||||
|
||||
if (gMC.equip & EQUIP_WHIMSICAL_STAR)
|
||||
{
|
||||
if (gMC.star < 3)
|
||||
|
|
@ -65,7 +81,6 @@ void AddExpMyChar(int x)
|
|||
{
|
||||
++gArmsData[gSelectedArms].level;
|
||||
gArmsData[gSelectedArms].exp = 0;
|
||||
|
||||
if (gArmsData[gSelectedArms].code != 13)
|
||||
{
|
||||
PlaySoundObject(27, SOUND_MODE_PLAY);
|
||||
|
|
@ -73,16 +88,27 @@ void AddExpMyChar(int x)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (gArmsData[gSelectedArms].code != 13)
|
||||
{
|
||||
gMC.exp_count += x;
|
||||
gMC.exp_wait = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
gMC.exp_wait = 10;
|
||||
gArmsData[gSelectedArms].level = 1;
|
||||
gArmsData[gSelectedArms].exp = 0;
|
||||
}
|
||||
}*/
|
||||
cion += x;
|
||||
if (x == 1) {
|
||||
SetCaret(gMC.x, gMC.y, 21, 0);
|
||||
}
|
||||
|
||||
if (gArmsData[gSelectedArms].code != 13)
|
||||
{
|
||||
gMC.exp_count += x;
|
||||
gMC.exp_wait = 30;
|
||||
else if (x == 3) {
|
||||
SetCaret(gMC.x, gMC.y, 22, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gMC.exp_wait = 10;
|
||||
else if (x == 8) {
|
||||
SetCaret(gMC.x, gMC.y, 23, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -175,7 +201,7 @@ void DamageMyChar(int damage)
|
|||
{
|
||||
PlaySoundObject(17, SOUND_MODE_PLAY);
|
||||
gMC.cond = 0;
|
||||
SetDestroyNpChar(gMC.x, gMC.y, 0x1400, 0x40);
|
||||
SetDestroyMyChar(gMC.x, gMC.y, 0x1400, 0x40);
|
||||
StartTextScript(40);
|
||||
}
|
||||
}
|
||||
|
|
@ -233,25 +259,30 @@ void AddMaxLifeMyChar(int val)
|
|||
gMC.lifeBr = gMC.life;
|
||||
}
|
||||
|
||||
void PutActiveArmsList(void)
|
||||
{
|
||||
RECT rect = {0, 0, 0, 16};
|
||||
|
||||
// Draw icon
|
||||
rect.left = gArmsData[gSelectedArms].code * 32;
|
||||
rect.right = rect.left + 32;
|
||||
// Put your X and Y values here
|
||||
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(16), PixelToScreenCoord(16), &rect, SURFACE_ID_ARMS_IMAGE);
|
||||
|
||||
}
|
||||
void PutArmsEnergy(BOOL flash)
|
||||
{
|
||||
static unsigned char add_flash;
|
||||
|
||||
RECT rcPer = {72, 48, 80, 56};
|
||||
RECT rcLv = {80, 80, 96, 88};
|
||||
RECT rcView = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
|
||||
RECT rcNone = {80, 48, 96, 56};
|
||||
|
||||
if (gArmsEnergyX > 16)
|
||||
gArmsEnergyX -= 2;
|
||||
if (gArmsEnergyX < 16)
|
||||
gArmsEnergyX += 2;
|
||||
RECT rcPer = { 72, 48, 80, 56 };
|
||||
RECT rcView = { 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT };
|
||||
RECT rcNone = { 80, 48, 96, 56 };
|
||||
|
||||
// Draw max ammo
|
||||
if (gArmsData[gSelectedArms].max_num)
|
||||
{
|
||||
PutNumber4(gArmsEnergyX + 32, 16, gArmsData[gSelectedArms].num, FALSE);
|
||||
PutNumber4(gArmsEnergyX + 32, 24, gArmsData[gSelectedArms].max_num, FALSE);
|
||||
PutNumber4(32, 24, gArmsData[gSelectedArms].num, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -263,15 +294,6 @@ void PutArmsEnergy(BOOL flash)
|
|||
if (flash == TRUE && (gMC.shock / 2) % 2)
|
||||
return;
|
||||
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX + 32), PixelToScreenCoord(24), &rcPer, SURFACE_ID_TEXT_BOX);
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX), PixelToScreenCoord(32), &rcLv, SURFACE_ID_TEXT_BOX);
|
||||
PutNumber4(gArmsEnergyX - 8, 32, gArmsData[gSelectedArms].level, FALSE);
|
||||
|
||||
RECT rcExpBox = {0, 72, 40, 80};
|
||||
RECT rcExpVal = {0, 80, 0, 88};
|
||||
RECT rcExpMax = {40, 72, 80, 80};
|
||||
RECT rcExpFlash = {40, 80, 80, 88};
|
||||
|
||||
int lv = gArmsData[gSelectedArms].level - 1;
|
||||
|
||||
#ifdef FIX_BUGS
|
||||
|
|
@ -281,97 +303,37 @@ void PutArmsEnergy(BOOL flash)
|
|||
if (lv < 0)
|
||||
lv = 0;
|
||||
#endif
|
||||
|
||||
int arms_code = gArmsData[gSelectedArms].code;
|
||||
int exp_now = gArmsData[gSelectedArms].exp;
|
||||
int exp_next = gArmsLevelTable[arms_code].exp[lv];
|
||||
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX + 24), PixelToScreenCoord(32), &rcExpBox, SURFACE_ID_TEXT_BOX);
|
||||
|
||||
if (lv == 2 && gArmsData[gSelectedArms].exp == gArmsLevelTable[arms_code].exp[lv])
|
||||
{
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX + 24), PixelToScreenCoord(32), &rcExpMax, SURFACE_ID_TEXT_BOX);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exp_next != 0)
|
||||
rcExpVal.right += (exp_now * 40) / exp_next;
|
||||
else
|
||||
rcExpVal.right = 0;
|
||||
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX + 24), PixelToScreenCoord(32), &rcExpVal, SURFACE_ID_TEXT_BOX);
|
||||
}
|
||||
|
||||
if (gMC.exp_wait && ((add_flash++ / 2) % 2))
|
||||
PutBitmap3(&rcView, PixelToScreenCoord(gArmsEnergyX + 24), PixelToScreenCoord(32), &rcExpFlash, SURFACE_ID_TEXT_BOX);
|
||||
}
|
||||
|
||||
void PutActiveArmsList(void)
|
||||
{
|
||||
int x;
|
||||
int a;
|
||||
RECT rect = {0, 0, 0, 16};
|
||||
|
||||
int arms_num = 0;
|
||||
while (gArmsData[arms_num].code != 0)
|
||||
++arms_num;
|
||||
|
||||
if (arms_num == 0)
|
||||
return;
|
||||
|
||||
for (a = 0; a < arms_num; ++a)
|
||||
{
|
||||
// Get X position to draw at
|
||||
x = ((a - gSelectedArms) * 16) + gArmsEnergyX;
|
||||
|
||||
if (x < 8)
|
||||
x += 48 + (arms_num * 16);
|
||||
else if (x >= 24)
|
||||
x += 48;
|
||||
|
||||
if (x >= 72 + ((arms_num - 1) * 16))
|
||||
x -= 48 + (arms_num * 16);
|
||||
if (x < 72 && x >= 24)
|
||||
x -= 48;
|
||||
|
||||
// Draw icon
|
||||
rect.left = gArmsData[a].code * 16;
|
||||
rect.right = rect.left + 16;
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(x), PixelToScreenCoord(16), &rect, SURFACE_ID_ARMS_IMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
void PutMyLife(BOOL flash)
|
||||
{
|
||||
RECT rcCase = {0, 40, 232, 48};
|
||||
RECT rcLife = {0, 24, 232, 32};
|
||||
RECT rcBr = {0, 32, 232, 40};
|
||||
static unsigned int add_flash;
|
||||
|
||||
if (flash == TRUE && gMC.shock / 2 % 2)
|
||||
RECT rcLife[2] = {
|
||||
{0, 151, 7, 158},
|
||||
{0, 144, 7, 151},
|
||||
};
|
||||
if (flash == TRUE && (gMC.shock / 2) % 2 && gMC.life != 1)
|
||||
return;
|
||||
|
||||
if (gMC.lifeBr < gMC.life)
|
||||
gMC.lifeBr = gMC.life;
|
||||
|
||||
if (gMC.lifeBr > gMC.life)
|
||||
if (flash == TRUE && gMC.life == 1 && ((add_flash++ / 2) % 2))
|
||||
return;
|
||||
for (int i = 0; i < gMC.max_life - 1; i++) // For every 1 in max life, add 1 to i, and run the following code
|
||||
{
|
||||
if (++gMC.lifeBr_count > 30)
|
||||
--gMC.lifeBr;
|
||||
}
|
||||
else
|
||||
{
|
||||
gMC.lifeBr_count = 0;
|
||||
// Put a heart
|
||||
PutBitmap3(
|
||||
&grcGame, // Target
|
||||
// On the next two lines TT7 forgot PixelToScreenCoord, which is needed for the PutBitmap to work on resolutions other than 1x
|
||||
PixelToScreenCoord(16 + (8 * i)), // X position, offset by 8 for every 1 in i
|
||||
PixelToScreenCoord(225), // Y position,
|
||||
& rcLife[gMC.life - 1 > i], // Which rect to use, 'gMC.life - 1 > i' checks if the current heart that is being drawn is full or not, returns 0 if it's not and 1 if it is
|
||||
SURFACE_ID_TEXT_BOX); // Surface
|
||||
}
|
||||
}
|
||||
|
||||
// Draw bar
|
||||
rcCase.right = 64;
|
||||
rcLife.right = ((gMC.life * 40) / gMC.max_life) - 1;
|
||||
rcBr.right = ((gMC.lifeBr * 40) / gMC.max_life) - 1;
|
||||
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(16), PixelToScreenCoord(40), &rcCase, SURFACE_ID_TEXT_BOX);
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(40), PixelToScreenCoord(40), &rcBr, SURFACE_ID_TEXT_BOX);
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(40), PixelToScreenCoord(40), &rcLife, SURFACE_ID_TEXT_BOX);
|
||||
PutNumber4(8, 40, gMC.lifeBr, FALSE);
|
||||
void PutCion()
|
||||
{
|
||||
RECT rcCion = {208, 112, 226, 118};
|
||||
PutBitmap3(&grcGame, PixelToScreenCoord(51), PixelToScreenCoord(218), &rcCion, SURFACE_ID_TEXT_BOX);
|
||||
PutNumber4(17, 217, cion, FALSE);
|
||||
}
|
||||
|
||||
void PutMyAir(int x, int y)
|
||||
|
|
@ -568,4 +530,4 @@ int LoadTimeCounter(void)
|
|||
|
||||
time_count = rec.counter[0];
|
||||
return time_count;
|
||||
}
|
||||
}
|
||||
|
|
@ -26,7 +26,8 @@ void AddMaxLifeMyChar(int val);
|
|||
void PutArmsEnergy(BOOL flash);
|
||||
void PutActiveArmsList(void);
|
||||
void PutMyLife(BOOL flash);
|
||||
void PutCion();
|
||||
void PutMyAir(int x, int y);
|
||||
void PutTimeCounter(int x, int y);
|
||||
BOOL SaveTimeCounter(void);
|
||||
int LoadTimeCounter(void);
|
||||
int LoadTimeCounter(void);
|
||||
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "ArmsItem.h"
|
||||
#include "Caret.h"
|
||||
#include "CommonDefines.h"
|
||||
#include "Draw.h"
|
||||
#include "File.h"
|
||||
#include "Flags.h"
|
||||
|
|
@ -166,13 +167,14 @@ void SetDestroyNpChar(int x, int y, int w, int num)
|
|||
{
|
||||
offset_x = Random(-w, w) * 0x200;
|
||||
offset_y = Random(-w, w) * 0x200;
|
||||
SetNpChar(NPC_SMOKE, x + offset_x, y + offset_y, 0, 0, 0, NULL, 0x100);
|
||||
SetCaret(x + offset_x, y + offset_y, 18, 0);//SetNpChar(NPC_SMOKE, x + offset_x, y + offset_y, 0, 0, 0, NULL, 0x100);
|
||||
}
|
||||
|
||||
// Flash effect
|
||||
SetCaret(x, y, 12, 0);
|
||||
}
|
||||
|
||||
|
||||
void SetDestroyNpCharUp(int x, int y, int w, int num)
|
||||
{
|
||||
int i;
|
||||
|
|
@ -185,7 +187,7 @@ void SetDestroyNpCharUp(int x, int y, int w, int num)
|
|||
{
|
||||
offset_x = Random(-w, w) * 0x200;
|
||||
offset_y = Random(-w, w) * 0x200;
|
||||
SetNpChar(4, x + offset_x, y + offset_y, 0, 0, 1, NULL, 0x100);
|
||||
SetCaret(x + offset_x, y + offset_y, 18, 0);
|
||||
}
|
||||
|
||||
// Flash effect
|
||||
|
|
@ -208,15 +210,15 @@ void SetExpObjects(int x, int y, int exp)
|
|||
|
||||
memset(&gNPC[n], 0, sizeof(NPCHAR));
|
||||
|
||||
if (exp >= 20)
|
||||
if (exp >= 8)
|
||||
{
|
||||
exp -= 20;
|
||||
sub_exp = 20;
|
||||
exp -= 8;
|
||||
sub_exp = 8;
|
||||
}
|
||||
else if (exp >= 5)
|
||||
else if (exp >= 3)
|
||||
{
|
||||
exp -= 5;
|
||||
sub_exp = 5;
|
||||
exp -= 3;
|
||||
sub_exp = 3;
|
||||
}
|
||||
else if (exp >= 1)
|
||||
{
|
||||
|
|
@ -618,7 +620,7 @@ void DeleteNpCharCode(int code, BOOL bSmoke)
|
|||
|
||||
if (bSmoke)
|
||||
{
|
||||
PlaySoundObject(gNPC[n].destroy_voice, SOUND_MODE_PLAY);
|
||||
PlaySoundObject(70, SOUND_MODE_PLAY);
|
||||
|
||||
switch (gNPC[n].size)
|
||||
{
|
||||
|
|
@ -681,3 +683,4 @@ int CountAliveNpChar(void)
|
|||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ void ActNpc001(NPCHAR *npc)
|
|||
// Bounce off floor
|
||||
if (npc->flag & 8)
|
||||
{
|
||||
PlaySoundObject(45, SOUND_MODE_PLAY);
|
||||
PlaySoundObject(07, SOUND_MODE_PLAY);
|
||||
npc->ym = -0x280;
|
||||
npc->xm = 2 * npc->xm / 3;
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ void ActNpc001(NPCHAR *npc)
|
|||
// Play bounce song (and try to clip out of floor if stuck)
|
||||
if (npc->flag & 0xD)
|
||||
{
|
||||
PlaySoundObject(45, SOUND_MODE_PLAY);
|
||||
PlaySoundObject(07, SOUND_MODE_PLAY);
|
||||
if (++npc->count2 > 2)
|
||||
npc->y -= 1 * 0x200;
|
||||
}
|
||||
|
|
@ -183,17 +183,22 @@ void ActNpc001(NPCHAR *npc)
|
|||
// Size
|
||||
if (npc->act_no != 0)
|
||||
{
|
||||
switch (npc->exp)
|
||||
//cout << npc->exp;
|
||||
switch (npc->exp) //SetCaret(gMC.x, gMC.y, 21, 0);
|
||||
{
|
||||
case 5:
|
||||
case 3:
|
||||
npc->rect.top += 16;
|
||||
npc->rect.bottom += 16;
|
||||
//printf("me when 3 cion drop");
|
||||
break;
|
||||
|
||||
case 20:
|
||||
case 8:
|
||||
npc->rect.top += 32;
|
||||
npc->rect.bottom += 32;
|
||||
//printf("me when 8 cion drops");
|
||||
break;
|
||||
//case 1:
|
||||
//printf("bruh whate da heall bruh");
|
||||
}
|
||||
|
||||
npc->act_no = 1;
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ BOOL SaveProfile(const char *name)
|
|||
memcpy(profile.permitstage, gPermitStage, sizeof(profile.permitstage));
|
||||
memcpy(profile.permit_mapping, gMapping, sizeof(profile.permit_mapping));
|
||||
memcpy(profile.flags, gFlagNPC, sizeof(profile.flags));
|
||||
profile.cion = cion;
|
||||
// Custom
|
||||
memcpy(profile.extra_code, gProfileCodeExtra, sizeof(profile.extra_code));
|
||||
profile.MIMCurrentNum = gMIMCurrentNum;
|
||||
|
|
@ -123,6 +124,7 @@ BOOL SaveProfile(const char *name)
|
|||
fwrite(profile.permit_mapping, 0x80, 1, fp);
|
||||
fwrite(FLAG, 4, 1, fp);
|
||||
fwrite(profile.flags, 1000, 1, fp);
|
||||
File_WriteLE32(profile.cion, fp);
|
||||
// Custom
|
||||
fwrite(gProfileCodeExtra, 0x10, 1, fp);
|
||||
File_WriteLE32(profile.MIMCurrentNum, fp);
|
||||
|
|
@ -211,7 +213,8 @@ BOOL LoadProfile(const char *name)
|
|||
fread(profile.permit_mapping, 0x80, 1, fp);
|
||||
fread(profile.FLAG, 4, 1, fp);
|
||||
fread(profile.flags, 1000, 1, fp);
|
||||
|
||||
profile.cion = File_ReadLE32(fp);
|
||||
|
||||
// Custom
|
||||
fread(profile.extra_code, 0x10, 1, fp);
|
||||
|
||||
|
|
@ -268,6 +271,7 @@ BOOL LoadProfile(const char *name)
|
|||
gMC.star = profile.star;
|
||||
gMC.cond = 0x80;
|
||||
gMC.air = 1000;
|
||||
cion = profile.cion;
|
||||
gMC.lifeBr = profile.life;
|
||||
gMC.x = profile.x;
|
||||
gMC.y = profile.y;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ typedef struct PROFILE
|
|||
signed char permit_mapping[0x80];
|
||||
char FLAG[4];
|
||||
unsigned char flags[1000];
|
||||
|
||||
// CION
|
||||
unsigned int cion;
|
||||
// Custom
|
||||
char extra_code[0x10];
|
||||
// <MIM
|
||||
|
|
@ -47,4 +48,4 @@ extern const char* const gProfileCode;
|
|||
BOOL IsProfile(void);
|
||||
BOOL SaveProfile(const char *name);
|
||||
BOOL LoadProfile(const char *name);
|
||||
BOOL InitializeGame(void);
|
||||
BOOL InitializeGame(void);
|
||||
|
|
@ -53,6 +53,7 @@ const RECT gRect_line = {0, 0, 216, 16};
|
|||
static unsigned long nod_color;
|
||||
#endif
|
||||
|
||||
unsigned int cion = 0;
|
||||
unsigned int gMIMCurrentNum = 0;
|
||||
|
||||
// Initialize and end tsc
|
||||
|
|
@ -705,6 +706,38 @@ int TextScriptProc(void)
|
|||
y = GetTextScriptNo(gTS.p_read + 9);
|
||||
AddPermitStage(x, y);
|
||||
gTS.p_read += 13;
|
||||
}
|
||||
//CION commands
|
||||
//Add X amount of cion
|
||||
else if (IS_COMMAND('C','I','+'))
|
||||
{
|
||||
x = GetTextScriptNo(gTS.p_read + 4);
|
||||
cion+= x;
|
||||
gTS.p_read += 8;
|
||||
}
|
||||
//Remove X amount of cion
|
||||
else if (IS_COMMAND('C','I','-'))
|
||||
{
|
||||
x = GetTextScriptNo(gTS.p_read + 4);
|
||||
cion-= x;
|
||||
gTS.p_read += 8;
|
||||
}
|
||||
//Set cion to X (useful for removing all cions!)
|
||||
else if (IS_COMMAND('C','I','S'))
|
||||
{
|
||||
x = GetTextScriptNo(gTS.p_read + 4);
|
||||
cion= x;
|
||||
gTS.p_read += 8;
|
||||
}
|
||||
//If cion is Greater than or Equal to X, go to event Y.
|
||||
else if (IS_COMMAND('C','I','J'))
|
||||
{
|
||||
x = GetTextScriptNo(gTS.p_read + 4);
|
||||
y = GetTextScriptNo(gTS.p_read + 9);
|
||||
if (cion >= x)
|
||||
JumpTextScript(y);
|
||||
else
|
||||
gTS.p_read += 13;
|
||||
}
|
||||
else if (IS_COMMAND('M','P','+'))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ typedef struct TEXT_SCRIPT
|
|||
unsigned char wait_beam;
|
||||
} TEXT_SCRIPT;
|
||||
|
||||
unsigned extern int cion;
|
||||
|
||||
extern TEXT_SCRIPT gTS;
|
||||
|
||||
extern const RECT gRect_line;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue