diff --git a/game_english/data/Caret.png b/game_english/data/Caret.png index 7675c21..bd29ddc 100644 Binary files a/game_english/data/Caret.png and b/game_english/data/Caret.png differ diff --git a/game_english/data/Resource/ORG/OPPOSITN.org b/game_english/data/Resource/ORG/OPPOSITN.org index f74ca2b..c50f828 100644 Binary files a/game_english/data/Resource/ORG/OPPOSITN.org and b/game_english/data/Resource/ORG/OPPOSITN.org differ diff --git a/game_english/data/TextBox.png b/game_english/data/TextBox.png index 323521e..e6f180d 100644 Binary files a/game_english/data/TextBox.png and b/game_english/data/TextBox.png differ diff --git a/game_english/data/Wav/BladeShoot.wav b/game_english/data/Wav/BladeShoot.wav new file mode 100644 index 0000000..84910ba Binary files /dev/null and b/game_english/data/Wav/BladeShoot.wav differ diff --git a/game_english/data/Wav/Cursor.wav b/game_english/data/Wav/Cursor.wav new file mode 100644 index 0000000..2647212 Binary files /dev/null and b/game_english/data/Wav/Cursor.wav differ diff --git a/game_english/data/Wav/EnemyHurt.wav b/game_english/data/Wav/EnemyHurt.wav new file mode 100644 index 0000000..729a5e8 Binary files /dev/null and b/game_english/data/Wav/EnemyHurt.wav differ diff --git a/game_english/data/Wav/Go.wav b/game_english/data/Wav/Go.wav new file mode 100644 index 0000000..b2ffbed Binary files /dev/null and b/game_english/data/Wav/Go.wav differ diff --git a/game_english/data/Wav/Hurt.wav b/game_english/data/Wav/Hurt.wav new file mode 100644 index 0000000..79135a4 Binary files /dev/null and b/game_english/data/Wav/Hurt.wav differ diff --git a/game_english/data/Wav/Message.wav b/game_english/data/Wav/Message.wav new file mode 100644 index 0000000..7aa78a6 Binary files /dev/null and b/game_english/data/Wav/Message.wav differ diff --git a/game_english/data/Wav/Select.wav b/game_english/data/Wav/Select.wav new file mode 100644 index 0000000..5bad1d2 Binary files /dev/null and b/game_english/data/Wav/Select.wav differ diff --git a/game_english/data/Wav/Shatter.wav b/game_english/data/Wav/Shatter.wav new file mode 100644 index 0000000..535ab08 Binary files /dev/null and b/game_english/data/Wav/Shatter.wav differ diff --git a/game_english/data/Wav/Shoot.wav b/game_english/data/Wav/Shoot.wav new file mode 100644 index 0000000..d49aeff Binary files /dev/null and b/game_english/data/Wav/Shoot.wav differ diff --git a/game_english/data/Wav/YesNo.wav b/game_english/data/Wav/YesNo.wav new file mode 100644 index 0000000..293a50b Binary files /dev/null and b/game_english/data/Wav/YesNo.wav differ diff --git a/src/Caret.cpp b/src/Caret.cpp index 183550a..5ac1179 100644 --- a/src/Caret.cpp +++ b/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; -} +} \ No newline at end of file diff --git a/src/Caret.h b/src/Caret.h index 9aeca98..41bfece 100644 --- a/src/Caret.h +++ b/src/Caret.h @@ -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); \ No newline at end of file diff --git a/src/Game.cpp b/src/Game.cpp index 438e2ec..bc0d4ba 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -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(); diff --git a/src/GenericLoad.cpp b/src/GenericLoad.cpp index 0244746..12c581d 100644 --- a/src/GenericLoad.cpp +++ b/src/GenericLoad.cpp @@ -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; -} +} \ No newline at end of file diff --git a/src/MyChar.cpp b/src/MyChar.cpp index 6a98aaf..d04b9e0 100644 --- a/src/MyChar.cpp +++ b/src/MyChar.cpp @@ -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)) { diff --git a/src/MycHit.cpp b/src/MycHit.cpp index 2477b44..2d5f171 100644 --- a/src/MycHit.cpp +++ b/src/MycHit.cpp @@ -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); -} +} \ No newline at end of file diff --git a/src/MycParam.cpp b/src/MycParam.cpp index c26d786..5fb6275 100644 --- a/src/MycParam.cpp +++ b/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; -} +} \ No newline at end of file diff --git a/src/MycParam.h b/src/MycParam.h index 82ab63b..af00d25 100644 --- a/src/MycParam.h +++ b/src/MycParam.h @@ -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); \ No newline at end of file diff --git a/src/NpChar.cpp b/src/NpChar.cpp index 8ad1641..a4e94bd 100644 --- a/src/NpChar.cpp +++ b/src/NpChar.cpp @@ -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; } + diff --git a/src/NpcAct000.cpp b/src/NpcAct000.cpp index 72c45a1..6791c00 100644 --- a/src/NpcAct000.cpp +++ b/src/NpcAct000.cpp @@ -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; diff --git a/src/Profile.cpp b/src/Profile.cpp index cae1669..a212410 100644 --- a/src/Profile.cpp +++ b/src/Profile.cpp @@ -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; diff --git a/src/Profile.h b/src/Profile.h index f5b6ba0..046a503 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -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]; // = x) + JumpTextScript(y); + else + gTS.p_read += 13; } else if (IS_COMMAND('M','P','+')) { diff --git a/src/TextScr.h b/src/TextScr.h index 97f09c1..3845a54 100644 --- a/src/TextScr.h +++ b/src/TextScr.h @@ -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;