I LOVE STEALING PIRACY STEALING LURAICHU'S CODE FROM RECSBR - https://github.com/BTTRG/recsbr

This commit is contained in:
DG 2022-11-03 15:19:42 -04:00
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.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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;
}
}

View File

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

View File

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

View File

@ -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;
}
}

View File

@ -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))
{

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

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

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

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

View File

@ -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','+'))
{

View File

@ -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;