diff --git a/src/MyChar.cpp b/src/MyChar.cpp index c79436cf..583a87b8 100644 --- a/src/MyChar.cpp +++ b/src/MyChar.cpp @@ -22,21 +22,21 @@ MYCHAR gMC; int noise_no; unsigned int noise_freq; -void InitMyChar() +void InitMyChar(void) { memset(&gMC, 0, sizeof(MYCHAR)); gMC.cond = 0x80; gMC.direct = 2; - gMC.view.back = 0x1000; - gMC.view.top = 0x1000; - gMC.view.front = 0x1000; - gMC.view.bottom = 0x1000; + gMC.view.back = 8 * 0x200; + gMC.view.top = 8 * 0x200; + gMC.view.front = 8 * 0x200; + gMC.view.bottom = 8 * 0x200; - gMC.hit.back = 0xA00; - gMC.hit.top = 0x1000; - gMC.hit.front = 0xA00; - gMC.hit.bottom = 0x1000; + gMC.hit.back = 5 * 0x200; + gMC.hit.top = 8 * 0x200; + gMC.hit.front = 5 * 0x200; + gMC.hit.bottom = 8 * 0x200; gMC.life = 3; gMC.max_life = 3; @@ -84,13 +84,14 @@ void AnimationMyChar(BOOL bKey) { gMC.ani_no = 11; } - else if (gKey & gKeyUp && (gKeyRight | gKeyLeft) & gKey && bKey) + else if (gKey & gKeyUp && gKey & (gKeyLeft | gKeyRight) && bKey) { gMC.cond |= 4; if (++gMC.ani_wait > 4) { gMC.ani_wait = 0; + if (++gMC.ani_no == 7 || gMC.ani_no == 9) PlaySoundObject(24, 1); } @@ -98,13 +99,14 @@ void AnimationMyChar(BOOL bKey) if (gMC.ani_no > 9 || gMC.ani_no < 6) gMC.ani_no = 6; } - else if ((gKeyRight | gKeyLeft) & gKey && bKey) + else if (gKey & (gKeyLeft | gKeyRight) && bKey) { gMC.cond |= 4; if (++gMC.ani_wait > 4) { gMC.ani_wait = 0; + if (++gMC.ani_no == 2 || gMC.ani_no == 4) PlaySoundObject(24, 1); } @@ -163,13 +165,13 @@ void PutMyChar(int fx, int fy) { int arms_offset_y; - if ((gMC.cond & 0x80) == 0 || (gMC.cond & 2)) + if (!(gMC.cond & 0x80) || gMC.cond & 2) return; // Draw weapon - gMC.rect_arms.left = 24 * (gArmsData[gSelectedArms].code % 13); + gMC.rect_arms.left = (gArmsData[gSelectedArms].code % 13) * 24; gMC.rect_arms.right = gMC.rect_arms.left + 24; - gMC.rect_arms.top = 96 * (gArmsData[gSelectedArms].code / 13); + gMC.rect_arms.top = (gArmsData[gSelectedArms].code / 13) * 96; gMC.rect_arms.bottom = gMC.rect_arms.top + 16; if (gMC.direct == 2) @@ -201,19 +203,19 @@ void PutMyChar(int fx, int fy) if (gMC.direct == 0) PutBitmap3( &grcGame, - (gMC.x - gMC.view.front) / 0x200 - fx / 0x200 - 8, - (gMC.y - gMC.view.top) / 0x200 - fy / 0x200 + arms_offset_y, + ((gMC.x - gMC.view.front) / 0x200) - (fx / 0x200) - 8, + ((gMC.y - gMC.view.top) / 0x200) - (fy / 0x200) + arms_offset_y, &gMC.rect_arms, SURFACE_ID_ARMS); else PutBitmap3( &grcGame, - (gMC.x - gMC.view.front) / 0x200 - fx / 0x200, - (gMC.y - gMC.view.top) / 0x200 - fy / 0x200 + arms_offset_y, + ((gMC.x - gMC.view.front) / 0x200) - (fx / 0x200), + ((gMC.y - gMC.view.top) / 0x200) - (fy / 0x200) + arms_offset_y, &gMC.rect_arms, SURFACE_ID_ARMS); - if ((gMC.shock / 2) % 2) + if (gMC.shock / 2 % 2) return; // Draw player @@ -224,7 +226,7 @@ void PutMyChar(int fx, int fy) rect.bottom += 32; } - PutBitmap3(&grcGame, (gMC.x - gMC.view.front) / 0x200 - fx / 0x200, (gMC.y - gMC.view.top) / 0x200 - fy / 0x200, &rect, SURFACE_ID_MY_CHAR); + PutBitmap3(&grcGame, ((gMC.x - gMC.view.front) / 0x200) - (fx / 0x200), ((gMC.y - gMC.view.top) / 0x200) - (fy / 0x200), &rect, SURFACE_ID_MY_CHAR); // Draw air tank RECT rcBubble[2] = { @@ -234,9 +236,9 @@ void PutMyChar(int fx, int fy) ++gMC.bubble; if (gMC.equip & 0x10 && gMC.flag & 0x100) - PutBitmap3(&grcGame, gMC.x / 0x200 - 12 - fx / 0x200, gMC.y / 0x200 - 12 - fy / 0x200, &rcBubble[(gMC.bubble / 2) % 2], SURFACE_ID_CARET); + PutBitmap3(&grcGame, (gMC.x / 0x200) - 12 - (fx / 0x200), (gMC.y / 0x200) - 12 - (fy / 0x200), &rcBubble[gMC.bubble / 2 % 2], SURFACE_ID_CARET); else if (gMC.unit == 1) - PutBitmap3(&grcGame, gMC.x / 0x200 - 12 - fx / 0x200, gMC.y / 0x200 - 12 - fy / 0x200, &rcBubble[(gMC.bubble / 2) % 2], SURFACE_ID_CARET); + PutBitmap3(&grcGame, (gMC.x / 0x200) - 12 - (fx / 0x200), (gMC.y / 0x200) - 12 - (fy / 0x200), &rcBubble[gMC.bubble / 2 % 2], SURFACE_ID_CARET); } void ActMyChar_Normal(BOOL bKey) @@ -281,7 +283,7 @@ void ActMyChar_Normal(BOOL bKey) } // Don't create "?" effect - gMC.ques = 0; + gMC.ques = FALSE; // If can't control player, stop boosting if (!bKey) @@ -309,14 +311,14 @@ void ActMyChar_Normal(BOOL bKey) // Move in direction held if (bKey) { - if (gKeyTrg == gKeyDown && gKey == gKeyDown && (gMC.cond & 1) == 0 && (g_GameFlags & 4) == 0) + if (gKeyTrg == gKeyDown && gKey == gKeyDown && !(gMC.cond & 1) && !(g_GameFlags & 4)) { gMC.cond |= 1; - gMC.ques = 1; + gMC.ques = TRUE; } else if (gKey == gKeyDown) { - + // There probably used to be commented-out code here } else { @@ -356,12 +358,13 @@ void ActMyChar_Normal(BOOL bKey) // Start boosting if (bKey) { - if (gMC.equip & 0x21 && gKeyTrg & gKeyJump && gMC.boost_cnt) + if (gMC.equip & 0x21 && gKeyTrg & gKeyJump && gMC.boost_cnt != 0) { // Booster 0.8 if (gMC.equip & 1) { gMC.boost_sw = 1; + if (gMC.ym > 0x100) gMC.ym /= 2; } @@ -415,7 +418,7 @@ void ActMyChar_Normal(BOOL bKey) } // Slow down when stopped boosting (Booster 2.0) - if (gMC.equip & 0x20 && gMC.boost_sw && (!(gKey & gKeyJump) || !gMC.boost_cnt)) + if (gMC.equip & 0x20 && gMC.boost_sw != 0 && (!(gKey & gKeyJump) || gMC.boost_cnt == 0)) { if (gMC.boost_sw == 1) gMC.xm /= 2; @@ -424,7 +427,7 @@ void ActMyChar_Normal(BOOL bKey) } // Stop boosting - if (!gMC.boost_cnt || !(gKey & gKeyJump)) + if (gMC.boost_cnt == 0 || !(gKey & gKeyJump)) gMC.boost_sw = 0; } @@ -437,17 +440,17 @@ void ActMyChar_Normal(BOOL bKey) else gMC.up = FALSE; - if (gKey & gKeyDown && (gMC.flag & 8) == 0) + if (gKey & gKeyDown && !(gMC.flag & 8)) gMC.down = TRUE; else gMC.down = FALSE; - if (gKeyTrg & gKeyJump - && (gMC.flag & 8 || gMC.flag & 0x10 || gMC.flag & 0x20)) + if (gKeyTrg & gKeyJump && (gMC.flag & 8 || gMC.flag & 0x10 || gMC.flag & 0x20)) { if (gMC.flag & 0x2000) { - // Another weird empty case needed for accurate assembly + // Another weird empty case needed for accurate assembly. + // There probably used to be some commented-out code here. } else { @@ -458,11 +461,11 @@ void ActMyChar_Normal(BOOL bKey) } // Stop interacting when moved - if (bKey && (gKeyShot | gKeyJump | gKeyUp | gKeyRight | gKeyLeft) & gKey) + if (bKey && gKey & (gKeyLeft | gKeyRight | gKeyUp | gKeyJump | gKeyShot)) gMC.cond &= ~1; // Booster losing fuel - if (gMC.boost_sw && gMC.boost_cnt) + if (gMC.boost_sw != 0 && gMC.boost_cnt != 0) --gMC.boost_cnt; // Wind / current forces @@ -476,7 +479,7 @@ void ActMyChar_Normal(BOOL bKey) gMC.ym += 0x55; // Booster 2.0 forces and effects - if (gMC.equip & 0x20 && gMC.boost_sw) + if (gMC.equip & 0x20 && gMC.boost_sw != 0) { if (gMC.boost_sw == 1) { @@ -485,7 +488,7 @@ void ActMyChar_Normal(BOOL bKey) gMC.ym = -0x100; // Move in direction facing - if (!gMC.direct) + if (gMC.direct == 0) gMC.xm -= 0x20; if (gMC.direct == 2) gMC.xm += 0x20; @@ -493,10 +496,10 @@ void ActMyChar_Normal(BOOL bKey) // Boost particles (and sound) if (gKeyTrg & gKeyJump || gMC.boost_cnt % 3 == 1) { - if (!gMC.direct) - SetCaret(gMC.x + 0x400, gMC.y + 0x400, 7, 2); + if (gMC.direct == 0) + SetCaret(gMC.x + (2 * 0x200), gMC.y + (2 * 0x200), 7, 2); if (gMC.direct == 2) - SetCaret(gMC.x - 0x400, gMC.y + 0x400, 7, 0); + SetCaret(gMC.x - (2 * 0x200), gMC.y + (2 * 0x200), 7, 0); PlaySoundObject(113, 1); } @@ -509,14 +512,14 @@ void ActMyChar_Normal(BOOL bKey) // Boost particles (and sound) if (gKeyTrg & gKeyJump || gMC.boost_cnt % 3 == 1) { - SetCaret(gMC.x, gMC.y + 0xC00, 7, 3); + SetCaret(gMC.x, gMC.y + (6 * 0x200), 7, 3); PlaySoundObject(113, 1); } } else if (gMC.boost_sw == 3 && (gKeyTrg & gKeyJump || gMC.boost_cnt % 3 == 1)) { // Boost particles (and sound) - SetCaret(gMC.x, gMC.y - 0xC00, 7, 1); + SetCaret(gMC.x, gMC.y - (6 * 0x200), 7, 1); PlaySoundObject(113, 1); } } @@ -526,14 +529,14 @@ void ActMyChar_Normal(BOOL bKey) gMC.ym += gravity1; } // Booster 0.8 - else if (gMC.equip & 1 && gMC.boost_sw && gMC.ym > -0x400) + else if (gMC.equip & 1 && gMC.boost_sw != 0 && gMC.ym > -0x400) { // Upwards force gMC.ym -= 0x20; - if (!(gMC.boost_cnt % 3)) + if (gMC.boost_cnt % 3 == 0) { - SetCaret(gMC.x, gMC.hit.bottom / 2 + gMC.y, 7, 3); + SetCaret(gMC.x, gMC.y + (gMC.hit.bottom / 2), 7, 3); PlaySoundObject(113, 1); } @@ -569,13 +572,13 @@ void ActMyChar_Normal(BOOL bKey) if (0) { - // There used to be an if here that didn't do anything, but the compiler optimised it out. - // We only know this was here because empty ifs mess with the register usage. + // There used to be an if-statement here that didn't do anything, but the compiler optimised it out. + // We only know this was here because empty if-statements affect the register usage. // Since there's no code, we have no idea what the original condition actually was. } // Limit speed - if ((gMC.flag & 0x100) && (gMC.flag & 0xF000) == 0) + if (gMC.flag & 0x100 && !(gMC.flag & 0xF000)) { if (gMC.xm < -0x2FF) gMC.xm = -0x2FF; @@ -602,17 +605,18 @@ void ActMyChar_Normal(BOOL bKey) if (!gMC.sprash && gMC.flag & 0x100) { int dir; + if (gMC.flag & 0x800) dir = 2; else dir = 0; - if ((gMC.flag & 8) == 0 && gMC.ym > 0x200) + if (!(gMC.flag & 8) && gMC.ym > 0x200) { - for (a = 0; a < 8; a++) + for (a = 0; a < 8; ++a) { x = gMC.x + (Random(-8, 8) * 0x200); - SetNpChar(73, x, gMC.y, gMC.xm + Random(-0x200, 0x200), Random(-0x200, 0x80) - gMC.ym / 2, dir, 0, 0); + SetNpChar(73, x, gMC.y, gMC.xm + Random(-0x200, 0x200), Random(-0x200, 0x80) - (gMC.ym / 2), dir, NULL, 0); } PlaySoundObject(56, 1); @@ -621,21 +625,21 @@ void ActMyChar_Normal(BOOL bKey) { if (gMC.xm > 0x200 || gMC.xm < -0x200) { - for (a = 0; a < 8; a++) + for (a = 0; a < 8; ++a) { x = gMC.x + (Random(-8, 8) * 0x200); - SetNpChar(73, x, gMC.y, gMC.xm + Random(-0x200, 0x200), Random(-0x200, 0x80), dir, 0, 0); + SetNpChar(73, x, gMC.y, gMC.xm + Random(-0x200, 0x200), Random(-0x200, 0x80), dir, NULL, 0); } PlaySoundObject(56, 1); } } - gMC.sprash = 1; + gMC.sprash = TRUE; } if (!(gMC.flag & 0x100)) - gMC.sprash = 0; + gMC.sprash = FALSE; // Spike damage if (gMC.flag & 0x400) @@ -697,7 +701,7 @@ void ActMyChar_Stream(BOOL bKey) if (bKey) { - if (gKey & (gKeyRight | gKeyLeft)) + if (gKey & (gKeyLeft | gKeyRight)) { if (gKey & gKeyLeft) gMC.xm -= 0x100; @@ -718,7 +722,7 @@ void ActMyChar_Stream(BOOL bKey) gMC.xm += 0x80; } - if (gKey & (gKeyDown | gKeyUp)) + if (gKey & (gKeyUp | gKeyDown)) { if (gKey & gKeyUp) gMC.ym -= 0x100; @@ -759,7 +763,7 @@ void ActMyChar_Stream(BOOL bKey) if (gMC.ym < -0x200 && gMC.flag & 2) SetCaret(gMC.x, gMC.y - gMC.hit.top, 13, 5); if (gMC.ym > 0x200 && gMC.flag & 8) - SetCaret(gMC.x, gMC.hit.bottom + gMC.y, 13, 5); + SetCaret(gMC.x, gMC.y + gMC.hit.bottom, 13, 5); if (gMC.xm > 0x400) gMC.xm = 0x400; @@ -771,7 +775,7 @@ void ActMyChar_Stream(BOOL bKey) if (gMC.ym < -0x400) gMC.ym = -0x400; - if ((gKey & (gKeyUp | gKeyLeft)) == (gKeyLeft | gKeyUp)) + if ((gKey & (gKeyLeft | gKeyUp)) == (gKeyLeft | gKeyUp)) { if (gMC.xm < -780) gMC.xm = -780; @@ -779,7 +783,7 @@ void ActMyChar_Stream(BOOL bKey) gMC.ym = -780; } - if ((gKey & (gKeyUp | gKeyRight)) == (gKeyRight | gKeyUp)) + if ((gKey & (gKeyRight | gKeyUp)) == (gKeyRight | gKeyUp)) { if (gMC.xm > 780) gMC.xm = 780; @@ -787,7 +791,7 @@ void ActMyChar_Stream(BOOL bKey) gMC.ym = -780; } - if ((gKey & (gKeyDown | gKeyLeft)) == (gKeyLeft | gKeyDown)) + if ((gKey & (gKeyLeft | gKeyDown)) == (gKeyLeft | gKeyDown)) { if (gMC.xm < -780) gMC.xm = -780; @@ -795,7 +799,7 @@ void ActMyChar_Stream(BOOL bKey) gMC.ym = 780; } - if ((gKey & (gKeyDown | gKeyRight)) == (gKeyRight | gKeyDown)) + if ((gKey & (gKeyRight | gKeyDown)) == (gKeyRight | gKeyDown)) { if (gMC.xm > 780) gMC.xm = 780; @@ -807,7 +811,7 @@ void ActMyChar_Stream(BOOL bKey) gMC.y += gMC.ym; } -void AirProcess() +void AirProcess(void) { if (gMC.equip & 0x10) { @@ -816,7 +820,7 @@ void AirProcess() } else { - if ((gMC.flag & 0x100) == 0) + if (!(gMC.flag & 0x100)) { gMC.air = 1000; } @@ -848,26 +852,27 @@ void AirProcess() { gMC.air_get = 60; } - else if (gMC.air_get) + else { - --gMC.air_get; + if (gMC.air_get != 0) + --gMC.air_get; } } } void ActMyChar(BOOL bKey) { - if ((gMC.cond & 0x80) == 0) + if (!(gMC.cond & 0x80)) return; - if (gMC.exp_wait) + if (gMC.exp_wait != 0) --gMC.exp_wait; - if (gMC.shock) + if (gMC.shock != 0) { --gMC.shock; } - else if (gMC.exp_count) + else if (gMC.exp_count != 0) { SetValueView(&gMC.x, &gMC.y, gMC.exp_count); gMC.exp_count = 0; @@ -878,6 +883,7 @@ void ActMyChar(BOOL bKey) case 0: if (!(g_GameFlags & 4) && bKey) AirProcess(); + ActMyChar_Normal(bKey); break; @@ -915,12 +921,12 @@ void MoveMyChar(int x, int y) gMC.y = y; } -void ZeroMyCharXMove() +void ZeroMyCharXMove(void) { gMC.xm = 0; } -int GetUnitMyChar() +int GetUnitMyChar(void) { return gMC.unit; } @@ -942,7 +948,8 @@ void SetMyCharDirect(unsigned char dir) else { int i; - for (i = 0; i < NPC_MAX; i++) + + for (i = 0; i < NPC_MAX; ++i) if (gNPC[i].code_event == dir) break; @@ -965,9 +972,9 @@ void ChangeMyUnit(unsigned char a) gMC.unit = a; } -void PitMyChar() +void PitMyChar(void) { - gMC.y += 0x4000; + gMC.y += 2 * 0x10 * 0x200; // Shove player two tiles down. I wonder what this was meant for? } void EquipItem(int flag, BOOL b) @@ -978,7 +985,7 @@ void EquipItem(int flag, BOOL b) gMC.equip &= ~flag; } -void ResetCheck() +void ResetCheck(void) { gMC.cond &= ~1; } @@ -1003,7 +1010,7 @@ void SetNoise(int no, int freq) } } -void CutNoise() +void CutNoise(void) { noise_no = 0; PlaySoundObject(40, 0); @@ -1011,7 +1018,7 @@ void CutNoise() PlaySoundObject(58, 0); } -void ResetNoise() +void ResetNoise(void) { switch (noise_no) { @@ -1028,7 +1035,7 @@ void ResetNoise() } } -void SleepNoise() +void SleepNoise(void) { PlaySoundObject(40, 0); PlaySoundObject(41, 0); diff --git a/src/MyChar.h b/src/MyChar.h index fb034341..3af35b99 100644 --- a/src/MyChar.h +++ b/src/MyChar.h @@ -2,6 +2,9 @@ #include "WindowsWrapper.h" +// TODO - When I add bitmask constants for gMC.flags... +// 0x100 is a 'player is underwater' flag + struct MYCHAR { unsigned char cond; @@ -52,15 +55,15 @@ struct MYCHAR int lifeBr_count; int air; int air_get; - signed char sprash; - signed char ques; + signed char sprash; // This is explicitly a char, but used like a BOOL + signed char ques; // Same for this variable as well signed char boost_sw; int boost_cnt; }; extern MYCHAR gMC; -void InitMyChar(); +void InitMyChar(void); void AnimationMyChar(BOOL bKey); void ShowMyChar(BOOL bShow); void PutMyChar(int fx, int fy); @@ -69,14 +72,14 @@ void ActMyChar(BOOL bKey); void GetMyCharPosition(int *x, int *y); void SetMyCharPosition(int x, int y); void MoveMyChar(int x, int y); -void ZeroMyCharXMove(); -int GetUnitMyChar(); +void ZeroMyCharXMove(void); +int GetUnitMyChar(void); void SetMyCharDirect(unsigned char dir); void ChangeMyUnit(unsigned char a); -void PitMyChar(); +void PitMyChar(void); void EquipItem(int flag, BOOL b); -void ResetCheck(); +void ResetCheck(void); void SetNoise(int no, int freq); -void CutNoise(); -void ResetNoise(); -void SleepNoise(); +void CutNoise(void); +void ResetNoise(void); +void SleepNoise(void); diff --git a/src/MycHit.cpp b/src/MycHit.cpp index 4db8edfc..138ef4c1 100644 --- a/src/MycHit.cpp +++ b/src/MycHit.cpp @@ -847,7 +847,7 @@ void HitMyCharNpChar(void) { StartTextScript(gNPC[i].code_event); gMC.xm = 0; - gMC.ques = 0; + gMC.ques = FALSE; } } @@ -890,7 +890,7 @@ void HitMyCharBoss(void) if (!(g_GameFlags & 4) && hit != 0 && gBoss[b].bits & NPC_EVENT_WHEN_TOUCHED) { StartTextScript(gBoss[b].code_event); - gMC.ques = 0; + gMC.ques = FALSE; } if (gBoss[b].bits & NPC_REAR_AND_TOP_DONT_HURT) @@ -909,7 +909,7 @@ void HitMyCharBoss(void) { StartTextScript(gBoss[b].code_event); gMC.xm = 0; - gMC.ques = 0; + gMC.ques = FALSE; } }