Mercurial > mm7
changeset 1189:cb365b58a641
Слияние
author | Ritor1 |
---|---|
date | Fri, 07 Jun 2013 11:31:20 +0600 |
parents | 9541e9d1e5fa (current diff) 569216b4f54d (diff) |
children | d6f9482a09af |
files | |
diffstat | 10 files changed, 5293 insertions(+), 4741 deletions(-) [+] |
line wrap: on
line diff
--- a/Arcomage.cpp Fri Jun 07 11:31:11 2013 +0600 +++ b/Arcomage.cpp Fri Jun 07 11:31:20 2013 +0600 @@ -19,13 +19,55 @@ #include "Events2D.h" #include "VectorTypes.h" #include "texts.h" +#include <windef.h> void sub_409BE8(); - +void am_409FE9(); +char __cdecl am_40A198(); +void am_40A255(); +void am_40A283(int a1); +int GetEmptyCardSlotIndex(int player_num); +void am_40A346(int player_num); +void __cdecl am_40A383(); +bool am_40A514(); +char __thiscall am_40A560(unsigned int _this); +void am_blts(int a1); // idb +void am_40AA4E(); +void __cdecl am_chroma_blts(); +void __cdecl am_DrawUI(); +void __fastcall am_40B102(int a1, char *a2, POINT *pXY); // idb +void am_40B17E(int a1, char* a2, POINT *pXY); // idb +void am_40B1F3(int a1, char* a2, POINT* a3); +void am_40B268(int a1, char *a2, POINT *pXY); // idb +void __cdecl am_chroma_and_copy_blts(); +void __cdecl am_chroma_blt(); +void __cdecl am_40B4B9(); +void __fastcall am_40B76F(int a1); +int GetPlayerHandCardCount(int player_num); +signed int __fastcall am_40BB67(int a1); +char __fastcall am_40BCFB(int a1, signed int a2); +bool __fastcall am_40BE0E(int a1, signed int a2); +bool am_40BF15(int player_num, int hand_card_indx); +void __fastcall am_40BF77(int a1, unsigned int uCardID); // idb +int am_40D2B4(POINT* a1, int a2); // weak +int __fastcall am_40D402(int, int); // weak +int __cdecl am_40D444(); + +void pPrimaryWindow_draws_text(int a1, const char *pText, POINT *pXY); +void __thiscall am_BeginScene(unsigned __int16 *pPcxPixels, int a2, int a3); // idb +void __fastcall Blt_Chroma(RECT *pSrcXYZW, POINT *pTargetXY, int a3, int a4); +void Blt_Copy(RECT *pSrcRect, POINT *pTargetXY, int a3); +void __cdecl am_EndScene(); +void __fastcall DrawRect(RECT *pXYZW, unsigned __int16 uColor, char bSolidFill); // idb +void SetPixel(POINT *pTargetXY, unsigned __int16 uColor); +int __fastcall rand_interval(int a, int b); // idb +char *__fastcall inv_strcat(const char *Source, char *Dest); +char *__fastcall inv_strcpy(const char *Source, char *Dest); +void __fastcall intToString(int val, char *pOut); /* 388 */ #pragma pack(push, 1) @@ -61,17 +103,27 @@ {100, 300, 50, 50, 5, 3, 5, 20, 10, 20, 0} }; - - +#define SIG_trpg 0x67707274 +#define SIG_xxxx 0x78787878 ArcomageGame *pArcomageGame = new ArcomageGame; ArcomageCard pCards[87]; -ArcomageGame_stru0 stru_505708[2]; - - - -stru272 array_4FAC10[10]; - +ArcomagePlayer am_Players[2]; + +Acromage_st1 struct_st1[10]; + +stru272 array_4FABD0[10]; + +char byte_5052A8[108]; +int dword_505314[108]; // weak + +char byte_5054C8[32]; // idb +char byte_5054E8[108]; +int dword_505554[108]; + +char pArcomagePlayer2Name[8]; +char pArcomagePlayer1Name[8]; +char pDeckMaster[12]; /* 267 */ @@ -79,7 +131,7 @@ struct stru273 { bool _40DD2F(); - bool Inside(Vec4_int_ *pXYZW); + bool Inside(RECT*pXYZW); int x; int y; @@ -92,39 +144,251 @@ - - - +char am_byte_4E185D; // weak + +int amuint_4E1860; // weak +int amuint_4E1864; // weak +int amuint_4E1868; // weak +int amuint_4E186C; // weak +int amuint_4E1870; // weak + + +int dword_4E1874 = 5; // weak +int dword_4E1878 = 1; // weak +int dword_4E187C = 1; // weak +int dword_4E1880 = 1; // weak +int dword_4E1884 = 50; // weak +int dword_4E1888 = 100 ; // weak + +int dword_4DF3A4; // weak + +char byte_4FAA2C; // weak +char byte_4FAA2D; // weak + +int amuint_4FAA6C; // idb +char am_byte_4FAA77; // weak + +signed int dword_4FABBC; // idb +unsigned int amuint_4FABC0; // idb + +int dword_4FABC8; // weak //----- (0040DD2F) -------------------------------------------------------- bool stru273::_40DD2F() { - bool result; // eax@1 this->x = pArcomageGame->mouse_x; - result = pArcomageGame->mouse_y; this->y = pArcomageGame->mouse_y; this->field_8 = pArcomageGame->mouse_left; this->field_9 = pArcomageGame->mouse_left == pArcomageGame->field_F7; - this->field_8 = pArcomageGame->mouse_left; + this->field_A = pArcomageGame->mouse_right; this->field_B = pArcomageGame->mouse_right == pArcomageGame->field_F8; pArcomageGame->field_F7 = pArcomageGame->mouse_left; pArcomageGame->field_F8 = pArcomageGame->mouse_right; - LOBYTE(result) = 1; - return result; + return true; } //----- (0040DD93) -------------------------------------------------------- -bool stru273::Inside(Vec4_int_ *pXYZW) -{ - int v2; // eax@3 - - auto a1 = this; - return a1->x >= pXYZW->x && a1->x <= pXYZW->z && (v2 = a1->y, v2 >= pXYZW->y) && v2 <= pXYZW->w; +bool stru273::Inside(RECT*pXYZW ) + { + + return (x >= pXYZW->left) && (x <= pXYZW->right) && + (y>= pXYZW->top) && (y <= pXYZW->bottom); } - +//----- (0040DFD1) -------------------------------------------------------- +void stru272_stru0::_40DFD1(stru272_stru0 *a1) + { + stru272_stru0 *v2; // eax@1 + v2 = (stru272_stru0 *)malloc(0x5Cu); + a1 = v2; + v2->signature = SIG_trpg; + v2->field_8 = 0; + v2->field_30 = 0.0; + v2->field_58 = 0; + v2->field_59 = 0; + } + +//----- (0040DFFE) -------------------------------------------------------- +int stru272_stru0::_40DFFE() + { + + if ( this->signature == SIG_trpg ) + { + this->signature = SIG_xxxx; + free(this); + return 0; + } + else + return 2; + + } + +//----- (0040E01A) -------------------------------------------------------- +int stru272_stru0::_40E01A( stru272_stru2* a2 ) + { + auto a1 = this; + if ( a1->signature == SIG_trpg ) + { + a1->field_4 = a2->field_20; + a1->field_C = a2->field_0 << 16; + a1->field_10 = a2->field_4 << 16; + a1->field_14 = a2->field_8 << 16; + a1->field_18 = a2->field_C << 16; + a1->field_1C = a2->field_10; + a1->field_20 = a2->field_14; + a1->field_24 = a2->field_18; + a1->field_28 = (float)(a2->field_1Cf * 65536.0); + a1->field_2C = a2->field_24f; + a1->field_34 = (int)(a2->field_28f * 65536.0); + a1->field_38 = (int)(a2->field_2Cf * 65536.0); + a1->field_3C = a2->field_30; + a1->field_40 = a2->field_34; + a1->field_54 = a2->field_38; + a1->field_59 = 1; + + return 0; + } + else + return 2; + } + +//----- (0040E0F5) -------------------------------------------------------- +int stru272_stru0::_40E0F5(char a2, char a3) + { + if ( signature == SIG_trpg) + { + if ( a2 ) + { + field_8 = 0; + field_30 = 0.0; + } + if ( field_59 && a3 ) + { + + for (int i=0; i<field_4; ++i) + field_54[i].field_0 = 0; + field_58 = 0; + } + return 0; + } + else + return 2; + } + +//----- (0040E133) -------------------------------------------------------- +int stru272_stru0::_40E133() + { + + stru272_stru0 *v1; // edi@1 + int v3; // ST18_4@3 + double v4; // st7@3 + double v5; // st6@4 + char v6; // bl@8 + stru272_stru1 *v7; // esi@8 + int v8; // ecx@10 + signed int v9; // eax@10 + int v10; // ecx@10 + signed int v11; // eax@10 + int v12; // ebx@12 + int v13; // ST1C_4@12 + int v14; // ebx@12 + int v15; // ST1C_4@12 + signed int v16; // edx@12 + int v17; // ebx@12 + int v18; // ST1C_4@12 + signed int v19; // edx@12 + int v20; // [sp+8h] [bp-10h]@8 + int v21; // [sp+Ch] [bp-Ch]@8 + float v22; // [sp+14h] [bp-4h]@3 + + v1 = this; + if ( this->signature != SIG_trpg ) + return 2; + v3 = this->field_8; + v22 = this->field_30; + v4 = v3; + if ( v3 > 0 ) + { + v5 = v22 + this->field_2C; + v22 = v5; + if ( v5 > v4 ) + v22 = v4; + } + if ( v22 >= 1.0 || this->field_58 ) + { + v6 = 0; + v7 = this->field_54; + v20 = this->field_28; + v21 = this->field_4; + while ( v7->field_0 <= 0 ) + { + if ( v22 >= 1.0 ) + { + v12 = v1->field_40; + v13 = v1->field_3C; + v7->field_0 = v13 + rand() % (v12 - v13 + 1); + v7->field_14 = (rand() % 17 - 8) << 16; + v7->field_18 = (rand() % 17 - 8) << 16; + v14 = v1->field_14 - 1; + v15 = v1->field_C; + v16 = v15 + rand() % (v14 - v15 + 1); + v7->field_C = v16; + v7->field_4.x = v16 >> 16; + + v17 = v1->field_18 - 1; + v18 = v1->field_10; + v22 = v22 - 1.0; + v19 = v18 + rand() % (v17 - v18 + 1); + v7->field_10 = v19; + v7->field_4.y = v19 >> 16; + --v1->field_8; + goto LABEL_13; + } +LABEL_14: + ++v7; + --v21; + if ( !v21 ) + { + v1->field_58 = v6; + v1->field_30 = v22; + return 0; + } + } + v8 = v7->field_14; + --v7->field_0; + v9 = v8 + v7->field_C; + + v10 = v20 + v7->field_18; + v7->field_C = v9; + v7->field_4.x = v9 >> 16; + + v11 = v10 + v7->field_10; + v7->field_18 = v10; + v7->field_10 = v11; + v7->field_4.y = v11 >> 16; +LABEL_13: + v6 = 1; + goto LABEL_14; + } + return 0; + } + +//----- (0040E2A7) -------------------------------------------------------- +int stru272_stru0::_40E2A7() + { + + if (signature == SIG_trpg ) + { + if ( field_8 <= 0 ) + return field_58 != 0 ? 2 : 0; + else + return 1; + } + else + return 3; + } //----- (0040DFAF) -------------------------------------------------------- @@ -147,107 +411,104 @@ //----- (0040DF47) -------------------------------------------------------- void DoBlt_Copy(unsigned __int16 *pPixels) { - unsigned __int16 *v1; // ebx@1 - ArcomageRect rect; // [sp+Ch] [bp-18h]@1 - int pTargetXY[2]; // [sp+1Ch] [bp-8h]@1 - - v1 = pPixels; + RECT pSrcRect; + POINT pTargetPoint; // [sp+1Ch] [bp-8h]@1 + pRenderer->Present(); - pTargetXY[0] = 0; - pTargetXY[1] = 0; - rect.x = 0; - rect.z = 640; - rect.y = 0; - rect.w = 480; + + pTargetPoint.x = 0; + pTargetPoint.y = 0; + + pSrcRect.left = 0; + pSrcRect.right = 640; + pSrcRect.top = 0; + pSrcRect.bottom = 480; + pRenderer->BeginScene(); - pArcomageGame->pBlit_Copy_pixels = v1; - Blt_Copy(&rect, pTargetXY, 2); + pArcomageGame->pBlit_Copy_pixels = pPixels; + Blt_Copy(&pSrcRect, &pTargetPoint, 2); pRenderer->EndScene(); pArcomageGame->pBlit_Copy_pixels = 0; } //----- (0040DDC9) -------------------------------------------------------- -void __thiscall ArcomageGame::PlaySound(unsigned int a1) -{ - SoundID v1; // eax@10 - signed int v2; // [sp-4h] [bp-4h]@2 - - switch ( a1 ) - { - case 0x28u: - case 0x2Bu: - case 0x2Eu: - v2 = SOUND_Arcomage_LoseResources; - goto LABEL_10; - case 0x27u: - case 0x29u: - case 0x2Au: - case 0x2Cu: - case 0x2Du: - case 0x2Fu: - v2 = SOUND_Arcomage_AddResources; - goto LABEL_10; - case 0u: - case 0xCu: - case 0xEu: - case 0xFu: - case 0x10u: - case 0x30u: - case 0x32u: - case 0x35u: - v2 = SOUND_Arcomage_TowerWallDamage; - goto LABEL_10; - case 0x15u: - case 0x16u: - case 0x17u: - v2 = SOUND_Arcomage_DrawCard; - goto LABEL_10; - case 0x38u: - v2 = 124; - goto LABEL_10; - case 0x1Fu: - case 0x22u: - case 0x25u: - v2 = SOUND_Arcomage_ProductionDamage; - goto LABEL_10; - case 1u: - case 0x1Eu: - case 0x20u: - case 0x21u: - case 0x23u: - case 0x24u: - case 0x26u: - v2 = SOUND_Arcomage_ProductionUpgrade; - goto LABEL_10; - case 0x14u: - v2 = SOUND_Arcomage_127; -LABEL_10: - v1 = (SoundID)v2; - goto LABEL_16; - case 3u: - v1 = SOUND_Arcomage_128; - goto LABEL_16; - case 0x34u: - case 0x36u: - v1 = SOUND_Arcomage_TowerUpgrade; - goto LABEL_16; - case 0xAu: - case 0xBu: - case 0xDu: - v1 = (SoundID)130; - goto LABEL_16; - case 0x37u: - v1 = (SoundID)131; - goto LABEL_16; - case 0x31u: - case 0x33u: - v1 = SOUND_Arcomage_WallUpgrade; -LABEL_16: - pAudioPlayer->PlaySound(v1, 0, 0, -1, 0, 0, 0, 0); +void ArcomageGame::PlaySound( unsigned int event_id ) + { + SoundID play_sound_id; // eax@10 + + switch ( event_id ) + { + case 40: + case 43: + case 46: + play_sound_id = SOUND_Arcomage_LoseResources; + break; + case 39: + case 41: + case 42: + case 44: + case 45: + case 47: + play_sound_id = SOUND_Arcomage_AddResources; + break; + case 0: + case 12: + case 14: + case 15: + case 16: + case 48: + case 50: + case 53: + play_sound_id = SOUND_Arcomage_TowerWallDamage; + break; + case 21: + case 22: + case 23: + play_sound_id = SOUND_Arcomage_DrawCard; + break; + case 56: + play_sound_id = SOUND_Arcomage_124; break; - default: + case 31: + case 34: + case 37: + play_sound_id = SOUND_Arcomage_ProductionDamage; + break; + case 1: + case 30: + case 32: + case 33: + case 35: + case 36: + case 38: + play_sound_id = SOUND_Arcomage_ProductionUpgrade; + break; + case 20: + play_sound_id = SOUND_Arcomage_127; + break; + case 3: + play_sound_id = SOUND_Arcomage_128; + break; + case 52: + case 54: + play_sound_id = SOUND_Arcomage_TowerUpgrade; + break; + case 10: + case 11: + case 13: + play_sound_id = SOUND_Arcomage_130; + break; + case 55u: + play_sound_id = SOUND_Arcomage_131; + break; + case 49: + case 51: + play_sound_id = SOUND_Arcomage_WallUpgrade; + break; + default: return; - } + } + pAudioPlayer->PlaySound(play_sound_id, 0, 0, -1, 0, 0, 0, 0); } //----- (0040DC2D) -------------------------------------------------------- @@ -255,10 +516,10 @@ { void *v2; // ebp@1 BOOL v3; // eax@1 - int v4; // edx@6 - int v5; // edx@6 - int v6; // eax@6 - int v7; // edx@7 + //int v4; // edx@6 + //int v5; // edx@6 + //int v6; // eax@6 + //int v7; // edx@7 v2 = a2; pArcomageGame->field_0 = 0; @@ -310,1056 +571,963 @@ //----- (0040D7D5) -------------------------------------------------------- void am_BeginScene(unsigned __int16 *pPcxPixels, int a2, int a3) { - unsigned __int16 *v3; // esi@1 - - v3 = pPcxPixels; pRenderer->BeginScene(); - pArcomageGame->pBlit_Copy_pixels = v3; + pArcomageGame->pBlit_Copy_pixels = pPcxPixels; } //----- (0040D7EC) -------------------------------------------------------- -void __fastcall Blt_Chroma(ArcomageRect *pSrcXYZW, int *pTargetXY, int a3, int a4) +void __fastcall Blt_Chroma(RECT *pSrcRect, POINT *pTargetPoint, int a3, int blend_mode) { - ArcomageRect *pSrcXYZW_; // esi@1 - int x; // ecx@1 - int y; // edx@1 - unsigned __int16 *pSrc; // eax@2 - unsigned __int16 *v8; // edi@3 - int uSrcTotalWidth; // ecx@4 - unsigned int v10; // esi@9 - int v11; // ebx@11 - unsigned __int16 *v12; // edx@11 - char v13; // zf@17 - unsigned __int16 *v14; // ebx@20 - int v15; // eax@20 - unsigned __int16 *v16; // ecx@20 - unsigned int v17; // eax@23 - std::string v18; // [sp-18h] [bp-3Ch]@8 - const char *v19; // [sp-8h] [bp-2Ch]@8 - int v20; // [sp-4h] [bp-28h]@8 - std::string *v21; // [sp+Ch] [bp-18h]@8 - unsigned __int16 *v22; // [sp+10h] [bp-14h]@9 - int v23; // [sp+14h] [bp-10h]@3 - int v24; // [sp+18h] [bp-Ch]@3 - int uSrcPitch; // [sp+1Ch] [bp-8h]@5 - int a3a; // [sp+23h] [bp-1h]@8 - int v27; // [sp+30h] [bp+Ch]@13 - - pSrcXYZW_ = pSrcXYZW; - x = *pTargetXY; - y = pTargetXY[1]; - if ( !pRenderer->uNumSceneBegins || (pSrc = pArcomageGame->pBlit_Copy_pixels) == 0 ) + +unsigned __int16 *pSrc; // eax@2 +unsigned __int16 *dest_surf_pos; // edi@3 +int uSrcTotalWidth; // ecx@4 +unsigned int v10; // esi@9 +int v21; // [sp+Ch] [bp-18h]@8 +unsigned __int16 *src_surf_pos; // [sp+10h] [bp-14h]@9 +__int32 src_width; // [sp+14h] [bp-10h]@3 +__int32 src_height; // [sp+18h] [bp-Ch]@3 +int uSrcPitch; // [sp+1Ch] [bp-8h]@5 + + +if ( !pRenderer->uNumSceneBegins ) + return; +if ( !pArcomageGame->pBlit_Copy_pixels ) return; - v8 = &pRenderer->pTargetSurface[x + y * pRenderer->uTargetSurfacePitch]; - v23 = pSrcXYZW_->z - pSrcXYZW_->x; - v24 = pSrcXYZW_->w - pSrcXYZW_->y; - if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pBackgroundPixels ) - { - uSrcTotalWidth = (signed __int16)pArcomageGame->pGameBackground.uWidth; -LABEL_5: - uSrcPitch = uSrcTotalWidth; - goto LABEL_9; - } - if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pSpritesPixels ) - { - uSrcTotalWidth = (signed __int16)pArcomageGame->pSprites.uWidth; - goto LABEL_5; - } - MessageBoxW(nullptr, L"Problem in Blit_Chroma", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\am_nw.cpp:157", 0); - pSrc = pArcomageGame->pBlit_Copy_pixels; -LABEL_9: - v22 = &pSrc[pSrcXYZW_->x + uSrcPitch * pSrcXYZW_->y]; - v10 = 0xFFu >> (8 - LOBYTE(pRenderer->uTargetBBits)); - v21 = (std::string *)((((pRenderer->uTargetGBits != 6) - 1) & 0x4A00) + 12783); - if ( a4 == 2 ) - { - if ( v24 > 0 ) + +dest_surf_pos = &pRenderer->pTargetSurface[pTargetPoint->x + pTargetPoint->y * pRenderer->uTargetSurfacePitch]; +src_width = pSrcRect->right - pSrcRect->left; +src_height = pSrcRect->bottom - pSrcRect->top; + +if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pBackgroundPixels ) + uSrcTotalWidth = pArcomageGame->pGameBackground.uWidth; +else if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pSpritesPixels ) + uSrcTotalWidth = pArcomageGame->pSprites.uWidth; + +//v20 = 157; +//v19 = "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\am_nw.cpp"; +//v21 = &v18; +//std__string_char_40E2C8(&v18, "Problem in Blit_Chroma", &a3a); +//466D09_xcpt_string(&v21, v18, v19, v20); +//pSrc = pArcomageGame.pBlit_Copy_pixels; +//LABEL_9: +pSrc = pArcomageGame->pBlit_Copy_pixels; +uSrcPitch = uSrcTotalWidth; + +src_surf_pos = &pSrc[pSrcRect->left + uSrcPitch * pSrcRect->top]; +v10 = 0xFFu >> (8 - (unsigned __int8)pRenderer->uTargetBBits); +v21 = (pRenderer->uTargetGBits != 6 ? 0x31EF : 0x7BEF); + + +if ( blend_mode == 2 ) { - v11 = v23; - v12 = v22; - uSrcPitch = 2 * (uSrcPitch - v23); - do - { - if ( v11 > 0 ) - { - v27 = v11; - do - { - if ( *v12 != v10 ) - *v8 = *v12; - ++v8; - ++v12; - --v27; - } - while ( v27 ); - } - v12 = (unsigned __int16 *)((char *)v12 + uSrcPitch); - v13 = v24-- == 1; - v8 += pRenderer->uTargetSurfacePitch - v11; - } - while ( !v13 ); + uSrcPitch = 2 * (uSrcPitch - src_width); + for (int i=0; i< src_height; ++i) + { + for (int j=0; j< src_width; ++j) + { + if ( *src_surf_pos != v10 ) + *dest_surf_pos = *src_surf_pos; + ++dest_surf_pos; + ++src_surf_pos; + } + src_surf_pos+=uSrcPitch; + dest_surf_pos += pRenderer->uTargetSurfacePitch - src_width; + } } - } - else - { - if ( v24 > 0 ) +else { - v14 = (unsigned __int16 *)v23; - v15 = uSrcPitch - v23; - v23 = v24; - v16 = v22; - uSrcPitch = 2 * v15; - do - { - if ( (signed int)v14 > 0 ) + uSrcPitch = 2 * (uSrcPitch - src_width); + for (int i=0; i< src_height; ++i) { - v22 = v14; - do - { - v17 = *v16; - if ( v17 != v10 ) + for (int j=0; j< src_width; ++j) { - v24 = *v8; - *v8 = ((unsigned __int16)v21 & ((unsigned int)v24 >> 1)) + ((unsigned __int16)v21 & (v17 >> 1)); + if ( *src_surf_pos != v10 ) + *dest_surf_pos = (v21 & (*dest_surf_pos >> 1)) + (v21 & (*src_surf_pos >> 1)); + ++dest_surf_pos; + ++src_surf_pos; } - ++v8; - ++v16; - v22 = (unsigned __int16 *)((char *)v22 - 1); - } - while ( v22 ); + src_surf_pos+=uSrcPitch; + dest_surf_pos += pRenderer->uTargetSurfacePitch - src_width; } - v16 = (unsigned __int16 *)((char *)v16 + uSrcPitch); - v13 = v23-- == 1; - v8 += pRenderer->uTargetSurfacePitch - (uint)v14; - } - while ( !v13 ); } - } + } //----- (0040D9B1) -------------------------------------------------------- -void __fastcall Blt_Copy(ArcomageRect *pSrcXYZW, int *pTargetXY, int a3) -{ - ArcomageRect *pSrcXYZW_; // esi@1 - int x; // ecx@1 - int y; // edx@1 - unsigned __int16 *v6; // eax@2 - unsigned __int16 *v7; // edi@3 - int uSrcRegionWidth; // ebx@3 - int uSrcTotalWidth; // ecx@4 - unsigned __int16 *pSrc; // esi@8 - int v11; // edx@9 - int v12; // eax@12 - int v13; // ecx@19 - char v14; // zf@21 - std::string v15; // [sp-18h] [bp-38h]@7 - const char *v16; // [sp-8h] [bp-28h]@7 - int v17; // [sp-4h] [bp-24h]@7 - unsigned int v18; // [sp+Ch] [bp-14h]@7 - int v19; // [sp+10h] [bp-10h]@8 - int v20; // [sp+14h] [bp-Ch]@17 - int uSrcRegionHeight; // [sp+18h] [bp-8h]@3 - int a3a; // [sp+1Fh] [bp-1h]@7 - - pSrcXYZW_ = pSrcXYZW; - x = *pTargetXY; - y = pTargetXY[1]; - if ( pRenderer->uNumSceneBegins ) - { - v6 = pArcomageGame->pBlit_Copy_pixels; - if ( pArcomageGame->pBlit_Copy_pixels ) +void Blt_Copy( RECT *pSrcRect, POINT *pTargetPoint, int blend_mode ) { - v7 = &pRenderer->pTargetSurface[x + y * pRenderer->uTargetSurfacePitch]; - uSrcRegionWidth = pSrcXYZW_->z - pSrcXYZW_->x; - uSrcRegionHeight = pSrcXYZW_->w - pSrcXYZW_->y; - if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pBackgroundPixels ) - { - uSrcTotalWidth = (signed __int16)pArcomageGame->pGameBackground.uWidth; - } - else - { - if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pSpritesPixels ) + + unsigned __int16 *pSrc; // eax@2 + unsigned __int16 *dest_surf_pos; // edi@3 + int uSrcTotalWidth; // ecx@4 + int v21; // [sp+Ch] [bp-18h]@8 + unsigned __int16 *src_surf_pos; // [sp+10h] [bp-14h]@9 + __int32 src_width; // [sp+14h] [bp-10h]@3 + __int32 src_height; // [sp+18h] [bp-Ch]@3 + int uSrcPitch; // [sp+1Ch] [bp-8h]@5 + + if ( !pRenderer->uNumSceneBegins ) + return; + if ( !pArcomageGame->pBlit_Copy_pixels ) + return; + + dest_surf_pos = &pRenderer->pTargetSurface[pTargetPoint->x + pTargetPoint->y * pRenderer->uTargetSurfacePitch]; + src_width = pSrcRect->right - pSrcRect->left; + src_height = pSrcRect->bottom - pSrcRect->top; + + if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pBackgroundPixels ) + uSrcTotalWidth = pArcomageGame->pGameBackground.uWidth; + else if ( pArcomageGame->pBlit_Copy_pixels == pArcomageGame->pSpritesPixels ) + uSrcTotalWidth = pArcomageGame->pSprites.uWidth; + + //v20 = 157; + //v19 = "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\am_nw.cpp"; + //v21 = &v18; + //std__string_char_40E2C8(&v18, "Problem in Blit_Chroma", &a3a); + //466D09_xcpt_string(&v21, v18, v19, v20); + //pSrc = pArcomageGame.pBlit_Copy_pixels; + //LABEL_9: + pSrc = pArcomageGame->pBlit_Copy_pixels; + uSrcPitch = uSrcTotalWidth; + + src_surf_pos = &pSrc[pSrcRect->left + uSrcPitch * pSrcRect->top]; + v21 = (pRenderer->uTargetGBits != 6 ? 0x31EF : 0x7BEF); + + if ( blend_mode == 2 ) { - uSrcTotalWidth = (signed __int16)pArcomageGame->pSprites.uWidth; - } - else - { - MessageBoxW(nullptr, L"Problem in Blit_Copy", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\am_nw.cpp:246", 0); - uSrcTotalWidth = a3; - v6 = pArcomageGame->pBlit_Copy_pixels; + uSrcPitch = 2 * (uSrcPitch - src_width); + for (int i=0; i< src_height; ++i) + { + for (int j=0; j< src_width; ++j) + { + *dest_surf_pos = *src_surf_pos; + ++dest_surf_pos; + ++src_surf_pos; + } + src_surf_pos+=uSrcPitch; + dest_surf_pos += pRenderer->uTargetSurfacePitch - src_width; + } } - } - pSrc = &v6[pSrcXYZW_->x + uSrcTotalWidth * pSrcXYZW_->y]; - v19 = (((pRenderer->uTargetGBits != 6) - 1) & 0x4A00) + 0x31EF; - if ( a3 == 2 ) - { - v11 = uSrcRegionHeight; - if ( uSrcRegionHeight > 0 ) + else { - uSrcRegionHeight = 2 * (uSrcTotalWidth - uSrcRegionWidth); - do - { - if ( uSrcRegionWidth > 0 ) + uSrcPitch = 2 * (uSrcPitch - src_width); + for (int i=0; i< src_height; ++i) { - v12 = uSrcRegionWidth; - do - { - *v7 = *pSrc; - ++v7; - ++pSrc; - --v12; - } - while ( v12 ); + for (int j=0; j< src_width; ++j) + { + *dest_surf_pos = (v21 & (*dest_surf_pos >> 1)) + (v21 & (*src_surf_pos >> 1)); + ++dest_surf_pos; + ++src_surf_pos; + } + src_surf_pos+=uSrcPitch; + dest_surf_pos += pRenderer->uTargetSurfacePitch - src_width; } - pSrc = (unsigned __int16 *)((char *)pSrc + uSrcRegionHeight); - --v11; - v7 += pRenderer->uTargetSurfacePitch - uSrcRegionWidth; - } - while ( v11 ); } - } - else - { - if ( uSrcRegionHeight > 0 ) - { - v20 = uSrcRegionHeight; - uSrcRegionHeight = 2 * (uSrcTotalWidth - uSrcRegionWidth); - do - { - if ( uSrcRegionWidth > 0 ) - { - v13 = uSrcRegionWidth; - do - { - v18 = *v7; - *v7 = (v19 & (v18 >> 1)) + (v19 & ((unsigned int)*pSrc >> 1)); - ++v7; - ++pSrc; - --v13; - } - while ( v13 ); - } - pSrc = (unsigned __int16 *)((char *)pSrc + uSrcRegionHeight); - v14 = v20-- == 1; - v7 += pRenderer->uTargetSurfacePitch - uSrcRegionWidth; - } - while ( !v14 ); - } - } - } - } } //----- (0040DB10) -------------------------------------------------------- -void __cdecl am_EndScene() +void am_EndScene() { pRenderer->EndScene(); - pArcomageGame->pBlit_Copy_pixels = 0; + pArcomageGame->pBlit_Copy_pixels = NULL; } //----- (0040D7B7) -------------------------------------------------------- bool ArcomageGame::LoadSprites() { - bool result; // eax@1 - pArcomageGame->pSprites.Load("sprites.pcx", 2); - result = (bool)pArcomageGame->pSprites.pPixels; pArcomageGame->pSpritesPixels = pArcomageGame->pSprites.pPixels; - LOBYTE(result) = 1; - return result; + return true; } //----- (0040D799) -------------------------------------------------------- bool ArcomageGame::LoadBackground() { - bool result; // eax@1 - pArcomageGame->pGameBackground.Load("layout.pcx", 2); - result = (bool)pArcomageGame->pGameBackground.pPixels; pArcomageGame->pBackgroundPixels = pArcomageGame->pGameBackground.pPixels; - LOBYTE(result) = 1; - return result; + return true; } //----- (00408BB4) -------------------------------------------------------- bool __fastcall am_408BB4(int a1) { - char result; // al@3 - signed int v3; // ebx@8 - int v4; // esi@8 - int v5; // eax@9 - int v6; // edi@9 - int v7; // eax@11 - signed int v8; // eax@11 - int v9; // ebx@5 - int v10; // eax@5 - int v11; // ecx@18 - char v12; // bl@20 - int v13; // eax@20 - ArcomageCard *v14; // ecx@20 - char v15; // dl@20 - char v16; // dl@24 - int v17; // edx@25 - int v18; // edx@27 - char v19; // dl@31 - int v20; // edx@32 - char v21; // dl@35 - char v22; // dl@39 - int v23; // edx@40 - char v24; // dl@45 - int v25; // edx@46 - char v26; // dl@52 - int v27; // edx@53 - char v28; // dl@58 - int v29; // edx@59 - char v30; // dl@64 - int v31; // edx@65 - char v32; // dl@70 - int v33; // edx@71 - char v34; // dl@76 - int v35; // edx@77 - char v36; // dl@82 - int v37; // edx@83 - char v38; // dl@86 - char v39; // dl@90 - int v40; // edi@93 - char v41; // dl@93 - int v42; // esi@93 - char v43; // bl@94 - int v44; // esi@95 - char v45; // dl@99 - char v46; // dl@103 - char v47; // dl@107 - char v48; // dl@111 - char v49; // dl@115 - ArcomageGame_stru0 *v50; // ebx@116 - ArcomageGame_stru0 *v51; // edx@116 - int v52; // esi@124 - int v53; // edx@124 - int v54; // edx@127 - int v55; // esi@130 - int v56; // edi@138 - int l; // esi@138 - int v58; // eax@140 - int v59; // ecx@142 - int v60; // edx@142 - int v61; // ebx@142 - int v62; // eax@145 - int v63; // esi@146 - int v64; // ebx@4 - int v65; // eax@4 - int v66; // ecx@168 - char v67; // bl@170 - int v68; // eax@170 - ArcomageCard *v69; // ecx@170 - char v70; // dl@170 - char v71; // dl@174 - int v72; // edx@175 - int v73; // edx@177 - char v74; // dl@181 - char v75; // dl@184 - char v76; // dl@188 - int v77; // edx@189 - char v78; // dl@194 - char v79; // dl@200 - int v80; // edx@201 - char v81; // dl@206 - int v82; // edx@207 - char v83; // dl@212 - int v84; // edx@213 - char v85; // dl@218 - int v86; // edx@219 - char v87; // dl@224 - int v88; // edx@225 - char v89; // dl@230 - int v90; // edx@231 - char v91; // dl@234 - int v92; // edx@235 - char v93; // dl@238 - int v94; // edx@239 - int v95; // esi@241 - char v96; // dl@241 - int v97; // esi@241 - char v98; // bl@242 - int v99; // edi@243 - int v100; // edx@245 - int v101; // edi@246 - char v102; // dl@247 - int v103; // edx@248 - char v104; // dl@251 - int v105; // edx@252 - char v106; // dl@255 - int v107; // edx@256 - char v108; // dl@259 - int v109; // edx@260 - char v110; // dl@263 - ArcomageGame_stru0 *v111; // ebx@264 - ArcomageGame_stru0 *v112; // edx@264 - int v113; // esi@272 - int v114; // edx@272 - int v115; // edx@275 - int v116; // esi@278 - int v117; // edi@286 - int j; // esi@286 - int v119; // eax@288 - int v120; // ecx@290 - int v121; // edx@290 - int v122; // ebx@290 - int v123; // eax@293 - int v124; // esi@294 - int v125; // [sp-28h] [bp-28h]@130 - int v126; // [sp-28h] [bp-28h]@278 - int k; // [sp-24h] [bp-24h]@18 - int i; // [sp-24h] [bp-24h]@168 - int v129; // [sp-20h] [bp-20h]@5 - int v130; // [sp-20h] [bp-20h]@4 - int v131; // [sp-1Ch] [bp-1Ch]@17 - int v132; // [sp-1Ch] [bp-1Ch]@140 - int v133; // [sp-1Ch] [bp-1Ch]@167 - int v134; // [sp-1Ch] [bp-1Ch]@288 - int v135; // [sp-18h] [bp-18h]@5 - int v136; // [sp-18h] [bp-18h]@4 - signed int v137; // [sp-14h] [bp-14h]@0 - int v138; // [sp-14h] [bp-14h]@93 - int v139; // [sp-14h] [bp-14h]@130 - int v140; // [sp-14h] [bp-14h]@241 - int v141; // [sp-14h] [bp-14h]@278 - ArcomageGame_stru0 *v142; // [sp-10h] [bp-10h]@5 - ArcomageGame_stru0 *v143; // [sp-10h] [bp-10h]@4 - ArcomageGame_stru0 *v144; // [sp-Ch] [bp-Ch]@5 - ArcomageGame_stru0 *v145; // [sp-Ch] [bp-Ch]@4 - char v146; // [sp-8h] [bp-8h]@35 - char v147; // [sp-8h] [bp-8h]@184 - char v148; // [sp-5h] [bp-5h]@20 - char v149; // [sp-5h] [bp-5h]@170 - - byte_4FAA00 = 1; - if ( dword_4DF3A4 ) - { - if ( dword_4DF3A4 != 1 ) - { - result = dword_4DF3A4 - 2; - if ( dword_4DF3A4 != 2 ) - return result != 0; - v64 = a1; - v145 = &stru_505708[a1]; - v130 = a1; - v143 = &stru_505708[(a1 + 1) % 2]; - v136 = am_40BB49(a1); - v65 = 0; - do - { - if ( v65 >= v136 ) - { - dword_4FA9B0[2 * v65] = -1; - dword_4FA9B4[2 * v65] = -9999; - } - else - { - dword_4FA9B0[2 * v65] = v65; - dword_4FA9B4[2 * v65] = 0; - } - ++v65; - } - while ( v65 < 10 ); - v133 = 0; - if ( v136 > 0 ) - { - v66 = 47 * v64; - for ( i = 47 * v64; ; v66 = i ) - { - v67 = 99; - v68 = 2 * v133; - v69 = &pCards[stru_505708[0].arr_44[v66 + dword_4FA9B0[2 * v133]]]; - v70 = v69->field_38[2]; - v149 = v69->field_38[2]; - if ( v145->field_24 >= 10 ) - { - if ( v70 == 99 - || v69->field_48[4] == 99 - || v69->field_48[15] == 99 - || (v74 = BYTE1(v69->field_68), v74 == 99) ) - v73 = 5 * (v143->field_24 - v145->field_24); - else - v73 = 5 * (v149 + v69->field_48[4] + v69->field_48[15] + v74); - } - else - { - if ( v70 == 99 - || v69->field_48[4] == 99 - || v69->field_48[15] == 99 - || (v71 = BYTE1(v69->field_68), v71 == 99) ) - v72 = 5 * (v143->field_24 - v145->field_24); - else - v72 = 5 * (v149 + v69->field_48[4] + v69->field_48[15] + v71); - v73 = 4 * v72; - } - dword_4FA9B4[v68] += v73; - v75 = v69->field_38[1]; - v147 = v69->field_38[1]; - if ( v145->field_28 >= 10 ) - { - if ( v75 == 99 - || v69->field_48[3] == 99 - || v69->field_48[14] == 99 - || (v78 = LOBYTE(v69->field_68), v78 == 99) ) - v77 = v143->field_28 - v145->field_28; - else - v77 = v147 + v69->field_48[3] + v69->field_48[14] + v78; - } - else - { - if ( v75 == 99 - || v69->field_48[3] == 99 - || v69->field_48[14] == 99 - || (v76 = LOBYTE(v69->field_68), v76 == 99) ) - v77 = 5 * (v143->field_28 - v145->field_28); - else - v77 = 5 * (v147 + v69->field_48[3] + v69->field_48[14] + v76); - } - dword_4FA9B4[v68] += v77; - dword_4FA9B4[v68] += 7 * (v69->field_38[0] + v69->field_48[2] + v69->field_48[13] + v69->field_58[15]); - if ( BYTE2(v69->field_30) == 99 - || v69->field_38[12] == 99 - || v69->field_48[7] == 99 - || (v79 = v69->field_58[9], v79 == 99) ) - v80 = 5 * (v143->field_2C - v145->field_2C); - else - v80 = 5 * (BYTE2(v69->field_30) + v69->field_38[12] + v69->field_48[7] + v79); - dword_4FA9B4[v68] += 8 * v80; - if ( BYTE3(v69->field_30) == 99 - || v69->field_38[13] == 99 - || v69->field_48[8] == 99 - || (v81 = v69->field_58[10], v81 == 99) ) - v82 = 5 * (v143->field_30 - v145->field_30); - else - v82 = 5 * (BYTE3(v69->field_30) + v69->field_38[13] + v69->field_48[8] + v81); - dword_4FA9B4[v68] += 8 * v82; - if ( LOBYTE(v69->field_34) == 99 - || v69->field_38[14] == 99 - || v69->field_48[9] == 99 - || (v83 = v69->field_58[11], v83 == 99) ) - v84 = 5 * (v143->field_34 - v145->field_34); - else - v84 = 5 * (LOBYTE(v69->field_34) + v69->field_38[14] + v69->field_48[9] + v83); - dword_4FA9B4[v68] += 8 * v84; - if ( BYTE1(v69->field_34) == 99 - || v69->field_38[15] == 99 - || v69->field_48[10] == 99 - || (v85 = v69->field_58[12], v85 == 99) ) - v86 = v143->field_38 - v145->field_38; - else - v86 = BYTE1(v69->field_34) + v69->field_38[15] + v69->field_48[10] + v85; - dword_4FA9B4[v68] += 2 * v86; - if ( BYTE2(v69->field_34) == 99 - || v69->field_48[0] == 99 - || v69->field_48[11] == 99 - || (v87 = v69->field_58[13], v87 == 99) ) - v88 = v143->field_3C - v145->field_3C; - else - v88 = BYTE2(v69->field_34) + v69->field_48[0] + v69->field_48[11] + v87; - dword_4FA9B4[v68] += 2 * v88; - if ( BYTE3(v69->field_34) == 99 - || v69->field_48[1] == 99 - || v69->field_48[12] == 99 - || (v89 = v69->field_58[14], v89 == 99) ) - v90 = v143->field_40 - v145->field_40; - else - v90 = BYTE3(v69->field_34) + v69->field_48[1] + v69->field_48[12] + v89; - dword_4FA9B4[v68] += 2 * v90; - if ( v69->field_38[11] == 99 || (v91 = v69->field_58[8], v91 == 99) ) - v92 = 10 * (v145->field_24 - v143->field_24); - else - v92 = -10 * (v69->field_38[11] + v91); - dword_4FA9B4[v68] += v92; - if ( v69->field_38[10] == 99 || (v93 = v69->field_58[7], v93 == 99) ) - v94 = 3 * (v145->field_28 - v143->field_28); - else - v94 = -3 * (v69->field_38[10] + v93); - dword_4FA9B4[v68] += v94; - v95 = v69->field_38[9]; - v140 = v95; - v96 = v69->field_38[3]; - dword_4FA9B4[v68] += -7 * (v69->field_58[6] + v95); - v97 = dword_4FA9B4[v68]; - if ( v96 == 99 ) - goto LABEL_245; - v98 = v69->field_58[0]; - if ( v98 == 99 ) - break; - v99 = v96 + v98; - v67 = 99; - dword_4FA9B4[v68] = v97 - 5 * v99; -LABEL_246: - v101 = v140; - if ( v69->field_38[4] == v67 || (v102 = v69->field_58[1], v102 == v67) ) - v103 = 5 * (v145->field_30 - v143->field_30); - else - v103 = -5 * (v69->field_38[4] + v102); - dword_4FA9B4[v68] += v103; - if ( v69->field_38[5] == v67 || (v104 = v69->field_58[2], v104 == v67) ) - v105 = 5 * (v145->field_34 - v143->field_34); - else - v105 = -5 * (v69->field_38[5] + v104); - dword_4FA9B4[v68] += v105; - if ( v69->field_38[6] == v67 || (v106 = v69->field_58[3], v106 == v67) ) - v107 = v145->field_38 - v143->field_38; - else - v107 = -(v69->field_38[6] + v106); - dword_4FA9B4[v68] += 2 * v107; - if ( v69->field_38[7] == v67 || (v108 = v69->field_58[4], v108 == v67) ) - v109 = v145->field_3C - v143->field_3C; - else - v109 = -(v69->field_38[7] + v108); - dword_4FA9B4[v68] += 2 * v109; - if ( v69->field_38[8] == v67 || (v110 = v69->field_58[5], v110 == v67) ) - { - v112 = v145; - v111 = v143; - dword_4FA9B4[v68] += 2 * (v145->field_40 - v143->field_40); - } - else - { - v111 = v143; - dword_4FA9B4[v68] += -2 * (v69->field_38[8] + v110); - v112 = v145; - } - if ( LOBYTE(v69->field_30) || v69->field_48[5] ) - dword_4FA9B4[v68] *= 10; - if ( LOBYTE(v69->field_24) == 1 ) - { - v113 = LOBYTE(v69->field_28); - v114 = v112->field_38; - } - else - { - if ( LOBYTE(v69->field_24) == 2 ) - { - v113 = BYTE1(v69->field_28); - v114 = v112->field_3C; - } - else - { - if ( LOBYTE(v69->field_24) != 3 ) - goto LABEL_278; - v113 = BYTE2(v69->field_28); - v114 = v112->field_40; - } - } - v115 = v114 - v113; - if ( v115 > 3 ) - v115 = 3; - dword_4FA9B4[v68] += 5 * v115; -LABEL_278: - v116 = v69->field_58[8]; - v141 = v111->field_24; - v126 = v69->field_38[11]; - if ( v141 <= v116 + v126 ) - dword_4FA9B4[v68] += 9999; - v137 = v111->field_28 + v141; - if ( v137 <= v116 + v126 + v69->field_58[6] + v69->field_58[7] + v101 + v69->field_38[10] ) - dword_4FA9B4[v68] += 9999; - if ( v69->field_48[15] + (signed int)BYTE1(v69->field_68) + v145->field_24 + v69->field_48[4] + v149 >= dword_4E1884 ) - dword_4FA9B4[v68] += 9999; - ++v133; - if ( v133 >= v136 ) - { - v64 = v130; - goto LABEL_286; - } - } - v67 = 99; -LABEL_245: - v100 = v145->field_2C - v143->field_2C; - dword_4FA9B4[v68] = v97 + 4 * v100 + v100; - goto LABEL_246; - } -LABEL_286: - v117 = v136 - 1; - for ( j = v136 - 1; j >= 0; --j ) - { - v137 = 0; - if ( j > 0 ) - { - v119 = (int)dword_4FA9B0; - v134 = j; - v137 = j; - do - { - if ( *(unsigned int *)(v119 + 4) < *(unsigned int *)(v119 + 12) ) - { - v120 = *(unsigned int *)v119; - v121 = *(unsigned int *)(v119 + 4); - *(unsigned int *)v119 = *(unsigned int *)(v119 + 8); - v122 = *(unsigned int *)(v119 + 12); - *(unsigned int *)(v119 + 8) = v120; - *(unsigned int *)(v119 + 4) = v122; - v64 = v130; - *(unsigned int *)(v119 + 12) = v121; - } - v119 += 8; - --v134; - } - while ( v134 ); - } - } - v123 = v136 - 1; - if ( am_byte_4FAA77 ) - { - if ( v117 >= 0 ) - { - while ( !BYTE3(pCards[stru_505708[0].arr_44[47 * v64 + dword_4FA9B0[2 * v123]]].field_28) ) - { - --v123; - if ( v123 < 0 ) - return am_40BCFB(v64, v137) != 0; - } - v137 = dword_4FA9B0[2 * v123]; - } - } - else - { - v124 = 0; - if ( v117 >= 0 ) - { - while ( !BYTE3(pCards[stru_505708[0].arr_44[47 * v64 + dword_4FA9B0[2 * v123]]].field_28) ) - { - --v123; - if ( v123 < 0 ) - goto LABEL_299; - } - v137 = dword_4FA9B0[2 * v123]; - } -LABEL_299: - if ( v136 > 0 ) - { - while ( !am_40BF15(v64, dword_4FA9B0[2 * v124]) || dword_4FA9B4[2 * v124] < 0 ) - { - ++v124; - if ( v124 >= v136 ) - return am_40BCFB(v64, v137) != 0; - } - return am_40BE0E(v64, dword_4FA9B0[2 * v124]) != 0; - } - } - return am_40BCFB(v64, v137) != 0; - } - v9 = a1; - v144 = &stru_505708[a1]; - v129 = a1; - v142 = &stru_505708[(a1 + 1) % 2]; - v135 = am_40BB49(a1); - v10 = 0; - do - { - if ( v10 >= v135 ) - { - dword_4FA9B0[2 * v10] = -1; - dword_4FA9B4[2 * v10] = -9999; - } - else - { - dword_4FA9B0[2 * v10] = v10; - dword_4FA9B4[2 * v10] = 0; - } - ++v10; - } - while ( v10 < 10 ); - v131 = 0; - if ( v135 > 0 ) - { - v11 = 47 * v9; - for ( k = 47 * v9; ; v11 = k ) - { - v12 = 99; - v13 = 2 * v131; - v14 = &pCards[stru_505708[0].arr_44[v11 + dword_4FA9B0[2 * v131]]]; - v15 = v14->field_38[2]; - v148 = v14->field_38[2]; - if ( v144->field_24 >= 10 ) - { - if ( v15 == 99 || v14->field_48[4] == 99 || v14->field_48[15] == 99 || (v19 = BYTE1(v14->field_68), v19 == 99) ) - v20 = 5 * (v142->field_24 - v144->field_24); - else - v20 = 5 * (v148 + v14->field_48[4] + v14->field_48[15] + v19); - v18 = 2 * v20; - } - else - { - if ( v15 == 99 || v14->field_48[4] == 99 || v14->field_48[15] == 99 || (v16 = BYTE1(v14->field_68), v16 == 99) ) - v17 = 5 * (v142->field_24 - v144->field_24); - else - v17 = 5 * (v148 + v14->field_48[4] + v14->field_48[15] + v16); - v18 = 4 * v17; - } - dword_4FA9B4[v13] += v18; - v21 = v14->field_38[1]; - v146 = v14->field_38[1]; - if ( v144->field_28 >= 10 ) - { - if ( v21 == 99 - || v14->field_48[3] == 99 - || v14->field_48[14] == 99 - || (v24 = LOBYTE(v14->field_68), v24 == 99) ) - v25 = v142->field_28 - v144->field_28; - else - v25 = v146 + v14->field_48[3] + v14->field_48[14] + v24; - v23 = 2 * v25; - } - else - { - if ( v21 == 99 - || v14->field_48[3] == 99 - || v14->field_48[14] == 99 - || (v22 = LOBYTE(v14->field_68), v22 == 99) ) - v23 = 5 * (v142->field_28 - v144->field_28); - else - v23 = 5 * (v146 + v14->field_48[3] + v14->field_48[14] + v22); - } - dword_4FA9B4[v13] += v23; - dword_4FA9B4[v13] += 7 * (v14->field_38[0] + v14->field_48[2] + v14->field_48[13] + v14->field_58[15]); - if ( BYTE2(v14->field_30) == 99 - || v14->field_38[12] == 99 - || v14->field_48[7] == 99 - || (v26 = v14->field_58[9], v26 == 99) ) - v27 = 5 * (v142->field_2C - v144->field_2C); - else - v27 = 5 * (BYTE2(v14->field_30) + v14->field_38[12] + v14->field_48[7] + v26); - dword_4FA9B4[v13] += 8 * v27; - if ( BYTE3(v14->field_30) == 99 - || v14->field_38[13] == 99 - || v14->field_48[8] == 99 - || (v28 = v14->field_58[10], v28 == 99) ) - v29 = 5 * (v142->field_30 - v144->field_30); - else - v29 = 5 * (BYTE3(v14->field_30) + v14->field_38[13] + v14->field_48[8] + v28); - dword_4FA9B4[v13] += 8 * v29; - if ( LOBYTE(v14->field_34) == 99 - || v14->field_38[14] == 99 - || v14->field_48[9] == 99 - || (v30 = v14->field_58[11], v30 == 99) ) - v31 = 5 * (v142->field_34 - v144->field_34); - else - v31 = 5 * (LOBYTE(v14->field_34) + v14->field_38[14] + v14->field_48[9] + v30); - dword_4FA9B4[v13] += 8 * v31; - if ( BYTE1(v14->field_34) == 99 - || v14->field_38[15] == 99 - || v14->field_48[10] == 99 - || (v32 = v14->field_58[12], v32 == 99) ) - v33 = v142->field_38 - v144->field_38; - else - v33 = BYTE1(v14->field_34) + v14->field_38[15] + v14->field_48[10] + v32; - dword_4FA9B4[v13] += 2 * v33; - if ( BYTE2(v14->field_34) == 99 - || v14->field_48[0] == 99 - || v14->field_48[11] == 99 - || (v34 = v14->field_58[13], v34 == 99) ) - v35 = v142->field_3C - v144->field_3C; - else - v35 = BYTE2(v14->field_34) + v14->field_48[0] + v14->field_48[11] + v34; - dword_4FA9B4[v13] += 2 * v35; - if ( BYTE3(v14->field_34) == 99 - || v14->field_48[1] == 99 - || v14->field_48[12] == 99 - || (v36 = v14->field_58[14], v36 == 99) ) - v37 = v142->field_40 - v144->field_40; - else - v37 = BYTE3(v14->field_34) + v14->field_48[1] + v14->field_48[12] + v36; - dword_4FA9B4[v13] += 2 * v37; - if ( v14->field_38[11] == 99 || (v38 = v14->field_58[8], v38 == 99) ) - dword_4FA9B4[v13] += v144->field_24 - v142->field_24; - else - dword_4FA9B4[v13] -= v14->field_38[11] + v38; - if ( v14->field_38[10] == 99 || (v39 = v14->field_58[7], v39 == 99) ) - dword_4FA9B4[v13] += v144->field_28 - v142->field_28; - else - dword_4FA9B4[v13] -= v14->field_38[10] + v39; - v40 = v14->field_38[9]; - v138 = v14->field_38[9]; - dword_4FA9B4[v13] -= v40 + v14->field_58[6]; - v41 = v14->field_38[3]; - v42 = dword_4FA9B4[v13]; - if ( v41 == 99 ) - goto LABEL_97; - v43 = v14->field_58[0]; - if ( v43 == 99 ) - break; - v44 = v42 - v43; - v12 = 99; - dword_4FA9B4[v13] = v44 - v41; -LABEL_98: - if ( v14->field_38[4] == v12 || (v45 = v14->field_58[1], v45 == v12) ) - dword_4FA9B4[v13] += v144->field_30 - v142->field_30; - else - dword_4FA9B4[v13] -= v14->field_38[4] + v45; - if ( v14->field_38[5] == v12 || (v46 = v14->field_58[2], v46 == v12) ) - dword_4FA9B4[v13] += v144->field_34 - v142->field_34; - else - dword_4FA9B4[v13] -= v14->field_38[5] + v46; - if ( v14->field_38[6] == v12 || (v47 = v14->field_58[3], v47 == v12) ) - dword_4FA9B4[v13] += v144->field_38 - v142->field_38; - else - dword_4FA9B4[v13] -= v14->field_38[6] + v47; - if ( v14->field_38[7] == v12 || (v48 = v14->field_58[4], v48 == v12) ) - dword_4FA9B4[v13] += v144->field_3C - v142->field_3C; - else - dword_4FA9B4[v13] -= v14->field_38[7] + v48; - if ( v14->field_38[8] == v12 || (v49 = v14->field_58[5], v49 == v12) ) - { - v51 = v144; - v50 = v142; - dword_4FA9B4[v13] += v144->field_40 - v142->field_40; - } - else - { - v50 = v142; - dword_4FA9B4[v13] -= v14->field_38[8] + v49; - v51 = v144; - } - if ( LOBYTE(v14->field_30) || v14->field_48[5] ) - dword_4FA9B4[v13] *= 10; - if ( LOBYTE(v14->field_24) == 1 ) - { - v52 = LOBYTE(v14->field_28); - v53 = v51->field_38; - } - else - { - if ( LOBYTE(v14->field_24) == 2 ) - { - v52 = BYTE1(v14->field_28); - v53 = v51->field_3C; - } - else - { - if ( LOBYTE(v14->field_24) != 3 ) - goto LABEL_130; - v52 = BYTE2(v14->field_28); - v53 = v51->field_40; - } - } - v54 = v53 - v52; - if ( v54 > 3 ) - v54 = 3; - dword_4FA9B4[v13] += 5 * v54; -LABEL_130: - v55 = v14->field_58[8]; - v139 = v50->field_24; - v125 = v14->field_38[11]; - if ( v139 <= v55 + v125 ) - dword_4FA9B4[v13] += 9999; - v137 = v50->field_28 + v139; - if ( v137 <= v55 + v125 + v14->field_58[6] + v14->field_58[7] + v40 + v14->field_38[10] ) - dword_4FA9B4[v13] += 9999; - if ( v14->field_48[15] + (signed int)BYTE1(v14->field_68) + v144->field_24 + v14->field_48[4] + v148 >= dword_4E1884 ) - dword_4FA9B4[v13] += 9999; - ++v131; - if ( v131 >= v135 ) - { - v9 = v129; - goto LABEL_138; - } - } - v12 = 99; -LABEL_97: - v40 = v138; - dword_4FA9B4[v13] = v42 + v144->field_2C - v142->field_2C; - goto LABEL_98; - } -LABEL_138: - v56 = v135 - 1; - for ( l = v135 - 1; l >= 0; --l ) - { - v137 = 0; - if ( l > 0 ) - { - v58 = (int)dword_4FA9B0; - v132 = l; - v137 = l; - do - { - if ( *(unsigned int *)(v58 + 4) < *(unsigned int *)(v58 + 12) ) - { - v59 = *(unsigned int *)v58; - v60 = *(unsigned int *)(v58 + 4); - *(unsigned int *)v58 = *(unsigned int *)(v58 + 8); - v61 = *(unsigned int *)(v58 + 12); - *(unsigned int *)(v58 + 8) = v59; - *(unsigned int *)(v58 + 4) = v61; - v9 = v129; - *(unsigned int *)(v58 + 12) = v60; - } - v58 += 8; - --v132; - } - while ( v132 ); - } - } - v62 = v135 - 1; - if ( am_byte_4FAA77 ) - { - if ( v56 >= 0 ) - { - while ( !BYTE3(pCards[stru_505708[0].arr_44[47 * v9 + dword_4FA9B0[2 * v62]]].field_28) ) - { - --v62; - if ( v62 < 0 ) - return am_40BCFB(v9, v137) != 0; - } - v137 = dword_4FA9B0[2 * v62]; - } - } - else - { - v63 = 0; - if ( v56 >= 0 ) - { - while ( !BYTE3(pCards[stru_505708[0].arr_44[47 * v9 + dword_4FA9B0[2 * v62]]].field_28) ) - { - --v62; - if ( v62 < 0 ) - goto LABEL_151; - } - v137 = dword_4FA9B0[2 * v62]; - } -LABEL_151: - if ( v135 > 0 ) - { - while ( !am_40BF15(v9, dword_4FA9B0[2 * v63]) || dword_4FA9B4[2 * v63] < 0 ) - { - ++v63; - if ( v63 >= v135 ) - return am_40BCFB(v9, v137) != 0; - } - return am_40BE0E(v9, dword_4FA9B0[2 * v63]) != 0; - } - } - return am_40BCFB(v9, v137) != 0; - } - v3 = 0; - v4 = a1; - if ( am_byte_4FAA77 ) - { -LABEL_11: - v7 = am_40BB49(v4); - v8 = rand_interval(0, v7 - 1); - result = am_40BCFB(v4, v8); - } - else - { - while ( 1 ) - { - v5 = am_40BB49(v4); - v6 = rand_interval(0, v5 - 1); - if ( am_40BF15(v4, v6) ) - break; - ++v3; - if ( v3 >= 10 ) - goto LABEL_11; - } - result = am_40BE0E(v4, v6); - } - return result != 0; +// char result; // al@3 +// signed int v3; // ebx@8 +// int v4; // esi@8 +// int v5; // eax@9 +// int v6; // edi@9 +// int v7; // eax@11 +// signed int v8; // eax@11 +// int v9; // ebx@5 +// int v10; // eax@5 +// int v11; // ecx@18 +// char v12; // bl@20 +// int v13; // eax@20 +// ArcomageCard *v14; // ecx@20 +// char v15; // dl@20 +// char v16; // dl@24 +// int v17; // edx@25 +// int v18; // edx@27 +// char v19; // dl@31 +// int v20; // edx@32 +// char v21; // dl@35 +// char v22; // dl@39 +// int v23; // edx@40 +// char v24; // dl@45 +// int v25; // edx@46 +// char v26; // dl@52 +// int v27; // edx@53 +// char v28; // dl@58 +// int v29; // edx@59 +// char v30; // dl@64 +// int v31; // edx@65 +// char v32; // dl@70 +// int v33; // edx@71 +// char v34; // dl@76 +// int v35; // edx@77 +// char v36; // dl@82 +// int v37; // edx@83 +// char v38; // dl@86 +// char v39; // dl@90 +// int v40; // edi@93 +// char v41; // dl@93 +// int v42; // esi@93 +// char v43; // bl@94 +// int v44; // esi@95 +// char v45; // dl@99 +// char v46; // dl@103 +// char v47; // dl@107 +// char v48; // dl@111 +// char v49; // dl@115 +// ArcomagePlayer *v50; // ebx@116 +// ArcomagePlayer *v51; // edx@116 +// int v52; // esi@124 +// int v53; // edx@124 +// int v54; // edx@127 +// int v55; // esi@130 +// int v56; // edi@138 +// int l; // esi@138 +// int v58; // eax@140 +// int v59; // ecx@142 +// int v60; // edx@142 +// int v61; // ebx@142 +// int v62; // eax@145 +// int v63; // esi@146 +// int v64; // ebx@4 +// int v65; // eax@4 +// int v66; // ecx@168 +// char v67; // bl@170 +// int v68; // eax@170 +// ArcomageCard *v69; // ecx@170 +// char v70; // dl@170 +// char v71; // dl@174 +// int v72; // edx@175 +// int v73; // edx@177 +// char v74; // dl@181 +// char v75; // dl@184 +// char v76; // dl@188 +// int v77; // edx@189 +// char v78; // dl@194 +// char v79; // dl@200 +// int v80; // edx@201 +// char v81; // dl@206 +// int v82; // edx@207 +// char v83; // dl@212 +// int v84; // edx@213 +// char v85; // dl@218 +// int v86; // edx@219 +// char v87; // dl@224 +// int v88; // edx@225 +// char v89; // dl@230 +// int v90; // edx@231 +// char v91; // dl@234 +// int v92; // edx@235 +// char v93; // dl@238 +// int v94; // edx@239 +// int v95; // esi@241 +// char v96; // dl@241 +// int v97; // esi@241 +// char v98; // bl@242 +// int v99; // edi@243 +// int v100; // edx@245 +// int v101; // edi@246 +// char v102; // dl@247 +// int v103; // edx@248 +// char v104; // dl@251 +// int v105; // edx@252 +// char v106; // dl@255 +// int v107; // edx@256 +// char v108; // dl@259 +// int v109; // edx@260 +// char v110; // dl@263 +// ArcomagePlayer *v111; // ebx@264 +// ArcomagePlayer *v112; // edx@264 +// int v113; // esi@272 +// int v114; // edx@272 +// int v115; // edx@275 +// int v116; // esi@278 +// int v117; // edi@286 +// int j; // esi@286 +// int v119; // eax@288 +// int v120; // ecx@290 +// int v121; // edx@290 +// int v122; // ebx@290 +// int v123; // eax@293 +// int v124; // esi@294 +// int v125; // [sp-28h] [bp-28h]@130 +// int v126; // [sp-28h] [bp-28h]@278 +// int k; // [sp-24h] [bp-24h]@18 +// int i; // [sp-24h] [bp-24h]@168 +// int v129; // [sp-20h] [bp-20h]@5 +// int v130; // [sp-20h] [bp-20h]@4 +// int v131; // [sp-1Ch] [bp-1Ch]@17 +// int v132; // [sp-1Ch] [bp-1Ch]@140 +// int v133; // [sp-1Ch] [bp-1Ch]@167 +// int v134; // [sp-1Ch] [bp-1Ch]@288 +// int v135; // [sp-18h] [bp-18h]@5 +// int v136; // [sp-18h] [bp-18h]@4 +// signed int v137; // [sp-14h] [bp-14h]@0 +// int v138; // [sp-14h] [bp-14h]@93 +// int v139; // [sp-14h] [bp-14h]@130 +// int v140; // [sp-14h] [bp-14h]@241 +// int v141; // [sp-14h] [bp-14h]@278 +// ArcomagePlayer *v142; // [sp-10h] [bp-10h]@5 +// ArcomagePlayer *v143; // [sp-10h] [bp-10h]@4 +// ArcomagePlayer *v144; // [sp-Ch] [bp-Ch]@5 +// ArcomagePlayer *v145; // [sp-Ch] [bp-Ch]@4 +// char v146; // [sp-8h] [bp-8h]@35 +// char v147; // [sp-8h] [bp-8h]@184 +// char v148; // [sp-5h] [bp-5h]@20 +// char v149; // [sp-5h] [bp-5h]@170 +// +// byte_4FAA00 = 1; +// if ( dword_4DF3A4 ) +// { +// if ( dword_4DF3A4 != 1 ) +// { +// result = dword_4DF3A4 - 2; +// if ( dword_4DF3A4 != 2 ) +// return result != 0; +// v64 = a1; +// v145 = &stru_505708[a1]; +// v130 = a1; +// v143 = &stru_505708[(a1 + 1) % 2]; +// v136 = GetPlayerHandCardCount(a1); +// v65 = 0; +// do +// { +// if ( v65 >= v136 ) +// { +// dword_4FA9B0[2 * v65] = -1; +// dword_4FA9B4[2 * v65] = -9999; +// } +// else +// { +// dword_4FA9B0[2 * v65] = v65; +// dword_4FA9B4[2 * v65] = 0; +// } +// ++v65; +// } +// while ( v65 < 10 ); +// v133 = 0; +// if ( v136 > 0 ) +// { +// v66 = 47 * v64; +// for ( i = 47 * v64; ; v66 = i ) +// { +// v67 = 99; +// v68 = 2 * v133; +// v69 = &pCards[stru_505708[0].cards_at_hand[v66 + dword_4FA9B0[2 * v133]]]; +// v70 = v69->field_38[2]; +// v149 = v69->field_38[2]; +// if ( v145->field_24 >= 10 ) +// { +// if ( v70 == 99 +// || v69->field_48[4] == 99 +// || v69->field_48[15] == 99 +// || (v74 = BYTE1(v69->field_68), v74 == 99) ) +// v73 = 5 * (v143->field_24 - v145->field_24); +// else +// v73 = 5 * (v149 + v69->field_48[4] + v69->field_48[15] + v74); +// } +// else +// { +// if ( v70 == 99 +// || v69->field_48[4] == 99 +// || v69->field_48[15] == 99 +// || (v71 = BYTE1(v69->field_68), v71 == 99) ) +// v72 = 5 * (v143->field_24 - v145->field_24); +// else +// v72 = 5 * (v149 + v69->field_48[4] + v69->field_48[15] + v71); +// v73 = 4 * v72; +// } +// dword_4FA9B4[v68] += v73; +// v75 = v69->field_38[1]; +// v147 = v69->field_38[1]; +// if ( v145->field_28 >= 10 ) +// { +// if ( v75 == 99 +// || v69->field_48[3] == 99 +// || v69->field_48[14] == 99 +// || (v78 = LOBYTE(v69->field_68), v78 == 99) ) +// v77 = v143->field_28 - v145->field_28; +// else +// v77 = v147 + v69->field_48[3] + v69->field_48[14] + v78; +// } +// else +// { +// if ( v75 == 99 +// || v69->field_48[3] == 99 +// || v69->field_48[14] == 99 +// || (v76 = LOBYTE(v69->field_68), v76 == 99) ) +// v77 = 5 * (v143->field_28 - v145->field_28); +// else +// v77 = 5 * (v147 + v69->field_48[3] + v69->field_48[14] + v76); +// } +// dword_4FA9B4[v68] += v77; +// dword_4FA9B4[v68] += 7 * (v69->field_38[0] + v69->field_48[2] + v69->field_48[13] + v69->field_58[15]); +// if ( BYTE2(v69->field_30) == 99 +// || v69->field_38[12] == 99 +// || v69->field_48[7] == 99 +// || (v79 = v69->field_58[9], v79 == 99) ) +// v80 = 5 * (v143->field_2C - v145->field_2C); +// else +// v80 = 5 * (BYTE2(v69->field_30) + v69->field_38[12] + v69->field_48[7] + v79); +// dword_4FA9B4[v68] += 8 * v80; +// if ( BYTE3(v69->field_30) == 99 +// || v69->field_38[13] == 99 +// || v69->field_48[8] == 99 +// || (v81 = v69->field_58[10], v81 == 99) ) +// v82 = 5 * (v143->field_30 - v145->field_30); +// else +// v82 = 5 * (BYTE3(v69->field_30) + v69->field_38[13] + v69->field_48[8] + v81); +// dword_4FA9B4[v68] += 8 * v82; +// if ( LOBYTE(v69->field_34) == 99 +// || v69->field_38[14] == 99 +// || v69->field_48[9] == 99 +// || (v83 = v69->field_58[11], v83 == 99) ) +// v84 = 5 * (v143->field_34 - v145->field_34); +// else +// v84 = 5 * (LOBYTE(v69->field_34) + v69->field_38[14] + v69->field_48[9] + v83); +// dword_4FA9B4[v68] += 8 * v84; +// if ( BYTE1(v69->field_34) == 99 +// || v69->field_38[15] == 99 +// || v69->field_48[10] == 99 +// || (v85 = v69->field_58[12], v85 == 99) ) +// v86 = v143->field_38 - v145->field_38; +// else +// v86 = BYTE1(v69->field_34) + v69->field_38[15] + v69->field_48[10] + v85; +// dword_4FA9B4[v68] += 2 * v86; +// if ( BYTE2(v69->field_34) == 99 +// || v69->field_48[0] == 99 +// || v69->field_48[11] == 99 +// || (v87 = v69->field_58[13], v87 == 99) ) +// v88 = v143->field_3C - v145->field_3C; +// else +// v88 = BYTE2(v69->field_34) + v69->field_48[0] + v69->field_48[11] + v87; +// dword_4FA9B4[v68] += 2 * v88; +// if ( BYTE3(v69->field_34) == 99 +// || v69->field_48[1] == 99 +// || v69->field_48[12] == 99 +// || (v89 = v69->field_58[14], v89 == 99) ) +// v90 = v143->field_40 - v145->field_40; +// else +// v90 = BYTE3(v69->field_34) + v69->field_48[1] + v69->field_48[12] + v89; +// dword_4FA9B4[v68] += 2 * v90; +// if ( v69->field_38[11] == 99 || (v91 = v69->field_58[8], v91 == 99) ) +// v92 = 10 * (v145->field_24 - v143->field_24); +// else +// v92 = -10 * (v69->field_38[11] + v91); +// dword_4FA9B4[v68] += v92; +// if ( v69->field_38[10] == 99 || (v93 = v69->field_58[7], v93 == 99) ) +// v94 = 3 * (v145->field_28 - v143->field_28); +// else +// v94 = -3 * (v69->field_38[10] + v93); +// dword_4FA9B4[v68] += v94; +// v95 = v69->field_38[9]; +// v140 = v95; +// v96 = v69->field_38[3]; +// dword_4FA9B4[v68] += -7 * (v69->field_58[6] + v95); +// v97 = dword_4FA9B4[v68]; +// if ( v96 == 99 ) +// goto LABEL_245; +// v98 = v69->field_58[0]; +// if ( v98 == 99 ) +// break; +// v99 = v96 + v98; +// v67 = 99; +// dword_4FA9B4[v68] = v97 - 5 * v99; +//LABEL_246: +// v101 = v140; +// if ( v69->field_38[4] == v67 || (v102 = v69->field_58[1], v102 == v67) ) +// v103 = 5 * (v145->field_30 - v143->field_30); +// else +// v103 = -5 * (v69->field_38[4] + v102); +// dword_4FA9B4[v68] += v103; +// if ( v69->field_38[5] == v67 || (v104 = v69->field_58[2], v104 == v67) ) +// v105 = 5 * (v145->field_34 - v143->field_34); +// else +// v105 = -5 * (v69->field_38[5] + v104); +// dword_4FA9B4[v68] += v105; +// if ( v69->field_38[6] == v67 || (v106 = v69->field_58[3], v106 == v67) ) +// v107 = v145->field_38 - v143->field_38; +// else +// v107 = -(v69->field_38[6] + v106); +// dword_4FA9B4[v68] += 2 * v107; +// if ( v69->field_38[7] == v67 || (v108 = v69->field_58[4], v108 == v67) ) +// v109 = v145->field_3C - v143->field_3C; +// else +// v109 = -(v69->field_38[7] + v108); +// dword_4FA9B4[v68] += 2 * v109; +// if ( v69->field_38[8] == v67 || (v110 = v69->field_58[5], v110 == v67) ) +// { +// v112 = v145; +// v111 = v143; +// dword_4FA9B4[v68] += 2 * (v145->field_40 - v143->field_40); +// } +// else +// { +// v111 = v143; +// dword_4FA9B4[v68] += -2 * (v69->field_38[8] + v110); +// v112 = v145; +// } +// if ( LOBYTE(v69->field_30) || v69->field_48[5] ) +// dword_4FA9B4[v68] *= 10; +// if ( LOBYTE(v69->field_24) == 1 ) +// { +// v113 = LOBYTE(v69->field_28); +// v114 = v112->field_38; +// } +// else +// { +// if ( LOBYTE(v69->field_24) == 2 ) +// { +// v113 = BYTE1(v69->field_28); +// v114 = v112->field_3C; +// } +// else +// { +// if ( LOBYTE(v69->field_24) != 3 ) +// goto LABEL_278; +// v113 = BYTE2(v69->field_28); +// v114 = v112->field_40; +// } +// } +// v115 = v114 - v113; +// if ( v115 > 3 ) +// v115 = 3; +// dword_4FA9B4[v68] += 5 * v115; +//LABEL_278: +// v116 = v69->field_58[8]; +// v141 = v111->field_24; +// v126 = v69->field_38[11]; +// if ( v141 <= v116 + v126 ) +// dword_4FA9B4[v68] += 9999; +// v137 = v111->field_28 + v141; +// if ( v137 <= v116 + v126 + v69->field_58[6] + v69->field_58[7] + v101 + v69->field_38[10] ) +// dword_4FA9B4[v68] += 9999; +// if ( v69->field_48[15] + (signed int)BYTE1(v69->field_68) + v145->field_24 + v69->field_48[4] + v149 >= dword_4E1884 ) +// dword_4FA9B4[v68] += 9999; +// ++v133; +// if ( v133 >= v136 ) +// { +// v64 = v130; +// goto LABEL_286; +// } +// } +// v67 = 99; +//LABEL_245: +// v100 = v145->field_2C - v143->field_2C; +// dword_4FA9B4[v68] = v97 + 4 * v100 + v100; +// goto LABEL_246; +// } +//LABEL_286: +// v117 = v136 - 1; +// for ( j = v136 - 1; j >= 0; --j ) +// { +// v137 = 0; +// if ( j > 0 ) +// { +// v119 = (int)dword_4FA9B0; +// v134 = j; +// v137 = j; +// do +// { +// if ( *(unsigned int *)(v119 + 4) < *(unsigned int *)(v119 + 12) ) +// { +// v120 = *(unsigned int *)v119; +// v121 = *(unsigned int *)(v119 + 4); +// *(unsigned int *)v119 = *(unsigned int *)(v119 + 8); +// v122 = *(unsigned int *)(v119 + 12); +// *(unsigned int *)(v119 + 8) = v120; +// *(unsigned int *)(v119 + 4) = v122; +// v64 = v130; +// *(unsigned int *)(v119 + 12) = v121; +// } +// v119 += 8; +// --v134; +// } +// while ( v134 ); +// } +// } +// v123 = v136 - 1; +// if ( am_byte_4FAA77 ) +// { +// if ( v117 >= 0 ) +// { +// while ( !BYTE3(pCards[stru_505708[0].cards_at_hand[47 * v64 + dword_4FA9B0[2 * v123]]].field_28) ) +// { +// --v123; +// if ( v123 < 0 ) +// return am_40BCFB(v64, v137) != 0; +// } +// v137 = dword_4FA9B0[2 * v123]; +// } +// } +// else +// { +// v124 = 0; +// if ( v117 >= 0 ) +// { +// while ( !BYTE3(pCards[stru_505708[0].cards_at_hand[47 * v64 + dword_4FA9B0[2 * v123]]].field_28) ) +// { +// --v123; +// if ( v123 < 0 ) +// goto LABEL_299; +// } +// v137 = dword_4FA9B0[2 * v123]; +// } +//LABEL_299: +// if ( v136 > 0 ) +// { +// while ( !am_40BF15(v64, dword_4FA9B0[2 * v124]) || dword_4FA9B4[2 * v124] < 0 ) +// { +// ++v124; +// if ( v124 >= v136 ) +// return am_40BCFB(v64, v137) != 0; +// } +// return am_40BE0E(v64, dword_4FA9B0[2 * v124]) != 0; +// } +// } +// return am_40BCFB(v64, v137) != 0; +// } +// v9 = a1; +// v144 = &stru_505708[a1]; +// v129 = a1; +// v142 = &stru_505708[(a1 + 1) % 2]; +// v135 = GetPlayerHandCardCount(a1); +// v10 = 0; +// do +// { +// if ( v10 >= v135 ) +// { +// dword_4FA9B0[2 * v10] = -1; +// dword_4FA9B4[2 * v10] = -9999; +// } +// else +// { +// dword_4FA9B0[2 * v10] = v10; +// dword_4FA9B4[2 * v10] = 0; +// } +// ++v10; +// } +// while ( v10 < 10 ); +// v131 = 0; +// if ( v135 > 0 ) +// { +// v11 = 47 * v9; +// for ( k = 47 * v9; ; v11 = k ) +// { +// v12 = 99; +// v13 = 2 * v131; +// v14 = &pCards[stru_505708[0].cards_at_hand[v11 + dword_4FA9B0[2 * v131]]]; +// v15 = v14->field_38[2]; +// v148 = v14->field_38[2]; +// if ( v144->field_24 >= 10 ) +// { +// if ( v15 == 99 || v14->field_48[4] == 99 || v14->field_48[15] == 99 || (v19 = BYTE1(v14->field_68), v19 == 99) ) +// v20 = 5 * (v142->field_24 - v144->field_24); +// else +// v20 = 5 * (v148 + v14->field_48[4] + v14->field_48[15] + v19); +// v18 = 2 * v20; +// } +// else +// { +// if ( v15 == 99 || v14->field_48[4] == 99 || v14->field_48[15] == 99 || (v16 = BYTE1(v14->field_68), v16 == 99) ) +// v17 = 5 * (v142->field_24 - v144->field_24); +// else +// v17 = 5 * (v148 + v14->field_48[4] + v14->field_48[15] + v16); +// v18 = 4 * v17; +// } +// dword_4FA9B4[v13] += v18; +// v21 = v14->field_38[1]; +// v146 = v14->field_38[1]; +// if ( v144->field_28 >= 10 ) +// { +// if ( v21 == 99 +// || v14->field_48[3] == 99 +// || v14->field_48[14] == 99 +// || (v24 = LOBYTE(v14->field_68), v24 == 99) ) +// v25 = v142->field_28 - v144->field_28; +// else +// v25 = v146 + v14->field_48[3] + v14->field_48[14] + v24; +// v23 = 2 * v25; +// } +// else +// { +// if ( v21 == 99 +// || v14->field_48[3] == 99 +// || v14->field_48[14] == 99 +// || (v22 = LOBYTE(v14->field_68), v22 == 99) ) +// v23 = 5 * (v142->field_28 - v144->field_28); +// else +// v23 = 5 * (v146 + v14->field_48[3] + v14->field_48[14] + v22); +// } +// dword_4FA9B4[v13] += v23; +// dword_4FA9B4[v13] += 7 * (v14->field_38[0] + v14->field_48[2] + v14->field_48[13] + v14->field_58[15]); +// if ( BYTE2(v14->field_30) == 99 +// || v14->field_38[12] == 99 +// || v14->field_48[7] == 99 +// || (v26 = v14->field_58[9], v26 == 99) ) +// v27 = 5 * (v142->field_2C - v144->field_2C); +// else +// v27 = 5 * (BYTE2(v14->field_30) + v14->field_38[12] + v14->field_48[7] + v26); +// dword_4FA9B4[v13] += 8 * v27; +// if ( BYTE3(v14->field_30) == 99 +// || v14->field_38[13] == 99 +// || v14->field_48[8] == 99 +// || (v28 = v14->field_58[10], v28 == 99) ) +// v29 = 5 * (v142->field_30 - v144->field_30); +// else +// v29 = 5 * (BYTE3(v14->field_30) + v14->field_38[13] + v14->field_48[8] + v28); +// dword_4FA9B4[v13] += 8 * v29; +// if ( LOBYTE(v14->field_34) == 99 +// || v14->field_38[14] == 99 +// || v14->field_48[9] == 99 +// || (v30 = v14->field_58[11], v30 == 99) ) +// v31 = 5 * (v142->field_34 - v144->field_34); +// else +// v31 = 5 * (LOBYTE(v14->field_34) + v14->field_38[14] + v14->field_48[9] + v30); +// dword_4FA9B4[v13] += 8 * v31; +// if ( BYTE1(v14->field_34) == 99 +// || v14->field_38[15] == 99 +// || v14->field_48[10] == 99 +// || (v32 = v14->field_58[12], v32 == 99) ) +// v33 = v142->field_38 - v144->field_38; +// else +// v33 = BYTE1(v14->field_34) + v14->field_38[15] + v14->field_48[10] + v32; +// dword_4FA9B4[v13] += 2 * v33; +// if ( BYTE2(v14->field_34) == 99 +// || v14->field_48[0] == 99 +// || v14->field_48[11] == 99 +// || (v34 = v14->field_58[13], v34 == 99) ) +// v35 = v142->field_3C - v144->field_3C; +// else +// v35 = BYTE2(v14->field_34) + v14->field_48[0] + v14->field_48[11] + v34; +// dword_4FA9B4[v13] += 2 * v35; +// if ( BYTE3(v14->field_34) == 99 +// || v14->field_48[1] == 99 +// || v14->field_48[12] == 99 +// || (v36 = v14->field_58[14], v36 == 99) ) +// v37 = v142->field_40 - v144->field_40; +// else +// v37 = BYTE3(v14->field_34) + v14->field_48[1] + v14->field_48[12] + v36; +// dword_4FA9B4[v13] += 2 * v37; +// if ( v14->field_38[11] == 99 || (v38 = v14->field_58[8], v38 == 99) ) +// dword_4FA9B4[v13] += v144->field_24 - v142->field_24; +// else +// dword_4FA9B4[v13] -= v14->field_38[11] + v38; +// if ( v14->field_38[10] == 99 || (v39 = v14->field_58[7], v39 == 99) ) +// dword_4FA9B4[v13] += v144->field_28 - v142->field_28; +// else +// dword_4FA9B4[v13] -= v14->field_38[10] + v39; +// v40 = v14->field_38[9]; +// v138 = v14->field_38[9]; +// dword_4FA9B4[v13] -= v40 + v14->field_58[6]; +// v41 = v14->field_38[3]; +// v42 = dword_4FA9B4[v13]; +// if ( v41 == 99 ) +// goto LABEL_97; +// v43 = v14->field_58[0]; +// if ( v43 == 99 ) +// break; +// v44 = v42 - v43; +// v12 = 99; +// dword_4FA9B4[v13] = v44 - v41; +//LABEL_98: +// if ( v14->field_38[4] == v12 || (v45 = v14->field_58[1], v45 == v12) ) +// dword_4FA9B4[v13] += v144->field_30 - v142->field_30; +// else +// dword_4FA9B4[v13] -= v14->field_38[4] + v45; +// if ( v14->field_38[5] == v12 || (v46 = v14->field_58[2], v46 == v12) ) +// dword_4FA9B4[v13] += v144->field_34 - v142->field_34; +// else +// dword_4FA9B4[v13] -= v14->field_38[5] + v46; +// if ( v14->field_38[6] == v12 || (v47 = v14->field_58[3], v47 == v12) ) +// dword_4FA9B4[v13] += v144->field_38 - v142->field_38; +// else +// dword_4FA9B4[v13] -= v14->field_38[6] + v47; +// if ( v14->field_38[7] == v12 || (v48 = v14->field_58[4], v48 == v12) ) +// dword_4FA9B4[v13] += v144->field_3C - v142->field_3C; +// else +// dword_4FA9B4[v13] -= v14->field_38[7] + v48; +// if ( v14->field_38[8] == v12 || (v49 = v14->field_58[5], v49 == v12) ) +// { +// v51 = v144; +// v50 = v142; +// dword_4FA9B4[v13] += v144->field_40 - v142->field_40; +// } +// else +// { +// v50 = v142; +// dword_4FA9B4[v13] -= v14->field_38[8] + v49; +// v51 = v144; +// } +// if ( LOBYTE(v14->field_30) || v14->field_48[5] ) +// dword_4FA9B4[v13] *= 10; +// if ( LOBYTE(v14->field_24) == 1 ) +// { +// v52 = LOBYTE(v14->field_28); +// v53 = v51->field_38; +// } +// else +// { +// if ( LOBYTE(v14->field_24) == 2 ) +// { +// v52 = BYTE1(v14->field_28); +// v53 = v51->field_3C; +// } +// else +// { +// if ( LOBYTE(v14->field_24) != 3 ) +// goto LABEL_130; +// v52 = BYTE2(v14->field_28); +// v53 = v51->field_40; +// } +// } +// v54 = v53 - v52; +// if ( v54 > 3 ) +// v54 = 3; +// dword_4FA9B4[v13] += 5 * v54; +//LABEL_130: +// v55 = v14->field_58[8]; +// v139 = v50->field_24; +// v125 = v14->field_38[11]; +// if ( v139 <= v55 + v125 ) +// dword_4FA9B4[v13] += 9999; +// v137 = v50->field_28 + v139; +// if ( v137 <= v55 + v125 + v14->field_58[6] + v14->field_58[7] + v40 + v14->field_38[10] ) +// dword_4FA9B4[v13] += 9999; +// if ( v14->field_48[15] + (signed int)BYTE1(v14->field_68) + v144->field_24 + v14->field_48[4] + v148 >= dword_4E1884 ) +// dword_4FA9B4[v13] += 9999; +// ++v131; +// if ( v131 >= v135 ) +// { +// v9 = v129; +// goto LABEL_138; +// } +// } +// v12 = 99; +//LABEL_97: +// v40 = v138; +// dword_4FA9B4[v13] = v42 + v144->field_2C - v142->field_2C; +// goto LABEL_98; +// } +//LABEL_138: +// v56 = v135 - 1; +// for ( l = v135 - 1; l >= 0; --l ) +// { +// v137 = 0; +// if ( l > 0 ) +// { +// v58 = (int)dword_4FA9B0; +// v132 = l; +// v137 = l; +// do +// { +// if ( *(unsigned int *)(v58 + 4) < *(unsigned int *)(v58 + 12) ) +// { +// v59 = *(unsigned int *)v58; +// v60 = *(unsigned int *)(v58 + 4); +// *(unsigned int *)v58 = *(unsigned int *)(v58 + 8); +// v61 = *(unsigned int *)(v58 + 12); +// *(unsigned int *)(v58 + 8) = v59; +// *(unsigned int *)(v58 + 4) = v61; +// v9 = v129; +// *(unsigned int *)(v58 + 12) = v60; +// } +// v58 += 8; +// --v132; +// } +// while ( v132 ); +// } +// } +// v62 = v135 - 1; +// if ( am_byte_4FAA77 ) +// { +// if ( v56 >= 0 ) +// { +// while ( !BYTE3(pCards[stru_505708[0].cards_at_hand[47 * v9 + dword_4FA9B0[2 * v62]]].field_28) ) +// { +// --v62; +// if ( v62 < 0 ) +// return am_40BCFB(v9, v137) != 0; +// } +// v137 = dword_4FA9B0[2 * v62]; +// } +// } +// else +// { +// v63 = 0; +// if ( v56 >= 0 ) +// { +// while ( !BYTE3(pCards[stru_505708[0].cards_at_hand[47 * v9 + dword_4FA9B0[2 * v62]]].field_28) ) +// { +// --v62; +// if ( v62 < 0 ) +// goto LABEL_151; +// } +// v137 = dword_4FA9B0[2 * v62]; +// } +//LABEL_151: +// if ( v135 > 0 ) +// { +// while ( !am_40BF15(v9, dword_4FA9B0[2 * v63]) || dword_4FA9B4[2 * v63] < 0 ) +// { +// ++v63; +// if ( v63 >= v135 ) +// return am_40BCFB(v9, v137) != 0; +// } +// return am_40BE0E(v9, dword_4FA9B0[2 * v63]) != 0; +// } +// } +// return am_40BCFB(v9, v137) != 0; +// } +// v3 = 0; +// v4 = a1; +// if ( am_byte_4FAA77 ) +// { +//LABEL_11: +// v7 = GetPlayerHandCardCount(v4); +// v8 = rand_interval(0, v7 - 1); +// result = am_40BCFB(v4, v8); +// } +// else +// { +// while ( 1 ) +// { +// v5 = GetPlayerHandCardCount(v4); +// v6 = rand_interval(0, v5 - 1); +// if ( am_40BF15(v4, v6) ) +// break; +// ++v3; +// if ( v3 >= 10 ) +// goto LABEL_11; +// } +// result = am_40BE0E(v4, v6); +// } + return true;//result != 0; } // 408BB4: could not find valid save-restore pair for ebp // 4DF3A4: using guessed type int dword_4DF3A4; @@ -1389,11 +1557,11 @@ while ( byte_4FAA24 ) { amuint_4FABC0 = -1; - am_40A283(amuint_4FAA6C, v0); + am_40A283(amuint_4FAA6C); while ( 1 ) { byte_4FAA24 = am_40A560(amuint_4FAA6C); - if ( am_40BB49(amuint_4FAA6C) <= dword_4E1874 ) + if ( GetPlayerHandCardCount(amuint_4FAA6C) <= dword_4E1874 ) break; am_byte_4FAA77 = 1; if ( pArcomageGame->field_F4 ) @@ -1410,23 +1578,22 @@ am_40D444(); if ( byte_4FAA2C ) { - v2 = retzero_sub_40DFA7((int)dword_4FAA28); - v1 = 1000; - dword_4FAA70 = v2 / 1000; + // v2 = retzero_sub_40DFA7((int)dword_4FAA28); + // v1 = 1000; + // dword_4FAA70 = v2 / 1000; + dword_4FAA70 = 0; } else { dword_4FAA70 = -1; } pVideoPlayer->BinkUpdatePalette(dword_4FAA28); - v3 = array_4FAC10; - do - { - v3->ptr_0->_40E0F5(1, 1); - v3->ptr_0->_40DFFE(); - ++v3; - } - while ( (signed int)v3 < (signed int)&unk_5052C8 ); + + for(int i=0; i<10; ++i) + { + array_4FABD0[i].field_40->_40E0F5(1,1); + array_4FABD0[i].field_40->_40DFFE(); + } pArcomageGame->pGameBackground.Release(); pArcomageGame->pSprites.Release(); @@ -1434,21 +1601,17 @@ viewparams->bRedrawGameUI = 1; if ( pVideoPlayer->AnyMovieLoaded() ) pVideoPlayer->_4BF5B2(); - v4 = am_sounds; - do - { - pSoundList->UnloadSound((unsigned __int16)*v4, 1); - ++v4; - } - while ( (signed int)v4 <= (signed int)&unk_4FAA20 ); + for(int i=0; i<12; ++i) + pSoundList->UnloadSound(am_sounds[i], 1); + } //----- (00409FE9) -------------------------------------------------------- -char __cdecl am_409FE9() -{ +void am_409FE9() + { signed int v0; // edi@1 signed int v1; // esi@4 int *v2; // ecx@7 @@ -1460,68 +1623,55 @@ amuint_4FAA6C = dword_505890; sub_409BE8(); - v0 = 0; - do + for(v0=0; v0<2; ++v0 ) { if ( v0 ) { - v1 = v0; - inv_strcpy(pArcomageGame->pPlayer2Name, stru_505708[v0].pPlayerName); + inv_strcpy(pArcomageGame->pPlayer2Name, am_Players[1].pPlayerName); if ( byte_4E185C ) - LOBYTE(stru_505708[v1].field_20) = 0; + am_Players[1].field_20 = 0; else - LOBYTE(stru_505708[v1].field_20) = 1; + am_Players[1].field_20 = 1; } else { - inv_strcpy(pArcomageGame->pPlayer1Name, (char *)stru_505708); - LOBYTE(stru_505708[0].field_20) = 1; + inv_strcpy(pArcomageGame->pPlayer1Name, am_Players[0].pPlayerName); + am_Players[0].field_20 = 1; } - stru_505708[v0].field_24 = amuint_4E1860; - stru_505708[v0].field_28 = amuint_4E1864; - stru_505708[v0].field_2C = amuint_4E1868; - stru_505708[v0].field_30 = amuint_4E186C; - stru_505708[v0].field_34 = amuint_4E1870; - stru_505708[v0].field_38 = amuint_505884; - stru_505708[v0].field_3C = amuint_505888; - stru_505708[v0].field_40 = amuint_50588C; - v2 = &stru_505708[v0].arr_6C[0][1]; - v3 = stru_505708[v0].arr_44; - v4 = 10; - do + am_Players[v0].field_24 = amuint_4E1860; + am_Players[v0].field_28 = amuint_4E1864; + am_Players[v0].field_2C = amuint_4E1868; + am_Players[v0].field_30 = amuint_4E186C; + am_Players[v0].field_34 = amuint_4E1870; + am_Players[v0].field_38 = amuint_505884; + am_Players[v0].field_3C = amuint_505888; + am_Players[v0].field_40 = amuint_50588C; + + for (v4=0; v4<10; ++v4 ) { - *v3 = -1; + am_Players[v0].cards_at_hand[v4] = -1; if ( am_byte_4E185D ) { - *(v2 - 1) = -1; - *v2 = -1; + am_Players[v0].arr_6C[v4].field_0 = -1; + am_Players[v0].arr_6C[v4].field_4 = -1; } else { - *(v2 - 1) = 0; - *v2 = 0; + am_Players[v0].arr_6C[v4].field_0 = 0; + am_Players[v0].arr_6C[v4].field_4 = 0; } - ++v3; - v2 += 2; - --v4; } - while ( v4 ); - ++v0; + } - while ( v0 < 2 ); + + inv_strcpy(pDeckMaster, byte_5054C8); - v5 = 0; - v6 = (signed int)dword_505554; - v7 = -2; - do - { - byte_5054E8[v7 + 2] = 0; - *(unsigned int *)v6 = v5; - switch ( v7 ) - { - default: - ++v5; - break; + for (v6=0, v7=-2, v5=0; v6<108; ++v6, ++v7) + { + byte_5054E8[v6] = 0; + dword_505554[v6] =v5; + switch ( v7 ) + { case 0: case 2: case 6: @@ -1543,13 +1693,13 @@ case 81: case 84: case 89: - break; - } - v6 += 4; - ++v7; - } - while ( v6 < (signed int)&unk_505704 ); - return am_40A198(); + break; + default: + ++v5; + } + } + + am_40A198(); } // 4E185C: using guessed type char byte_4E185C; // 4E185D: using guessed type char am_byte_4E185D; @@ -1581,7 +1731,7 @@ ArcomageGame::PlaySound(0x14u); memset(byte_5054E8, 0, sizeof(byte_5054E8)); memset(v9, 0, sizeof(v9)); - v0 = stru_505708[0].arr_44;//variable incorrect + v0 = am_Players[0].cards_at_hand;//variable incorrect do { v1 = v0; @@ -1620,7 +1770,7 @@ *v7 = 1; dword_505314[v4] = dword_505554[v6]; result = byte_5054E8[v6]; - array_4FAC10[9].field_4[v4++ + 4232] = result;// pArcomageGame + //array_4FABD0[9].field_4[v4++ + 4232] = result;// pArcomageGame } while ( v4 < 108 ); dword_4FABC8 = 0; @@ -1635,27 +1785,21 @@ // 40A198: using guessed type char var_6C[108]; //----- (0040A255) -------------------------------------------------------- -int __fastcall am_40A255(int a1, int a2) -{ - int i; // edi@1 - signed int v3; // esi@2 - int result; // eax@3 - - for ( i = 0; i < dword_4E1874; ++i ) +void am_40A255() + { + for (int i = 0; i < dword_4E1874; ++i ) { - v3 = 0; - do - result = am_40A283(v3++, a2); - while ( v3 < 2 ); + am_40A283(0); + am_40A283(1); } pArcomageGame->field_F6 = 1; - return result; + } // 4E1874: using guessed type int dword_4E1874; //----- (0040A283) -------------------------------------------------------- -signed int __fastcall am_40A283(int a1, int a2) -{ +void am_40A283( int a1 ) + { signed int v2; // eax@1 int v3; // edi@1 int v4; // esi@1 @@ -1674,71 +1818,53 @@ am_40A198(); v2 = dword_4FABC8; } - if ( !array_4FAC10[9].field_4[v2 + 4232] ) - { - v3 = dword_505314[v2]; - v5 = 1; - } + if ( !byte_5052A8[v2] ) + { + v3 = dword_505314[v2]; + v5 = 1; + } ++v2; dword_4FABC8 = v2; } while ( !v5 ); ArcomageGame::PlaySound(0x15u); - result = am_40A324(v4); + result = GetEmptyCardSlotIndex(v4); if ( result != -1 ) { amuint_4FAA4C = result; - stru_505708[0].arr_44[result + 47 * v4] = v3; - v7 = 188 * v4 + 8 * result; - *(int *)((char *)stru_505708[0].arr_6C[0] + v7) = rand_interval(-4, 4); - result = rand_interval(-4, 4); - *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v7) = result; + am_Players[a1].cards_at_hand[result] = v3; + am_Players[a1].arr_6C[result].field_0 = rand_interval(-4, 4); + am_Players[a1].arr_6C[result].field_4 = rand_interval(-4, 4); pArcomageGame->field_F6 = 1; byte_4FAA2D = 1; } - return result; + } -// 4FAA2D: using guessed type char byte_4FAA2D; -// 4FAA4C: using guessed type int amuint_4FAA4C; -// 4FABC8: using guessed type int dword_4FABC8; -// 505314: using guessed type int dword_505314[]; + //----- (0040A324) -------------------------------------------------------- -signed int __fastcall am_40A324(int a1) -{ - signed int result; // eax@1 - signed int v2; // edx@1 - char *v3; // ecx@1 - - result = -1; - v2 = 0; - v3 = (char *)stru_505708[a1].arr_44; - while ( *(unsigned int *)v3 != -1 ) - { - ++v2; - v3 += 4; - if ( v2 >= 10 ) - return result; - } - return v2; +int GetEmptyCardSlotIndex( int player_num ) + { + int i; + for (i=0; i<10; ++i ) + { + if (am_Players[player_num].cards_at_hand[i]==-1) + break; + } + if ( i >= 10 ) + return -1; + else + return i; } //----- (0040A346) -------------------------------------------------------- -int __fastcall am_40A346(int a1) +void am_40A346( int player_num ) { - int v1; // ecx@1 - int result; // eax@1 - - v1 = a1; - stru_505708[v1].field_38 += dword_4E1878 + stru_505708[v1].field_2C; - stru_505708[v1].field_3C += dword_4E187C + stru_505708[v1].field_30; - result = dword_4E1880 + stru_505708[v1].field_34; - stru_505708[v1].field_40 += result; - return result; + am_Players[player_num].field_38 += dword_4E1878 + am_Players[player_num].field_2C; + am_Players[player_num].field_3C += dword_4E187C + am_Players[player_num].field_30; + am_Players[player_num].field_40 += dword_4E1880 + am_Players[player_num].field_34; } -// 4E1878: using guessed type int dword_4E1878; -// 4E187C: using guessed type int dword_4E187C; -// 4E1880: using guessed type int dword_4E1880; + //----- (0040A383) -------------------------------------------------------- void __cdecl am_40A383() @@ -1758,7 +1884,7 @@ if ( !pArcomageGame->field_F4 ) { - if ( LOBYTE(stru_505708[0].field_20) != 1 || LOBYTE(stru_505708[1].field_20) != 1 ) + if ( LOBYTE(am_Players[0].field_20) != 1 || LOBYTE(am_Players[1].field_20) != 1 ) { ++amuint_4FAA6C; am_byte_4FAA75 = 1; @@ -1774,7 +1900,7 @@ v0 = 0; v11[1] = 200; v11[0] = 320 - 12 * v0 / 2; - pPrimaryWindow_draws_text(-1, Dest, v11); + // pPrimaryWindow_draws_text(-1, Dest, v11); am_byte_4FAA75 = 1; v1 = amuint_4FAA6C + 1; v3 = __OFSUB__(amuint_4FAA6C + 1, 2); @@ -1784,11 +1910,11 @@ v1 = 0; amuint_4FAA6C = 0; } - inv_strcpy(stru_505708[v1].pPlayerName, Dest); + inv_strcpy(am_Players[v1].pPlayerName, Dest); v4 = 0; v11[1] = 260; v11[0] = 320 - 12 * v4 / 2; - pPrimaryWindow_draws_text(-1, Dest, v11); + // pPrimaryWindow_draws_text(-1, Dest, v11); v6 = 0; v8 = 640; v7 = 0; @@ -1833,26 +1959,23 @@ //----- (0040A514) -------------------------------------------------------- -bool __cdecl am_40A514() -{ +bool am_40A514() + { bool result; // eax@1 - char *v1; // ecx@1 - - LOBYTE(result) = 0; - v1 = (char *)&stru_505708[0].field_24; - do + + result = false; + for(int i=0; i<2; ++i) { - if ( *(unsigned int *)v1 <= 0 ) - LOBYTE(result) = 1; - if ( *(unsigned int *)v1 >= dword_4E1884 ) - LOBYTE(result) = 1; - if ( *((unsigned int *)v1 + 5) >= dword_4E1888 - || *((unsigned int *)v1 + 6) >= dword_4E1888 - || *((unsigned int *)v1 + 7) >= dword_4E1888 ) - LOBYTE(result) = 1; - v1 += 188; + if ( am_Players[i].field_24 <= 0 ) + result = true; + if ( am_Players[i].field_24 >= dword_4E1884 ) + result = true; + if ( am_Players[i].field_38 >= dword_4E1888 + || am_Players[i].field_3C >= dword_4E1888 + || am_Players[i].field_40 >= dword_4E1888 ) + result = true; } - while ( (signed int)v1 < (signed int)&pArcomageGame->stru1.field_4 ); + if ( result ) byte_4FAA2C = 1; return result; @@ -1916,7 +2039,8 @@ { pAudioPlayer->StopChannels(-1, -1); dword_4FAA68 = 0; - goto LABEL_16; + v16 = 1; + pArcomageGame->field_F4 = 1; } break; case 9: @@ -1925,13 +2049,12 @@ case 0xA: pAudioPlayer->StopChannels(-1, -1); byte_4FAA74 = 1; -LABEL_16: v16 = 1; pArcomageGame->field_F4 = 1; break; } v4 = amuint_4FAA6C; - if ( LOBYTE(stru_505708[amuint_4FAA6C].field_20) != 1 && !byte_4FAA00 && !byte_4FAA2E && !byte_4FAA2D ) + if ( LOBYTE(am_Players[amuint_4FAA6C].field_20) != 1 && !byte_4FAA00 && !byte_4FAA2E && !byte_4FAA2D ) { if ( am_byte_4FAA75 ) am_byte_4FAA76 = 1; @@ -1941,7 +2064,7 @@ } if ( amuint_4FAA4C != -1 && amuint_4FAA38 > 10 ) amuint_4FAA38 = 10; - if ( byte_4FAA2E || byte_4FAA2D || LOBYTE(stru_505708[v4].field_20) != 1 ) + if ( byte_4FAA2E || byte_4FAA2D || LOBYTE(am_Players[v4].field_20) != 1 ) { pArcomageGame->field_F6 = 1; if ( byte_4FAA2D ) @@ -1984,7 +2107,7 @@ if ( dword_4FAA64 > 0 ) { --dword_4FAA64; - am_byte_4FAA77 = am_40BB49(a1) > dword_4E1874; + am_byte_4FAA77 = GetPlayerHandCardCount(a1) > dword_4E1874; } byte_4FAA2E = 1; } @@ -1995,7 +2118,7 @@ if ( dword_4FAA64 > 0 ) { --dword_4FAA64; - am_byte_4FAA77 = am_40BB49(a1) > dword_4E1874; + am_byte_4FAA77 = GetPlayerHandCardCount(a1) > dword_4E1874; } byte_4FAA2E = 1; } @@ -2076,7 +2199,7 @@ pSrcXYZW[1] = 0; pSrcXYZW[3] = 480; am_BeginScene(pArcomageGame->pBackgroundPixels, -1, 1); - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); + // Blt_Copy(pSrcXYZW, pTargetXY, 2); am_EndScene(); am_blts(v13); pRenderer->Present(); @@ -2103,12 +2226,9 @@ // 4FABB8: using guessed type int dword_4FABB8; //----- (0040A9AF) -------------------------------------------------------- -void __thiscall am_blts(int a1) -{ - int v1; // esi@1 - stru272_stru0 **v2; // esi@1 - - v1 = a1; +void am_blts( int a1 ) + { + am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); am_chroma_blts(); am_EndScene(); @@ -2119,146 +2239,118 @@ am_DrawUI(); am_EndScene(); am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - am_40B76F(v1); - v2 = (stru272_stru0 **)array_4FAC10; - do - { - if ( *((unsigned char *)v2 - 64) ) - (*v2)->_40E133(); - v2 += 1067; - } - while ( (signed int)v2 < (signed int)&unk_5052C8 ); + am_40B76F(a1); + + for( int i=0; i<10; ++i) + { + if (array_4FABD0[i].field_0) + array_4FABD0[i].field_40->_40E133(); + } dword_4FABBC = am_40BB67(amuint_4FAA6C); am_40AA4E(); am_EndScene(); } //----- (0040AA4E) -------------------------------------------------------- -void __cdecl am_40AA4E() -{ - signed int v0; // ebx@1 - char v1; // ch@2@3 - char *v2; // esi@4 - signed int v3; // edi@6 - int *v4; // esi@6 +void am_40AA4E() + { int v5; // [sp-4h] [bp-2Ch]@4 - int v6; // [sp+Ch] [bp-1Ch]@10 - int v7; // [sp+10h] [bp-18h]@10 + unsigned int v7; int v8; // [sp+14h] [bp-14h]@10 int v9; // [sp+18h] [bp-10h]@10 - int v10; // [sp+1Ch] [bp-Ch]@6 - char v11; // [sp+20h] [bp-8h]@1 - char v12; // [sp+21h] [bp-7h]@1 - char v13; // [sp+22h] [bp-6h]@1 - char v14; // [sp+24h] [bp-4h]@1 - char v15; // [sp+25h] [bp-3h]@1 - char v16; // [sp+26h] [bp-2h]@1 - - v14 = 0; - v15 = -1; - v16 = 0; - v11 = -1; - v12 = 0; - v13 = 0; - v0 = (signed int)byte_4FABD1; - do - { - if ( *(unsigned char *)(v0 - 1) && (*(stru272_stru0 **)(v0 + 63))->_40E2A7() == 2 ) - { - BYTE3(v5) = v1; - v2 = &v14; - if ( !*(unsigned char *)v0 ) - v2 = &v11; - LOWORD(v5) = *(_WORD *)v2; - BYTE2(v5) = v2[2]; - v10 = (unsigned __int16)R8G8B8_to_TargetFormat(v5); - v3 = 0; - v4 = (int *)(v0 + 71); - do + RECT pXYZW; + + v9 = 0x0000FF00; + v8 = 0x000000FF; + + for (int i=0; i<10; ++i) { - if ( *(v4 - 1) > 0 ) - { - if ( v3 % 2 ) - { - Render::SetPixel((Vec2_int_ *)v4, v10); - } - else - { - v6 = *v4; - v8 = v6 + 2; - v7 = v4[1]; - v9 = v7 + 2; - DrawRect((Vec4_int_ *)&v6, v10, 1); - } - } - ++v3; - v4 += 7; + if(array_4FABD0[i].field_0 && (array_4FABD0[i].field_40->_40E2A7()==2)) + { + + v5 = v9; + if ( !array_4FABD0[i].field_1 ) + v5 = v8; + + v7 = R8G8B8_to_TargetFormat(v5); + for(int j=0; j<150; ++j ) + { + if (array_4FABD0[i].field_44[j].field_0 > 0) + { + if (j%2) + SetPixel(&array_4FABD0[i].field_44[j].field_4, v7); + else + { + pXYZW.left = array_4FABD0[i].field_44[j].field_4.x; + pXYZW.right = pXYZW.left + 2; + pXYZW.top = array_4FABD0[i].field_44[j].field_4.y; + pXYZW.bottom = pXYZW.top + 2; + DrawRect(&pXYZW, v7, 1); + } + } + } + } } - while ( v3 < 150 ); - } - v0 += 4268; - } - while ( v0 < (signed int)&array_4FAC10[9].field_4[4201] ); + } //----- (0040AB0A) -------------------------------------------------------- void __cdecl am_chroma_blts() { - int v0; // eax@1 - int v1; // eax@1 - int v2; // eax@1 - int v3; // eax@1 - int v4; // eax@1 - int v5; // eax@1 - int pSrcXYZW[4]; // [sp+Ch] [bp-18h]@1 - int pTargetXY[2]; // [sp+1Ch] [bp-8h]@1 - - pSrcXYZW[1] = 0; - pSrcXYZW[0] = 765; - pSrcXYZW[2] = 843; - pSrcXYZW[3] = 216; - pTargetXY[0] = 8; - pTargetXY[1] = 56; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); - pTargetXY[0] = 555; - pTargetXY[1] = 56; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); - LOWORD(v0) = pArcomageGame->field_54; - pTargetXY[0] = 8; - pSrcXYZW[0] = 283; - pSrcXYZW[2] = 361; - pSrcXYZW[1] = 166; - pSrcXYZW[3] = 190; - pTargetXY[1] = 13; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v0, 2); - LOWORD(v1) = pArcomageGame->field_54; - pTargetXY[0] = 555; - pTargetXY[1] = 13; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v1, 2); - LOWORD(v2) = pArcomageGame->field_54; - pSrcXYZW[0] = 234; - pSrcXYZW[2] = 283; - pSrcXYZW[1] = 166; - pSrcXYZW[3] = 190; - pTargetXY[0] = 100; - pTargetXY[1] = 296; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v2, 2); - LOWORD(v3) = pArcomageGame->field_54; - pTargetXY[0] = 492; - pTargetXY[1] = 296; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v3, 2); - LOWORD(v4) = pArcomageGame->field_54; - pSrcXYZW[0] = 192; - pSrcXYZW[2] = 234; - pSrcXYZW[1] = 166; - pSrcXYZW[3] = 190; - pTargetXY[0] = 168; - pTargetXY[1] = 296; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v4, 2); - pTargetXY[0] = 430; - LOWORD(v5) = pArcomageGame->field_54; - pTargetXY[1] = 296; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v5, 2); + + RECT pSrcRect; // [sp+Ch] [bp-18h]@1 + POINT pTargetXY; // [sp+1Ch] [bp-8h]@1 + + pSrcRect.top = 0; + pSrcRect.left = 765; + pSrcRect.right = 843; + pSrcRect.bottom = 216; + + pTargetXY.x = 8; + pTargetXY.y = 56; + Blt_Copy(&pSrcRect, &pTargetXY, 2); + + pTargetXY.x = 555; + pTargetXY.y = 56; + Blt_Copy(&pSrcRect, &pTargetXY, 2); + + pSrcRect.left = 283; + pSrcRect.right = 361; + pSrcRect.top = 166; + pSrcRect.bottom = 190; + pTargetXY.x = 8; + pTargetXY.y = 13; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + + pTargetXY.x = 555; + pTargetXY.y = 13; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + + pSrcRect.left = 234; + pSrcRect.right = 283; + pSrcRect.top = 166; + pSrcRect.bottom = 190; + pTargetXY.x = 100; + pTargetXY.y = 296; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + + + pTargetXY.x = 492; + pTargetXY.y = 296; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + + + pSrcRect.left = 192; + pSrcRect.right = 234; + pSrcRect.top = 166; + pSrcRect.bottom = 190; + pTargetXY.x = 168; + pTargetXY.y = 296; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); + + pTargetXY.x = 430; + pTargetXY.y = 296; + Blt_Chroma(&pSrcRect, &pTargetXY, pArcomageGame->field_54, 2); } //----- (0040AC5F) -------------------------------------------------------- @@ -2276,115 +2368,132 @@ int v9; // ecx@18 int v10; // eax@20 char Dest[32]; // [sp+Ch] [bp-28h]@2 - int v12[2]; // [sp+2Ch] [bp-8h]@2 + POINT v12; // [sp+2Ch] [bp-8h]@2 if ( am_byte_4FAA77 ) { inv_strcpy(pGlobalTXT_LocalizationStrings[266], Dest);// DISCARD A CARD - v12[0] = 320 - pArcomageGame->pFont2->GetLineWidth(Dest) / 2; - v12[1] = 306; - pPrimaryWindow_draws_text(-1, Dest, v12); + v12.x = 320 - pArcomageGame->pfntArrus->GetLineWidth(Dest) / 2; + v12.y = 306; + pPrimaryWindow_draws_text(-1, Dest, &v12); } - inv_strcpy((const char *)stru_505708, Dest); + inv_strcpy(am_Players[0].pPlayerName, Dest); if ( !amuint_4FAA6C ) inv_strcat("***", Dest); - v12[0] = 47 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 21; - pPrimaryWindow_draws_text(-1, Dest, v12); - inv_strcpy(stru_505708[1].pPlayerName, Dest); + v12.x = 47 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 21; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + inv_strcpy(am_Players[1].pPlayerName, Dest); if ( amuint_4FAA6C == 1 ) inv_strcat("***", Dest); - v12[0] = 595 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 21; - pPrimaryWindow_draws_text(-1, Dest, v12); - intToString(stru_505708[0].field_24, Dest); - v12[0] = 123 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 305; - pPrimaryWindow_draws_text(-1, Dest, v12); - intToString(stru_505708[1].field_24, Dest); - v12[0] = 515 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 305; - pPrimaryWindow_draws_text(-1, Dest, v12); - intToString(stru_505708[0].field_28, Dest); - v12[0] = 188 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 305; - pPrimaryWindow_draws_text(-1, Dest, v12); - intToString(stru_505708[1].field_28, Dest); - v12[0] = 451 - pArcomageGame->pFont1->GetLineWidth(Dest) / 2; - v12[1] = 305; - pPrimaryWindow_draws_text(-1, Dest, v12); - v0 = stru_505708[0].field_2C; + v12.x = 595 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 21; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + intToString(am_Players[0].field_24, Dest); + v12.x = 123 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 305; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + intToString(am_Players[1].field_24, Dest); + v12.x = 515 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 305; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + intToString(am_Players[0].field_28, Dest); + v12.x = 188 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 305; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + intToString(am_Players[1].field_28, Dest); + v12.x = 451 - pArcomageGame->pfntComic->GetLineWidth(Dest) / 2; + v12.y = 305; + pPrimaryWindow_draws_text(-1, Dest, &v12); + + v0 = am_Players[0].field_2C; if ( byte_4E185E ) - v0 = dword_4E1878 + stru_505708[0].field_2C; + v0 = dword_4E1878 + am_Players[0].field_2C; intToString(v0, Dest); - v12[0] = 14 - 6 * 0 / 2; - v12[1] = 92; - am_40B102(-1, Dest, v12); - v1 = stru_505708[1].field_2C; + v12.x = 14 - 6 * 0 / 2; + v12.y = 92; + am_40B102(-1, Dest, &v12); + + v1 = am_Players[1].field_2C; if ( byte_4E185E ) - v1 = dword_4E1878 + stru_505708[1].field_2C; + v1 = dword_4E1878 + am_Players[1].field_2C; intToString(v1, Dest); v2 = 0; - v12[1] = 92; - v12[0] = 561 - 6 * v2 / 2; - am_40B102(-1, Dest, v12); + v12.y = 92; + v12.x = 561 - 6 * v2 / 2; + am_40B102(-1, Dest, &v12); + if ( byte_4E185E ) - v3 = stru_505708[0].field_30 + dword_4E187C; + v3 = am_Players[0].field_30 + dword_4E187C; else - v3 = stru_505708[0].field_30; + v3 = am_Players[0].field_30; intToString(v3, Dest); v4 = 0; - v12[1] = 164; - v12[0] = 14 - 6 * v4 / 2; - am_40B102(-1, Dest, v12); - v5 = stru_505708[1].field_30; + v12.y = 164; + v12.x = 14 - 6 * v4 / 2; + am_40B102(-1, Dest, &v12); + + v5 = am_Players[1].field_30; if ( byte_4E185E ) - v5 = dword_4E187C + stru_505708[1].field_30; + v5 = dword_4E187C + am_Players[1].field_30; intToString(v5, Dest); v6 = 0; - v12[1] = 164; - v12[0] = 561 - 6 * v6 / 2; - am_40B102(-1, Dest, v12); - v7 = stru_505708[0].field_34; + v12.y = 164; + v12.x = 561 - 6 * v6 / 2; + am_40B102(-1, Dest, &v12); + + v7 = am_Players[0].field_34; if ( byte_4E185E ) - v7 = dword_4E1880 + stru_505708[0].field_34; + v7 = dword_4E1880 + am_Players[0].field_34; intToString(v7, Dest); v8 = 0; - v12[1] = 236; - v12[0] = 14 - 6 * v8 / 2; - am_40B102(-1, Dest, v12); - v9 = stru_505708[1].field_34; + v12.y = 236; + v12.x = 14 - 6 * v8 / 2; + am_40B102(-1, Dest, &v12); + + v9 = am_Players[1].field_34; if ( byte_4E185E ) - v9 = dword_4E1880 + stru_505708[1].field_34; + v9 = dword_4E1880 + am_Players[1].field_34; intToString(v9, Dest); v10 = 0; - v12[1] = 236; - v12[0] = 561 - 6 * v10 / 2; - am_40B102(-1, Dest, v12); - intToString(stru_505708[0].field_38, Dest); - v12[1] = 114; - v12[0] = 10; - am_40B17E(-1, (int)Dest, v12); - intToString(stru_505708[1].field_38, Dest); - v12[0] = 557; - v12[1] = 114; - am_40B17E(-1, (int)Dest, v12); - intToString(stru_505708[0].field_3C, Dest); - v12[0] = 10; - v12[1] = 186; - am_40B1F3(-1, (int)Dest, (int)v12); - intToString(stru_505708[1].field_3C, Dest); - v12[0] = 557; - v12[1] = 186; - am_40B1F3(-1, (int)Dest, (int)v12); - intToString(stru_505708[0].field_40, Dest); - v12[0] = 10; - v12[1] = 258; - am_40B268(-1, Dest, v12); - intToString(stru_505708[1].field_40, Dest); - v12[0] = 557; - v12[1] = 258; - am_40B268(-1, Dest, v12); + v12.y = 236; + v12.x = 561 - 6 * v10 / 2; + am_40B102(-1, Dest, &v12); + + intToString(am_Players[0].field_38, Dest); + v12.y = 114; + v12.x = 10; + am_40B17E(-1, Dest, &v12); + + intToString(am_Players[1].field_38, Dest); + v12.x = 557; + v12.y = 114; + am_40B17E(-1, Dest, &v12); + + intToString(am_Players[0].field_3C, Dest); + v12.x = 10; + v12.y = 186; + am_40B1F3(-1, Dest, &v12); + + intToString(am_Players[1].field_3C, Dest); + v12.x = 557; + v12.y = 186; + am_40B1F3(-1, Dest, &v12); + + intToString(am_Players[0].field_40, Dest); + v12.x = 10; + v12.y = 258; + am_40B268(-1, Dest, &v12); + + intToString(am_Players[1].field_40, Dest); + v12.x = 557; + v12.y = 258; + am_40B268(-1, Dest, &v12); } // 4E185E: using guessed type char byte_4E185E; // 4E1878: using guessed type int dword_4E1878; @@ -2393,441 +2502,441 @@ // 4FAA77: using guessed type char am_byte_4FAA77; //----- (0040B102) -------------------------------------------------------- -void __fastcall am_40B102(int a1, char *a2, int *pXY) -{ - char *v3; // esi@1 - int v4; // eax@1 - unsigned __int8 v5; // bl@2 - char v6; // zf@2 - int v7; // eax@3 - int v8; // ecx@3 - int v9; // [sp+8h] [bp-18h]@3 - int v10; // [sp+Ch] [bp-14h]@3 - int v11; // [sp+10h] [bp-10h]@3 - int v12; // [sp+14h] [bp-Ch]@3 - int v13; // [sp+18h] [bp-8h]@1 - int v14; // [sp+1Ch] [bp-4h]@1 - - v3 = a2; - am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - v4 = pXY[1]; - v13 = *pXY; - v14 = v4; - do - { - v5 = *v3++; - v6 = v5 == 0; - if ( v5 ) +void __fastcall am_40B102( int a1, char *a2, POINT *pXY ) { - v7 = 22 * v5; - v8 = v7 - 864; - v7 -= 842; - v11 = v7; - LOWORD(v7) = pArcomageGame->field_54; - v9 = v8; - v10 = 190; - v12 = 207; - Blt_Chroma((ArcomageRect *)&v9, &v13, v7, 1); - v13 += 22; - v6 = v5 == 0; - } - } - while ( !v6 ); - am_EndScene(); + //char *v3; // esi@1 + //int v4; // eax@1 + //unsigned __int8 v5; // bl@2 + //char v6; // zf@2 + //int v7; // eax@3 + //int v8; // ecx@3 + //int v9; // [sp+8h] [bp-18h]@3 + //int v10; // [sp+Ch] [bp-14h]@3 + //int v11; // [sp+10h] [bp-10h]@3 + //int v12; // [sp+14h] [bp-Ch]@3 + //int v13; // [sp+18h] [bp-8h]@1 + //int v14; // [sp+1Ch] [bp-4h]@1 + + //v3 = a2; + //am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); + //v4 = pXY[1]; + //v13 = *pXY; + //v14 = v4; + //do + //{ + // v5 = *v3++; + // v6 = v5 == 0; + // if ( v5 ) + // { + // v7 = 22 * v5; + // v8 = v7 - 864; + // v7 -= 842; + // v11 = v7; + // LOWORD(v7) = pArcomageGame->field_54; + // v9 = v8; + // v10 = 190; + // v12 = 207; + // Blt_Chroma(&v9, &v13, v7, 1); + // v13 += 22; + // v6 = v5 == 0; + // } + //} + //while ( !v6 ); + //am_EndScene(); } //----- (0040B17E) -------------------------------------------------------- -void __fastcall am_40B17E(int a1, int a2, int *pXY) -{ - int v3; // esi@1 - int v4; // eax@1 - unsigned __int8 v5; // bl@2 - char v6; // zf@2 - int v7; // eax@3 - int v8; // [sp+8h] [bp-18h]@3 - int v9; // [sp+Ch] [bp-14h]@3 - int v10; // [sp+10h] [bp-10h]@3 - int v11; // [sp+14h] [bp-Ch]@3 - int v12; // [sp+18h] [bp-8h]@1 - int v13; // [sp+1Ch] [bp-4h]@1 - - v3 = a2; - am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - v4 = pXY[1]; - v12 = *pXY; - v13 = v4; - do - { - v5 = *(unsigned char *)v3++; - v6 = v5 == 0; - if ( v5 ) +void am_40B17E( int a1, char* a2, POINT *pXY ) { - v7 = 13 * v5; - v8 = v7 - 370; - v10 = v7 - 357; - v9 = 128; - v11 = 138; - Blt_Copy((ArcomageRect *)&v8, &v12, 2); - v12 += 13; - v6 = v5 == 0; - } - } - while ( !v6 ); - am_EndScene(); + //int v3; // esi@1 + //int v4; // eax@1 + //unsigned __int8 v5; // bl@2 + //char v6; // zf@2 + //int v7; // eax@3 + //int v8; // [sp+8h] [bp-18h]@3 + //int v9; // [sp+Ch] [bp-14h]@3 + //int v10; // [sp+10h] [bp-10h]@3 + //int v11; // [sp+14h] [bp-Ch]@3 + //int v12; // [sp+18h] [bp-8h]@1 + //int v13; // [sp+1Ch] [bp-4h]@1 + + //v3 = a2; + //am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); + //v4 = pXY[1]; + //v12 = *pXY; + //v13 = v4; + //do + //{ + // v5 = *(unsigned char *)v3++; + // v6 = v5 == 0; + // if ( v5 ) + // { + // v7 = 13 * v5; + // v8 = v7 - 370; + // v10 = v7 - 357; + // v9 = 128; + // v11 = 138; + // Blt_Copy(&v8, &v12, 2); + // v12 += 13; + // v6 = v5 == 0; + // } + //} + //while ( !v6 ); + //am_EndScene(); } //----- (0040B1F3) -------------------------------------------------------- -void __fastcall am_40B1F3(int a1, int a2, int a3) -{ - int v3; // esi@1 - int v4; // eax@1 - unsigned __int8 v5; // bl@2 - char v6; // zf@2 - int v7; // eax@3 - int v8; // [sp+8h] [bp-18h]@3 - int v9; // [sp+Ch] [bp-14h]@3 - int v10; // [sp+10h] [bp-10h]@3 - int v11; // [sp+14h] [bp-Ch]@3 - int v12; // [sp+18h] [bp-8h]@1 - int v13; // [sp+1Ch] [bp-4h]@1 - - v3 = a2; - am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - v4 = *(unsigned int *)(a3 + 4); - v12 = *(unsigned int *)a3; - v13 = v4; - do - { - v5 = *(unsigned char *)v3++; - v6 = v5 == 0; - if ( v5 ) +void am_40B1F3( int a1, char* a2, POINT* a3 ) { - v7 = 13 * v5; - v8 = v7 - 370; - v10 = v7 - 357; - v9 = 138; - v11 = 148; - Blt_Copy((ArcomageRect *)&v8, &v12, 2); - v12 += 13; - v6 = v5 == 0; - } - } - while ( !v6 ); - am_EndScene(); + //int v3; // esi@1 + //int v4; // eax@1 + //unsigned __int8 v5; // bl@2 + //char v6; // zf@2 + //int v7; // eax@3 + //int v8; // [sp+8h] [bp-18h]@3 + //int v9; // [sp+Ch] [bp-14h]@3 + //int v10; // [sp+10h] [bp-10h]@3 + //int v11; // [sp+14h] [bp-Ch]@3 + //int v12; // [sp+18h] [bp-8h]@1 + //int v13; // [sp+1Ch] [bp-4h]@1 + + //v3 = a2; + //am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); + //v4 = *(unsigned int *)(a3 + 4); + //v12 = *(unsigned int *)a3; + //v13 = v4; + //do + //{ + // v5 = *(unsigned char *)v3++; + // v6 = v5 == 0; + // if ( v5 ) + // { + // v7 = 13 * v5; + // v8 = v7 - 370; + // v10 = v7 - 357; + // v9 = 138; + // v11 = 148; + // Blt_Copy(&v8, &v12, 2); + // v12 += 13; + // v6 = v5 == 0; + // } + //} + //while ( !v6 ); + //am_EndScene(); } //----- (0040B268) -------------------------------------------------------- -void __fastcall am_40B268(int a1, char *a2, int *pXY) -{ - char *v3; // esi@1 - int v4; // eax@1 - unsigned __int8 v5; // bl@2 - char v6; // zf@2 - int v7; // eax@3 - int v8; // [sp+8h] [bp-18h]@3 - int v9; // [sp+Ch] [bp-14h]@3 - int v10; // [sp+10h] [bp-10h]@3 - int v11; // [sp+14h] [bp-Ch]@3 - int v12; // [sp+18h] [bp-8h]@1 - int v13; // [sp+1Ch] [bp-4h]@1 - - v3 = a2; - am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); - v4 = pXY[1]; - v12 = *pXY; - v13 = v4; - do - { - v5 = *v3++; - v6 = v5 == 0; - if ( v5 ) +void am_40B268( int a1, char *a2, POINT *pXY ) { - v7 = 13 * v5; - v8 = v7 - 370; - v10 = v7 - 357; - v9 = 148; - v11 = 158; - Blt_Copy((ArcomageRect *)&v8, &v12, 2); - v12 += 13; - v6 = v5 == 0; - } - } - while ( !v6 ); - am_EndScene(); + //char *v3; // esi@1 + //int v4; // eax@1 + //unsigned __int8 v5; // bl@2 + //char v6; // zf@2 + //int v7; // eax@3 + //int v8; // [sp+8h] [bp-18h]@3 + //int v9; // [sp+Ch] [bp-14h]@3 + //int v10; // [sp+10h] [bp-10h]@3 + //int v11; // [sp+14h] [bp-Ch]@3 + //int v12; // [sp+18h] [bp-8h]@1 + //int v13; // [sp+1Ch] [bp-4h]@1 + + //v3 = a2; + //am_BeginScene(pArcomageGame->pSpritesPixels, -1, 1); + //v4 = pXY[1]; + //v12 = *pXY; + //v13 = v4; + //do + //{ + // v5 = *v3++; + // v6 = v5 == 0; + // if ( v5 ) + // { + // v7 = 13 * v5; + // v8 = v7 - 370; + // v10 = v7 - 357; + // v9 = 148; + // v11 = 158; + // Blt_Copy(&v8, &v12, 2); + // v12 += 13; + // v6 = v5 == 0; + // } + //} + //while ( !v6 ); + //am_EndScene(); } //----- (0040B2DD) -------------------------------------------------------- void __cdecl am_chroma_and_copy_blts() { - int v0; // eax@1 - int v1; // esi@3 - int v2; // eax@3 - int v3; // eax@3 - int v4; // esi@5 - int v5; // eax@5 - int pSrcXYZW[4]; // [sp+0h] [bp-18h]@3 - int v7; // [sp+4h] [bp-14h]@3 - int v8; // [sp+8h] [bp-10h]@3 - int v9; // [sp+Ch] [bp-Ch]@3 - int pTargetXY[2]; // [sp+10h] [bp-8h]@3 - - v0 = stru_505708[0].field_24; - if ( stru_505708[0].field_24 > dword_4E1884 ) - v0 = dword_4E1884; - v7 = 0; - pSrcXYZW[0] = 892; - v8 = 937; - pTargetXY[0] = 102; - v1 = 200 * v0 / dword_4E1884; - v9 = v1; - pTargetXY[1] = 297 - v1; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); - v7 = 0; - v2 = 203 - v1; - pTargetXY[1] = 203 - v1; - LOWORD(v2) = pArcomageGame->field_54; - pSrcXYZW[0] = 384; - v8 = 452; - v9 = 94; - pTargetXY[0] = 91; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v2, 2); - v3 = stru_505708[1].field_24; - if ( stru_505708[1].field_24 > dword_4E1884 ) - v3 = dword_4E1884; - v7 = 0; - pSrcXYZW[0] = 892; - v8 = 937; - pTargetXY[0] = 494; - v4 = 200 * v3 / dword_4E1884; - v9 = v4; - pTargetXY[1] = 297 - v4; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); - LOWORD(v5) = pArcomageGame->field_54; - pSrcXYZW[0] = 384; - v8 = 452; - v7 = 94; - v9 = 188; - pTargetXY[0] = 483; - pTargetXY[1] = 203 - v4; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v5, 2); + //int v0; // eax@1 + //int v1; // esi@3 + //int v2; // eax@3 + //int v3; // eax@3 + //int v4; // esi@5 + //int v5; // eax@5 + //int pSrcXYZW[4]; // [sp+0h] [bp-18h]@3 + //int v7; // [sp+4h] [bp-14h]@3 + //int v8; // [sp+8h] [bp-10h]@3 + //int v9; // [sp+Ch] [bp-Ch]@3 + //int pTargetXY[2]; // [sp+10h] [bp-8h]@3 + + //v0 = stru_505708[0].field_24; + //if ( stru_505708[0].field_24 > dword_4E1884 ) + // v0 = dword_4E1884; + //v7 = 0; + //pSrcXYZW[0] = 892; + //v8 = 937; + //pTargetXY[0] = 102; + //v1 = 200 * v0 / dword_4E1884; + //v9 = v1; + //pTargetXY[1] = 297 - v1; + //Blt_Copy(pSrcXYZW, pTargetXY, 2); + //v7 = 0; + //v2 = 203 - v1; + //pTargetXY[1] = 203 - v1; + //LOWORD(v2) = pArcomageGame->field_54; + //pSrcXYZW[0] = 384; + //v8 = 452; + //v9 = 94; + //pTargetXY[0] = 91; + //Blt_Chroma(pSrcXYZW, pTargetXY, v2, 2); + //v3 = stru_505708[1].field_24; + //if ( stru_505708[1].field_24 > dword_4E1884 ) + // v3 = dword_4E1884; + //v7 = 0; + //pSrcXYZW[0] = 892; + //v8 = 937; + //pTargetXY[0] = 494; + //v4 = 200 * v3 / dword_4E1884; + //v9 = v4; + //pTargetXY[1] = 297 - v4; + //Blt_Copy(pSrcXYZW, pTargetXY, 2); + //LOWORD(v5) = pArcomageGame->field_54; + //pSrcXYZW[0] = 384; + //v8 = 452; + //v7 = 94; + //v9 = 188; + //pTargetXY[0] = 483; + //pTargetXY[1] = 203 - v4; + //Blt_Chroma(pSrcXYZW, pTargetXY, v5, 2); } // 4E1884: using guessed type int dword_4E1884; //----- (0040B400) -------------------------------------------------------- void __cdecl am_chroma_blt() { - int v0; // eax@1 - int v1; // eax@4 - int v2; // ecx@4 - int v3; // eax@5 - int v4; // eax@8 - int v5; // esi@8 - int pSrcXYZW[4]; // [sp+4h] [bp-18h]@4 - int pTargetXY[2]; // [sp+14h] [bp-8h]@4 - - v0 = stru_505708[0].field_28; - if ( stru_505708[0].field_28 <= 100 ) - { - if ( stru_505708[0].field_28 <= 0 ) - goto LABEL_5; - } - else - { - v0 = 100; - } - pSrcXYZW[1] = 0; - pSrcXYZW[0] = 843; - v1 = 200 * v0 / 100; - pSrcXYZW[2] = 867; - pTargetXY[0] = 177; - pSrcXYZW[3] = v1; - v2 = 297 - v1; - LOWORD(v1) = pArcomageGame->field_54; - pTargetXY[1] = v2; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v1, 2); -LABEL_5: - v3 = stru_505708[1].field_28; - if ( stru_505708[1].field_28 <= 100 ) - { - if ( stru_505708[1].field_28 <= 0 ) - return; - } - else - { - v3 = 100; - } - pSrcXYZW[1] = 0; - pSrcXYZW[0] = 843; - v4 = 200 * v3 / 100; - pSrcXYZW[2] = 867; - pTargetXY[0] = 439; - pSrcXYZW[3] = v4; - v5 = 297 - v4; - LOWORD(v4) = pArcomageGame->field_54; - pTargetXY[1] = v5; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v4, 2); +// int v0; // eax@1 +// int v1; // eax@4 +// int v2; // ecx@4 +// int v3; // eax@5 +// int v4; // eax@8 +// int v5; // esi@8 +// int pSrcXYZW[4]; // [sp+4h] [bp-18h]@4 +// int pTargetXY[2]; // [sp+14h] [bp-8h]@4 +// +// v0 = stru_505708[0].field_28; +// if ( stru_505708[0].field_28 <= 100 ) +// { +// if ( stru_505708[0].field_28 <= 0 ) +// goto LABEL_5; +// } +// else +// { +// v0 = 100; +// } +// pSrcXYZW[1] = 0; +// pSrcXYZW[0] = 843; +// v1 = 200 * v0 / 100; +// pSrcXYZW[2] = 867; +// pTargetXY[0] = 177; +// pSrcXYZW[3] = v1; +// v2 = 297 - v1; +// LOWORD(v1) = pArcomageGame->field_54; +// pTargetXY[1] = v2; +// Blt_Chroma(pSrcXYZW, pTargetXY, v1, 2); +//LABEL_5: +// v3 = stru_505708[1].field_28; +// if ( stru_505708[1].field_28 <= 100 ) +// { +// if ( stru_505708[1].field_28 <= 0 ) +// return; +// } +// else +// { +// v3 = 100; +// } +// pSrcXYZW[1] = 0; +// pSrcXYZW[0] = 843; +// v4 = 200 * v3 / 100; +// pSrcXYZW[2] = 867; +// pTargetXY[0] = 439; +// pSrcXYZW[3] = v4; +// v5 = 297 - v4; +// LOWORD(v4) = pArcomageGame->field_54; +// pTargetXY[1] = v5; +// Blt_Chroma(pSrcXYZW, pTargetXY, v4, 2); } //----- (0040B4B9) -------------------------------------------------------- void __cdecl am_40B4B9() { - int v0; // esi@1 - int v1; // ebx@1 - int v2; // edi@1 - int v3; // edx@2 - int v4; // eax@3 - int v5; // ecx@3 - int v6; // eax@3 - unsigned int v7; // ecx@4 - int v8; // eax@16 - int v9; // ecx@16 - int v10; // eax@16 - signed int v11; // edi@18 - int v12; // esi@20 - unsigned int v13; // ecx@20 - int v14; // eax@23 - unsigned int v15; // eax@25 - unsigned int v16; // ecx@25 - int *v17; // esi@26 - unsigned int v18; // eax@29 - int *v19; // ecx@29 - int v20; // ecx@31 - int v21; // [sp-4h] [bp-2Ch]@8 - int pSrcXYZW[4]; // [sp+Ch] [bp-1Ch]@8 - int pTargetXY[2]; // [sp+1Ch] [bp-Ch]@1 - int v24; // [sp+24h] [bp-4h]@1 - - v0 = am_40BB49(amuint_4FAA6C); - v1 = 0; - v2 = 0; - pTargetXY[1] = 327; - v24 = (640 - 96 * v0) / (v0 + 1); - pTargetXY[0] = (640 - 96 * v0) / (v0 + 1); - while ( v2 < v0 ) - { - v3 = amuint_4FAA6C; - if ( am_byte_4E185D != (_BYTE)v1 ) - { - v4 = 188 * amuint_4FAA6C + 8 * v2; - v5 = *(int *)((char *)stru_505708[0].arr_6C[0] + v4); - v6 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v4); - pTargetXY[0] += v5; - pTargetXY[1] += v6; - } - v7 = stru_505708[0].arr_44[v2 + 47 * amuint_4FAA6C]; - if ( v7 == -1 ) - { - ++v0; - goto LABEL_15; - } - if ( v2 != amuint_4FAA4C ) - { - if ( LOBYTE(stru_505708[amuint_4FAA6C].field_20) == (_BYTE)v1 && byte_505881 == (_BYTE)v1 ) - { - pSrcXYZW[0] = 192; - pSrcXYZW[2] = 288; - pSrcXYZW[1] = v1; - pSrcXYZW[3] = 128; - v21 = 2; -LABEL_12: - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, v21); - goto LABEL_13; - } - ArcomageGame::GetCardRect(v7, (ArcomageRect *)pSrcXYZW); - if ( !am_40BF15(amuint_4FAA6C, v2) ) - { - v1 = 0; - v21 = 0; - goto LABEL_12; - } - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 2); - v1 = 0; - } -LABEL_13: - v3 = amuint_4FAA6C; - pTargetXY[0] += v24 + 96; -LABEL_15: - if ( am_byte_4E185D != (_BYTE)v1 ) - { - v8 = 188 * v3 + 8 * v2; - v9 = *(int *)((char *)stru_505708[0].arr_6C[0] + v8); - v10 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v8); - pTargetXY[0] -= v9; - pTargetXY[1] -= v10; - } - ++v2; - } - v11 = 0; - do - { - if ( am_byte_4FAA76 == (_BYTE)v1 ) - { - v12 = 4 * v11; - v13 = amuint_4FAA78[8 * v11]; - if ( v13 != -1 ) - { - ArcomageGame::GetCardRect(v13, (ArcomageRect *)pSrcXYZW); - Blt_Copy((ArcomageRect *)pSrcXYZW, amuint_4FAA90[v12], v1); - } - if ( am_byte_4FAA7C[v12 * 8] != (_BYTE)v1 ) - { - pTargetXY[0] = amuint_4FAA90[v12][0] + 12; - v14 = amuint_4FAA90[v12][1] + 40; - pTargetXY[1] = amuint_4FAA90[v12][1] + 40; - LOWORD(v14) = pArcomageGame->field_54; - pSrcXYZW[0] = 843; - pSrcXYZW[2] = 916; - pSrcXYZW[1] = 200; - pSrcXYZW[3] = 216; - Blt_Chroma((ArcomageRect *)pSrcXYZW, pTargetXY, v14, 2); - } - } - else - { - if ( amuint_4FAA34 <= v1 ) - { - if ( v11 == 9 ) - { - am_byte_4FAA76 = v1; - am_byte_4FAA75 = v1; - amuint_4FAA34 = 5; - } - v18 = 32 * v11; - v19 = &amuint_4FAA78[8 * v11]; - if ( *v19 != -1 ) - amuint_4FABC4 = *v19; - *v19 = -1; - amuint_4FAA90[v18 / 8][0] = amuint_4FAA80[v18 / 4]; - v20 = amuint_4FAA84[v18 / 4]; - am_byte_4FAA7C[v18] = v1; - amuint_4FAA90[v18 / 8][1] = v20; - } - else - { - v15 = 32 * v11; - v16 = amuint_4FAA78[8 * v11]; - if ( v16 != -1 ) - { - v17 = amuint_4FAA90[v15 / 8]; - *v17 += amuint_4FAA88[v15 / 4]; - amuint_4FAA90[v15 / 8][1] += amuint_4FAA8C[v15 / 4]; - ArcomageGame::GetCardRect(v16, (ArcomageRect *)pSrcXYZW); - Blt_Copy((ArcomageRect *)pSrcXYZW, v17, v1); - } - } - } - ++v11; - } - while ( v11 < 10 ); - if ( am_byte_4FAA76 != (_BYTE)v1 ) - --amuint_4FAA34; - pSrcXYZW[0] = 192; - pSrcXYZW[2] = 288; - pSrcXYZW[1] = v1; - pSrcXYZW[3] = 128; - pTargetXY[0] = 120; - pTargetXY[1] = 18; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, v1); +// int v0; // esi@1 +// int v1; // ebx@1 +// int v2; // edi@1 +// int v3; // edx@2 +// int v4; // eax@3 +// int v5; // ecx@3 +// int v6; // eax@3 +// unsigned int v7; // ecx@4 +// int v8; // eax@16 +// int v9; // ecx@16 +// int v10; // eax@16 +// signed int v11; // edi@18 +// int v12; // esi@20 +// unsigned int v13; // ecx@20 +// int v14; // eax@23 +// unsigned int v15; // eax@25 +// unsigned int v16; // ecx@25 +// int *v17; // esi@26 +// unsigned int v18; // eax@29 +// int *v19; // ecx@29 +// int v20; // ecx@31 +// int v21; // [sp-4h] [bp-2Ch]@8 +// int pSrcXYZW[4]; // [sp+Ch] [bp-1Ch]@8 +// int pTargetXY[2]; // [sp+1Ch] [bp-Ch]@1 +// int v24; // [sp+24h] [bp-4h]@1 +// +// v0 = GetPlayerHandCardCount(amuint_4FAA6C); +// v1 = 0; +// v2 = 0; +// pTargetXY[1] = 327; +// v24 = (640 - 96 * v0) / (v0 + 1); +// pTargetXY[0] = (640 - 96 * v0) / (v0 + 1); +// while ( v2 < v0 ) +// { +// v3 = amuint_4FAA6C; +// if ( am_byte_4E185D != (_BYTE)v1 ) +// { +// v4 = 188 * amuint_4FAA6C + 8 * v2; +// v5 = *(int *)((char *)stru_505708[0].arr_6C[0] + v4); +// v6 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v4); +// pTargetXY[0] += v5; +// pTargetXY[1] += v6; +// } +// v7 = stru_505708[0].cards_at_hand[v2 + 47 * amuint_4FAA6C]; +// if ( v7 == -1 ) +// { +// ++v0; +// goto LABEL_15; +// } +// if ( v2 != amuint_4FAA4C ) +// { +// if ( LOBYTE(stru_505708[amuint_4FAA6C].field_20) == (_BYTE)v1 && byte_505881 == (_BYTE)v1 ) +// { +// pSrcXYZW[0] = 192; +// pSrcXYZW[2] = 288; +// pSrcXYZW[1] = v1; +// pSrcXYZW[3] = 128; +// v21 = 2; +//LABEL_12: +// Blt_Copy(pSrcXYZW, pTargetXY, v21); +// goto LABEL_13; +// } +// ArcomageGame::GetCardRect(v7, pSrcXYZW); +// if ( !am_40BF15(amuint_4FAA6C, v2) ) +// { +// v1 = 0; +// v21 = 0; +// goto LABEL_12; +// } +// Blt_Copy(pSrcXYZW, pTargetXY, 2); +// v1 = 0; +// } +//LABEL_13: +// v3 = amuint_4FAA6C; +// pTargetXY[0] += v24 + 96; +//LABEL_15: +// if ( am_byte_4E185D != (_BYTE)v1 ) +// { +// v8 = 188 * v3 + 8 * v2; +// v9 = *(int *)((char *)stru_505708[0].arr_6C[0] + v8); +// v10 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v8); +// pTargetXY[0] -= v9; +// pTargetXY[1] -= v10; +// } +// ++v2; +// } +// v11 = 0; +// do +// { +// if ( am_byte_4FAA76 == (_BYTE)v1 ) +// { +// v12 = 4 * v11; +// v13 = amuint_4FAA78[8 * v11]; +// if ( v13 != -1 ) +// { +// ArcomageGame::GetCardRect(v13, pSrcXYZW); +// Blt_Copy((ArcomageRect *)pSrcXYZW, amuint_4FAA90[v12], v1); +// } +// if ( am_byte_4FAA7C[v12 * 8] != (_BYTE)v1 ) +// { +// pTargetXY[0] = amuint_4FAA90[v12][0] + 12; +// v14 = amuint_4FAA90[v12][1] + 40; +// pTargetXY[1] = amuint_4FAA90[v12][1] + 40; +// LOWORD(v14) = pArcomageGame->field_54; +// pSrcXYZW[0] = 843; +// pSrcXYZW[2] = 916; +// pSrcXYZW[1] = 200; +// pSrcXYZW[3] = 216; +// Blt_Chroma(pSrcXYZW, pTargetXY, v14, 2); +// } +// } +// else +// { +// if ( amuint_4FAA34 <= v1 ) +// { +// if ( v11 == 9 ) +// { +// am_byte_4FAA76 = v1; +// am_byte_4FAA75 = v1; +// amuint_4FAA34 = 5; +// } +// v18 = 32 * v11; +// v19 = &amuint_4FAA78[8 * v11]; +// if ( *v19 != -1 ) +// amuint_4FABC4 = *v19; +// *v19 = -1; +// amuint_4FAA90[v18 / 8][0] = amuint_4FAA80[v18 / 4]; +// v20 = amuint_4FAA84[v18 / 4]; +// am_byte_4FAA7C[v18] = v1; +// amuint_4FAA90[v18 / 8][1] = v20; +// } +// else +// { +// v15 = 32 * v11; +// v16 = amuint_4FAA78[8 * v11]; +// if ( v16 != -1 ) +// { +// v17 = amuint_4FAA90[v15 / 8]; +// *v17 += amuint_4FAA88[v15 / 4]; +// amuint_4FAA90[v15 / 8][1] += amuint_4FAA8C[v15 / 4]; +// ArcomageGame::GetCardRect(v16, pSrcXYZW); +// Blt_Copy(pSrcXYZW, v17, v1); +// } +// } +// } +// ++v11; +// } +// while ( v11 < 10 ); +// if ( am_byte_4FAA76 != (_BYTE)v1 ) +// --amuint_4FAA34; +// pSrcXYZW[0] = 192; +// pSrcXYZW[2] = 288; +// pSrcXYZW[1] = v1; +// pSrcXYZW[3] = 128; +// pTargetXY[0] = 120; +// pTargetXY[1] = 18; +// Blt_Copy(pSrcXYZW, pTargetXY, v1); } // 4E185D: using guessed type char am_byte_4E185D; // 4FAA34: using guessed type int amuint_4FAA34; @@ -2847,212 +2956,211 @@ //----- (0040B76F) -------------------------------------------------------- void __fastcall am_40B76F(int a1) { - int v1; // eax@3 - int v2; // eax@3 - int v3; // esi@4 - int v4; // eax@4 - int *v5; // edx@6 - int *v6; // ecx@6 - signed int v7; // ebx@11 - int v8; // eax@15 - signed int v9; // ecx@15 - int v10; // eax@20 - int v11; // ecx@20 - int v12; // eax@20 - unsigned int v13; // ecx@21 - double v14; // st7@22 - int *v15; // edx@23 - int v16; // eax@32 - char v17; // zf@37 - int v18; // eax@41 - int v19; // eax@46 - int v20; // ecx@46 - int v21; // eax@46 - int v22; // [sp-4h] [bp-2Ch]@6 - int v23; // [sp-4h] [bp-2Ch]@28 - int pSrcXYZW[4]; // [sp+Ch] [bp-1Ch]@6 - int pTargetXY[2]; // [sp+1Ch] [bp-Ch]@20 - int v26; // [sp+24h] [bp-4h]@1 - - v26 = a1; - if ( amuint_4FAA4C != -1 ) - { - if ( amuint_4FAA38 >= 9 ) - { - am_uint_4FAA44_blt_xy[1] = 18; - am_uint_4FAA44_blt_xy[0] = 120; - v1 = am_40BB49(amuint_4FAA6C); - v2 = (640 - 96 * v1) / v1 + 96; - if ( am_byte_4E185D ) - { - v3 = 188 * amuint_4FAA6C + 8 * amuint_4FAA4C; - amuint_4FAA3C_blt_xy[0] = (amuint_4FAA4C * v2 + *(int *)((char *)stru_505708[0].arr_6C[0] + v3) - 120) / 10; - v4 = (*(int *)((char *)&stru_505708[0].arr_6C[0][1] + v3) + 309) / 10; - } - else - { - amuint_4FAA3C_blt_xy[0] = (amuint_4FAA4C * v2 - 120) / 10; - v4 = 30; - } - am_uint_4FAA44_blt_xy[1] += v4; - am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; - pSrcXYZW[1] = 0; - amuint_4FAA3C_blt_xy[1] = v4; - pSrcXYZW[0] = 192; - pSrcXYZW[2] = 288; - pSrcXYZW[3] = 128; - v22 = 2; - v5 = am_uint_4FAA44_blt_xy; - v6 = pSrcXYZW; - goto LABEL_7; - } - pSrcXYZW[1] = 0; - v6 = pSrcXYZW; - v5 = am_uint_4FAA44_blt_xy; - v22 = 2; - pSrcXYZW[3] = 128; - pSrcXYZW[2] = 288; - pSrcXYZW[0] = 192; - if ( amuint_4FAA38 ) - { - am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; - am_uint_4FAA44_blt_xy[1] += amuint_4FAA3C_blt_xy[1]; -LABEL_7: - Blt_Copy((ArcomageRect *)v6, v5, v22); - goto LABEL_11; - } - am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; - am_uint_4FAA44_blt_xy[1] += amuint_4FAA3C_blt_xy[1]; - Blt_Copy((ArcomageRect *)pSrcXYZW, am_uint_4FAA44_blt_xy, 2); - amuint_4FAA4C = -1; - } -LABEL_11: - v7 = (signed int)amuint_4FAA78; - if ( uCardID != -1 ) - { - if ( v26 <= 10 ) - { - if ( v26 == 10 ) - { - ArcomageGame::GetCardRect(uCardID, (ArcomageRect *)pSrcXYZW); - v8 = 0; - v9 = (signed int)amuint_4FAA78; - while ( *(unsigned int *)v9 != -1 ) - { - v9 += 32; - ++v8; - if ( v9 >= (signed int)&dword_4FABB8 ) - goto LABEL_20; - } - amuint_4FAA78[8 * v8] = uCardID; - am_byte_4FAA7C[32 * v8] = 1; -LABEL_20: - v10 = 8 * v8; - v11 = amuint_4FAA80[v10]; - v12 = amuint_4FAA84[v10]; - pTargetXY[0] = v11; - pTargetXY[1] = v12; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 0); - uCardID = -1; - } - } - else - { - ArcomageGame::GetCardRect(uCardID, (ArcomageRect *)pSrcXYZW); - amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; - amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; - Blt_Copy((ArcomageRect *)pSrcXYZW, amuint_4FAA5C_blt_xy, 0); - } - } - v13 = amuint_4FABC0; - if ( amuint_4FABC0 != -1 ) - { - v14 = (double)v26; - if ( v14 > 15.0 ) - { - ArcomageGame::GetCardRect(amuint_4FABC0, (ArcomageRect *)pSrcXYZW); - v15 = amuint_4FAA5C_blt_xy; - amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; - amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; -LABEL_28: - v23 = 2; -LABEL_29: - Blt_Copy((ArcomageRect *)pSrcXYZW, v15, v23); - return; - } - if ( v14 == 15.0 ) - { - am_40BF77(amuint_4FAA6C, amuint_4FABC0); - v13 = amuint_4FABC0; - goto LABEL_26; - } - if ( v14 == 5.0 ) - { - amuint_4FAA5C_blt_xy[0] = 272; - amuint_4FAA5C_blt_xy[1] = 173; - v16 = 0; - do - { - if ( *(unsigned int *)v7 == -1 ) - break; - v7 += 32; - ++v16; - } - while ( v7 < (signed int)&dword_4FABB8 ); - v26 = 32 * v16; - amuint_4FAA54_blt_xy[0] = (amuint_4FAA80[8 * v16] - 272) / 5; - amuint_4FAA54_blt_xy[1] = (amuint_4FAA84[8 * v16] - 173) / 5; - ArcomageGame::GetCardRect(amuint_4FABC0, (ArcomageRect *)pSrcXYZW); - pTargetXY[0] = 272; - pTargetXY[1] = 173; - goto LABEL_27; - } - if ( v14 >= 5.0 ) - { - v17 = v26 == 0; - } - else - { - v17 = v26 == 0; - if ( v26 > 0 ) - { - ArcomageGame::GetCardRect(amuint_4FABC0, (ArcomageRect *)pSrcXYZW); - v15 = amuint_4FAA5C_blt_xy; - amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; - amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; - v23 = 0; - goto LABEL_29; - } - } - if ( !v17 ) - { -LABEL_26: - ArcomageGame::GetCardRect(v13, (ArcomageRect *)pSrcXYZW); - pTargetXY[0] = 272; - pTargetXY[1] = 173; -LABEL_27: - v15 = pTargetXY; - goto LABEL_28; - } - ArcomageGame::GetCardRect(amuint_4FABC0, (ArcomageRect *)pSrcXYZW); - v18 = 0; - while ( *(unsigned int *)v7 != -1 ) - { - v7 += 32; - ++v18; - if ( v7 >= (signed int)&dword_4FABB8 ) - goto LABEL_46; - } - amuint_4FAA78[8 * v18] = amuint_4FABC0; -LABEL_46: - v19 = 8 * v18; - v20 = amuint_4FAA80[v19]; - v21 = amuint_4FAA84[v19]; - pTargetXY[0] = v20; - pTargetXY[1] = v21; - Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 0); - amuint_4FABC0 = -1; - } +// int v1; // eax@3 +// int v2; // eax@3 +// int v3; // esi@4 +// int v4; // eax@4 +// int *v5; // edx@6 +// int *v6; // ecx@6 +// signed int v7; // ebx@11 +// int v8; // eax@15 +// signed int v9; // ecx@15 +// int v10; // eax@20 +// int v11; // ecx@20 +// int v12; // eax@20 +// unsigned int v13; // ecx@21 +// double v14; // st7@22 +// int *v15; // edx@23 +// int v16; // eax@32 +// char v17; // zf@37 +// int v18; // eax@41 +// int v19; // eax@46 +// int v20; // ecx@46 +// int v21; // eax@46 +// int v22; // [sp-4h] [bp-2Ch]@6 +// int v23; // [sp-4h] [bp-2Ch]@28 +// int pSrcXYZW[4]; // [sp+Ch] [bp-1Ch]@6 +// int pTargetXY[2]; // [sp+1Ch] [bp-Ch]@20 +// int v26; // [sp+24h] [bp-4h]@1 +// +// v26 = a1; +// if ( amuint_4FAA4C != -1 ) +// { +// if ( amuint_4FAA38 >= 9 ) +// { +// am_uint_4FAA44_blt_xy[1] = 18; +// am_uint_4FAA44_blt_xy[0] = 120; +// v1 = GetPlayerHandCardCount(amuint_4FAA6C); +// v2 = (640 - 96 * v1) / v1 + 96; +// if ( am_byte_4E185D ) +// { +// v3 = 188 * amuint_4FAA6C + 8 * amuint_4FAA4C; +// amuint_4FAA3C_blt_xy[0] = (amuint_4FAA4C * v2 + *(int *)((char *)stru_505708[0].arr_6C[0] + v3) - 120) / 10; +// v4 = (*(int *)((char *)&stru_505708[0].arr_6C[0][1] + v3) + 309) / 10; +// } +// else +// { +// amuint_4FAA3C_blt_xy[0] = (amuint_4FAA4C * v2 - 120) / 10; +// v4 = 30; +// } +// am_uint_4FAA44_blt_xy[1] += v4; +// am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; +// pSrcXYZW[1] = 0; +// amuint_4FAA3C_blt_xy[1] = v4; +// pSrcXYZW[0] = 192; +// pSrcXYZW[2] = 288; +// pSrcXYZW[3] = 128; +// v5 = am_uint_4FAA44_blt_xy; +// v6 = pSrcXYZW; +// goto LABEL_7; +// } +// pSrcXYZW[1] = 0; +// v6 = pSrcXYZW; +// v5 = am_uint_4FAA44_blt_xy; +// +// pSrcXYZW[3] = 128; +// pSrcXYZW[2] = 288; +// pSrcXYZW[0] = 192; +// if ( amuint_4FAA38 ) +// { +// am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; +// am_uint_4FAA44_blt_xy[1] += amuint_4FAA3C_blt_xy[1]; +//LABEL_7: +// Blt_Copy(v6, v5, 2); +// goto LABEL_11; +// } +// am_uint_4FAA44_blt_xy[0] += amuint_4FAA3C_blt_xy[0]; +// am_uint_4FAA44_blt_xy[1] += amuint_4FAA3C_blt_xy[1]; +// Blt_Copy(pSrcXYZW, am_uint_4FAA44_blt_xy, 2); +// amuint_4FAA4C = -1; +// } +//LABEL_11: +// v7 = (signed int)amuint_4FAA78; +// if ( uCardID != -1 ) +// { +// if ( v26 <= 10 ) +// { +// if ( v26 == 10 ) +// { +// ArcomageGame::GetCardRect(uCardID, pSrcXYZW); +// v8 = 0; +// v9 = (signed int)amuint_4FAA78; +// while ( *(unsigned int *)v9 != -1 ) +// { +// v9 += 32; +// ++v8; +// if ( v9 >= (signed int)&dword_4FABB8 ) +// goto LABEL_20; +// } +// amuint_4FAA78[8 * v8] = uCardID; +// am_byte_4FAA7C[32 * v8] = 1; +//LABEL_20: +// v10 = 8 * v8; +// v11 = amuint_4FAA80[v10]; +// v12 = amuint_4FAA84[v10]; +// pTargetXY[0] = v11; +// pTargetXY[1] = v12; +// Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 0); +// uCardID = -1; +// } +// } +// else +// { +// ArcomageGame::GetCardRect(uCardID, pSrcXYZW); +// amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; +// amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; +// Blt_Copy(pSrcXYZW, amuint_4FAA5C_blt_xy, 0); +// } +// } +// v13 = amuint_4FABC0; +// if ( amuint_4FABC0 != -1 ) +// { +// v14 = (double)v26; +// if ( v14 > 15.0 ) +// { +// ArcomageGame::GetCardRect(amuint_4FABC0, pSrcXYZW); +// v15 = amuint_4FAA5C_blt_xy; +// amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; +// amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; +//LABEL_28: +// v23 = 2; +//LABEL_29: +// Blt_Copy(pSrcXYZW, v15, v23); +// return; +// } +// if ( v14 == 15.0 ) +// { +// am_40BF77(amuint_4FAA6C, amuint_4FABC0); +// v13 = amuint_4FABC0; +// goto LABEL_26; +// } +// if ( v14 == 5.0 ) +// { +// amuint_4FAA5C_blt_xy[0] = 272; +// amuint_4FAA5C_blt_xy[1] = 173; +// v16 = 0; +// do +// { +// if ( *(unsigned int *)v7 == -1 ) +// break; +// v7 += 32; +// ++v16; +// } +// while ( v7 < (signed int)&dword_4FABB8 ); +// v26 = 32 * v16; +// amuint_4FAA54_blt_xy[0] = (amuint_4FAA80[8 * v16] - 272) / 5; +// amuint_4FAA54_blt_xy[1] = (amuint_4FAA84[8 * v16] - 173) / 5; +// ArcomageGame::GetCardRect(amuint_4FABC0, pSrcXYZW); +// pTargetXY[0] = 272; +// pTargetXY[1] = 173; +// goto LABEL_27; +// } +// if ( v14 >= 5.0 ) +// { +// v17 = v26 == 0; +// } +// else +// { +// v17 = v26 == 0; +// if ( v26 > 0 ) +// { +// ArcomageGame::GetCardRect(amuint_4FABC0, pSrcXYZW); +// v15 = amuint_4FAA5C_blt_xy; +// amuint_4FAA5C_blt_xy[0] += amuint_4FAA54_blt_xy[0]; +// amuint_4FAA5C_blt_xy[1] += amuint_4FAA54_blt_xy[1]; +// v23 = 0; +// goto LABEL_29; +// } +// } +// if ( !v17 ) +// { +//LABEL_26: +// ArcomageGame::GetCardRect(v13, pSrcXYZW); +// pTargetXY[0] = 272; +// pTargetXY[1] = 173; +//LABEL_27: +// v15 = pTargetXY; +// goto LABEL_28; +// } +// ArcomageGame::GetCardRect(amuint_4FABC0, pSrcXYZW); +// v18 = 0; +// while ( *(unsigned int *)v7 != -1 ) +// { +// v7 += 32; +// ++v18; +// if ( v7 >= (signed int)&dword_4FABB8 ) +// goto LABEL_46; +// } +// amuint_4FAA78[8 * v18] = amuint_4FABC0; +//LABEL_46: +// v19 = 8 * v18; +// v20 = amuint_4FAA80[v19]; +// v21 = amuint_4FAA84[v19]; +// pTargetXY[0] = v20; +// pTargetXY[1] = v21; +// Blt_Copy((ArcomageRect *)pSrcXYZW, pTargetXY, 0); +// amuint_4FABC0 = -1; +// } } // 4E185D: using guessed type char am_byte_4E185D; // 4FAA38: using guessed type int amuint_4FAA38; @@ -3063,40 +3171,32 @@ // 4FABB8: using guessed type int dword_4FABB8; //----- (0040BB12) -------------------------------------------------------- -void ArcomageGame::GetCardRect(unsigned int uCardID, ArcomageRect *pCardRect) +void ArcomageGame::GetCardRect(unsigned int uCardID, RECT *pCardRect) { - ArcomageRect *pXYZW; // esi@1 int v3; // edx@1 int v4; // ecx@1 - pXYZW = pCardRect; v3 = pCards[uCardID].slot % 10; v4 = (pCards[uCardID].slot / 10 << 7) + 220; - pXYZW->y = v4; - pXYZW->x = 96 * v3; - pXYZW->w = v4 + 128; - pXYZW->z = 96 * v3 + 96; + pCardRect->top = v4; + pCardRect->left = 96 * v3; + pCardRect->bottom = v4 + 128; + pCardRect->right = 96 * v3 + 96; } //----- (0040BB49) -------------------------------------------------------- -int __fastcall am_40BB49(int a1) -{ - int result; // eax@1 - char *v2; // ecx@1 - signed int v3; // edx@1 - - result = 0; - v2 = (char *)stru_505708[a1].arr_44; - v3 = 10; - do - { - if ( *(unsigned int *)v2 != -1 ) - ++result; - v2 += 4; - --v3; - } - while ( v3 ); - return result; +int GetPlayerHandCardCount( int player_num ) + { + int card_count; // eax@1 + + card_count = 0; + for(int i=0; i<10; ++i) + { + if (am_Players[player_num].cards_at_hand[i]!=-1) + ++card_count; + } + return card_count; + } //----- (0040BB67) -------------------------------------------------------- @@ -3141,13 +3241,13 @@ result = -1; v3 = 188 * a1; a1a = a1; - v4 = LOBYTE(stru_505708[a1].field_20) == 0; + v4 = LOBYTE(am_Players[a1].field_20) == 0; v28 = -1; if ( !v4 ) { if ( v26._40DD2F() ) { - v5 = am_40BB49(v1); + v5 = GetPlayerHandCardCount(v1); a2 = 0; v25 = v5; pXYZW[1] = 327; @@ -3161,7 +3261,7 @@ for ( i = 47 * v1; ; v6 = i ) { v7 = v30; - v8 = (char *)&stru_505708[0].arr_44[v30 + v6]; + v8 = (char *)&am_Players[0].cards_at_hand[v30 + v6]; if ( *(unsigned int *)v8 == -1 ) { do @@ -3175,14 +3275,14 @@ if ( am_byte_4E185D ) { v9 = v3 + 8 * v7; - v10 = *(int *)((char *)stru_505708[0].arr_6C[0] + v9); - v11 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v9); + // v10 = *(int *)((char *)am_Players[0].arr_6C[0] + v9); + // v11 = *(int *)((char *)&am_Players[0].arr_6C[0][1] + v9); pXYZW[0] += v10; pXYZW[2] += v10; pXYZW[1] += v11; pXYZW[3] += v11; } - if ( v26.Inside((Vec4_int_ *)pXYZW) ) + if ( true)//v26.Inside(pXYZW) ) break; v31 = 0; v32 = 0; @@ -3191,14 +3291,14 @@ LOWORD(v13) = *(_WORD *)&v31; BYTE2(v13) = 0; v14 = R8G8B8_to_TargetFormat(v13); - DrawRect((Vec4_int_ *)pXYZW, v14, 0); + // DrawRect(pXYZW, v14, 0); pXYZW[0] += var18; pXYZW[2] += var18; if ( am_byte_4E185D ) { v15 = v3 + 8 * v30; - v16 = *(int *)((char *)stru_505708[0].arr_6C[0] + v15); - v17 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v15); + // v16 = *(int *)((char *)am_Players[0].arr_6C[0] + v15); + // v17 = *(int *)((char *)&am_Players[0].arr_6C[0][1] + v15); pXYZW[0] -= v16; pXYZW[2] -= v16; pXYZW[1] -= v17; @@ -3226,7 +3326,7 @@ LOWORD(v20) = *(_WORD *)&v31; BYTE2(v20) = v33; v21 = R8G8B8_to_TargetFormat(v20); - DrawRect((Vec4_int_ *)pXYZW, v21, 0); + // DrawRect(pXYZW, v21, 0); } } LABEL_20: @@ -3258,7 +3358,7 @@ goto LABEL_16; v2 = 0; v3 = 0; - v4 = (char *)stru_505708[a1].arr_44; + v4 = (char *)am_Players[a1].cards_at_hand; do { if ( *(unsigned int *)v4 != -1 ) @@ -3273,14 +3373,14 @@ while ( v3 < 10 ); v5 = v3 + 47 * a1; v6 = 4 * v5 + 5265228; - if ( BYTE3(pCards[stru_505708[0].arr_44[v5]].field_28) ) + if ( BYTE3(pCards[am_Players[0].cards_at_hand[v5]].field_28) ) { ArcomageGame::PlaySound(0x16u); v7 = amuint_4FAA6C; - v8 = am_40BB49(amuint_4FAA6C); + v8 = GetPlayerHandCardCount(amuint_4FAA6C); v9 = 188 * v7 + 8 * v3; - v10 = 96 * v3 + *(int *)((char *)stru_505708[0].arr_6C[0] + v9) + (640 - 96 * v8) / (v8 + 1); - v11 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v9) + 327; +// v10 = 96 * v3 + *(int *)((char *)am_Players[0].arr_6C[0] + v9) + (640 - 96 * v8) / (v8 + 1); + // v11 = *(int *)((char *)&am_Players[0].arr_6C[0][1] + v9) + 327; amuint_4FAA5C_blt_xy[0] = v10; amuint_4FAA5C_blt_xy[1] = v11; v12 = 0; @@ -3325,7 +3425,7 @@ bool result; // eax@0 int v3; // ebp@1 int v4; // ecx@2 - ArcomageGame_stru0 *v5; // esi@2 + ArcomagePlayer *v5; // esi@2 int v6; // edi@2 int v7; // eax@2 int v8; // ebx@8 @@ -3342,9 +3442,9 @@ if ( a2 <= -1 ) goto LABEL_12; v4 = 0; - v5 = &stru_505708[v3]; + v5 = &am_Players[v3]; v6 = 0; - v7 = (int)v5->arr_44; + v7 = (int)v5->cards_at_hand; do { if ( *(unsigned int *)v7 != -1 ) @@ -3362,24 +3462,24 @@ { ArcomageGame::PlaySound(0x17u); v8 = amuint_4FAA6C; - v9 = am_40BB49(amuint_4FAA6C); + v9 = GetPlayerHandCardCount(amuint_4FAA6C); v10 = 188 * v8 + 8 * v6; v11 = v6 + 47 * v3; amuint_4FAA54_blt_xy[1] = -30; pArcomageGame->field_F6 = 1; - v12 = 96 * v6 + *(int *)((char *)stru_505708[0].arr_6C[0] + v10) + (640 - 96 * v9) / (v9 + 1); - v13 = *(int *)((char *)&stru_505708[0].arr_6C[0][1] + v10) + 327; + //v12 = 96 * v6 + *(int *)((char *)am_Players[0].arr_6C[0] + v10) + (640 - 96 * v9) / (v9 + 1); + // v13 = *(int *)((char *)&am_Players[0].arr_6C[0][1] + v10) + 327; amuint_4FAA5C_blt_xy[0] = v12; amuint_4FAA5C_blt_xy[1] = v13; amuint_4FAA54_blt_xy[0] = (272 - v12) / 5; - v14 = &pCards[v5->arr_44[v6]]; + v14 = &pCards[v5->cards_at_hand[v6]]; v5->field_38 -= LOBYTE(v14->field_28); v15 = BYTE1(v14->field_28); v5->field_40 -= BYTE2(v14->field_28); v5->field_3C -= v15; result = 4 * v11 + 5265228; - v16 = stru_505708[0].arr_44[v11]; - stru_505708[0].arr_44[v11] = -1; + v16 = am_Players[0].cards_at_hand[v11]; + am_Players[0].cards_at_hand[v11] = -1; amuint_4FABC0 = v16; LOBYTE(result) = 1; } @@ -3392,27 +3492,27 @@ } //----- (0040BF15) -------------------------------------------------------- -bool __fastcall am_40BF15(int a1, int a2) -{ - ArcomageGame_stru0 *v2; // esi@1 +bool am_40BF15( int player_num, int hand_card_indx ) + { bool result; // eax@1 ArcomageCard *v4; // ecx@1 - - v2 = &stru_505708[a1]; - LOBYTE(result) = 1; - v4 = &pCards[v2->arr_44[a2]]; - if ( SBYTE1(v4->field_24) > v2->field_2C ) - LOBYTE(result) = 0; - if ( SBYTE2(v4->field_24) > v2->field_30 ) - LOBYTE(result) = 0; - if ( SBYTE3(v4->field_24) > v2->field_34 ) - LOBYTE(result) = 0; - if ( SLOBYTE(v4->field_28) > v2->field_38 ) - LOBYTE(result) = 0; - if ( SBYTE1(v4->field_28) > v2->field_3C ) - LOBYTE(result) = 0; - if ( SBYTE2(v4->field_28) > v2->field_40 ) - LOBYTE(result) = 0; + ArcomagePlayer *v2; // esi@1 + + v2 = &am_Players[player_num]; + result = true; + v4 = &pCards[am_Players[player_num].cards_at_hand[hand_card_indx]]; + if ( v4->field_25 > v2->field_2C ) + result = false; + if ( v4->field_26 > v2->field_30 ) + result = false; + if ( v4->field_27 > v2->field_34 ) + result = false; + if ( v4->field_28 > v2->field_38 ) + result = false; + if ( v4->field_29 > v2->field_3C ) + result = false; + if ( v4->field_2A > v2->field_40 ) + result = false; return result; } @@ -3422,1965 +3522,1965 @@ //----- (0040BF77) -------------------------------------------------------- void __fastcall am_40BF77(int a1, unsigned int uCardID) { - ArcomageGame_stru0 *v2; // esi@1 - int v3; // eax@1 - ArcomageGame_stru0 *v4; // edi@1 - int v5; // eax@2 - char v6; // sf@2 - unsigned __int8 v7; // of@2 - int v8; // eax@3 - int v9; // eax@4 - char v10; // zf@5 - int v11; // eax@8 - unsigned __int8 v12; // zf@8 - char v13; // sf@8 - unsigned __int8 v14; // of@8 - int v15; // eax@9 - int v16; // eax@10 - char v17; // zf@12 - char v18; // al@15 - int v19; // eax@16 - int v20; // eax@17 - int v21; // eax@22 - int v22; // eax@23 - int v23; // eax@26 - int v24; // edx@26 - signed int v25; // ebx@26 - ArcomageCard *v26; // ebx@28 - int v27; // eax@28 - int v28; // edx@33 - int v29; // eax@33 - int v30; // eax@35 - int v31; // edx@40 - int v32; // eax@40 - int v33; // eax@42 - int v34; // edx@47 - int v35; // eax@47 - int v36; // eax@49 - int v37; // edx@54 - int v38; // eax@54 - bool v39; // eax@56 - int v40; // edx@61 - int v41; // eax@61 - int v42; // eax@63 - int v43; // edx@68 - int v44; // eax@68 - char v45; // al@70 - int v46; // eax@72 - int v47; // edx@77 - int v48; // eax@77 - int v49; // eax@79 - int v50; // edx@84 - int v51; // eax@84 - int v52; // eax@86 - int v53; // eax@91 - int v54; // edx@91 - int v55; // eax@93 - int v56; // eax@98 - int v57; // edx@98 - int v58; // eax@100 - int v59; // eax@105 - int v60; // edx@105 - int v61; // eax@107 - int v62; // eax@112 - int v63; // edx@112 - int v64; // eax@114 - int v65; // eax@119 - int v66; // edx@119 - int v67; // eax@121 - int v68; // eax@126 - int v69; // edx@126 - char v70; // al@128 - int v71; // eax@130 - int v72; // eax@135 - int v73; // edx@135 - int v74; // eax@137 - int v75; // eax@142 - int v76; // edx@142 - int v77; // eax@144 - int v78; // eax@151 - int v79; // ecx@151 - int v80; // eax@155 - int v81; // eax@162 - int v82; // ecx@162 - int v83; // eax@166 - int v84; // eax@173 - int v85; // ecx@173 - int v86; // eax@177 - int v87; // eax@184 - int v88; // ecx@184 - bool v89; // eax@188 - int v90; // eax@195 - int v91; // ecx@195 - int v92; // eax@199 - int v93; // eax@206 - int v94; // ecx@206 - char v95; // al@210 - int v96; // eax@211 - int v97; // edx@211 - int v98; // eax@211 - int v99; // eax@211 - int v100; // eax@212 - int v101; // eax@219 - int v102; // ecx@219 - int v103; // eax@223 - int v104; // eax@231 - int v105; // edx@231 - signed int v106; // ebx@231 - ArcomageCard *v107; // ebx@233 - int v108; // eax@233 - int v109; // edx@238 - int v110; // eax@238 - int v111; // eax@240 - int v112; // edx@245 - int v113; // eax@245 - int v114; // eax@247 - int v115; // edx@252 - int v116; // eax@252 - int v117; // eax@254 - int v118; // edx@259 - int v119; // eax@259 - bool v120; // eax@261 - int v121; // edx@266 - int v122; // eax@266 - int v123; // eax@268 - int v124; // edx@273 - int v125; // eax@273 - char v126; // al@275 - int v127; // eax@277 - int v128; // edx@282 - int v129; // eax@282 - int v130; // eax@284 - int v131; // edx@289 - int v132; // eax@289 - int v133; // eax@291 - int v134; // eax@296 - int v135; // edx@296 - int v136; // eax@298 - int v137; // eax@303 - int v138; // edx@303 - int v139; // eax@305 - int v140; // eax@310 - int v141; // edx@310 - int v142; // eax@312 - int v143; // eax@317 - int v144; // edx@317 - int v145; // eax@319 - int v146; // eax@324 - int v147; // edx@324 - int v148; // eax@326 - int v149; // eax@331 - int v150; // edx@331 - char v151; // al@333 - int v152; // eax@335 - int v153; // eax@340 - int v154; // edx@340 - int v155; // eax@342 - int v156; // eax@347 - int v157; // edx@347 - int v158; // eax@349 - int v159; // eax@356 - int v160; // ecx@356 - int v161; // eax@360 - int v162; // eax@367 - int v163; // ecx@367 - int v164; // eax@371 - int v165; // eax@378 - int v166; // ecx@378 - int v167; // eax@382 - int v168; // eax@389 - int v169; // ecx@389 - bool v170; // eax@393 - int v171; // eax@400 - int v172; // ecx@400 - int v173; // eax@404 - int v174; // eax@411 - int v175; // ecx@411 - char v176; // al@415 - int v177; // eax@416 - int v178; // edx@416 - int v179; // eax@416 - int v180; // eax@416 - int v181; // eax@417 - int v182; // eax@424 - int v183; // ecx@424 - int v184; // eax@429 - int v185; // ecx@429 - signed int v186; // esi@511 - Vec2_int_ v187; // [sp+Ch] [bp-64h]@488 - //int v188; // [sp+10h] [bp-60h]@488 - int v189; // [sp+14h] [bp-5Ch]@1 - ArcomageCard *pCard; // [sp+18h] [bp-58h]@1 - int v191; // [sp+1Ch] [bp-54h]@1 - int v192; // [sp+20h] [bp-50h]@1 - int v193; // [sp+24h] [bp-4Ch]@1 - int v194; // [sp+28h] [bp-48h]@1 - int v195; // [sp+2Ch] [bp-44h]@1 - int v196; // [sp+30h] [bp-40h]@1 - int v197; // [sp+34h] [bp-3Ch]@1 - int v198; // [sp+38h] [bp-38h]@1 - int v199; // [sp+3Ch] [bp-34h]@1 - int v200; // [sp+40h] [bp-30h]@1 - int v201; // [sp+44h] [bp-2Ch]@1 - int v202; // [sp+48h] [bp-28h]@1 - int v203; // [sp+4Ch] [bp-24h]@1 - int v204; // [sp+50h] [bp-20h]@1 - bool v205; // [sp+54h] [bp-1Ch]@1 - int v206; // [sp+58h] [bp-18h]@1 - int v207; // [sp+5Ch] [bp-14h]@1 - int v208; // [sp+60h] [bp-10h]@1 - int v209; // [sp+64h] [bp-Ch]@1 - int v210; // [sp+68h] [bp-8h]@1 - int v211; // [sp+6Ch] [bp-4h]@1 - - v194 = 0; - v210 = 0; - v208 = 0; - v197 = 0; - v205 = 0; - v203 = 0; - v201 = 0; - v199 = 0; - v192 = 0; - v196 = 0; - v211 = 0; - v209 = 0; - v207 = 0; - v206 = 0; - v204 = 0; - v202 = 0; - v200 = 0; - v198 = 0; - v191 = 0; - v195 = 0; - v193 = a1; - v2 = &stru_505708[a1]; - pCard = &pCards[uCardID]; - v3 = pCard->field_2C; - v189 = (a1 + 1) % 2; - v4 = &stru_505708[v189]; - switch ( v3 ) - { - case 2: - v5 = v2->field_2C; - v7 = __OFSUB__(v5, v4->field_2C); - v6 = v5 - v4->field_2C < 0; - goto LABEL_18; - case 3: - v8 = v2->field_30; - v7 = __OFSUB__(v8, v4->field_30); - v6 = v8 - v4->field_30 < 0; - goto LABEL_18; - case 4: - v9 = v2->field_34; - v7 = __OFSUB__(v9, v4->field_34); - v6 = v9 - v4->field_34 < 0; - goto LABEL_18; - case 5: - v10 = v2->field_2C == v4->field_2C; - goto LABEL_21; - case 6: - v10 = v2->field_30 == v4->field_30; - goto LABEL_21; - case 7: - v10 = v2->field_34 == v4->field_34; - goto LABEL_21; - case 8: - v11 = v2->field_2C; - v14 = __OFSUB__(v11, v4->field_2C); - v12 = v11 == v4->field_2C; - v13 = v11 - v4->field_2C < 0; - goto LABEL_24; - case 9: - v15 = v2->field_30; - v14 = __OFSUB__(v15, v4->field_30); - v12 = v15 == v4->field_30; - v13 = v15 - v4->field_30 < 0; - goto LABEL_24; - case 10: - v16 = v2->field_34; - v14 = __OFSUB__(v16, v4->field_34); - v12 = v16 == v4->field_34; - v13 = v16 - v4->field_34 < 0; - goto LABEL_24; - case 11: - v10 = v2->field_28 == 0; - goto LABEL_21; - case 12: - v17 = v2->field_28 == 0; - goto LABEL_15; - case 13: - v10 = v4->field_28 == 0; - goto LABEL_21; - case 14: - v17 = v4->field_28 == 0; -LABEL_15: - v18 = !v17; - goto LABEL_25; - case 15: - v19 = v2->field_28; - v7 = __OFSUB__(v19, v4->field_28); - v6 = v19 - v4->field_28 < 0; - goto LABEL_18; - case 16: - v20 = v2->field_24; - v7 = __OFSUB__(v20, v4->field_24); - v6 = v20 - v4->field_24 < 0; -LABEL_18: - v18 = v6 ^ v7; - goto LABEL_25; - case 17: - v10 = v2->field_28 == v4->field_28; - goto LABEL_21; - case 18: - v10 = v2->field_24 == v4->field_24; -LABEL_21: - v18 = v10; - goto LABEL_25; - case 19: - v21 = v2->field_28; - v14 = __OFSUB__(v21, v4->field_28); - v12 = v21 == v4->field_28; - v13 = v21 - v4->field_28 < 0; - goto LABEL_24; - case 20: - v22 = v2->field_24; - v14 = __OFSUB__(v22, v4->field_24); - v12 = v22 == v4->field_24; - v13 = v22 - v4->field_24 < 0; -LABEL_24: - v18 = !((unsigned __int8)(v13 ^ v14) | v12); -LABEL_25: - if ( v18 ) - goto LABEL_26; - goto LABEL_231; - default: -LABEL_26: - v23 = BYTE1(pCard->field_30); - v24 = v23 + (LOBYTE(pCard->field_30) == 1); - v25 = 0; - dword_4FAA68 = v23 + (LOBYTE(pCard->field_30) == 1); - dword_4FAA64 = v23; - if ( v23 > 0 ) - { - do - { - am_40A283(v193, v24); - ++v25; - } - while ( v25 < SBYTE1(pCard->field_30) ); - } - v26 = pCard; - am_byte_4FAA77 = am_40BB49(v193) > dword_4E1874; - LOBYTE(v27) = BYTE2(pCard->field_30); - if ( (_BYTE)v27 ) - { - if ( (_BYTE)v27 == 99 ) - { - v28 = v2->field_2C; - v29 = v4->field_2C; - if ( v28 < v29 ) - { - v2->field_2C = v29; - v194 = v29 - v28; - } - } - else - { - v27 = (char)v27; - v6 = (char)v27 + v2->field_2C < 0; - v2->field_2C += (char)v27; - if ( v6 ) - v2->field_2C = 0; - v194 = v27; - } - } - LOBYTE(v30) = BYTE3(v26->field_30); - if ( (_BYTE)v30 ) - { - if ( (_BYTE)v30 == 99 ) - { - v31 = v2->field_30; - v32 = v4->field_30; - if ( v31 < v32 ) - { - v2->field_30 = v32; - v210 = v32 - v31; - } - } - else - { - v30 = (char)v30; - v6 = (char)v30 + v2->field_30 < 0; - v2->field_30 += (char)v30; - if ( v6 ) - v2->field_30 = 0; - v210 = v30; - } - } - LOBYTE(v33) = LOBYTE(v26->field_34); - if ( (_BYTE)v33 ) - { - if ( (_BYTE)v33 == 99 ) - { - v34 = v2->field_34; - v35 = v4->field_34; - if ( v34 < v35 ) - { - v2->field_34 = v35; - v208 = v35 - v34; - } - } - else - { - v33 = (char)v33; - v6 = (char)v33 + v2->field_34 < 0; - v2->field_34 += (char)v33; - if ( v6 ) - v2->field_34 = 0; - v208 = v33; - } - } - LOBYTE(v36) = BYTE1(v26->field_34); - if ( (_BYTE)v36 ) - { - if ( (_BYTE)v36 == 99 ) - { - v37 = v2->field_38; - v38 = v4->field_38; - if ( v37 < v38 ) - { - v2->field_38 = v38; - v197 = v38 - v37; - } - } - else - { - v36 = (char)v36; - v6 = (char)v36 + v2->field_38 < 0; - v2->field_38 += (char)v36; - if ( v6 ) - v2->field_38 = 0; - v197 = v36; - } - } - LOBYTE(v39) = BYTE2(v26->field_34); - if ( v39 ) - { - if ( v39 == 99 ) - { - v40 = v2->field_3C; - v41 = v4->field_3C; - if ( v40 < v41 ) - { - v2->field_3C = v41; - v205 = v41 - v40; - } - } - else - { - v39 = v39; - v6 = v39 + v2->field_3C < 0; - v2->field_3C += v39; - if ( v6 ) - v2->field_3C = 0; - v205 = v39; - } - } - LOBYTE(v42) = BYTE3(v26->field_34); - if ( (_BYTE)v42 ) - { - if ( (_BYTE)v42 == 99 ) - { - v43 = v2->field_40; - v44 = v4->field_40; - if ( v43 < v44 ) - { - v2->field_40 = v44; - v203 = v44 - v43; - } - } - else - { - v42 = (char)v42; - v6 = (char)v42 + v2->field_40 < 0; - v2->field_40 += (char)v42; - if ( v6 ) - v2->field_40 = 0; - v203 = v42; - } - } - v45 = v26->field_38[0]; - if ( v45 ) - { - v196 = am_40D402(v193, v45); - v192 = v26->field_38[0] - v196; - } - LOBYTE(v46) = v26->field_38[1]; - if ( (_BYTE)v46 ) - { - if ( (_BYTE)v46 == 99 ) - { - v47 = v2->field_28; - v48 = v4->field_28; - if ( v47 < v48 ) - { - v2->field_28 = v48; - v201 = v48 - v47; - } - } - else - { - v46 = (char)v46; - v6 = (char)v46 + v2->field_28 < 0; - v2->field_28 += (char)v46; - if ( v6 ) - v2->field_28 = 0; - v201 = v46; - } - } - LOBYTE(v49) = v26->field_38[2]; - if ( (_BYTE)v49 ) - { - if ( (_BYTE)v49 == 99 ) - { - v50 = v2->field_24; - v51 = v4->field_24; - if ( v50 < v51 ) - { - v2->field_24 = v51; - v199 = v51 - v50; - } - } - else - { - v49 = (char)v49; - v6 = (char)v49 + v2->field_24 < 0; - v2->field_24 += (char)v49; - if ( v6 ) - v2->field_24 = 0; - v199 = v49; - } - } - LOBYTE(v52) = v26->field_38[3]; - if ( (_BYTE)v52 ) - { - if ( (_BYTE)v52 == 99 ) - { - v53 = v2->field_2C; - v54 = v4->field_2C; - if ( v53 > v54 ) - { - v4->field_2C = v53; - v211 = v53 - v54; - } - } - else - { - v52 = (char)v52; - v6 = (char)v52 + v4->field_2C < 0; - v4->field_2C += (char)v52; - if ( v6 ) - v4->field_2C = 0; - v211 = v52; - } - } - LOBYTE(v55) = v26->field_38[4]; - if ( (_BYTE)v55 ) - { - if ( (_BYTE)v55 == 99 ) - { - v56 = v2->field_30; - v57 = v4->field_30; - if ( v56 > v57 ) - { - v4->field_30 = v56; - v209 = v56 - v57; - } - } - else - { - v55 = (char)v55; - v6 = (char)v55 + v4->field_30 < 0; - v4->field_30 += (char)v55; - if ( v6 ) - v4->field_30 = 0; - v209 = v55; - } - } - LOBYTE(v58) = v26->field_38[5]; - if ( (_BYTE)v58 ) - { - if ( (_BYTE)v58 == 99 ) - { - v59 = v2->field_34; - v60 = v4->field_34; - if ( v59 > v60 ) - { - v4->field_34 = v59; - v207 = v59 - v60; - } - } - else - { - v58 = (char)v58; - v6 = (char)v58 + v4->field_34 < 0; - v4->field_34 += (char)v58; - if ( v6 ) - v4->field_34 = 0; - v207 = v58; - } - } - LOBYTE(v61) = v26->field_38[6]; - if ( (_BYTE)v61 ) - { - if ( (_BYTE)v61 == 99 ) - { - v62 = v2->field_38; - v63 = v4->field_38; - if ( v62 > v63 ) - { - v4->field_38 = v62; - v206 = v62 - v63; - } - } - else - { - v61 = (char)v61; - v6 = (char)v61 + v4->field_38 < 0; - v4->field_38 += (char)v61; - if ( v6 ) - v4->field_38 = 0; - v206 = v61; - } - } - LOBYTE(v64) = v26->field_38[7]; - if ( (_BYTE)v64 ) - { - if ( (_BYTE)v64 == 99 ) - { - v65 = v2->field_3C; - v66 = v4->field_3C; - if ( v65 > v66 ) - { - v4->field_3C = v65; - v204 = v65 - v66; - } - } - else - { - v64 = (char)v64; - v6 = (char)v64 + v4->field_3C < 0; - v4->field_3C += (char)v64; - if ( v6 ) - v4->field_3C = 0; - v204 = v64; - } - } - LOBYTE(v67) = v26->field_38[8]; - if ( (_BYTE)v67 ) - { - if ( (_BYTE)v67 == 99 ) - { - v68 = v2->field_40; - v69 = v4->field_40; - if ( v68 > v69 ) - { - v4->field_40 = v68; - v202 = v68 - v69; - } - } - else - { - v67 = (char)v67; - v6 = (char)v67 + v4->field_40 < 0; - v4->field_40 += (char)v67; - if ( v6 ) - v4->field_40 = 0; - v202 = v67; - } - } - v70 = v26->field_38[9]; - if ( v70 ) - { - v195 = am_40D402(v189, v70); - v191 = v26->field_38[9] - v195; - } - LOBYTE(v71) = v26->field_38[10]; - if ( (_BYTE)v71 ) - { - if ( (_BYTE)v71 == 99 ) - { - v72 = v2->field_28; - v73 = v4->field_28; - if ( v72 > v73 ) - { - v4->field_28 = v72; - v200 = v72 - v73; - } - } - else - { - v71 = (char)v71; - v6 = (char)v71 + v4->field_28 < 0; - v4->field_28 += (char)v71; - if ( v6 ) - v4->field_28 = 0; - v200 = v71; - } - } - LOBYTE(v74) = v26->field_38[11]; - if ( (_BYTE)v74 ) - { - if ( (_BYTE)v74 == 99 ) - { - v75 = v2->field_24; - v76 = v4->field_24; - if ( v75 > v76 ) - { - v4->field_24 = v75; - v198 = v75 - v76; - } - } - else - { - v74 = (char)v74; - v6 = (char)v74 + v4->field_24 < 0; - v4->field_24 += (char)v74; - if ( v6 ) - v4->field_24 = 0; - v198 = v74; - } - } - LOBYTE(v77) = v26->field_38[12]; - if ( (_BYTE)v77 ) - { - if ( (_BYTE)v77 == 99 ) - { - v78 = v2->field_2C; - v79 = v4->field_2C; - if ( v78 != v79 ) - { - if ( v78 <= v79 ) - { - v2->field_2C = v79; - v194 = v79 - v78; - } - else - { - v4->field_2C = v78; - v211 = v78 - v79; - } - } - } - else - { - v77 = (char)v77; - v2->field_2C += (char)v77; - v4->field_2C += (char)v77; - if ( v2->field_2C < 0 ) - v2->field_2C = 0; - if ( v4->field_2C < 0 ) - v4->field_2C = 0; - v194 = v77; - v211 = v77; - } - } - LOBYTE(v80) = v26->field_38[13]; - if ( (_BYTE)v80 ) - { - if ( (_BYTE)v80 == 99 ) - { - v81 = v2->field_30; - v82 = v4->field_30; - if ( v81 != v82 ) - { - if ( v81 <= v82 ) - { - v2->field_30 = v82; - v210 = v82 - v81; - } - else - { - v4->field_30 = v81; - v209 = v81 - v82; - } - } - } - else - { - v80 = (char)v80; - v2->field_30 += (char)v80; - v4->field_30 += (char)v80; - if ( v2->field_30 < 0 ) - v2->field_30 = 0; - if ( v4->field_30 < 0 ) - v4->field_30 = 0; - v209 = v80; - v210 = v80; - } - } - LOBYTE(v83) = v26->field_38[14]; - if ( (_BYTE)v83 ) - { - if ( (_BYTE)v83 == 99 ) - { - v84 = v2->field_34; - v85 = v4->field_34; - if ( v84 != v85 ) - { - if ( v84 <= v85 ) - { - v2->field_34 = v85; - v208 = v85 - v84; - } - else - { - v4->field_34 = v84; - v207 = v84 - v85; - } - } - } - else - { - v83 = (char)v83; - v2->field_34 += (char)v83; - v4->field_34 += (char)v83; - if ( v2->field_34 < 0 ) - v2->field_34 = 0; - if ( v4->field_34 < 0 ) - v4->field_34 = 0; - v208 = v83; - v207 = v83; - } - } - LOBYTE(v86) = v26->field_38[15]; - if ( (_BYTE)v86 ) - { - if ( (_BYTE)v86 == 99 ) - { - v87 = v2->field_38; - v88 = v4->field_38; - if ( v87 != v88 ) - { - if ( v87 <= v88 ) - { - v2->field_38 = v88; - v197 = v88 - v87; - } - else - { - v4->field_38 = v87; - v206 = v87 - v88; - } - } - } - else - { - v86 = (char)v86; - v2->field_38 += (char)v86; - v4->field_38 += (char)v86; - if ( v2->field_38 < 0 ) - v2->field_38 = 0; - if ( v4->field_38 < 0 ) - v4->field_38 = 0; - v197 = v86; - v206 = v86; - } - } - LOBYTE(v89) = v26->field_48[0]; - if ( v89 ) - { - if ( v89 == 99 ) - { - v90 = v2->field_3C; - v91 = v4->field_3C; - if ( v90 != v91 ) - { - if ( v90 <= v91 ) - { - v205 = v91 > v90; - v2->field_3C = v91; - } - else - { - v204 = 1; - v4->field_3C = v90; - } - } - } - else - { - v89 = v89; - v2->field_3C += v89; - v4->field_3C += v89; - if ( v2->field_3C < 0 ) - v2->field_3C = 0; - if ( v4->field_3C < 0 ) - v4->field_3C = 0; - v205 = v89; - v204 = v89; - } - } - LOBYTE(v92) = v26->field_48[1]; - if ( (_BYTE)v92 ) - { - if ( (_BYTE)v92 == 99 ) - { - v93 = v2->field_40; - v94 = v4->field_40; - if ( v93 != v94 ) - { - if ( v93 <= v94 ) - { - v2->field_40 = v94; - v203 = v94 - v93; - } - else - { - v4->field_40 = v93; - v202 = v93 - v94; - } - } - } - else - { - v92 = (char)v92; - v2->field_40 += (char)v92; - v4->field_40 += (char)v92; - if ( v2->field_40 < 0 ) - v2->field_40 = 0; - if ( v4->field_40 < 0 ) - v4->field_40 = 0; - v203 = v92; - v202 = v92; - } - } - v95 = v26->field_48[2]; - if ( v95 ) - { - v96 = am_40D402(v193, v95); - v97 = v26->field_48[2]; - v196 = v96; - v98 = am_40D402(v189, v97); - v195 = v98; - v99 = v26->field_48[2] - v98; - v192 = v26->field_48[2] - v196; - v191 = v99; - } - LOBYTE(v100) = v26->field_48[3]; - if ( (_BYTE)v100 ) - { - if ( (_BYTE)v100 == 99 ) - { - v101 = v2->field_28; - v102 = v4->field_28; - if ( v101 != v102 ) - { - if ( v101 <= v102 ) - { - v2->field_28 = v102; - v201 = v102 - v101; - } - else - { - v4->field_28 = v101; - v200 = v101 - v102; - } - } - } - else - { - v100 = (char)v100; - v2->field_28 += (char)v100; - v4->field_28 += (char)v100; - if ( v2->field_28 < 0 ) - v2->field_28 = 0; - if ( v4->field_28 < 0 ) - v4->field_28 = 0; - v201 = v100; - v200 = v100; - } - } - LOBYTE(v103) = v26->field_48[4]; - break; - case 0: -LABEL_231: - v104 = pCard->field_48[6]; - v105 = v104 + (pCard->field_48[5] == 1); - v106 = 0; - dword_4FAA68 = v104 + (pCard->field_48[5] == 1); - dword_4FAA64 = v104; - if ( v104 > 0 ) - { - do - { - am_40A283(v193, v105); - ++v106; - } - while ( v106 < pCard->field_48[6] ); - } - v107 = pCard; - am_byte_4FAA77 = am_40BB49(v193) > dword_4E1874; - LOBYTE(v108) = pCard->field_48[7]; - if ( (_BYTE)v108 ) - { - if ( (_BYTE)v108 == 99 ) - { - v109 = v2->field_2C; - v110 = v4->field_2C; - if ( v109 < v110 ) - { - v2->field_2C = v110; - v194 = v110 - v109; - } - } - else - { - v108 = (char)v108; - v6 = (char)v108 + v2->field_2C < 0; - v2->field_2C += (char)v108; - if ( v6 ) - v2->field_2C = 0; - v194 = v108; - } - } - LOBYTE(v111) = v107->field_48[8]; - if ( (_BYTE)v111 ) - { - if ( (_BYTE)v111 == 99 ) - { - v112 = v2->field_30; - v113 = v4->field_30; - if ( v112 < v113 ) - { - v2->field_30 = v113; - v210 = v113 - v112; - } - } - else - { - v111 = (char)v111; - v6 = (char)v111 + v2->field_30 < 0; - v2->field_30 += (char)v111; - if ( v6 ) - v2->field_30 = 0; - v210 = v111; - } - } - LOBYTE(v114) = v107->field_48[9]; - if ( (_BYTE)v114 ) - { - if ( (_BYTE)v114 == 99 ) - { - v115 = v2->field_34; - v116 = v4->field_34; - if ( v115 < v116 ) - { - v2->field_34 = v116; - v208 = v116 - v115; - } - } - else - { - v114 = (char)v114; - v6 = (char)v114 + v2->field_34 < 0; - v2->field_34 += (char)v114; - if ( v6 ) - v2->field_34 = 0; - v208 = v114; - } - } - LOBYTE(v117) = v107->field_48[10]; - if ( (_BYTE)v117 ) - { - if ( (_BYTE)v117 == 99 ) - { - v118 = v2->field_38; - v119 = v4->field_38; - if ( v118 < v119 ) - { - v2->field_38 = v119; - v197 = v119 - v118; - } - } - else - { - v117 = (char)v117; - v6 = (char)v117 + v2->field_38 < 0; - v2->field_38 += (char)v117; - if ( v6 ) - v2->field_38 = 0; - v197 = v117; - } - } - LOBYTE(v120) = v107->field_48[11]; - if ( v120 ) - { - if ( v120 == 99 ) - { - v121 = v2->field_3C; - v122 = v4->field_3C; - if ( v121 < v122 ) - { - v2->field_3C = v122; - v205 = v122 - v121; - } - } - else - { - v120 = v120; - v6 = v120 + v2->field_3C < 0; - v2->field_3C += v120; - if ( v6 ) - v2->field_3C = 0; - v205 = v120; - } - } - LOBYTE(v123) = v107->field_48[12]; - if ( (_BYTE)v123 ) - { - if ( (_BYTE)v123 == 99 ) - { - v124 = v2->field_40; - v125 = v4->field_40; - if ( v124 < v125 ) - { - v2->field_40 = v125; - v203 = v125 - v124; - } - } - else - { - v123 = (char)v123; - v6 = (char)v123 + v2->field_40 < 0; - v2->field_40 += (char)v123; - if ( v6 ) - v2->field_40 = 0; - v203 = v123; - } - } - v126 = v107->field_48[13]; - if ( v126 ) - { - v196 = am_40D402(v193, v126); - v192 = v107->field_48[13] - v196; - } - LOBYTE(v127) = v107->field_48[14]; - if ( (_BYTE)v127 ) - { - if ( (_BYTE)v127 == 99 ) - { - v128 = v2->field_28; - v129 = v4->field_28; - if ( v128 < v129 ) - { - v2->field_28 = v129; - v201 = v129 - v128; - } - } - else - { - v127 = (char)v127; - v6 = (char)v127 + v2->field_28 < 0; - v2->field_28 += (char)v127; - if ( v6 ) - v2->field_28 = 0; - v201 = v127; - } - } - LOBYTE(v130) = v107->field_48[15]; - if ( (_BYTE)v130 ) - { - if ( (_BYTE)v130 == 99 ) - { - v131 = v2->field_24; - v132 = v4->field_24; - if ( v131 < v132 ) - { - v2->field_24 = v132; - v199 = v132 - v131; - } - } - else - { - v130 = (char)v130; - v6 = (char)v130 + v2->field_24 < 0; - v2->field_24 += (char)v130; - if ( v6 ) - v2->field_24 = 0; - v199 = v130; - } - } - LOBYTE(v133) = v107->field_58[0]; - if ( (_BYTE)v133 ) - { - if ( (_BYTE)v133 == 99 ) - { - v134 = v2->field_2C; - v135 = v4->field_2C; - if ( v134 > v135 ) - { - v4->field_2C = v134; - v211 = v134 - v135; - } - } - else - { - v133 = (char)v133; - v6 = (char)v133 + v4->field_2C < 0; - v4->field_2C += (char)v133; - if ( v6 ) - v4->field_2C = 0; - v211 = v133; - } - } - LOBYTE(v136) = v107->field_58[1]; - if ( (_BYTE)v136 ) - { - if ( (_BYTE)v136 == 99 ) - { - v137 = v2->field_30; - v138 = v4->field_30; - if ( v137 > v138 ) - { - v4->field_30 = v137; - v209 = v137 - v138; - } - } - else - { - v136 = (char)v136; - v6 = (char)v136 + v4->field_30 < 0; - v4->field_30 += (char)v136; - if ( v6 ) - v4->field_30 = 0; - v209 = v136; - } - } - LOBYTE(v139) = v107->field_58[2]; - if ( (_BYTE)v139 ) - { - if ( (_BYTE)v139 == 99 ) - { - v140 = v2->field_34; - v141 = v4->field_34; - if ( v140 > v141 ) - { - v4->field_34 = v140; - v207 = v140 - v141; - } - } - else - { - v139 = (char)v139; - v6 = (char)v139 + v4->field_34 < 0; - v4->field_34 += (char)v139; - if ( v6 ) - v4->field_34 = 0; - v207 = v139; - } - } - LOBYTE(v142) = v107->field_58[3]; - if ( (_BYTE)v142 ) - { - if ( (_BYTE)v142 == 99 ) - { - v143 = v2->field_38; - v144 = v4->field_38; - if ( v143 > v144 ) - { - v4->field_38 = v143; - v206 = v143 - v144; - } - } - else - { - v142 = (char)v142; - v6 = (char)v142 + v4->field_38 < 0; - v4->field_38 += (char)v142; - if ( v6 ) - v4->field_38 = 0; - v206 = v142; - } - } - LOBYTE(v145) = v107->field_58[4]; - if ( (_BYTE)v145 ) - { - if ( (_BYTE)v145 == 99 ) - { - v146 = v2->field_3C; - v147 = v4->field_3C; - if ( v146 > v147 ) - { - v4->field_3C = v146; - v204 = v146 - v147; - } - } - else - { - v145 = (char)v145; - v6 = (char)v145 + v4->field_3C < 0; - v4->field_3C += (char)v145; - if ( v6 ) - v4->field_3C = 0; - v204 = v145; - } - } - LOBYTE(v148) = v107->field_58[5]; - if ( (_BYTE)v148 ) - { - if ( (_BYTE)v148 == 99 ) - { - v149 = v2->field_40; - v150 = v4->field_40; - if ( v149 > v150 ) - { - v4->field_40 = v149; - v202 = v149 - v150; - } - } - else - { - v148 = (char)v148; - v6 = (char)v148 + v4->field_40 < 0; - v4->field_40 += (char)v148; - if ( v6 ) - v4->field_40 = 0; - v202 = v148; - } - } - v151 = v107->field_58[6]; - if ( v151 ) - { - v195 = am_40D402(v189, v151); - v191 = v107->field_58[6] - v195; - } - LOBYTE(v152) = v107->field_58[7]; - if ( (_BYTE)v152 ) - { - if ( (_BYTE)v152 == 99 ) - { - v153 = v2->field_28; - v154 = v4->field_28; - if ( v153 > v154 ) - { - v4->field_28 = v153; - v200 = v153 - v154; - } - } - else - { - v152 = (char)v152; - v6 = (char)v152 + v4->field_28 < 0; - v4->field_28 += (char)v152; - if ( v6 ) - v4->field_28 = 0; - v200 = v152; - } - } - LOBYTE(v155) = v107->field_58[8]; - if ( (_BYTE)v155 ) - { - if ( (_BYTE)v155 == 99 ) - { - v156 = v2->field_24; - v157 = v4->field_24; - if ( v156 > v157 ) - { - v4->field_24 = v156; - v198 = v156 - v157; - } - } - else - { - v155 = (char)v155; - v6 = (char)v155 + v4->field_24 < 0; - v4->field_24 += (char)v155; - if ( v6 ) - v4->field_24 = 0; - v198 = v155; - } - } - LOBYTE(v158) = v107->field_58[9]; - if ( (_BYTE)v158 ) - { - if ( (_BYTE)v158 == 99 ) - { - v159 = v2->field_2C; - v160 = v4->field_2C; - if ( v159 != v160 ) - { - if ( v159 <= v160 ) - { - v2->field_2C = v160; - v194 = v160 - v159; - } - else - { - v4->field_2C = v159; - v211 = v159 - v160; - } - } - } - else - { - v158 = (char)v158; - v2->field_2C += (char)v158; - v4->field_2C += (char)v158; - if ( v2->field_2C < 0 ) - v2->field_2C = 0; - if ( v4->field_2C < 0 ) - v4->field_2C = 0; - v194 = v158; - v211 = v158; - } - } - LOBYTE(v161) = v107->field_58[10]; - if ( (_BYTE)v161 ) - { - if ( (_BYTE)v161 == 99 ) - { - v162 = v2->field_30; - v163 = v4->field_30; - if ( v162 != v163 ) - { - if ( v162 <= v163 ) - { - v2->field_30 = v163; - v210 = v163 - v162; - } - else - { - v4->field_30 = v162; - v209 = v162 - v163; - } - } - } - else - { - v161 = (char)v161; - v2->field_30 += (char)v161; - v4->field_30 += (char)v161; - if ( v2->field_30 < 0 ) - v2->field_30 = 0; - if ( v4->field_30 < 0 ) - v4->field_30 = 0; - v209 = v161; - v210 = v161; - } - } - LOBYTE(v164) = v107->field_58[11]; - if ( (_BYTE)v164 ) - { - if ( (_BYTE)v164 == 99 ) - { - v165 = v2->field_34; - v166 = v4->field_34; - if ( v165 != v166 ) - { - if ( v165 <= v166 ) - { - v2->field_34 = v166; - v208 = v166 - v165; - } - else - { - v4->field_34 = v165; - v207 = v165 - v166; - } - } - } - else - { - v164 = (char)v164; - v2->field_34 += (char)v164; - v4->field_34 += (char)v164; - if ( v2->field_34 < 0 ) - v2->field_34 = 0; - if ( v4->field_34 < 0 ) - v4->field_34 = 0; - v208 = v164; - v207 = v164; - } - } - LOBYTE(v167) = v107->field_58[12]; - if ( (_BYTE)v167 ) - { - if ( (_BYTE)v167 == 99 ) - { - v168 = v2->field_38; - v169 = v4->field_38; - if ( v168 != v169 ) - { - if ( v168 <= v169 ) - { - v2->field_38 = v169; - v197 = v169 - v168; - } - else - { - v4->field_38 = v168; - v206 = v168 - v169; - } - } - } - else - { - v167 = (char)v167; - v2->field_38 += (char)v167; - v4->field_38 += (char)v167; - if ( v2->field_38 < 0 ) - v2->field_38 = 0; - if ( v4->field_38 < 0 ) - v4->field_38 = 0; - v197 = v167; - v206 = v167; - } - } - LOBYTE(v170) = v107->field_58[13]; - if ( v170 ) - { - if ( v170 == 99 ) - { - v171 = v2->field_3C; - v172 = v4->field_3C; - if ( v171 != v172 ) - { - if ( v171 <= v172 ) - { - v205 = v172 > v171; - v2->field_3C = v172; - } - else - { - v204 = 1; - v4->field_3C = v171; - } - } - } - else - { - v170 = v170; - v2->field_3C += v170; - v4->field_3C += v170; - if ( v2->field_3C < 0 ) - v2->field_3C = 0; - if ( v4->field_3C < 0 ) - v4->field_3C = 0; - v205 = v170; - v204 = v170; - } - } - LOBYTE(v173) = v107->field_58[14]; - if ( (_BYTE)v173 ) - { - if ( (_BYTE)v173 == 99 ) - { - v174 = v2->field_40; - v175 = v4->field_40; - if ( v174 != v175 ) - { - if ( v174 <= v175 ) - { - v2->field_40 = v175; - v203 = v175 - v174; - } - else - { - v4->field_40 = v174; - v202 = v174 - v175; - } - } - } - else - { - v173 = (char)v173; - v2->field_40 += (char)v173; - v4->field_40 += (char)v173; - if ( v2->field_40 < 0 ) - v2->field_40 = 0; - if ( v4->field_40 < 0 ) - v4->field_40 = 0; - v203 = v173; - v202 = v173; - } - } - v176 = v107->field_58[15]; - if ( v176 ) - { - v177 = am_40D402(v193, v176); - v178 = v107->field_58[15]; - v196 = v177; - v179 = am_40D402(v189, v178); - v195 = v179; - v180 = v107->field_58[15] - v179; - v192 = v107->field_58[15] - v196; - v191 = v180; - } - LOBYTE(v181) = LOBYTE(v107->field_68); - if ( (_BYTE)v181 ) - { - if ( (_BYTE)v181 == 99 ) - { - v182 = v2->field_28; - v183 = v4->field_28; - if ( v182 != v183 ) - { - if ( v182 <= v183 ) - { - v2->field_28 = v183; - v201 = v183 - v182; - } - else - { - v4->field_28 = v182; - v200 = v182 - v183; - } - } - } - else - { - v181 = (char)v181; - v2->field_28 += (char)v181; - v4->field_28 += (char)v181; - if ( v2->field_28 < 0 ) - v2->field_28 = 0; - if ( v4->field_28 < 0 ) - v4->field_28 = 0; - v201 = v181; - v200 = v181; - } - } - LOBYTE(v103) = BYTE1(v107->field_68); - break; - } - if ( (_BYTE)v103 ) - { - if ( (_BYTE)v103 == 99 ) - { - v184 = v2->field_24; - v185 = v4->field_24; - if ( v184 != v185 ) - { - if ( v184 <= v185 ) - { - v2->field_24 = v185; - v199 = v185 - v184; - } - else - { - v4->field_24 = v184; - v198 = v184 - v185; - } - } - } - else - { - v103 = (char)v103; - v2->field_24 += (char)v103; - v4->field_24 += (char)v103; - if ( v2->field_24 < 0 ) - v2->field_24 = 0; - if ( v4->field_24 < 0 ) - v4->field_24 = 0; - v199 = v103; - v198 = v103; - } - } - if ( v194 > 0 || v211 > 0 ) - ArcomageGame::PlaySound(0x1Eu); - if ( v194 < 0 || v211 < 0 ) - ArcomageGame::PlaySound(0x1Fu); - if ( v210 > 0 || v209 > 0 ) - ArcomageGame::PlaySound(0x21u); - if ( v210 < 0 || v209 < 0 ) - ArcomageGame::PlaySound(0x22u); - if ( v208 > 0 || v207 > 0 ) - ArcomageGame::PlaySound(0x24u); - if ( v208 < 0 || v207 < 0 ) - ArcomageGame::PlaySound(0x25u); - if ( v197 > 0 || v206 > 0 ) - ArcomageGame::PlaySound(0x27u); - if ( v197 < 0 || v206 < 0 ) - ArcomageGame::PlaySound(0x28u); - if ( v205 > 0 || v204 > 0 ) - ArcomageGame::PlaySound(0x2Au); - if ( v205 < 0 || v204 < 0 ) - ArcomageGame::PlaySound(0x2Bu); - if ( v203 > 0 || v202 > 0 ) - ArcomageGame::PlaySound(0x2Du); - if ( v203 < 0 || v202 < 0 ) - ArcomageGame::PlaySound(0x2Eu); - if ( v192 || v191 || v196 || v195 ) - ArcomageGame::PlaySound(0x30u); - if ( v201 > 0 || v200 > 0 ) - ArcomageGame::PlaySound(0x31u); - if ( v201 < 0 || v200 < 0 ) - ArcomageGame::PlaySound(0x32u); - if ( v199 > 0 || v198 > 0 ) - ArcomageGame::PlaySound(0x34u); - if ( v199 < 0 || v198 < 0 ) - ArcomageGame::PlaySound(0x35u); - if ( v193 ) - { - if ( v194 ) - { - v187.x = 573; - v187.y = 92; - am_40D2B4(&v187, v194); - } - if ( v211 ) - { - v187.x = 26; - v187.y = 92; - am_40D2B4(&v187, v211); - } - if ( v210 ) - { - v187.x = 573; - v187.y = 164; - am_40D2B4(&v187, v210); - } - if ( v209 ) - { - v187.x = 26; - v187.y = 164; - am_40D2B4(&v187, v209); - } - if ( v208 ) - { - v187.x = 573; - v187.y = 236; - am_40D2B4(&v187, v208); - } - if ( v207 ) - { - v187.x = 26; - v187.y = 236; - am_40D2B4(&v187, v207); - } - if ( v197 ) - { - v187.x = 563; - v187.y = 114; - am_40D2B4(&v187, v197); - } - if ( v206 ) - { - v187.x = 16; - v187.y = 114; - am_40D2B4(&v187, v206); - } - if ( v205 ) - { - v187.x = 563; - v187.y = 186; - am_40D2B4(&v187, v205); - } - if ( v204 ) - { - v187.x = 16; - v187.y = 186; - am_40D2B4(&v187, v204); - } - if ( v203 ) - { - v187.x = 563; - v187.y = 258; - am_40D2B4(&v187, v203); - } - if ( v202 ) - { - v187.x = 16; - v187.y = 258; - am_40D2B4(&v187, v202); - } - v186 = 296; - if ( v201 ) - { - v187.x = 442; - v187.y = 296; - am_40D2B4(&v187, v201); - } - if ( v200 ) - { - v187.x = 180; - v187.y = 296; - am_40D2B4(&v187, v200); - } - if ( v199 ) - { - v187.x = 514; - v187.y = 296; - am_40D2B4(&v187, v199); - } - if ( v198 ) - { - v187.x = 122; - v187.y = 296; - am_40D2B4(&v187, v198); - } - if ( v196 ) - { - v187.x = 442; - v187.y = 296; - am_40D2B4(&v187, v196); - } - if ( v192 ) - { - v187.x = 514; - v187.y = 296; - am_40D2B4(&v187, v192); - } - if ( v195 ) - { - v187.x = 180; - v187.y = 296; - am_40D2B4(&v187, v195); - } - if ( v191 ) - { - v187.x = 122; - goto LABEL_567; - } - } - else - { - if ( v194 ) - { - v187.x = 26; - v187.y = 92; - am_40D2B4(&v187, v194); - } - if ( v211 ) - { - v187.x = 573; - v187.y = 92; - am_40D2B4(&v187, v211); - } - if ( v210 ) - { - v187.x = 26; - v187.y = 164; - am_40D2B4(&v187, v210); - } - if ( v209 ) - { - v187.x = 573; - v187.y = 164; - am_40D2B4(&v187, v209); - } - if ( v208 ) - { - v187.x = 26; - v187.y = 236; - am_40D2B4(&v187, v208); - } - if ( v207 ) - { - v187.x = 573; - v187.y = 236; - am_40D2B4(&v187, v207); - } - if ( v197 ) - { - v187.x = 16; - v187.y = 114; - am_40D2B4(&v187, v197); - } - if ( v206 ) - { - v187.x = 563; - v187.y = 114; - am_40D2B4(&v187, v206); - } - if ( v205 ) - { - v187.x = 16; - v187.y = 186; - am_40D2B4(&v187, v205); - } - if ( v204 ) - { - v187.x = 563; - v187.y = 186; - am_40D2B4(&v187, v204); - } - if ( v203 ) - { - v187.x = 16; - v187.y = 258; - am_40D2B4(&v187, v203); - } - if ( v202 ) - { - v187.x = 563; - v187.y = 258; - am_40D2B4(&v187, v202); - } - v186 = 296; - if ( v201 ) - { - v187.x = 180; - v187.y = 296; - am_40D2B4(&v187, v201); - } - if ( v200 ) - { - v187.x = 442; - v187.y = 296; - am_40D2B4(&v187, v200); - } - if ( v199 ) - { - v187.x = 122; - v187.y = 296; - am_40D2B4(&v187, v199); - } - if ( v198 ) - { - v187.x = 514; - v187.y = 296; - am_40D2B4(&v187, v198); - } - if ( v196 ) - { - v187.x = 180; - v187.y = 296; - am_40D2B4(&v187, v196); - } - if ( v192 ) - { - v187.x = 122; - v187.y = 296; - am_40D2B4(&v187, v192); - } - if ( v195 ) - { - v187.x = 442; - v187.y = 296; - am_40D2B4(&v187, v195); - } - if ( v191 ) - { - v187.x = 514; -LABEL_567: - v187.y = v186; - am_40D2B4(&v187, v191); - return; - } - } +// ArcomagePlayer *v2; // esi@1 +// int v3; // eax@1 +// ArcomagePlayer *v4; // edi@1 +// int v5; // eax@2 +// char v6; // sf@2 +// unsigned __int8 v7; // of@2 +// int v8; // eax@3 +// int v9; // eax@4 +// char v10; // zf@5 +// int v11; // eax@8 +// unsigned __int8 v12; // zf@8 +// char v13; // sf@8 +// unsigned __int8 v14; // of@8 +// int v15; // eax@9 +// int v16; // eax@10 +// char v17; // zf@12 +// char v18; // al@15 +// int v19; // eax@16 +// int v20; // eax@17 +// int v21; // eax@22 +// int v22; // eax@23 +// int v23; // eax@26 +// int v24; // edx@26 +// signed int v25; // ebx@26 +// ArcomageCard *v26; // ebx@28 +// int v27; // eax@28 +// int v28; // edx@33 +// int v29; // eax@33 +// int v30; // eax@35 +// int v31; // edx@40 +// int v32; // eax@40 +// int v33; // eax@42 +// int v34; // edx@47 +// int v35; // eax@47 +// int v36; // eax@49 +// int v37; // edx@54 +// int v38; // eax@54 +// bool v39; // eax@56 +// int v40; // edx@61 +// int v41; // eax@61 +// int v42; // eax@63 +// int v43; // edx@68 +// int v44; // eax@68 +// char v45; // al@70 +// int v46; // eax@72 +// int v47; // edx@77 +// int v48; // eax@77 +// int v49; // eax@79 +// int v50; // edx@84 +// int v51; // eax@84 +// int v52; // eax@86 +// int v53; // eax@91 +// int v54; // edx@91 +// int v55; // eax@93 +// int v56; // eax@98 +// int v57; // edx@98 +// int v58; // eax@100 +// int v59; // eax@105 +// int v60; // edx@105 +// int v61; // eax@107 +// int v62; // eax@112 +// int v63; // edx@112 +// int v64; // eax@114 +// int v65; // eax@119 +// int v66; // edx@119 +// int v67; // eax@121 +// int v68; // eax@126 +// int v69; // edx@126 +// char v70; // al@128 +// int v71; // eax@130 +// int v72; // eax@135 +// int v73; // edx@135 +// int v74; // eax@137 +// int v75; // eax@142 +// int v76; // edx@142 +// int v77; // eax@144 +// int v78; // eax@151 +// int v79; // ecx@151 +// int v80; // eax@155 +// int v81; // eax@162 +// int v82; // ecx@162 +// int v83; // eax@166 +// int v84; // eax@173 +// int v85; // ecx@173 +// int v86; // eax@177 +// int v87; // eax@184 +// int v88; // ecx@184 +// bool v89; // eax@188 +// int v90; // eax@195 +// int v91; // ecx@195 +// int v92; // eax@199 +// int v93; // eax@206 +// int v94; // ecx@206 +// char v95; // al@210 +// int v96; // eax@211 +// int v97; // edx@211 +// int v98; // eax@211 +// int v99; // eax@211 +// int v100; // eax@212 +// int v101; // eax@219 +// int v102; // ecx@219 +// int v103; // eax@223 +// int v104; // eax@231 +// int v105; // edx@231 +// signed int v106; // ebx@231 +// ArcomageCard *v107; // ebx@233 +// int v108; // eax@233 +// int v109; // edx@238 +// int v110; // eax@238 +// int v111; // eax@240 +// int v112; // edx@245 +// int v113; // eax@245 +// int v114; // eax@247 +// int v115; // edx@252 +// int v116; // eax@252 +// int v117; // eax@254 +// int v118; // edx@259 +// int v119; // eax@259 +// bool v120; // eax@261 +// int v121; // edx@266 +// int v122; // eax@266 +// int v123; // eax@268 +// int v124; // edx@273 +// int v125; // eax@273 +// char v126; // al@275 +// int v127; // eax@277 +// int v128; // edx@282 +// int v129; // eax@282 +// int v130; // eax@284 +// int v131; // edx@289 +// int v132; // eax@289 +// int v133; // eax@291 +// int v134; // eax@296 +// int v135; // edx@296 +// int v136; // eax@298 +// int v137; // eax@303 +// int v138; // edx@303 +// int v139; // eax@305 +// int v140; // eax@310 +// int v141; // edx@310 +// int v142; // eax@312 +// int v143; // eax@317 +// int v144; // edx@317 +// int v145; // eax@319 +// int v146; // eax@324 +// int v147; // edx@324 +// int v148; // eax@326 +// int v149; // eax@331 +// int v150; // edx@331 +// char v151; // al@333 +// int v152; // eax@335 +// int v153; // eax@340 +// int v154; // edx@340 +// int v155; // eax@342 +// int v156; // eax@347 +// int v157; // edx@347 +// int v158; // eax@349 +// int v159; // eax@356 +// int v160; // ecx@356 +// int v161; // eax@360 +// int v162; // eax@367 +// int v163; // ecx@367 +// int v164; // eax@371 +// int v165; // eax@378 +// int v166; // ecx@378 +// int v167; // eax@382 +// int v168; // eax@389 +// int v169; // ecx@389 +// bool v170; // eax@393 +// int v171; // eax@400 +// int v172; // ecx@400 +// int v173; // eax@404 +// int v174; // eax@411 +// int v175; // ecx@411 +// char v176; // al@415 +// int v177; // eax@416 +// int v178; // edx@416 +// int v179; // eax@416 +// int v180; // eax@416 +// int v181; // eax@417 +// int v182; // eax@424 +// int v183; // ecx@424 +// int v184; // eax@429 +// int v185; // ecx@429 +// signed int v186; // esi@511 +// Vec2_int_ v187; // [sp+Ch] [bp-64h]@488 +// //int v188; // [sp+10h] [bp-60h]@488 +// int v189; // [sp+14h] [bp-5Ch]@1 +// ArcomageCard *pCard; // [sp+18h] [bp-58h]@1 +// int v191; // [sp+1Ch] [bp-54h]@1 +// int v192; // [sp+20h] [bp-50h]@1 +// int v193; // [sp+24h] [bp-4Ch]@1 +// int v194; // [sp+28h] [bp-48h]@1 +// int v195; // [sp+2Ch] [bp-44h]@1 +// int v196; // [sp+30h] [bp-40h]@1 +// int v197; // [sp+34h] [bp-3Ch]@1 +// int v198; // [sp+38h] [bp-38h]@1 +// int v199; // [sp+3Ch] [bp-34h]@1 +// int v200; // [sp+40h] [bp-30h]@1 +// int v201; // [sp+44h] [bp-2Ch]@1 +// int v202; // [sp+48h] [bp-28h]@1 +// int v203; // [sp+4Ch] [bp-24h]@1 +// int v204; // [sp+50h] [bp-20h]@1 +// bool v205; // [sp+54h] [bp-1Ch]@1 +// int v206; // [sp+58h] [bp-18h]@1 +// int v207; // [sp+5Ch] [bp-14h]@1 +// int v208; // [sp+60h] [bp-10h]@1 +// int v209; // [sp+64h] [bp-Ch]@1 +// int v210; // [sp+68h] [bp-8h]@1 +// int v211; // [sp+6Ch] [bp-4h]@1 +// +// v194 = 0; +// v210 = 0; +// v208 = 0; +// v197 = 0; +// v205 = 0; +// v203 = 0; +// v201 = 0; +// v199 = 0; +// v192 = 0; +// v196 = 0; +// v211 = 0; +// v209 = 0; +// v207 = 0; +// v206 = 0; +// v204 = 0; +// v202 = 0; +// v200 = 0; +// v198 = 0; +// v191 = 0; +// v195 = 0; +// v193 = a1; +// v2 = &stru_505708[a1]; +// pCard = &pCards[uCardID]; +// v3 = pCard->field_2C; +// v189 = (a1 + 1) % 2; +// v4 = &stru_505708[v189]; +// switch ( v3 ) +// { +// case 2: +// v5 = v2->field_2C; +// v7 = __OFSUB__(v5, v4->field_2C); +// v6 = v5 - v4->field_2C < 0; +// goto LABEL_18; +// case 3: +// v8 = v2->field_30; +// v7 = __OFSUB__(v8, v4->field_30); +// v6 = v8 - v4->field_30 < 0; +// goto LABEL_18; +// case 4: +// v9 = v2->field_34; +// v7 = __OFSUB__(v9, v4->field_34); +// v6 = v9 - v4->field_34 < 0; +// goto LABEL_18; +// case 5: +// v10 = v2->field_2C == v4->field_2C; +// goto LABEL_21; +// case 6: +// v10 = v2->field_30 == v4->field_30; +// goto LABEL_21; +// case 7: +// v10 = v2->field_34 == v4->field_34; +// goto LABEL_21; +// case 8: +// v11 = v2->field_2C; +// v14 = __OFSUB__(v11, v4->field_2C); +// v12 = v11 == v4->field_2C; +// v13 = v11 - v4->field_2C < 0; +// goto LABEL_24; +// case 9: +// v15 = v2->field_30; +// v14 = __OFSUB__(v15, v4->field_30); +// v12 = v15 == v4->field_30; +// v13 = v15 - v4->field_30 < 0; +// goto LABEL_24; +// case 10: +// v16 = v2->field_34; +// v14 = __OFSUB__(v16, v4->field_34); +// v12 = v16 == v4->field_34; +// v13 = v16 - v4->field_34 < 0; +// goto LABEL_24; +// case 11: +// v10 = v2->field_28 == 0; +// goto LABEL_21; +// case 12: +// v17 = v2->field_28 == 0; +// goto LABEL_15; +// case 13: +// v10 = v4->field_28 == 0; +// goto LABEL_21; +// case 14: +// v17 = v4->field_28 == 0; +//LABEL_15: +// v18 = !v17; +// goto LABEL_25; +// case 15: +// v19 = v2->field_28; +// v7 = __OFSUB__(v19, v4->field_28); +// v6 = v19 - v4->field_28 < 0; +// goto LABEL_18; +// case 16: +// v20 = v2->field_24; +// v7 = __OFSUB__(v20, v4->field_24); +// v6 = v20 - v4->field_24 < 0; +//LABEL_18: +// v18 = v6 ^ v7; +// goto LABEL_25; +// case 17: +// v10 = v2->field_28 == v4->field_28; +// goto LABEL_21; +// case 18: +// v10 = v2->field_24 == v4->field_24; +//LABEL_21: +// v18 = v10; +// goto LABEL_25; +// case 19: +// v21 = v2->field_28; +// v14 = __OFSUB__(v21, v4->field_28); +// v12 = v21 == v4->field_28; +// v13 = v21 - v4->field_28 < 0; +// goto LABEL_24; +// case 20: +// v22 = v2->field_24; +// v14 = __OFSUB__(v22, v4->field_24); +// v12 = v22 == v4->field_24; +// v13 = v22 - v4->field_24 < 0; +//LABEL_24: +// v18 = !((unsigned __int8)(v13 ^ v14) | v12); +//LABEL_25: +// if ( v18 ) +// goto LABEL_26; +// goto LABEL_231; +// default: +//LABEL_26: +// v23 = BYTE1(pCard->field_30); +// v24 = v23 + (LOBYTE(pCard->field_30) == 1); +// v25 = 0; +// dword_4FAA68 = v23 + (LOBYTE(pCard->field_30) == 1); +// dword_4FAA64 = v23; +// if ( v23 > 0 ) +// { +// do +// { +// am_40A283(v193, v24); +// ++v25; +// } +// while ( v25 < SBYTE1(pCard->field_30) ); +// } +// v26 = pCard; +// am_byte_4FAA77 = GetPlayerHandCardCount(v193) > dword_4E1874; +// LOBYTE(v27) = BYTE2(pCard->field_30); +// if ( (_BYTE)v27 ) +// { +// if ( (_BYTE)v27 == 99 ) +// { +// v28 = v2->field_2C; +// v29 = v4->field_2C; +// if ( v28 < v29 ) +// { +// v2->field_2C = v29; +// v194 = v29 - v28; +// } +// } +// else +// { +// v27 = (char)v27; +// v6 = (char)v27 + v2->field_2C < 0; +// v2->field_2C += (char)v27; +// if ( v6 ) +// v2->field_2C = 0; +// v194 = v27; +// } +// } +// LOBYTE(v30) = BYTE3(v26->field_30); +// if ( (_BYTE)v30 ) +// { +// if ( (_BYTE)v30 == 99 ) +// { +// v31 = v2->field_30; +// v32 = v4->field_30; +// if ( v31 < v32 ) +// { +// v2->field_30 = v32; +// v210 = v32 - v31; +// } +// } +// else +// { +// v30 = (char)v30; +// v6 = (char)v30 + v2->field_30 < 0; +// v2->field_30 += (char)v30; +// if ( v6 ) +// v2->field_30 = 0; +// v210 = v30; +// } +// } +// LOBYTE(v33) = LOBYTE(v26->field_34); +// if ( (_BYTE)v33 ) +// { +// if ( (_BYTE)v33 == 99 ) +// { +// v34 = v2->field_34; +// v35 = v4->field_34; +// if ( v34 < v35 ) +// { +// v2->field_34 = v35; +// v208 = v35 - v34; +// } +// } +// else +// { +// v33 = (char)v33; +// v6 = (char)v33 + v2->field_34 < 0; +// v2->field_34 += (char)v33; +// if ( v6 ) +// v2->field_34 = 0; +// v208 = v33; +// } +// } +// LOBYTE(v36) = BYTE1(v26->field_34); +// if ( (_BYTE)v36 ) +// { +// if ( (_BYTE)v36 == 99 ) +// { +// v37 = v2->field_38; +// v38 = v4->field_38; +// if ( v37 < v38 ) +// { +// v2->field_38 = v38; +// v197 = v38 - v37; +// } +// } +// else +// { +// v36 = (char)v36; +// v6 = (char)v36 + v2->field_38 < 0; +// v2->field_38 += (char)v36; +// if ( v6 ) +// v2->field_38 = 0; +// v197 = v36; +// } +// } +// LOBYTE(v39) = BYTE2(v26->field_34); +// if ( v39 ) +// { +// if ( v39 == 99 ) +// { +// v40 = v2->field_3C; +// v41 = v4->field_3C; +// if ( v40 < v41 ) +// { +// v2->field_3C = v41; +// v205 = v41 - v40; +// } +// } +// else +// { +// v39 = v39; +// v6 = v39 + v2->field_3C < 0; +// v2->field_3C += v39; +// if ( v6 ) +// v2->field_3C = 0; +// v205 = v39; +// } +// } +// LOBYTE(v42) = BYTE3(v26->field_34); +// if ( (_BYTE)v42 ) +// { +// if ( (_BYTE)v42 == 99 ) +// { +// v43 = v2->field_40; +// v44 = v4->field_40; +// if ( v43 < v44 ) +// { +// v2->field_40 = v44; +// v203 = v44 - v43; +// } +// } +// else +// { +// v42 = (char)v42; +// v6 = (char)v42 + v2->field_40 < 0; +// v2->field_40 += (char)v42; +// if ( v6 ) +// v2->field_40 = 0; +// v203 = v42; +// } +// } +// v45 = v26->field_38[0]; +// if ( v45 ) +// { +// v196 = am_40D402(v193, v45); +// v192 = v26->field_38[0] - v196; +// } +// LOBYTE(v46) = v26->field_38[1]; +// if ( (_BYTE)v46 ) +// { +// if ( (_BYTE)v46 == 99 ) +// { +// v47 = v2->field_28; +// v48 = v4->field_28; +// if ( v47 < v48 ) +// { +// v2->field_28 = v48; +// v201 = v48 - v47; +// } +// } +// else +// { +// v46 = (char)v46; +// v6 = (char)v46 + v2->field_28 < 0; +// v2->field_28 += (char)v46; +// if ( v6 ) +// v2->field_28 = 0; +// v201 = v46; +// } +// } +// LOBYTE(v49) = v26->field_38[2]; +// if ( (_BYTE)v49 ) +// { +// if ( (_BYTE)v49 == 99 ) +// { +// v50 = v2->field_24; +// v51 = v4->field_24; +// if ( v50 < v51 ) +// { +// v2->field_24 = v51; +// v199 = v51 - v50; +// } +// } +// else +// { +// v49 = (char)v49; +// v6 = (char)v49 + v2->field_24 < 0; +// v2->field_24 += (char)v49; +// if ( v6 ) +// v2->field_24 = 0; +// v199 = v49; +// } +// } +// LOBYTE(v52) = v26->field_38[3]; +// if ( (_BYTE)v52 ) +// { +// if ( (_BYTE)v52 == 99 ) +// { +// v53 = v2->field_2C; +// v54 = v4->field_2C; +// if ( v53 > v54 ) +// { +// v4->field_2C = v53; +// v211 = v53 - v54; +// } +// } +// else +// { +// v52 = (char)v52; +// v6 = (char)v52 + v4->field_2C < 0; +// v4->field_2C += (char)v52; +// if ( v6 ) +// v4->field_2C = 0; +// v211 = v52; +// } +// } +// LOBYTE(v55) = v26->field_38[4]; +// if ( (_BYTE)v55 ) +// { +// if ( (_BYTE)v55 == 99 ) +// { +// v56 = v2->field_30; +// v57 = v4->field_30; +// if ( v56 > v57 ) +// { +// v4->field_30 = v56; +// v209 = v56 - v57; +// } +// } +// else +// { +// v55 = (char)v55; +// v6 = (char)v55 + v4->field_30 < 0; +// v4->field_30 += (char)v55; +// if ( v6 ) +// v4->field_30 = 0; +// v209 = v55; +// } +// } +// LOBYTE(v58) = v26->field_38[5]; +// if ( (_BYTE)v58 ) +// { +// if ( (_BYTE)v58 == 99 ) +// { +// v59 = v2->field_34; +// v60 = v4->field_34; +// if ( v59 > v60 ) +// { +// v4->field_34 = v59; +// v207 = v59 - v60; +// } +// } +// else +// { +// v58 = (char)v58; +// v6 = (char)v58 + v4->field_34 < 0; +// v4->field_34 += (char)v58; +// if ( v6 ) +// v4->field_34 = 0; +// v207 = v58; +// } +// } +// LOBYTE(v61) = v26->field_38[6]; +// if ( (_BYTE)v61 ) +// { +// if ( (_BYTE)v61 == 99 ) +// { +// v62 = v2->field_38; +// v63 = v4->field_38; +// if ( v62 > v63 ) +// { +// v4->field_38 = v62; +// v206 = v62 - v63; +// } +// } +// else +// { +// v61 = (char)v61; +// v6 = (char)v61 + v4->field_38 < 0; +// v4->field_38 += (char)v61; +// if ( v6 ) +// v4->field_38 = 0; +// v206 = v61; +// } +// } +// LOBYTE(v64) = v26->field_38[7]; +// if ( (_BYTE)v64 ) +// { +// if ( (_BYTE)v64 == 99 ) +// { +// v65 = v2->field_3C; +// v66 = v4->field_3C; +// if ( v65 > v66 ) +// { +// v4->field_3C = v65; +// v204 = v65 - v66; +// } +// } +// else +// { +// v64 = (char)v64; +// v6 = (char)v64 + v4->field_3C < 0; +// v4->field_3C += (char)v64; +// if ( v6 ) +// v4->field_3C = 0; +// v204 = v64; +// } +// } +// LOBYTE(v67) = v26->field_38[8]; +// if ( (_BYTE)v67 ) +// { +// if ( (_BYTE)v67 == 99 ) +// { +// v68 = v2->field_40; +// v69 = v4->field_40; +// if ( v68 > v69 ) +// { +// v4->field_40 = v68; +// v202 = v68 - v69; +// } +// } +// else +// { +// v67 = (char)v67; +// v6 = (char)v67 + v4->field_40 < 0; +// v4->field_40 += (char)v67; +// if ( v6 ) +// v4->field_40 = 0; +// v202 = v67; +// } +// } +// v70 = v26->field_38[9]; +// if ( v70 ) +// { +// v195 = am_40D402(v189, v70); +// v191 = v26->field_38[9] - v195; +// } +// LOBYTE(v71) = v26->field_38[10]; +// if ( (_BYTE)v71 ) +// { +// if ( (_BYTE)v71 == 99 ) +// { +// v72 = v2->field_28; +// v73 = v4->field_28; +// if ( v72 > v73 ) +// { +// v4->field_28 = v72; +// v200 = v72 - v73; +// } +// } +// else +// { +// v71 = (char)v71; +// v6 = (char)v71 + v4->field_28 < 0; +// v4->field_28 += (char)v71; +// if ( v6 ) +// v4->field_28 = 0; +// v200 = v71; +// } +// } +// LOBYTE(v74) = v26->field_38[11]; +// if ( (_BYTE)v74 ) +// { +// if ( (_BYTE)v74 == 99 ) +// { +// v75 = v2->field_24; +// v76 = v4->field_24; +// if ( v75 > v76 ) +// { +// v4->field_24 = v75; +// v198 = v75 - v76; +// } +// } +// else +// { +// v74 = (char)v74; +// v6 = (char)v74 + v4->field_24 < 0; +// v4->field_24 += (char)v74; +// if ( v6 ) +// v4->field_24 = 0; +// v198 = v74; +// } +// } +// LOBYTE(v77) = v26->field_38[12]; +// if ( (_BYTE)v77 ) +// { +// if ( (_BYTE)v77 == 99 ) +// { +// v78 = v2->field_2C; +// v79 = v4->field_2C; +// if ( v78 != v79 ) +// { +// if ( v78 <= v79 ) +// { +// v2->field_2C = v79; +// v194 = v79 - v78; +// } +// else +// { +// v4->field_2C = v78; +// v211 = v78 - v79; +// } +// } +// } +// else +// { +// v77 = (char)v77; +// v2->field_2C += (char)v77; +// v4->field_2C += (char)v77; +// if ( v2->field_2C < 0 ) +// v2->field_2C = 0; +// if ( v4->field_2C < 0 ) +// v4->field_2C = 0; +// v194 = v77; +// v211 = v77; +// } +// } +// LOBYTE(v80) = v26->field_38[13]; +// if ( (_BYTE)v80 ) +// { +// if ( (_BYTE)v80 == 99 ) +// { +// v81 = v2->field_30; +// v82 = v4->field_30; +// if ( v81 != v82 ) +// { +// if ( v81 <= v82 ) +// { +// v2->field_30 = v82; +// v210 = v82 - v81; +// } +// else +// { +// v4->field_30 = v81; +// v209 = v81 - v82; +// } +// } +// } +// else +// { +// v80 = (char)v80; +// v2->field_30 += (char)v80; +// v4->field_30 += (char)v80; +// if ( v2->field_30 < 0 ) +// v2->field_30 = 0; +// if ( v4->field_30 < 0 ) +// v4->field_30 = 0; +// v209 = v80; +// v210 = v80; +// } +// } +// LOBYTE(v83) = v26->field_38[14]; +// if ( (_BYTE)v83 ) +// { +// if ( (_BYTE)v83 == 99 ) +// { +// v84 = v2->field_34; +// v85 = v4->field_34; +// if ( v84 != v85 ) +// { +// if ( v84 <= v85 ) +// { +// v2->field_34 = v85; +// v208 = v85 - v84; +// } +// else +// { +// v4->field_34 = v84; +// v207 = v84 - v85; +// } +// } +// } +// else +// { +// v83 = (char)v83; +// v2->field_34 += (char)v83; +// v4->field_34 += (char)v83; +// if ( v2->field_34 < 0 ) +// v2->field_34 = 0; +// if ( v4->field_34 < 0 ) +// v4->field_34 = 0; +// v208 = v83; +// v207 = v83; +// } +// } +// LOBYTE(v86) = v26->field_38[15]; +// if ( (_BYTE)v86 ) +// { +// if ( (_BYTE)v86 == 99 ) +// { +// v87 = v2->field_38; +// v88 = v4->field_38; +// if ( v87 != v88 ) +// { +// if ( v87 <= v88 ) +// { +// v2->field_38 = v88; +// v197 = v88 - v87; +// } +// else +// { +// v4->field_38 = v87; +// v206 = v87 - v88; +// } +// } +// } +// else +// { +// v86 = (char)v86; +// v2->field_38 += (char)v86; +// v4->field_38 += (char)v86; +// if ( v2->field_38 < 0 ) +// v2->field_38 = 0; +// if ( v4->field_38 < 0 ) +// v4->field_38 = 0; +// v197 = v86; +// v206 = v86; +// } +// } +// LOBYTE(v89) = v26->field_48[0]; +// if ( v89 ) +// { +// if ( v89 == 99 ) +// { +// v90 = v2->field_3C; +// v91 = v4->field_3C; +// if ( v90 != v91 ) +// { +// if ( v90 <= v91 ) +// { +// v205 = v91 > v90; +// v2->field_3C = v91; +// } +// else +// { +// v204 = 1; +// v4->field_3C = v90; +// } +// } +// } +// else +// { +// v89 = v89; +// v2->field_3C += v89; +// v4->field_3C += v89; +// if ( v2->field_3C < 0 ) +// v2->field_3C = 0; +// if ( v4->field_3C < 0 ) +// v4->field_3C = 0; +// v205 = v89; +// v204 = v89; +// } +// } +// LOBYTE(v92) = v26->field_48[1]; +// if ( (_BYTE)v92 ) +// { +// if ( (_BYTE)v92 == 99 ) +// { +// v93 = v2->field_40; +// v94 = v4->field_40; +// if ( v93 != v94 ) +// { +// if ( v93 <= v94 ) +// { +// v2->field_40 = v94; +// v203 = v94 - v93; +// } +// else +// { +// v4->field_40 = v93; +// v202 = v93 - v94; +// } +// } +// } +// else +// { +// v92 = (char)v92; +// v2->field_40 += (char)v92; +// v4->field_40 += (char)v92; +// if ( v2->field_40 < 0 ) +// v2->field_40 = 0; +// if ( v4->field_40 < 0 ) +// v4->field_40 = 0; +// v203 = v92; +// v202 = v92; +// } +// } +// v95 = v26->field_48[2]; +// if ( v95 ) +// { +// v96 = am_40D402(v193, v95); +// v97 = v26->field_48[2]; +// v196 = v96; +// v98 = am_40D402(v189, v97); +// v195 = v98; +// v99 = v26->field_48[2] - v98; +// v192 = v26->field_48[2] - v196; +// v191 = v99; +// } +// LOBYTE(v100) = v26->field_48[3]; +// if ( (_BYTE)v100 ) +// { +// if ( (_BYTE)v100 == 99 ) +// { +// v101 = v2->field_28; +// v102 = v4->field_28; +// if ( v101 != v102 ) +// { +// if ( v101 <= v102 ) +// { +// v2->field_28 = v102; +// v201 = v102 - v101; +// } +// else +// { +// v4->field_28 = v101; +// v200 = v101 - v102; +// } +// } +// } +// else +// { +// v100 = (char)v100; +// v2->field_28 += (char)v100; +// v4->field_28 += (char)v100; +// if ( v2->field_28 < 0 ) +// v2->field_28 = 0; +// if ( v4->field_28 < 0 ) +// v4->field_28 = 0; +// v201 = v100; +// v200 = v100; +// } +// } +// LOBYTE(v103) = v26->field_48[4]; +// break; +// case 0: +//LABEL_231: +// v104 = pCard->field_48[6]; +// v105 = v104 + (pCard->field_48[5] == 1); +// v106 = 0; +// dword_4FAA68 = v104 + (pCard->field_48[5] == 1); +// dword_4FAA64 = v104; +// if ( v104 > 0 ) +// { +// do +// { +// am_40A283(v193, v105); +// ++v106; +// } +// while ( v106 < pCard->field_48[6] ); +// } +// v107 = pCard; +// am_byte_4FAA77 = GetPlayerHandCardCount(v193) > dword_4E1874; +// LOBYTE(v108) = pCard->field_48[7]; +// if ( (_BYTE)v108 ) +// { +// if ( (_BYTE)v108 == 99 ) +// { +// v109 = v2->field_2C; +// v110 = v4->field_2C; +// if ( v109 < v110 ) +// { +// v2->field_2C = v110; +// v194 = v110 - v109; +// } +// } +// else +// { +// v108 = (char)v108; +// v6 = (char)v108 + v2->field_2C < 0; +// v2->field_2C += (char)v108; +// if ( v6 ) +// v2->field_2C = 0; +// v194 = v108; +// } +// } +// LOBYTE(v111) = v107->field_48[8]; +// if ( (_BYTE)v111 ) +// { +// if ( (_BYTE)v111 == 99 ) +// { +// v112 = v2->field_30; +// v113 = v4->field_30; +// if ( v112 < v113 ) +// { +// v2->field_30 = v113; +// v210 = v113 - v112; +// } +// } +// else +// { +// v111 = (char)v111; +// v6 = (char)v111 + v2->field_30 < 0; +// v2->field_30 += (char)v111; +// if ( v6 ) +// v2->field_30 = 0; +// v210 = v111; +// } +// } +// LOBYTE(v114) = v107->field_48[9]; +// if ( (_BYTE)v114 ) +// { +// if ( (_BYTE)v114 == 99 ) +// { +// v115 = v2->field_34; +// v116 = v4->field_34; +// if ( v115 < v116 ) +// { +// v2->field_34 = v116; +// v208 = v116 - v115; +// } +// } +// else +// { +// v114 = (char)v114; +// v6 = (char)v114 + v2->field_34 < 0; +// v2->field_34 += (char)v114; +// if ( v6 ) +// v2->field_34 = 0; +// v208 = v114; +// } +// } +// LOBYTE(v117) = v107->field_48[10]; +// if ( (_BYTE)v117 ) +// { +// if ( (_BYTE)v117 == 99 ) +// { +// v118 = v2->field_38; +// v119 = v4->field_38; +// if ( v118 < v119 ) +// { +// v2->field_38 = v119; +// v197 = v119 - v118; +// } +// } +// else +// { +// v117 = (char)v117; +// v6 = (char)v117 + v2->field_38 < 0; +// v2->field_38 += (char)v117; +// if ( v6 ) +// v2->field_38 = 0; +// v197 = v117; +// } +// } +// LOBYTE(v120) = v107->field_48[11]; +// if ( v120 ) +// { +// if ( v120 == 99 ) +// { +// v121 = v2->field_3C; +// v122 = v4->field_3C; +// if ( v121 < v122 ) +// { +// v2->field_3C = v122; +// v205 = v122 - v121; +// } +// } +// else +// { +// v120 = v120; +// v6 = v120 + v2->field_3C < 0; +// v2->field_3C += v120; +// if ( v6 ) +// v2->field_3C = 0; +// v205 = v120; +// } +// } +// LOBYTE(v123) = v107->field_48[12]; +// if ( (_BYTE)v123 ) +// { +// if ( (_BYTE)v123 == 99 ) +// { +// v124 = v2->field_40; +// v125 = v4->field_40; +// if ( v124 < v125 ) +// { +// v2->field_40 = v125; +// v203 = v125 - v124; +// } +// } +// else +// { +// v123 = (char)v123; +// v6 = (char)v123 + v2->field_40 < 0; +// v2->field_40 += (char)v123; +// if ( v6 ) +// v2->field_40 = 0; +// v203 = v123; +// } +// } +// v126 = v107->field_48[13]; +// if ( v126 ) +// { +// v196 = am_40D402(v193, v126); +// v192 = v107->field_48[13] - v196; +// } +// LOBYTE(v127) = v107->field_48[14]; +// if ( (_BYTE)v127 ) +// { +// if ( (_BYTE)v127 == 99 ) +// { +// v128 = v2->field_28; +// v129 = v4->field_28; +// if ( v128 < v129 ) +// { +// v2->field_28 = v129; +// v201 = v129 - v128; +// } +// } +// else +// { +// v127 = (char)v127; +// v6 = (char)v127 + v2->field_28 < 0; +// v2->field_28 += (char)v127; +// if ( v6 ) +// v2->field_28 = 0; +// v201 = v127; +// } +// } +// LOBYTE(v130) = v107->field_48[15]; +// if ( (_BYTE)v130 ) +// { +// if ( (_BYTE)v130 == 99 ) +// { +// v131 = v2->field_24; +// v132 = v4->field_24; +// if ( v131 < v132 ) +// { +// v2->field_24 = v132; +// v199 = v132 - v131; +// } +// } +// else +// { +// v130 = (char)v130; +// v6 = (char)v130 + v2->field_24 < 0; +// v2->field_24 += (char)v130; +// if ( v6 ) +// v2->field_24 = 0; +// v199 = v130; +// } +// } +// LOBYTE(v133) = v107->field_58[0]; +// if ( (_BYTE)v133 ) +// { +// if ( (_BYTE)v133 == 99 ) +// { +// v134 = v2->field_2C; +// v135 = v4->field_2C; +// if ( v134 > v135 ) +// { +// v4->field_2C = v134; +// v211 = v134 - v135; +// } +// } +// else +// { +// v133 = (char)v133; +// v6 = (char)v133 + v4->field_2C < 0; +// v4->field_2C += (char)v133; +// if ( v6 ) +// v4->field_2C = 0; +// v211 = v133; +// } +// } +// LOBYTE(v136) = v107->field_58[1]; +// if ( (_BYTE)v136 ) +// { +// if ( (_BYTE)v136 == 99 ) +// { +// v137 = v2->field_30; +// v138 = v4->field_30; +// if ( v137 > v138 ) +// { +// v4->field_30 = v137; +// v209 = v137 - v138; +// } +// } +// else +// { +// v136 = (char)v136; +// v6 = (char)v136 + v4->field_30 < 0; +// v4->field_30 += (char)v136; +// if ( v6 ) +// v4->field_30 = 0; +// v209 = v136; +// } +// } +// LOBYTE(v139) = v107->field_58[2]; +// if ( (_BYTE)v139 ) +// { +// if ( (_BYTE)v139 == 99 ) +// { +// v140 = v2->field_34; +// v141 = v4->field_34; +// if ( v140 > v141 ) +// { +// v4->field_34 = v140; +// v207 = v140 - v141; +// } +// } +// else +// { +// v139 = (char)v139; +// v6 = (char)v139 + v4->field_34 < 0; +// v4->field_34 += (char)v139; +// if ( v6 ) +// v4->field_34 = 0; +// v207 = v139; +// } +// } +// LOBYTE(v142) = v107->field_58[3]; +// if ( (_BYTE)v142 ) +// { +// if ( (_BYTE)v142 == 99 ) +// { +// v143 = v2->field_38; +// v144 = v4->field_38; +// if ( v143 > v144 ) +// { +// v4->field_38 = v143; +// v206 = v143 - v144; +// } +// } +// else +// { +// v142 = (char)v142; +// v6 = (char)v142 + v4->field_38 < 0; +// v4->field_38 += (char)v142; +// if ( v6 ) +// v4->field_38 = 0; +// v206 = v142; +// } +// } +// LOBYTE(v145) = v107->field_58[4]; +// if ( (_BYTE)v145 ) +// { +// if ( (_BYTE)v145 == 99 ) +// { +// v146 = v2->field_3C; +// v147 = v4->field_3C; +// if ( v146 > v147 ) +// { +// v4->field_3C = v146; +// v204 = v146 - v147; +// } +// } +// else +// { +// v145 = (char)v145; +// v6 = (char)v145 + v4->field_3C < 0; +// v4->field_3C += (char)v145; +// if ( v6 ) +// v4->field_3C = 0; +// v204 = v145; +// } +// } +// LOBYTE(v148) = v107->field_58[5]; +// if ( (_BYTE)v148 ) +// { +// if ( (_BYTE)v148 == 99 ) +// { +// v149 = v2->field_40; +// v150 = v4->field_40; +// if ( v149 > v150 ) +// { +// v4->field_40 = v149; +// v202 = v149 - v150; +// } +// } +// else +// { +// v148 = (char)v148; +// v6 = (char)v148 + v4->field_40 < 0; +// v4->field_40 += (char)v148; +// if ( v6 ) +// v4->field_40 = 0; +// v202 = v148; +// } +// } +// v151 = v107->field_58[6]; +// if ( v151 ) +// { +// v195 = am_40D402(v189, v151); +// v191 = v107->field_58[6] - v195; +// } +// LOBYTE(v152) = v107->field_58[7]; +// if ( (_BYTE)v152 ) +// { +// if ( (_BYTE)v152 == 99 ) +// { +// v153 = v2->field_28; +// v154 = v4->field_28; +// if ( v153 > v154 ) +// { +// v4->field_28 = v153; +// v200 = v153 - v154; +// } +// } +// else +// { +// v152 = (char)v152; +// v6 = (char)v152 + v4->field_28 < 0; +// v4->field_28 += (char)v152; +// if ( v6 ) +// v4->field_28 = 0; +// v200 = v152; +// } +// } +// LOBYTE(v155) = v107->field_58[8]; +// if ( (_BYTE)v155 ) +// { +// if ( (_BYTE)v155 == 99 ) +// { +// v156 = v2->field_24; +// v157 = v4->field_24; +// if ( v156 > v157 ) +// { +// v4->field_24 = v156; +// v198 = v156 - v157; +// } +// } +// else +// { +// v155 = (char)v155; +// v6 = (char)v155 + v4->field_24 < 0; +// v4->field_24 += (char)v155; +// if ( v6 ) +// v4->field_24 = 0; +// v198 = v155; +// } +// } +// LOBYTE(v158) = v107->field_58[9]; +// if ( (_BYTE)v158 ) +// { +// if ( (_BYTE)v158 == 99 ) +// { +// v159 = v2->field_2C; +// v160 = v4->field_2C; +// if ( v159 != v160 ) +// { +// if ( v159 <= v160 ) +// { +// v2->field_2C = v160; +// v194 = v160 - v159; +// } +// else +// { +// v4->field_2C = v159; +// v211 = v159 - v160; +// } +// } +// } +// else +// { +// v158 = (char)v158; +// v2->field_2C += (char)v158; +// v4->field_2C += (char)v158; +// if ( v2->field_2C < 0 ) +// v2->field_2C = 0; +// if ( v4->field_2C < 0 ) +// v4->field_2C = 0; +// v194 = v158; +// v211 = v158; +// } +// } +// LOBYTE(v161) = v107->field_58[10]; +// if ( (_BYTE)v161 ) +// { +// if ( (_BYTE)v161 == 99 ) +// { +// v162 = v2->field_30; +// v163 = v4->field_30; +// if ( v162 != v163 ) +// { +// if ( v162 <= v163 ) +// { +// v2->field_30 = v163; +// v210 = v163 - v162; +// } +// else +// { +// v4->field_30 = v162; +// v209 = v162 - v163; +// } +// } +// } +// else +// { +// v161 = (char)v161; +// v2->field_30 += (char)v161; +// v4->field_30 += (char)v161; +// if ( v2->field_30 < 0 ) +// v2->field_30 = 0; +// if ( v4->field_30 < 0 ) +// v4->field_30 = 0; +// v209 = v161; +// v210 = v161; +// } +// } +// LOBYTE(v164) = v107->field_58[11]; +// if ( (_BYTE)v164 ) +// { +// if ( (_BYTE)v164 == 99 ) +// { +// v165 = v2->field_34; +// v166 = v4->field_34; +// if ( v165 != v166 ) +// { +// if ( v165 <= v166 ) +// { +// v2->field_34 = v166; +// v208 = v166 - v165; +// } +// else +// { +// v4->field_34 = v165; +// v207 = v165 - v166; +// } +// } +// } +// else +// { +// v164 = (char)v164; +// v2->field_34 += (char)v164; +// v4->field_34 += (char)v164; +// if ( v2->field_34 < 0 ) +// v2->field_34 = 0; +// if ( v4->field_34 < 0 ) +// v4->field_34 = 0; +// v208 = v164; +// v207 = v164; +// } +// } +// LOBYTE(v167) = v107->field_58[12]; +// if ( (_BYTE)v167 ) +// { +// if ( (_BYTE)v167 == 99 ) +// { +// v168 = v2->field_38; +// v169 = v4->field_38; +// if ( v168 != v169 ) +// { +// if ( v168 <= v169 ) +// { +// v2->field_38 = v169; +// v197 = v169 - v168; +// } +// else +// { +// v4->field_38 = v168; +// v206 = v168 - v169; +// } +// } +// } +// else +// { +// v167 = (char)v167; +// v2->field_38 += (char)v167; +// v4->field_38 += (char)v167; +// if ( v2->field_38 < 0 ) +// v2->field_38 = 0; +// if ( v4->field_38 < 0 ) +// v4->field_38 = 0; +// v197 = v167; +// v206 = v167; +// } +// } +// LOBYTE(v170) = v107->field_58[13]; +// if ( v170 ) +// { +// if ( v170 == 99 ) +// { +// v171 = v2->field_3C; +// v172 = v4->field_3C; +// if ( v171 != v172 ) +// { +// if ( v171 <= v172 ) +// { +// v205 = v172 > v171; +// v2->field_3C = v172; +// } +// else +// { +// v204 = 1; +// v4->field_3C = v171; +// } +// } +// } +// else +// { +// v170 = v170; +// v2->field_3C += v170; +// v4->field_3C += v170; +// if ( v2->field_3C < 0 ) +// v2->field_3C = 0; +// if ( v4->field_3C < 0 ) +// v4->field_3C = 0; +// v205 = v170; +// v204 = v170; +// } +// } +// LOBYTE(v173) = v107->field_58[14]; +// if ( (_BYTE)v173 ) +// { +// if ( (_BYTE)v173 == 99 ) +// { +// v174 = v2->field_40; +// v175 = v4->field_40; +// if ( v174 != v175 ) +// { +// if ( v174 <= v175 ) +// { +// v2->field_40 = v175; +// v203 = v175 - v174; +// } +// else +// { +// v4->field_40 = v174; +// v202 = v174 - v175; +// } +// } +// } +// else +// { +// v173 = (char)v173; +// v2->field_40 += (char)v173; +// v4->field_40 += (char)v173; +// if ( v2->field_40 < 0 ) +// v2->field_40 = 0; +// if ( v4->field_40 < 0 ) +// v4->field_40 = 0; +// v203 = v173; +// v202 = v173; +// } +// } +// v176 = v107->field_58[15]; +// if ( v176 ) +// { +// v177 = am_40D402(v193, v176); +// v178 = v107->field_58[15]; +// v196 = v177; +// v179 = am_40D402(v189, v178); +// v195 = v179; +// v180 = v107->field_58[15] - v179; +// v192 = v107->field_58[15] - v196; +// v191 = v180; +// } +// LOBYTE(v181) = LOBYTE(v107->field_68); +// if ( (_BYTE)v181 ) +// { +// if ( (_BYTE)v181 == 99 ) +// { +// v182 = v2->field_28; +// v183 = v4->field_28; +// if ( v182 != v183 ) +// { +// if ( v182 <= v183 ) +// { +// v2->field_28 = v183; +// v201 = v183 - v182; +// } +// else +// { +// v4->field_28 = v182; +// v200 = v182 - v183; +// } +// } +// } +// else +// { +// v181 = (char)v181; +// v2->field_28 += (char)v181; +// v4->field_28 += (char)v181; +// if ( v2->field_28 < 0 ) +// v2->field_28 = 0; +// if ( v4->field_28 < 0 ) +// v4->field_28 = 0; +// v201 = v181; +// v200 = v181; +// } +// } +// LOBYTE(v103) = BYTE1(v107->field_68); +// break; +// } +// if ( (_BYTE)v103 ) +// { +// if ( (_BYTE)v103 == 99 ) +// { +// v184 = v2->field_24; +// v185 = v4->field_24; +// if ( v184 != v185 ) +// { +// if ( v184 <= v185 ) +// { +// v2->field_24 = v185; +// v199 = v185 - v184; +// } +// else +// { +// v4->field_24 = v184; +// v198 = v184 - v185; +// } +// } +// } +// else +// { +// v103 = (char)v103; +// v2->field_24 += (char)v103; +// v4->field_24 += (char)v103; +// if ( v2->field_24 < 0 ) +// v2->field_24 = 0; +// if ( v4->field_24 < 0 ) +// v4->field_24 = 0; +// v199 = v103; +// v198 = v103; +// } +// } +// if ( v194 > 0 || v211 > 0 ) +// ArcomageGame::PlaySound(0x1Eu); +// if ( v194 < 0 || v211 < 0 ) +// ArcomageGame::PlaySound(0x1Fu); +// if ( v210 > 0 || v209 > 0 ) +// ArcomageGame::PlaySound(0x21u); +// if ( v210 < 0 || v209 < 0 ) +// ArcomageGame::PlaySound(0x22u); +// if ( v208 > 0 || v207 > 0 ) +// ArcomageGame::PlaySound(0x24u); +// if ( v208 < 0 || v207 < 0 ) +// ArcomageGame::PlaySound(0x25u); +// if ( v197 > 0 || v206 > 0 ) +// ArcomageGame::PlaySound(0x27u); +// if ( v197 < 0 || v206 < 0 ) +// ArcomageGame::PlaySound(0x28u); +// if ( v205 > 0 || v204 > 0 ) +// ArcomageGame::PlaySound(0x2Au); +// if ( v205 < 0 || v204 < 0 ) +// ArcomageGame::PlaySound(0x2Bu); +// if ( v203 > 0 || v202 > 0 ) +// ArcomageGame::PlaySound(0x2Du); +// if ( v203 < 0 || v202 < 0 ) +// ArcomageGame::PlaySound(0x2Eu); +// if ( v192 || v191 || v196 || v195 ) +// ArcomageGame::PlaySound(0x30u); +// if ( v201 > 0 || v200 > 0 ) +// ArcomageGame::PlaySound(0x31u); +// if ( v201 < 0 || v200 < 0 ) +// ArcomageGame::PlaySound(0x32u); +// if ( v199 > 0 || v198 > 0 ) +// ArcomageGame::PlaySound(0x34u); +// if ( v199 < 0 || v198 < 0 ) +// ArcomageGame::PlaySound(0x35u); +// if ( v193 ) +// { +// if ( v194 ) +// { +// v187.x = 573; +// v187.y = 92; +// am_40D2B4(&v187, v194); +// } +// if ( v211 ) +// { +// v187.x = 26; +// v187.y = 92; +// am_40D2B4(&v187, v211); +// } +// if ( v210 ) +// { +// v187.x = 573; +// v187.y = 164; +// am_40D2B4(&v187, v210); +// } +// if ( v209 ) +// { +// v187.x = 26; +// v187.y = 164; +// am_40D2B4(&v187, v209); +// } +// if ( v208 ) +// { +// v187.x = 573; +// v187.y = 236; +// am_40D2B4(&v187, v208); +// } +// if ( v207 ) +// { +// v187.x = 26; +// v187.y = 236; +// am_40D2B4(&v187, v207); +// } +// if ( v197 ) +// { +// v187.x = 563; +// v187.y = 114; +// am_40D2B4(&v187, v197); +// } +// if ( v206 ) +// { +// v187.x = 16; +// v187.y = 114; +// am_40D2B4(&v187, v206); +// } +// if ( v205 ) +// { +// v187.x = 563; +// v187.y = 186; +// am_40D2B4(&v187, v205); +// } +// if ( v204 ) +// { +// v187.x = 16; +// v187.y = 186; +// am_40D2B4(&v187, v204); +// } +// if ( v203 ) +// { +// v187.x = 563; +// v187.y = 258; +// am_40D2B4(&v187, v203); +// } +// if ( v202 ) +// { +// v187.x = 16; +// v187.y = 258; +// am_40D2B4(&v187, v202); +// } +// v186 = 296; +// if ( v201 ) +// { +// v187.x = 442; +// v187.y = 296; +// am_40D2B4(&v187, v201); +// } +// if ( v200 ) +// { +// v187.x = 180; +// v187.y = 296; +// am_40D2B4(&v187, v200); +// } +// if ( v199 ) +// { +// v187.x = 514; +// v187.y = 296; +// am_40D2B4(&v187, v199); +// } +// if ( v198 ) +// { +// v187.x = 122; +// v187.y = 296; +// am_40D2B4(&v187, v198); +// } +// if ( v196 ) +// { +// v187.x = 442; +// v187.y = 296; +// am_40D2B4(&v187, v196); +// } +// if ( v192 ) +// { +// v187.x = 514; +// v187.y = 296; +// am_40D2B4(&v187, v192); +// } +// if ( v195 ) +// { +// v187.x = 180; +// v187.y = 296; +// am_40D2B4(&v187, v195); +// } +// if ( v191 ) +// { +// v187.x = 122; +// goto LABEL_567; +// } +// } +// else +// { +// if ( v194 ) +// { +// v187.x = 26; +// v187.y = 92; +// am_40D2B4(&v187, v194); +// } +// if ( v211 ) +// { +// v187.x = 573; +// v187.y = 92; +// am_40D2B4(&v187, v211); +// } +// if ( v210 ) +// { +// v187.x = 26; +// v187.y = 164; +// am_40D2B4(&v187, v210); +// } +// if ( v209 ) +// { +// v187.x = 573; +// v187.y = 164; +// am_40D2B4(&v187, v209); +// } +// if ( v208 ) +// { +// v187.x = 26; +// v187.y = 236; +// am_40D2B4(&v187, v208); +// } +// if ( v207 ) +// { +// v187.x = 573; +// v187.y = 236; +// am_40D2B4(&v187, v207); +// } +// if ( v197 ) +// { +// v187.x = 16; +// v187.y = 114; +// am_40D2B4(&v187, v197); +// } +// if ( v206 ) +// { +// v187.x = 563; +// v187.y = 114; +// am_40D2B4(&v187, v206); +// } +// if ( v205 ) +// { +// v187.x = 16; +// v187.y = 186; +// am_40D2B4(&v187, v205); +// } +// if ( v204 ) +// { +// v187.x = 563; +// v187.y = 186; +// am_40D2B4(&v187, v204); +// } +// if ( v203 ) +// { +// v187.x = 16; +// v187.y = 258; +// am_40D2B4(&v187, v203); +// } +// if ( v202 ) +// { +// v187.x = 563; +// v187.y = 258; +// am_40D2B4(&v187, v202); +// } +// v186 = 296; +// if ( v201 ) +// { +// v187.x = 180; +// v187.y = 296; +// am_40D2B4(&v187, v201); +// } +// if ( v200 ) +// { +// v187.x = 442; +// v187.y = 296; +// am_40D2B4(&v187, v200); +// } +// if ( v199 ) +// { +// v187.x = 122; +// v187.y = 296; +// am_40D2B4(&v187, v199); +// } +// if ( v198 ) +// { +// v187.x = 514; +// v187.y = 296; +// am_40D2B4(&v187, v198); +// } +// if ( v196 ) +// { +// v187.x = 180; +// v187.y = 296; +// am_40D2B4(&v187, v196); +// } +// if ( v192 ) +// { +// v187.x = 122; +// v187.y = 296; +// am_40D2B4(&v187, v192); +// } +// if ( v195 ) +// { +// v187.x = 442; +// v187.y = 296; +// am_40D2B4(&v187, v195); +// } +// if ( v191 ) +// { +// v187.x = 514; +//LABEL_567: +// v187.y = v186; +// am_40D2B4(&v187, v191); +// return; +// } +// } } //----- (0040D2B4) -------------------------------------------------------- -int __fastcall am_40D2B4(Vec2_int_ *a1, int a2) -{ +int am_40D2B4( POINT* a1, int a2 ) + { int v2; // ebp@1 - Vec2_int_ *v3; // edi@1 + POINT *v3; // edi@1 char *v4; // ebx@1 int result; // eax@3 unsigned int v6; // esi@7 @@ -5394,101 +5494,74 @@ v11 = 0; v2 = a2; v3 = a1; - v4 = byte_4FABD0; - v12 = (stru272_stru0 **)array_4FAC10; - while ( *v4 ) - { - result = (*v12)->_40E2A7(); - if ( !result ) - { - *v4 = 0; - --v11; - v12 -= 1067; - v4 -= 4268; - } - ++v11; - v12 += 1067; - v4 += 4268; - if ( v11 >= 10 ) - return result; - } - v6 = 4268 * v11; - byte_4FABD0[4268 * v11] = 1; + while ( array_4FABD0[v11].field_0 ) + { + result = array_4FABD0[v11].field_40->_40E2A7(); + if ( !result ) + { + array_4FABD0[v11].field_0 = 0; + --v11; + } + ++v11; + if ( v11 >= 10 ) + return result; + } + v6 = v11; + array_4FABD0[v11].field_0 = 1; if ( v2 <= 0 ) - { - byte_4FABD1[v6] = 0; - v2 = -v2; - } + { + array_4FABD0[v6].field_1 = 0; + v2 = -v2; + } else - { - byte_4FABD1[v6] = 1; - } - *(unsigned int *)((char *)&unk_4FABD4 + v6) = v3->x - 20; - dword_4FABDC[v6 / 4] = v3->x + 20; - dword_4FABD8[v6 / 4] = v3->y - 20; - dword_4FABE0[v6 / 4] = v3->y + 20; - v7 = array_4FAC10[v6 / 0x10AC].ptr_0; - dword_4FABE4[v6 / 4] = -60; - dword_4FABE8[v6 / 4] = 60; - dword_4FABEC[v6 / 4] = 180; - dword_4FABF0[v6 / 4] = 0x3F000000u; - dword_4FABF4[v6 / 4] = 150; - dword_4FABF8[v6 / 4] = 0x42480000u; - dword_4FABFC[v6 / 4] = 0x40400000u; - dword_4FAC00[v6 / 4] = 0x41000000u; - dword_4FAC04[v6 / 4] = 5; - dword_4FAC08[v6 / 4] = 15; - dword_4FAC0C[v6 / 4] = (int)array_4FAC10[v6 / 0x10AC].field_4; - v7->_40E01A((int)((char *)&unk_4FABD4 + v6)); + { + array_4FABD0[v6].field_1 = 1; + } + array_4FABD0[v6].field_4.field_0 = v3->x - 20; + array_4FABD0[v6].field_4.field_8 = v3->x + 20; + array_4FABD0[v6].field_4.field_4 = v3->y - 20; + array_4FABD0[v6].field_4.field_C = v3->y + 20; + array_4FABD0[v6].field_4.field_10 = -60; + array_4FABD0[v6].field_4.field_14 = 60; + array_4FABD0[v6].field_4.field_18 = 180; + array_4FABD0[v6].field_4.field_1Cf = 0.5; + array_4FABD0[v6].field_4.field_20 = 150; + array_4FABD0[v6].field_4.field_24f= 50.0; + array_4FABD0[v6].field_4.field_28f = 3.0; + array_4FABD0[v6].field_4.field_2Cf = 8.0; + array_4FABD0[v6].field_4.field_30 = 5; + array_4FABD0[v6].field_4.field_34 = 15; + array_4FABD0[v6].field_4.field_38 = &array_4FABD0[v6].field_44[0]; + v8 = array_4FABD0[v6].field_40; + v8->_40E01A(&array_4FABD0[v6].field_4); if ( 10 * v2 > 150 ) - v2 = 15; - v8 = array_4FAC10[v6 / 0x10AC].ptr_0; - if ( v8->field_0 != 0x67707274 ) + v2 = 15; + + if ( v8->signature != SIG_trpg ) return 2; if ( !v8->field_59 ) return 3; v8->field_8 = 10 * v2; - v9 = v8->field_4; v8->field_30 = 0.0; v8->field_58 = 0; v8->field_44 = 0; v8->field_4C = 0; v8->field_48 = 0; v8->field_50 = 0; - v10 = v8->field_54; - do - { - *(unsigned int *)v10 = 0; - v10 += 28; - --v9; - } - while ( v9 ); + for (int i=0; i<v8->field_4; ++i) + v8->field_54[i].field_0=0; return 0; } -// 40D2B4: using guessed type int __fastcall am_40D2B4(uint, uint); -// 4FABD8: using guessed type int dword_4FABD8[]; -// 4FABDC: using guessed type int dword_4FABDC[]; -// 4FABE0: using guessed type int dword_4FABE0[]; -// 4FABE4: using guessed type int dword_4FABE4[]; -// 4FABE8: using guessed type int dword_4FABE8[]; -// 4FABEC: using guessed type int dword_4FABEC[]; -// 4FABF0: using guessed type int dword_4FABF0[]; -// 4FABF4: using guessed type int dword_4FABF4[]; -// 4FABF8: using guessed type int dword_4FABF8[]; -// 4FABFC: using guessed type int dword_4FABFC[]; -// 4FAC00: using guessed type int dword_4FAC00[]; -// 4FAC04: using guessed type int dword_4FAC04[]; -// 4FAC08: using guessed type int dword_4FAC08[]; -// 4FAC0C: using guessed type int dword_4FAC0C[]; + //----- (0040D402) -------------------------------------------------------- int __fastcall am_40D402(int a1, int a2) { - ArcomageGame_stru0 *v2; // ecx@1 + ArcomagePlayer *v2; // ecx@1 int v3; // esi@1 int result; // eax@3 - v2 = &stru_505708[a1]; + v2 = &am_Players[a1]; v3 = v2->field_28; if ( v3 <= 0 ) { @@ -5543,60 +5616,60 @@ v2 = 0; xy[1] = 160; xy[0] = 320 - 12 * v2 / 2; - pPrimaryWindow_draws_text(-1, pText, xy); - if ( stru_505708[0].field_24 < dword_4E1884 ) +// pPrimaryWindow_draws_text(-1, pText, xy); + if ( am_Players[0].field_24 < dword_4E1884 ) { - if ( stru_505708[1].field_24 < dword_4E1884 ) + if ( am_Players[1].field_24 < dword_4E1884 ) goto LABEL_10; v0 = 2; } else { - if ( stru_505708[1].field_24 < dword_4E1884 ) + if ( am_Players[1].field_24 < dword_4E1884 ) { v0 = 1; } else { - if ( stru_505708[0].field_24 == stru_505708[1].field_24 ) + if ( am_Players[0].field_24 == am_Players[1].field_24 ) { v0 = 0; v1 = 4; goto LABEL_10; } - v0 = (stru_505708[0].field_24 <= stru_505708[1].field_24) + 1; + v0 = (am_Players[0].field_24 <= am_Players[1].field_24) + 1; } } v1 = 0; LABEL_10: - if ( stru_505708[0].field_24 <= 0 ) + if ( am_Players[0].field_24 <= 0 ) { - if ( stru_505708[1].field_24 > 0 ) + if ( am_Players[1].field_24 > 0 ) { v0 = 2; } else { - if ( stru_505708[0].field_24 == stru_505708[1].field_24 ) + if ( am_Players[0].field_24 == am_Players[1].field_24 ) { LABEL_20: - if ( stru_505708[0].field_28 == stru_505708[1].field_28 ) + if ( am_Players[0].field_28 == am_Players[1].field_28 ) { v0 = 0; v1 = 4; } else { - v0 = (stru_505708[0].field_28 <= stru_505708[1].field_28) + 1; + v0 = (am_Players[0].field_28 <= am_Players[1].field_28) + 1; v1 = 1; } goto LABEL_23; } - v0 = (stru_505708[0].field_24 <= stru_505708[1].field_24) + 1; + v0 = (am_Players[0].field_24 <= am_Players[1].field_24) + 1; } goto LABEL_17; } - if ( stru_505708[1].field_24 <= 0 ) + if ( am_Players[1].field_24 <= 0 ) { v0 = 1; LABEL_17: @@ -5605,35 +5678,35 @@ if ( !v0 && v1 == 4 ) goto LABEL_20; LABEL_23: - v3 = stru_505708[0].field_38; - if ( stru_505708[0].field_38 <= stru_505708[0].field_3C ) + v3 = am_Players[0].field_38; + if ( am_Players[0].field_38 <= am_Players[0].field_3C ) { - v3 = stru_505708[0].field_40; - v4 = stru_505708[0].field_3C; - if ( stru_505708[0].field_3C > stru_505708[0].field_40 ) + v3 = am_Players[0].field_40; + v4 = am_Players[0].field_3C; + if ( am_Players[0].field_3C > am_Players[0].field_40 ) goto LABEL_28; } else { - if ( stru_505708[0].field_38 <= stru_505708[0].field_40 ) + if ( am_Players[0].field_38 <= am_Players[0].field_40 ) { - v4 = stru_505708[0].field_40; + v4 = am_Players[0].field_40; goto LABEL_28; } } v4 = v3; LABEL_28: - v5 = stru_505708[1].field_38; - v6 = stru_505708[1].field_3C; - if ( stru_505708[1].field_38 <= stru_505708[1].field_3C ) + v5 = am_Players[1].field_38; + v6 = am_Players[1].field_3C; + if ( am_Players[1].field_38 <= am_Players[1].field_3C ) { - v5 = stru_505708[1].field_40; - if ( stru_505708[1].field_3C > stru_505708[1].field_40 ) + v5 = am_Players[1].field_40; + if ( am_Players[1].field_3C > am_Players[1].field_40 ) goto LABEL_33; goto LABEL_32; } - v6 = stru_505708[1].field_40; - if ( stru_505708[1].field_38 > stru_505708[1].field_40 ) + v6 = am_Players[1].field_40; + if ( am_Players[1].field_38 > am_Players[1].field_40 ) LABEL_32: v6 = v5; LABEL_33: @@ -5693,7 +5766,7 @@ *v9 = 1; //auto _a = (signed __int64)(p2DEvents_minus1__20[13 * (unsigned int)v7->ptr_1C] * 100.0); - auto _a = (signed __int64)(p2DEvents[(unsigned int)v7->ptr_1C - 1].fPriceMultiplier * 100.0); + auto _a = (signed int)(p2DEvents[(unsigned int)v7->ptr_1C - 1].fPriceMultiplier * 100.0); party_finds_gold(_a, 0); } } @@ -5745,13 +5818,13 @@ int v0; // ecx@3 signed __int64 v1; // qax@4 int v2; // esi@4 - __int16 *v3; // esi@5 + int v3; // esi@5 signed int v4; // edi@5 stru272 *v5; // esi@7 int v6; // edx@9 int v7; // ecx@9 - int pXYZW[4]; // [sp+8h] [bp-1Ch]@5 - int pXY[2]; // [sp+18h] [bp-Ch]@5 + RECT pXYZW; // [sp+8h] [bp-1Ch]@5 + POINT pXY; // [sp+18h] [bp-Ch]@5 int v10; // [sp+20h] [bp-4h]@3 pAudioPlayer->StopChannels(-1, -1); @@ -5759,53 +5832,43 @@ strcpy(pArcomageGame->pPlayer2Name, pArcomagePlayer2Name); am_byte_4FAA76 = 0; am_byte_4FAA75 = 0; - v10 = 1; - v0 = (int)am_byte_4FAA7C; - do - { - v1 = v10; - *(int *)(v0 - 4) = -1; - *(char *)v0 = 0; - v0 += 32; - v2 = 138 * (unsigned __int64)(v1 / 4) + 18; - HIDWORD(v1) = 100 * (unsigned __int64)(v1 % 4) + 120; - *(int *)(v0 - 28) = HIDWORD(v1); - *(int *)(v0 - 24) = v2; - *(int *)(v0 - 20) = (120 - HIDWORD(v1)) / 5; - ++v10; - *(int *)(v0 - 16) = (18 - v2) / 5; - *(int *)(v0 - 12) = *(int *)(v0 - 28); - *(int *)(v0 - 8) = *(int *)(v0 - 24); - } - while ( v10 - 1 < 10 ); - pXY[0] = 0; - pXY[1] = 0; + + for (int i=0; i<10; ++i) + { + v2 = (i+1) % 4; + v3 = (i+1) / 4; + struct_st1[i].uCardId = -1; + struct_st1[i].field_4 = 0; + struct_st1[i].field_8.x = 100 * v2 + 120; + struct_st1[i].field_8.y = 138 * v3 + 18; + struct_st1[i].field_10_xplus = -100 * v2 / 5; + struct_st1[i].field_14_y_plus = -138 * v3 / 5; + struct_st1[i].field_18_point.x = struct_st1[i].field_8.x; + struct_st1[i].field_18_point.y = struct_st1[i].field_8.y; + } + + pXY.x = 0; + pXY.y = 0; ArcomageGame::LoadBackground(); - pXYZW[0] = 0; - pXYZW[2] = 640; - pXYZW[1] = 0; - pXYZW[3] = 480; + pXYZW.left = 0; + pXYZW.right = 640; + pXYZW.top = 0; + pXYZW.bottom = 480; am_BeginScene(pArcomageGame->pBackgroundPixels, -1, 1); - Blt_Copy((ArcomageRect *)pXYZW, pXY, 2); + Blt_Copy(&pXYZW, &pXY, 2); am_EndScene(); pRenderer->Present(); ArcomageGame::LoadSprites(); CallRenderPresent(); - v3 = am_sounds; + v4 = 120; - do - { - *v3 = pSoundList->LoadSound(v4++, 0); - ++v3; - } - while ( (signed int)v3 <= (signed int)&unk_4FAA20 ); - v5 = array_4FAC10; - do - { - v5->_40DFD1(); - ++v5; - } - while ( (signed int)v5 < 10 );//(signed int)&unk_5052C8 ); + for (int i=0; i<12; ++i) + am_sounds[i] = pSoundList->LoadSound(v4++, 0); + + + for (int i=0; i<10; ++i) + array_4FABD0[i].field_40->_40DFD1(array_4FABD0[i].field_40); + dword_4FABBC = -1; amuint_4FAA4C = -1; byte_4FAA74 = 0; @@ -5814,26 +5877,23 @@ byte_505880 = 0; dword_4FAA70 = 0; am_byte_4FAA77 = 0; - am_409FE9(); - am_40A255(v7, v6); + // am_409FE9(); + am_40A255(); //nullsub_1(); pArcomageGame->field_F5 = 0; - pArcomageGame->pFont1 = pFontComic; - pArcomageGame->pFont2 = pFontArrus; + pArcomageGame->pfntComic = pFontComic; + pArcomageGame->pfntArrus = pFontArrus; } //----- (0040D711) -------------------------------------------------------- ArcomageGame::ArcomageGame() { - ArcomageGame *v1; // esi@1 - - v1 = this; - this->field_4 = 0; + field_4 = 0; //RGBTexture::RGBTexture(&this->pGameBackground); //RGBTexture::RGBTexture(&v1->pSprites); - v1->bGameInProgress = 0; - v1->field_F9 = 0; + bGameInProgress = 0; + field_F9 = 0; } @@ -5842,30 +5902,102 @@ //----- (00409BE8) -------------------------------------------------------- -void __cdecl sub_409BE8() +void sub_409BE8() { - void *v0; // eax@1 stru348 *v1; // eax@1 - int v2; // ecx@1 - int v3; // eax@1 - - v0 = window_SpeakInHouse->ptr_1C; - dword_4E1874 = 5; - v1 = &stru_4E1890[(int)((char *)v0 - 108)]; + + v1 = &stru_4E1890[window_SpeakInHouse->par1C - 108]; amuint_4E1860 = v1->field_4; amuint_4E1864 = v1->field_6; amuint_4E1868 = v1->field_8 - 1; amuint_4E186C = v1->field_A - 1; amuint_4E1870 = v1->field_C - 1; - amuint_505884 = v1->field_E; - amuint_505888 = v1->field_10; - amuint_50588C = v1->field_12; + dword_4E1874 = 5; dword_4E1878 = 1; dword_4E187C = 1; dword_4E1880 = 1; dword_4E1884 = v1->field_0; - v2 = v1->field_2; - v3 = v1->field_14; - dword_4E1888 = v2; - dword_4DF3A4 = v3; -} \ No newline at end of file + dword_4E1888 = v1->field_2; + + dword_4DF3A4 = v1->field_14; + + amuint_505884 = v1->field_E; + amuint_505888 = v1->field_10; + amuint_50588C = v1->field_12; + +} + + +//----- (0040D75D) -------------------------------------------------------- +void pPrimaryWindow_draws_text( int a1, const char *pText, POINT *pXY ) + { + int v4; // qax@1 + v4 = pFontComic->uFontHeight - 3; + pPrimaryWindow->DrawText( pFontComic, pXY->x, pXY->y - (v4 >> 1) + 3, 0, pText, 0, 0, 0); + } + + +//----- (0040DB27) -------------------------------------------------------- +void __fastcall DrawRect(RECT *pXYZW, unsigned __int16 uColor, char bSolidFill) + { + RECT *v3; // esi@1 + + v3 = pXYZW; + pRenderer->BeginScene(); + pRenderer->SetRasterClipRect(0, 0, 639u, 479u); + if ( bSolidFill ) + { + for ( int i = v3->top; i <= v3->bottom; ++i ) + pRenderer->RasterLine2D(v3->left, i, v3->right, i, uColor); + } + else + { + pRenderer->RasterLine2D(v3->left, v3->top, v3->right, v3->top, uColor); + pRenderer->RasterLine2D(v3->right, v3->top, v3->right, v3->bottom, uColor); + pRenderer->RasterLine2D(v3->right, v3->bottom, v3->left, v3->bottom, uColor); + pRenderer->RasterLine2D(v3->left, v3->bottom, v3->left, v3->top, uColor); + } + pRenderer->EndScene(); + } + + +//----- (0040DBD3) -------------------------------------------------------- +void SetPixel( POINT *pTargetXY, unsigned __int16 uColor ) + { + pRenderer->BeginScene(); + if ( pRenderer->uNumSceneBegins ) + { + int xVal = pTargetXY->x; + int yVal = pTargetXY->y; + if ( xVal >= 0 && xVal <= 639 && yVal >= 0 && yVal <= 479) + { + pRenderer->pTargetSurface[xVal + pRenderer->uTargetSurfacePitch * yVal] = uColor; + } + pRenderer->EndScene(); + } + } + + +//----- (0040DDB1) -------------------------------------------------------- +int __fastcall rand_interval(int a, int b) + { + return a + rand() % (b - a + 1); + } + +//----- (0040DEB4) -------------------------------------------------------- +char *__fastcall inv_strcat(const char *Source, char *Dest) + { + return strcat(Dest, Source); + } + +//----- (0040DEBE) -------------------------------------------------------- +char *__fastcall inv_strcpy(const char *Source, char *Dest) + { + return strcpy(Dest, Source); + } + +//----- (0040DEC8) -------------------------------------------------------- +void __fastcall intToString(int val, char *pOut) + { + sprintf(pOut, "%d", val); + }
--- a/Arcomage.h Fri Jun 07 11:31:11 2013 +0600 +++ b/Arcomage.h Fri Jun 07 11:31:20 2013 +0600 @@ -3,45 +3,114 @@ #include "Texture.h" +#pragma pack(push, 1) +struct am_st1 + { + int field_0; + int field_4; + }; +#pragma pack(pop) - +/* 401 */ #pragma pack(push, 1) -struct ArcomageRect -{ - int x; - int y; - int z; - int w; -}; +struct Acromage_st1 + { + int uCardId; + int field_4; + POINT field_8; + int field_10_xplus; + int field_14_y_plus; + POINT field_18_point; + }; #pragma pack(pop) /* 272 */ #pragma pack(push, 1) struct ArcomageCard -{ - char pCardName[20]; - int field_14; - int field_18; - int field_1C; - int slot; - int field_24; - int field_28; - int field_2C; - float field_30; - int field_34; - char field_38[16]; - char field_48[16]; - char field_58[16]; - int field_68; -}; + { + char pCardName[32]; + int slot; + char field_24; + char field_25; + char field_26; + char field_27; + char field_28; + char field_29; + char field_2A; + char field_2B; + char field_2C; + char field_2D; + char field_2E; + char field_2F; + char field_30; + char field_31; + char field_32; + char field_33; + char field_34; + char field_35; + char field_36; + char field_37; + char field_38; + char field_39; + char field_3A; + char field_3B; + char field_3C; + char field_3D; + char field_3E; + char field_3F; + char field_40; + char field_41; + char field_42; + char field_43; + char field_44; + char field_45; + char field_46; + char field_47; + char field_48; + char field_49; + char field_4A; + char field_4B; + char field_4C; + char field_4D; + char field_4E; + char field_4F; + char field_50; + char field_51; + char field_52; + char field_53; + char field_54; + char field_55; + char field_56; + char field_57; + char field_58; + char field_59; + char field_5A; + char field_5B; + char field_5C; + char field_5D; + char field_5E; + char field_5F; + char field_60; + char field_61; + char field_62; + char field_63; + char field_64; + char field_65; + char field_66; + char field_67; + char field_68; + char field_69; + char field_6A; + char field_6B; + }; #pragma pack(pop) #pragma pack(push, 1) -struct ArcomageGame_stru0 +struct ArcomagePlayer { char pPlayerName[32]; int field_20; @@ -53,8 +122,8 @@ int field_38; int field_3C; int field_40; - int arr_44[10]; - int arr_6C[10][2]; + int cards_at_hand[10]; + am_st1 arr_6C[10]; }; #pragma pack(pop) @@ -80,10 +149,10 @@ static bool LoadBackground(); static bool LoadSprites(); static bool MsgLoop(int a1, ArcomageGame_stru1 *a2); - static void PlaySound(unsigned int a1); + static void PlaySound(unsigned int event_id); static void OnMouseClick(char right_left, bool bDown); static void OnMouseMove(POINT *pXY); - static void GetCardRect(unsigned int uCardID, ArcomageRect *pCardRect); + static void GetCardRect(unsigned int uCardID, RECT *pCardRect); static void Loop(); @@ -103,8 +172,8 @@ unsigned __int16 *pBackgroundPixels; unsigned __int16 *pSpritesPixels; unsigned __int16 *pBlit_Copy_pixels; - struct GUIFont *pFont1;//ptr_48; - struct GUIFont *pFont2;//ptr_4C; + struct GUIFont *pfntComic;//ptr_48; + struct GUIFont *pfntArrus;//ptr_4C; int field_50; __int16 field_54; __int16 field_56; @@ -130,34 +199,56 @@ extern ArcomageGame *pArcomageGame; extern ArcomageCard pCards[87]; -extern ArcomageGame_stru0 stru_505708[2]; - - - - - +extern ArcomagePlayer am_Players[2]; - - - +#pragma pack(push, 1) +struct stru272_stru1 + { + int field_0; + POINT field_4; + int field_C; + int field_10; + int field_14; + int field_18; + }; +#pragma pack(pop) - - - +/* 404 */ +#pragma pack(push, 1) +struct stru272_stru2 + { + int field_0; + int field_4; + int field_8; + int field_C; + int field_10; + int field_14; + int field_18; + float field_1Cf; + int field_20; + float field_24f; + float field_28f; + float field_2Cf; + int field_30; + int field_34; + stru272_stru1* field_38; + }; +#pragma pack(pop) /* 270 */ #pragma pack(push, 1) struct stru272_stru0 // ARCOMAGE stuff { + static void _40DFD1(stru272_stru0 *a1); int _40DFFE(); - int _40E01A(int a2); + int _40E01A(stru272_stru2* a2); int _40E0F5(char a2, char a3); int _40E133(); int _40E2A7(); - int field_0; + int signature; int field_4; int field_8; int field_C; @@ -178,7 +269,7 @@ int field_48; int field_4C; int field_50; - int field_54; + stru272_stru1 * field_54; char field_58; char field_59; char field_5A; @@ -188,15 +279,46 @@ /* 266 */ +//#pragma pack(push, 1) +//struct stru272 +//{ +// void _40DFD1(); +// +// struct stru272_stru0 *ptr_0; +// char field_4[4264]; +//}; +//#pragma pack(pop) + + + + + + #pragma pack(push, 1) struct stru272 -{ - void _40DFD1(); - - struct stru272_stru0 *ptr_0; - char field_4[4264]; -}; + { + char field_0; + char field_1; + char field_2; + char field_3; + stru272_stru2 field_4; + /*int field_4; + int field_8; + int field_C; + int field_10; + int field_14; + int field_18; + int field_1C; + float field_20f; + int field_24; + float field_28f; + float field_2Cf; + float field_30f; + int field_34; + int field_38; + stru272_stru1* field_3C;*/ + stru272_stru0 *field_40; + stru272_stru1 field_44[150]; + }; #pragma pack(pop) - -extern stru272 array_4FAC10[10]; \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ArcomageCards.cpp Fri Jun 07 11:31:20 2013 +0600 @@ -0,0 +1,643 @@ + +//// +//// pCards ArcomageCard <'Brick Shortage', 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0> +//// .data:004DF3A8 ArcomageCard <'Lucky Cache', 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1,\ +//// .data:004DF3A8 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0> +//// .data:004DF3A8 ArcomageCard <'Friendly Terrain', 2, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, \ +//// .data:004DF3A8 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0> +//// .data:004DF3A8 ArcomageCard <'Miners', 3, 1, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0, 0, \ +//// .data:004DF3A8 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF3A8 0> +//// .data:004DF558 ArcomageCard <'Mother Lode', 4, 1, 0, 0, 0, 4, 0, 0, 1, 2, 0, 0, 0, 0,\ +//// .data:004DF558 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF558 0, 0> +//// .data:004DF5C4 ArcomageCard <'Dwarven Miners', 5, 1, 0, 0, 0, 7, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DF5C4 0, 0, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF5C4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF5C4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF5C4 0, 0, 0> +//// .data:004DF630 ArcomageCard <'Work Overtime', 6, 1, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004DF630 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DF630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF630 0, 0, 0, 0> +//// .data:004DF69C ArcomageCard <'Copping the Tech', 7, 1, 0, 0, 0, 5, 0, 0, 1, 2, 0, 0, \ +//// .data:004DF69C 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DF69C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF69C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF69C 0, 0, 0, 0, 0> +//// .data:004DF708 ArcomageCard <'Basic Wall', 8, 1, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004DF708 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF708 0, 0> +//// .data:004DF774 ArcomageCard <'Sturdy Wall', 9, 1, 0, 0, 0, 3, 0, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004DF774 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF774 0, 0> +//// .data:004DF7E0 ArcomageCard <'Innovations', 10, 1, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004DF7E0 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF7E0 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF7E0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF7E0 0, 0, 0> +//// .data:004DF84C ArcomageCard <'Foundations', 11, 1, 0, 0, 0, 3, 0, 0, 1, 11, 0, 0, 0, \ +//// .data:004DF84C 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF84C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF84C 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF84C 0, 0, 0> +//// .data:004DF8B8 ArcomageCard <'Tremors', 12, 1, 0, 0, 0, 7, 0, 0, 1, 1, 0, 0, 0, 1, 0,\ +//// .data:004DF8B8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF8B8 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DF8B8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF8B8 0, 0> +//// .data:004DF924 ArcomageCard <'Secret Room', 13, 1, 0, 0, 0, 8, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004DF924 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF924 0, 0, 0> +//// .data:004DF990 ArcomageCard <'Earthquake', 14, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004DF990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF990 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DF990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF990 0, 0, 0> +//// .data:004DF9FC ArcomageCard <'Big Wall', 15, 1, 0, 0, 0, 5, 0, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004DF9FC 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF9FC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF9FC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DF9FC 0, 0> +//// .data:004DFA68 ArcomageCard <'Collapse!', 16, 1, 0, 0, 0, 4, 0, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004DFA68 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DFA68 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFA68 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFA68 0, 0, 0> +//// .data:004DFAD4 ArcomageCard <'New Equipment', 17, 1, 0, 0, 0, 6, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DFAD4 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFAD4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFAD4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFAD4 0, 0, 0> +//// .data:004DFB40 ArcomageCard <'Strip Mine', 18, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004DFB40 0, 255, 0, 0, 0, 5, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFB40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFB40 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFB40 0, 0, 0> +//// .data:004DFBAC ArcomageCard <'Reinforced Wall', 19, 1, 0, 0, 0, 8, 0, 0, 1, 1, 0, 0, \ +//// .data:004DFBAC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFBAC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFBAC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFBAC 0, 0, 0, 0> +//// .data:004DFC18 ArcomageCard <'Porticulus', 20, 1, 0, 0, 0, 9, 0, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004DFC18 0, 0, 0, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC18 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC18 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC18 0, 0> +//// .data:004DFC84 ArcomageCard <'Crystal Rocks', 21, 1, 0, 0, 0, 9, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DFC84 0, 0, 0, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC84 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC84 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFC84 0, 0, 0> +//// .data:004DFCF0 ArcomageCard <'Harmonic Ore', 22, 1, 0, 0, 0, 11, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DFCF0 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFCF0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFCF0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFCF0 0, 0, 0> +//// .data:004DFD5C ArcomageCard <'Mondo Wall', 23, 1, 0, 0, 0, 13, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004DFD5C 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DFD5C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFD5C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFD5C 0, 0, 0, 0> +//// .data:004DFDC8 ArcomageCard <'Focused Designs', 24, 1, 0, 0, 0, 15, 0, 0, 1, 1, 0, 0,\ +//// .data:004DFDC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFDC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFDC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFDC8 0, 0, 0, 0> +//// .data:004DFE34 ArcomageCard <'Great Wall', 25, 1, 0, 0, 0, 16, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004DFE34 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DFE34 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFE34 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFE34 0, 0, 0, 0> +//// .data:004DFEA0 ArcomageCard <'Rock Launcer', 26, 1, 0, 0, 0, 18, 0, 0, 1, 1, 0, 0, 0,\ +//// .data:004DFEA0 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 246, \ +//// .data:004DFEA0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFEA0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFEA0 0, 0, 0, 0> +//// .data:004DFF0C db 'Dragon',27h,'s Heart',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; pCardName +//// .data:004DFF0C dd 27 ; slot +//// .data:004DFF0C db 1 ; field_24 +//// .data:004DFF0C db 0 ; field_25 +//// .data:004DFF0C db 0 ; field_26 +//// .data:004DFF0C db 0 ; field_27 +//// .data:004DFF0C db 24 ; field_28 +//// .data:004DFF0C db 0 ; field_29 +//// .data:004DFF0C db 0 ; field_2A +//// .data:004DFF0C db 1 ; field_2B +//// .data:004DFF0C db 1 ; field_2C +//// .data:004DFF0C db 0 ; field_2D +//// .data:004DFF0C db 0 ; field_2E +//// .data:004DFF0C db 0 ; field_2F +//// .data:004DFF0C db 0 ; field_30 +//// .data:004DFF0C db 0 ; field_31 +//// .data:004DFF0C db 0 ; field_32 +//// .data:004DFF0C db 0 ; field_33 +//// .data:004DFF0C db 0 ; field_34 +//// .data:004DFF0C db 0 ; field_35 +//// .data:004DFF0C db 0 ; field_36 +//// .data:004DFF0C db 0 ; field_37 +//// .data:004DFF0C db 0 ; field_38 +//// .data:004DFF0C db 20 ; field_39 +//// .data:004DFF0C db 8 ; field_3A +//// .data:004DFF0C db 0 ; field_3B +//// .data:004DFF0C db 0 ; field_3C +//// .data:004DFF0C db 0 ; field_3D +//// .data:004DFF0C db 0 ; field_3E +//// .data:004DFF0C db 0 ; field_3F +//// .data:004DFF0C db 0 ; field_40 +//// .data:004DFF0C db 0 ; field_41 +//// .data:004DFF0C db 0 ; field_42 +//// .data:004DFF0C db 0 ; field_43 +//// .data:004DFF0C db 0 ; field_44 +//// .data:004DFF0C db 0 ; field_45 +//// .data:004DFF0C db 0 ; field_46 +//// .data:004DFF0C db 0 ; field_47 +//// .data:004DFF0C db 0 ; field_48 +//// .data:004DFF0C db 0 ; field_49 +//// .data:004DFF0C db 0 ; field_4A +//// .data:004DFF0C db 0 ; field_4B +//// .data:004DFF0C db 0 ; field_4C +//// .data:004DFF0C db 0 ; field_4D +//// .data:004DFF0C db 0 ; field_4E +//// .data:004DFF0C db 0 ; field_4F +//// .data:004DFF0C db 0 ; field_50 +//// .data:004DFF0C db 0 ; field_51 +//// .data:004DFF0C db 0 ; field_52 +//// .data:004DFF0C db 0 ; field_53 +//// .data:004DFF0C db 0 ; field_54 +//// .data:004DFF0C db 0 ; field_55 +//// .data:004DFF0C db 0 ; field_56 +//// .data:004DFF0C db 0 ; field_57 +//// .data:004DFF0C db 0 ; field_58 +//// .data:004DFF0C db 0 ; field_59 +//// .data:004DFF0C db 0 ; field_5A +//// .data:004DFF0C db 0 ; field_5B +//// .data:004DFF0C db 0 ; field_5C +//// .data:004DFF0C db 0 ; field_5D +//// .data:004DFF0C db 0 ; field_5E +//// .data:004DFF0C db 0 ; field_5F +//// .data:004DFF0C db 0 ; field_60 +//// .data:004DFF0C db 0 ; field_61 +//// .data:004DFF0C db 0 ; field_62 +//// .data:004DFF0C db 0 ; field_63 +//// .data:004DFF0C db 0 ; field_64 +//// .data:004DFF0C db 0 ; field_65 +//// .data:004DFF0C db 0 ; field_66 +//// .data:004DFF0C db 0 ; field_67 +//// .data:004DFF0C db 0 ; field_68 +//// .data:004DFF0C db 0 ; field_69 +//// .data:004DFF0C db 0 ; field_6A +//// .data:004DFF0C db 0 ; field_6B +//// .data:004DFF78 ArcomageCard <'Quartz', 30, 2, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, \ +//// .data:004DFF78 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFF78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFF78 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFF78 0> +//// .data:004DFFE4 ArcomageCard <'Smoky Quartz', 31, 2, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, \ +//// .data:004DFFE4 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFFE4 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004DFFE4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004DFFE4 0, 0, 0, 0> +//// .data:004E0050 ArcomageCard <'Amethyst', 32, 2, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004E0050 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0050 0, 0> +//// .data:004E00BC ArcomageCard <'Spell Weavers', 33, 2, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0,\ +//// .data:004E00BC 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E00BC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E00BC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E00BC 0, 0, 0> +//// .data:004E0128 ArcomageCard <'Prism', 34, 2, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 1, 1, \ +//// .data:004E0128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0128 0> +//// .data:004E0194 ArcomageCard <'Lodestone', 35, 2, 0, 0, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, \ +//// .data:004E0194 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0194 0, 0> +//// .data:004E0200 ArcomageCard <'Solar Flare', 36, 2, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, \ +//// .data:004E0200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0200 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0200 0, 0, 0, 0> +//// .data:004E026C ArcomageCard <'Crystal Matrix', 37, 2, 0, 0, 0, 0, 6, 0, 1, 1, 0, 0, \ +//// .data:004E026C 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E026C 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E026C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E026C 0, 0, 0, 0> +//// .data:004E02D8 ArcomageCard <'Gemstone Flaw', 38, 2, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0,\ +//// .data:004E02D8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E02D8 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E02D8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E02D8 0, 0, 0, 0> +//// .data:004E0344 ArcomageCard <'Ruby', 39, 2, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0344 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> +//// .data:004E03B0 ArcomageCard <'Gem Spear', 40, 2, 0, 0, 0, 0, 4, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004E03B0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E03B0 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E03B0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E03B0 0, 0, 0, 0> +//// .data:004E041C ArcomageCard <'Power Burn', 41, 2, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004E041C 0, 0, 2, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E041C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E041C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E041C 0, 0, 0> +//// .data:004E0488 ArcomageCard <'Harmonic Vibe', 42, 2, 0, 0, 0, 0, 7, 0, 1, 1, 0, 0, 0,\ +//// .data:004E0488 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0488 0, 0, 0> +//// .data:004E04F4 ArcomageCard <'Parity', 43, 2, 0, 0, 0, 0, 7, 0, 1, 3, 0, 0, 0, 0, 0, \ +//// .data:004E04F4 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E04F4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E04F4 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E04F4 0, 0, 0> +//// .data:004E0560 ArcomageCard <'Emerald', 44, 2, 0, 0, 0, 0, 6, 0, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E0560 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0560 0> +//// .data:004E05CC ArcomageCard <'Pearl of Wisdom', 45, 2, 0, 0, 0, 0, 9, 0, 1, 1, 0, 0, \ +//// .data:004E05CC 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E05CC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E05CC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E05CC 0, 0, 0, 0> +//// .data:004E0638 ArcomageCard <'Shatter', 46, 2, 0, 0, 0, 0, 8, 0, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E0638 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0638 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0638 0, 0, 0, 0> +//// .data:004E06A4 ArcomageCard <'Crumblestone', 47, 2, 0, 0, 0, 0, 7, 0, 1, 1, 0, 0, 0, \ +//// .data:004E06A4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 250, 0, 0, 0, \ +//// .data:004E06A4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E06A4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E06A4 0, 0, 0, 0> +//// .data:004E0710 ArcomageCard <'Sapphire', 48, 2, 0, 0, 0, 0, 10, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004E0710 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0710 0, 0, 0> +//// .data:004E077C ArcomageCard <'Discord', 49, 2, 0, 0, 0, 0, 5, 0, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E077C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E077C 255, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E077C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E077C 0, 0, 0> +//// .data:004E07E8 ArcomageCard <'Fire Ruby', 50, 2, 0, 0, 0, 0, 13, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004E07E8 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E07E8 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E07E8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E07E8 0, 0, 0, 0> +//// .data:004E0854 db 'Quarry',27h,'s Help',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; pCardName +//// .data:004E0854 dd 51 ; slot +//// .data:004E0854 db 2 ; field_24 +//// .data:004E0854 db 0 ; field_25 +//// .data:004E0854 db 0 ; field_26 +//// .data:004E0854 db 0 ; field_27 +//// .data:004E0854 db 0 ; field_28 +//// .data:004E0854 db 4 ; field_29 +//// .data:004E0854 db 0 ; field_2A +//// .data:004E0854 db 1 ; field_2B +//// .data:004E0854 db 1 ; field_2C +//// .data:004E0854 db 0 ; field_2D +//// .data:004E0854 db 0 ; field_2E +//// .data:004E0854 db 0 ; field_2F +//// .data:004E0854 db 0 ; field_30 +//// .data:004E0854 db 0 ; field_31 +//// .data:004E0854 db 0 ; field_32 +//// .data:004E0854 db 0 ; field_33 +//// .data:004E0854 db 0 ; field_34 +//// .data:004E0854 db 246 ; field_35 +//// .data:004E0854 db 0 ; field_36 +//// .data:004E0854 db 0 ; field_37 +//// .data:004E0854 db 0 ; field_38 +//// .data:004E0854 db 0 ; field_39 +//// .data:004E0854 db 7 ; field_3A +//// .data:004E0854 db 0 ; field_3B +//// .data:004E0854 db 0 ; field_3C +//// .data:004E0854 db 0 ; field_3D +//// .data:004E0854 db 0 ; field_3E +//// .data:004E0854 db 0 ; field_3F +//// .data:004E0854 db 0 ; field_40 +//// .data:004E0854 db 0 ; field_41 +//// .data:004E0854 db 0 ; field_42 +//// .data:004E0854 db 0 ; field_43 +//// .data:004E0854 db 0 ; field_44 +//// .data:004E0854 db 0 ; field_45 +//// .data:004E0854 db 0 ; field_46 +//// .data:004E0854 db 0 ; field_47 +//// .data:004E0854 db 0 ; field_48 +//// .data:004E0854 db 0 ; field_49 +//// .data:004E0854 db 0 ; field_4A +//// .data:004E0854 db 0 ; field_4B +//// .data:004E0854 db 0 ; field_4C +//// .data:004E0854 db 0 ; field_4D +//// .data:004E0854 db 0 ; field_4E +//// .data:004E0854 db 0 ; field_4F +//// .data:004E0854 db 0 ; field_50 +//// .data:004E0854 db 0 ; field_51 +//// .data:004E0854 db 0 ; field_52 +//// .data:004E0854 db 0 ; field_53 +//// .data:004E0854 db 0 ; field_54 +//// .data:004E0854 db 0 ; field_55 +//// .data:004E0854 db 0 ; field_56 +//// .data:004E0854 db 0 ; field_57 +//// .data:004E0854 db 0 ; field_58 +//// .data:004E0854 db 0 ; field_59 +//// .data:004E0854 db 0 ; field_5A +//// .data:004E0854 db 0 ; field_5B +//// .data:004E0854 db 0 ; field_5C +//// .data:004E0854 db 0 ; field_5D +//// .data:004E0854 db 0 ; field_5E +//// .data:004E0854 db 0 ; field_5F +//// .data:004E0854 db 0 ; field_60 +//// .data:004E0854 db 0 ; field_61 +//// .data:004E0854 db 0 ; field_62 +//// .data:004E0854 db 0 ; field_63 +//// .data:004E0854 db 0 ; field_64 +//// .data:004E0854 db 0 ; field_65 +//// .data:004E0854 db 0 ; field_66 +//// .data:004E0854 db 0 ; field_67 +//// .data:004E0854 db 0 ; field_68 +//// .data:004E0854 db 0 ; field_69 +//// .data:004E0854 db 0 ; field_6A +//// .data:004E0854 db 0 ; field_6B +//// .data:004E08C0 ArcomageCard <'Crystal Shield', 52, 2, 0, 0, 0, 0, 12, 0, 1, 1, 0, 0, \ +//// .data:004E08C0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E08C0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E08C0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E08C0 0, 0, 0, 0> +//// .data:004E092C ArcomageCard <'Empathy Gem', 53, 2, 0, 0, 0, 0, 14, 0, 1, 1, 0, 0, 0, \ +//// .data:004E092C 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E092C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E092C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E092C 0, 0, 0> +//// .data:004E0998 ArcomageCard <'Diamond', 54, 2, 0, 0, 0, 0, 16, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004E0998 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0998 0, 0, 0> +//// .data:004E0A04 ArcomageCard <'Sanctuary', 55, 2, 0, 0, 0, 0, 15, 0, 1, 1, 0, 0, 0, 0,\ +//// .data:004E0A04 0, 0, 0, 0, 0, 0, 5, 0, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0A04 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0A04 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0A04 0, 0, 0> +//// .data:004E0A70 ArcomageCard <'Lava Jewel', 56, 2, 0, 0, 0, 0, 17, 0, 1, 1, 0, 0, 0, \ +//// .data:004E0A70 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 250,\ +//// .data:004E0A70 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0A70 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0A70 0, 0, 0, 0> +//// .data:004E0ADC db 'Dragon',27h,'s Eye',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; pCardName +//// .data:004E0ADC dd 57 ; slot +//// .data:004E0ADC db 2 ; field_24 +//// .data:004E0ADC db 0 ; field_25 +//// .data:004E0ADC db 0 ; field_26 +//// .data:004E0ADC db 0 ; field_27 +//// .data:004E0ADC db 0 ; field_28 +//// .data:004E0ADC db 21 ; field_29 +//// .data:004E0ADC db 0 ; field_2A +//// .data:004E0ADC db 1 ; field_2B +//// .data:004E0ADC db 1 ; field_2C +//// .data:004E0ADC db 0 ; field_2D +//// .data:004E0ADC db 0 ; field_2E +//// .data:004E0ADC db 0 ; field_2F +//// .data:004E0ADC db 0 ; field_30 +//// .data:004E0ADC db 0 ; field_31 +//// .data:004E0ADC db 0 ; field_32 +//// .data:004E0ADC db 0 ; field_33 +//// .data:004E0ADC db 0 ; field_34 +//// .data:004E0ADC db 0 ; field_35 +//// .data:004E0ADC db 0 ; field_36 +//// .data:004E0ADC db 0 ; field_37 +//// .data:004E0ADC db 0 ; field_38 +//// .data:004E0ADC db 0 ; field_39 +//// .data:004E0ADC db 20 ; field_3A +//// .data:004E0ADC db 0 ; field_3B +//// .data:004E0ADC db 0 ; field_3C +//// .data:004E0ADC db 0 ; field_3D +//// .data:004E0ADC db 0 ; field_3E +//// .data:004E0ADC db 0 ; field_3F +//// .data:004E0ADC db 0 ; field_40 +//// .data:004E0ADC db 0 ; field_41 +//// .data:004E0ADC db 0 ; field_42 +//// .data:004E0ADC db 0 ; field_43 +//// .data:004E0ADC db 0 ; field_44 +//// .data:004E0ADC db 0 ; field_45 +//// .data:004E0ADC db 0 ; field_46 +//// .data:004E0ADC db 0 ; field_47 +//// .data:004E0ADC db 0 ; field_48 +//// .data:004E0ADC db 0 ; field_49 +//// .data:004E0ADC db 0 ; field_4A +//// .data:004E0ADC db 0 ; field_4B +//// .data:004E0ADC db 0 ; field_4C +//// .data:004E0ADC db 0 ; field_4D +//// .data:004E0ADC db 0 ; field_4E +//// .data:004E0ADC db 0 ; field_4F +//// .data:004E0ADC db 0 ; field_50 +//// .data:004E0ADC db 0 ; field_51 +//// .data:004E0ADC db 0 ; field_52 +//// .data:004E0ADC db 0 ; field_53 +//// .data:004E0ADC db 0 ; field_54 +//// .data:004E0ADC db 0 ; field_55 +//// .data:004E0ADC db 0 ; field_56 +//// .data:004E0ADC db 0 ; field_57 +//// .data:004E0ADC db 0 ; field_58 +//// .data:004E0ADC db 0 ; field_59 +//// .data:004E0ADC db 0 ; field_5A +//// .data:004E0ADC db 0 ; field_5B +//// .data:004E0ADC db 0 ; field_5C +//// .data:004E0ADC db 0 ; field_5D +//// .data:004E0ADC db 0 ; field_5E +//// .data:004E0ADC db 0 ; field_5F +//// .data:004E0ADC db 0 ; field_60 +//// .data:004E0ADC db 0 ; field_61 +//// .data:004E0ADC db 0 ; field_62 +//// .data:004E0ADC db 0 ; field_63 +//// .data:004E0ADC db 0 ; field_64 +//// .data:004E0ADC db 0 ; field_65 +//// .data:004E0ADC db 0 ; field_66 +//// .data:004E0ADC db 0 ; field_67 +//// .data:004E0ADC db 0 ; field_68 +//// .data:004E0ADC db 0 ; field_69 +//// .data:004E0ADC db 0 ; field_6A +//// .data:004E0ADC db 0 ; field_6B +//// .data:004E0B48 ArcomageCard <'Mad Cow Disease', 60, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, \ +//// .data:004E0B48 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0B48 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0B48 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0B48 0, 0, 0, 0, 0> +//// .data:004E0BB4 ArcomageCard <'Faerie', 61, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, \ +//// .data:004E0BB4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, \ +//// .data:004E0BB4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0BB4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0BB4 0, 0> +//// .data:004E0C20 ArcomageCard <'Moody Goblins', 62, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\ +//// .data:004E0C20 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0C20 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0C20 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0C20 0, 0, 0, 0, 0, 0> +//// .data:004E0C8C ArcomageCard <'Husbandry', 63, 3, 0, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0, \ +//// .data:004E0C8C 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0C8C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0C8C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0C8C 0, 0> +//// .data:004E0CF8 ArcomageCard <'Elvin Scout', 64, 3, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, \ +//// .data:004E0CF8 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0CF8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0CF8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0CF8 0, 0, 0> +//// .data:004E0D64 ArcomageCard <'Goblin Mob', 65, 3, 0, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0,\ +//// .data:004E0D64 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 250, \ +//// .data:004E0D64 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0D64 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0D64 0, 0, 0, 0> +//// .data:004E0DD0 ArcomageCard <'Goblin Archers', 66, 3, 0, 0, 0, 0, 0, 4, 1, 1, 0, 0, \ +//// .data:004E0DD0 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0DD0 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0DD0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0DD0 0, 0, 0, 0, 0, 0> +//// .data:004E0E3C ArcomageCard <'Shadow Faerie', 67, 3, 0, 0, 0, 0, 0, 6, 1, 1, 0, 0, 0,\ +//// .data:004E0E3C 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0E3C 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0E3C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0E3C 0, 0, 0, 0> +//// .data:004E0EA8 ArcomageCard <'Orc', 68, 3, 0, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0EA8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, \ +//// .data:004E0EA8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0EA8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0EA8 0> +//// .data:004E0F14 ArcomageCard <'Dwarves', 69, 3, 0, 0, 0, 0, 0, 5, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E0F14 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, \ +//// .data:004E0F14 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0F14 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0F14 0, 0> +//// .data:004E0F80 ArcomageCard <'Little Snakes', 70, 3, 0, 0, 0, 0, 0, 6, 1, 1, 0, 0, 0,\ +//// .data:004E0F80 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0F80 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E0F80 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0F80 0, 0, 0, 0> +//// .data:004E0FEC ArcomageCard <'Troll Keepers', 71, 3, 0, 0, 0, 0, 0, 7, 1, 1, 0, 0, 0,\ +//// .data:004E0FEC 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0FEC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0FEC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E0FEC 0, 0, 0> +//// .data:004E1058 ArcomageCard <'Tower Gremlins', 72, 3, 0, 0, 0, 0, 0, 8, 1, 1, 0, 0, \ +//// .data:004E1058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1058 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1058 0, 0, 0, 0, 0, 0> +//// .data:004E10C4 ArcomageCard <'Full Moon', 73, 3, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, \ +//// .data:004E10C4 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E10C4 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E10C4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E10C4 0, 0> +//// .data:004E1130 ArcomageCard <'Slasher', 74, 3, 0, 0, 0, 0, 0, 5, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E1130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, \ +//// .data:004E1130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1130 0, 0> +//// .data:004E119C ArcomageCard <'Ogre', 75, 3, 0, 0, 0, 0, 0, 6, 1, 1, 0, 0, 0, 0, 0, 0,\ +//// .data:004E119C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, \ +//// .data:004E119C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E119C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E119C 0> +//// .data:004E1208 ArcomageCard <'Rabid Sheep', 76, 3, 0, 0, 0, 0, 0, 6, 1, 1, 0, 0, 0, \ +//// .data:004E1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, \ +//// .data:004E1208 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1208 0, 0, 0, 0, 0, 0> +//// .data:004E1274 ArcomageCard <'Imp', 77, 3, 0, 0, 0, 0, 0, 5, 1, 1, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, \ +//// .data:004E1274 0, 0, 251, 251, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1274 0, 0, 0> +//// .data:004E12E0 ArcomageCard <'Spizzer', 78, 3, 0, 0, 0, 0, 0, 8, 1, 13, 0, 0, 0, 0, \ +//// .data:004E12E0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 0, \ +//// .data:004E12E0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E12E0 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E12E0 0, 0, 0, 0> +//// .data:004E134C ArcomageCard <'Werewolf', 79, 3, 0, 0, 0, 0, 0, 9, 1, 1, 0, 0, 0, 0, \ +//// .data:004E134C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 0, \ +//// .data:004E134C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E134C 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E134C 0, 0, 0> +//// .data:004E13B8 ArcomageCard <'Corrosion Cloud', 80, 3, 0, 0, 0, 0, 0, 11, 1, 14, 0, \ +//// .data:004E13B8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E13B8 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E13B8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, \ +//// .data:004E13B8 0, 0, 0, 0, 0, 0, 0> +//// .data:004E1424 ArcomageCard <'Unicorn', 81, 3, 0, 0, 0, 0, 0, 9, 1, 9, 0, 0, 0, 0, 0,\ +//// .data:004E1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, \ +//// .data:004E1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1424 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1424 0, 0, 0> +//// .data:004E1490 ArcomageCard <'Elvin Archers', 82, 3, 0, 0, 0, 0, 0, 10, 1, 19, 0, 0, \ +//// .data:004E1490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1490 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1490 0, 0, 0, 0, 0, 0> +//// .data:004E14FC ArcomageCard <'Succubus', 83, 3, 0, 0, 0, 0, 0, 14, 1, 1, 0, 0, 0, 0, \ +//// .data:004E14FC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, \ +//// .data:004E14FC 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E14FC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E14FC 0, 0, 0, 0> +//// .data:004E1568 ArcomageCard <'Rock Stompers', 84, 3, 0, 0, 0, 0, 0, 11, 1, 1, 0, 0, \ +//// .data:004E1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, \ +//// .data:004E1568 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1568 0, 0, 0, 0, 0, 0> +//// .data:004E15D4 ArcomageCard <'Thief', 85, 3, 0, 0, 0, 0, 0, 12, 1, 1, 0, 0, 0, 0, 0, \ +//// .data:004E15D4 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 0, 251, 246, 0, 0, 0, \ +//// .data:004E15D4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E15D4 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E15D4 0, 0, 0> +//// .data:004E1640 ArcomageCard <'Stone Giant', 86, 3, 0, 0, 0, 0, 0, 15, 1, 1, 0, 0, 0, \ +//// .data:004E1640 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 246, \ +//// .data:004E1640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1640 0, 0, 0, 0> +//// .data:004E16AC ArcomageCard <'Vampire', 87, 3, 0, 0, 0, 0, 0, 17, 1, 1, 0, 0, 0, 0, \ +//// .data:004E16AC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 251, 246,\ +//// .data:004E16AC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E16AC 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E16AC 0, 0, 0, 0> +//// .data:004E1718 ArcomageCard <'Dragon', 88, 3, 0, 0, 0, 0, 0, 25, 1, 1, 0, 0, 0, 0, 0,\ +//// .data:004E1718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 246, 0, 236, 0,\ +//// .data:004E1718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1718 0, 0, 0> +//// .data:004E1784 ArcomageCard <'Forced Labor', 28, 1, 0, 0, 0, 7, 0, 0, 1, 1, 0, 0, 0, \ +//// .data:004E1784 0, 0, 0, 0, 0, 0, 0, 251, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, \ +//// .data:004E1784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E1784 0, 0, 0, 0> +//// .data:004E17F0 ArcomageCard <'Crystallize', 58, 2, 0, 0, 0, 0, 8, 0, 1, 1, 0, 0, 0, \ +//// .data:004E17F0 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 11, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E17F0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E17F0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\ +//// .data:004E17F0 0, 0, 0, 0> \ No newline at end of file
--- a/AudioPlayer.h Fri Jun 07 11:31:11 2013 +0600 +++ b/AudioPlayer.h Fri Jun 07 11:31:20 2013 +0600 @@ -92,11 +92,14 @@ SOUND_Arcomage_AddResources = 0x79, SOUND_Arcomage_TowerWallDamage = 0x7A, SOUND_Arcomage_DrawCard = 0x7B, + SOUND_Arcomage_124 = 0x7C, SOUND_Arcomage_ProductionDamage = 0x7D, SOUND_Arcomage_ProductionUpgrade = 0x7E, SOUND_Arcomage_127 = 0x7F, SOUND_Arcomage_128 = 0x80, SOUND_Arcomage_TowerUpgrade = 0x81, + SOUND_Arcomage_130 = 0x82, + SOUND_Arcomage_131 = 0x83, SOUND_Arcomage_WallUpgrade = 0x84, SOUND_GoldReceived = 0xC8, SOUND_OpenChest = 208,
--- a/GUIWindow.h Fri Jun 07 11:31:11 2013 +0600 +++ b/GUIWindow.h Fri Jun 07 11:31:20 2013 +0600 @@ -463,7 +463,7 @@ - +void ModalWindow(const char *pStr, int a4);
--- a/Render.cpp Fri Jun 07 11:31:11 2013 +0600 +++ b/Render.cpp Fri Jun 07 11:31:20 2013 +0600 @@ -9,7 +9,7 @@ #include "Mouse.h" #include "GammaControl.h" #include "stru6.h" - +#include "GUIWindow.h" #include "DecalBuilder.h" #include "ParticleEngine.h" #include "Render.h" @@ -10687,21 +10687,6 @@ return true; } -//----- (0040DBD3) -------------------------------------------------------- -void __fastcall Render::SetPixel(Vec2_int_ *pTargetXY, unsigned __int16 uColor) -{ - pRenderer->BeginScene(); - if ( pRenderer->uNumSceneBegins ) - { - int xVal = pTargetXY->x; - int yVal = pTargetXY->y; - if ( xVal >= 0 && xVal <= 639 && yVal >= 0 && yVal <= 479) - { - pRenderer->pTargetSurface[xVal + pRenderer->uTargetSurfacePitch * yVal] = uColor; - } - pRenderer->EndScene(); - } -} //----- (004524D8) -------------------------------------------------------- HWLTexture *RenderHWLContainer::LoadTexture(const char *pName, int bMipMaps)
--- a/Render.h Fri Jun 07 11:31:11 2013 +0600 +++ b/Render.h Fri Jun 07 11:31:20 2013 +0600 @@ -271,7 +271,6 @@ bool Initialize(bool bWindowed, uint uDefaultDevice, bool bColoredLights, uint uDetailLevel, uint bTinting); - static void __fastcall SetPixel(struct Vec2_int_ *pTargetXY, unsigned __int16 uColor); bool IsColorKeySupported(IDirectDraw4 *); void _49EBF1();
--- a/mm7_5.cpp Fri Jun 07 11:31:11 2013 +0600 +++ b/mm7_5.cpp Fri Jun 07 11:31:20 2013 +0600 @@ -9004,74 +9004,8 @@ } -//----- (0040D75D) -------------------------------------------------------- -void pPrimaryWindow_draws_text( int a1, const char *pText, int *pXY ) - { - const char *v3; // ST0C_4@1 - __int64 v4; // qax@1 - - v3 = pText; - v4 = LOBYTE(pFontComic->uFontHeight) - 3; - pPrimaryWindow->DrawText( - pFontComic, - *pXY, - pXY[1] - (((signed int)v4 - HIDWORD(v4)) >> 1) + 3, - 0, - v3, - 0, - 0, - 0); -} - -//----- (0040DB27) -------------------------------------------------------- -void __fastcall DrawRect(Vec4_int_ *pXYZW, unsigned __int16 uColor, char bSolidFill) -{ - Vec4_int_ *v3; // esi@1 - unsigned __int16 v4; // bp@1 - unsigned int i; // ebx@3 - - v3 = pXYZW; - v4 = uColor; - pRenderer->BeginScene(); - pRenderer->SetRasterClipRect(0, 0, 639u, 479u); - if ( bSolidFill ) - { - for ( i = v3->y; (signed int)i <= v3->w; ++i ) - pRenderer->RasterLine2D(v3->x, i, v3->z, i, v4); - } - else - { - pRenderer->RasterLine2D(v3->x, v3->y, v3->z, v3->y, v4); - pRenderer->RasterLine2D(v3->z, v3->y, v3->z, v3->w, v4); - pRenderer->RasterLine2D(v3->z, v3->w, v3->x, v3->w, v4); - pRenderer->RasterLine2D(v3->x, v3->w, v3->x, v3->y, v4); - } - pRenderer->EndScene(); -} - -//----- (0040DDB1) -------------------------------------------------------- -int __fastcall rand_interval(int a, int b) -{ - return a + rand() % (b - a + 1); -} - -//----- (0040DEB4) -------------------------------------------------------- -char *__fastcall inv_strcat(const char *Source, char *Dest) -{ - return strcat(Dest, Source); -} - -//----- (0040DEBE) -------------------------------------------------------- -char *__fastcall inv_strcpy(const char *Source, char *Dest) -{ - return strcpy(Dest, Source); -} - -//----- (0040DEC8) -------------------------------------------------------- -void __fastcall intToString(int val, char *pOut) -{ - sprintf(pOut, "%d", val); -} + + //----- (0040DEDB) -------------------------------------------------------- unsigned int __stdcall R8G8B8_to_TargetFormat(int uColor) @@ -9100,210 +9034,7 @@ } // 40DFA7: using guessed type int __stdcall retzero_sub_40DFA7(int); -//----- (0040DFD1) -------------------------------------------------------- -void stru272::_40DFD1() -{ - stru272 *v1; // esi@1 - stru272_stru0 *v2; // eax@1 - - v1 = this; - v2 = (stru272_stru0 *)malloc(0x5Cu); - v1->ptr_0 = v2; - v2->field_0 = 0x67707274u; - v1->ptr_0->field_8 = 0; - v1->ptr_0->field_30 = 0.0; - v1->ptr_0->field_58 = 0; - v1->ptr_0->field_59 = 0; -} - -//----- (0040DFFE) -------------------------------------------------------- -int stru272_stru0::_40DFFE() -{ - signed int result; // eax@2 - - if ( this->field_0 == 0x67707274 ) - { - this->field_0 = 0x78787878u; - free(this); - result = 0; - } - else - { - result = 2; - } - return result; -} - -//----- (0040E01A) -------------------------------------------------------- -int stru272_stru0::_40E01A(int a2) -{ - signed int result; // eax@2 - - auto a1 = this; - if ( a1->field_0 == 0x67707274 ) - { - a1->field_4 = *(int *)(a2 + 32); - a1->field_C = *(int *)a2 << 16; - a1->field_10 = *(int *)(a2 + 4) << 16; - a1->field_14 = *(int *)(a2 + 8) << 16; - a1->field_18 = *(int *)(a2 + 12) << 16; - a1->field_1C = *(int *)(a2 + 16); - a1->field_20 = *(int *)(a2 + 20); - a1->field_24 = *(int *)(a2 + 24); - a1->field_28 = *(float *)(a2 + 28) * 65536.0; - LODWORD(a1->field_2C) = *(int *)(a2 + 36); - a1->field_34 = (signed __int64)(*(float *)(a2 + 40) * 65536.0); - a1->field_38 = (signed __int64)(*(float *)(a2 + 44) * 65536.0); - a1->field_3C = *(int *)(a2 + 48); - a1->field_40 = *(int *)(a2 + 52); - a1->field_54 = *(int *)(a2 + 56); - a1->field_59 = 1; - result = 0; - } - else - { - result = 2; - } - return result; -} - -//----- (0040E0F5) -------------------------------------------------------- -int stru272_stru0::_40E0F5(char a2, char a3) -{ - signed int result; // eax@2 - int v4; // edx@7 - int v5; // eax@7 - - auto a1 = this; - if ( a1->field_0 == 0x67707274 ) - { - if ( a2 ) - { - a1->field_8 = 0; - a1->field_30 = 0.0; - } - if ( a1->field_59 && a3 ) - { - v4 = a1->field_4; - v5 = a1->field_54; - do - { - *(int *)v5 = 0; - v5 += 28; - --v4; - } - while ( v4 ); - a1->field_58 = 0; - } - result = 0; - } - else - { - result = 2; - } - return result; -} - -//----- (0040E133) -------------------------------------------------------- -int stru272_stru0::_40E133() -{ - stru272_stru0 *v1; // edi@1 - int v3; // ST18_4@3 - double v4; // st7@3 - double v5; // st6@4 - char v6; // bl@8 - int v7; // esi@8 - int v8; // ecx@10 - signed int v9; // eax@10 - int v10; // ecx@10 - signed int v11; // eax@10 - signed int v12; // edx@12 - signed int v13; // edx@12 - int v14; // [sp+8h] [bp-10h]@8 - int v15; // [sp+Ch] [bp-Ch]@8 - float v16; // [sp+14h] [bp-4h]@3 - - v1 = this; - if ( this->field_0 != 0x67707274 ) - return 2; - v3 = this->field_8; - v16 = this->field_30; - v4 = (double)v3; - if ( v3 > 0 ) - { - v5 = v16 + this->field_2C; - v16 = v5; - if ( v5 > v4 ) - v16 = v4; - } - if ( v16 >= 1.0 || this->field_58 ) - { - v6 = 0; - v7 = this->field_54; - v14 = (signed __int64)this->field_28; - v15 = this->field_4; - while ( *(int *)v7 <= 0 ) - { - if ( v16 >= 1.0 ) - { - *(int *)v7 = v1->field_3C + rand() % (v1->field_40 - v1->field_3C + 1); - *(int *)(v7 + 20) = (rand() % 17 - 8) << 16; - *(int *)(v7 + 24) = (rand() % 17 - 8) << 16; - v12 = v1->field_C + rand() % (v1->field_14 - 1 - v1->field_C + 1); - *(int *)(v7 + 12) = v12; - *(int *)(v7 + 4) = v12 >> 16; - v16 = v16 - 1.0; - v13 = v1->field_10 + rand() % (v1->field_18 - 1 - v1->field_10 + 1); - *(int *)(v7 + 16) = v13; - *(int *)(v7 + 8) = v13 >> 16; - --v1->field_8; - goto LABEL_13; - } -LABEL_14: - v7 += 28; - --v15; - if ( !v15 ) - { - v1->field_58 = v6; - v1->field_30 = v16; - return 0; - } - } - v8 = *(int *)(v7 + 20); - --*(int *)v7; - v9 = v8 + *(int *)(v7 + 12); - v10 = v14 + *(int *)(v7 + 24); - *(int *)(v7 + 12) = v9; - *(int *)(v7 + 4) = v9 >> 16; - v11 = v10 + *(int *)(v7 + 16); - *(int *)(v7 + 24) = v10; - *(int *)(v7 + 16) = v11; - *(int *)(v7 + 8) = v11 >> 16; -LABEL_13: - v6 = 1; - goto LABEL_14; - } - return 0; -} - -//----- (0040E2A7) -------------------------------------------------------- -int stru272_stru0::_40E2A7() -{ - int result; // eax@2 - - if ( this->field_0 == 0x67707274 ) - { - if ( this->field_8 <= 0 ) - result = this->field_58 != 0 ? 2 : 0; - else - result = 1; - } - else - { - result = 3; - } - return result; -} + //----- (0040F82D) -------------------------------------------------------- void __fastcall ZBuffer_Fill(int *pZBuffer, int uTextureId, int iZValue)
--- a/mm7_data.cpp Fri Jun 07 11:31:11 2013 +0600 +++ b/mm7_data.cpp Fri Jun 07 11:31:20 2013 +0600 @@ -362,25 +362,15 @@ int dword_4DF380[5]={0,1024,2560,5120,10240}; // weak //int dword_4DF390; // weak char Str2[777]; // idb -int dword_4DF3A4; // weak + char byte_4E185C; // weak -char am_byte_4E185D; // weak + char byte_4E185E; // weak -int amuint_4E1860; // weak -int amuint_4E1864; // weak -int amuint_4E1868; // weak -int amuint_4E186C; // weak -int amuint_4E1870; // weak -int dword_4E1874; // weak -int dword_4E1878; // weak + + + float flt_4D84E8 = 0.0f; -int dword_4E187C; // weak -int dword_4E1880; // weak -int dword_4E1884; // weak -int dword_4E1888; // weak -char pArcomagePlayer2Name[8]; -char pArcomagePlayer1Name[8]; -char pDeckMaster[12]; + char aIxf[4]; // idb _UNKNOWN unk_4E19FC; // weak char aD[777]; // idb @@ -908,8 +898,8 @@ _UNKNOWN unk_4FAA20; // weak char byte_4FAA24; // weak HWND dword_4FAA28; // idb -char byte_4FAA2C; // weak -char byte_4FAA2D; // weak + + char byte_4FAA2E; // weak int amuint_4FAA34; // weak int amuint_4FAA38; // weak @@ -921,12 +911,12 @@ int amuint_4FAA5C_blt_xy[2]; int dword_4FAA64; // weak int dword_4FAA68; // weak -int amuint_4FAA6C; // idb + int dword_4FAA70; // weak char byte_4FAA74; // weak char am_byte_4FAA75; // weak char am_byte_4FAA76; // weak -char am_byte_4FAA77; // weak + int amuint_4FAA78[777]; // weak char am_byte_4FAA7C[777]; // weak int amuint_4FAA80[777]; // weak @@ -935,10 +925,10 @@ int amuint_4FAA8C[777]; // weak int amuint_4FAA90[777][2]; int dword_4FABB8; // weak -signed int dword_4FABBC; // idb -unsigned int amuint_4FABC0; // idb + + int amuint_4FABC4; // weak -int dword_4FABC8; // weak + char byte_4FABD0[777]; // weak char byte_4FABD1[777]; // weak _UNKNOWN unk_4FABD4; // weak @@ -957,11 +947,11 @@ int dword_4FAC08[777]; // weak int dword_4FAC0C[777]; // weak _UNKNOWN unk_5052C8; // weak -int dword_505314[777]; // weak -char byte_5054C8[32]; // idb -char byte_5054E8[108]; -int dword_505554[777]; // weak -_UNKNOWN unk_505704; // weak + + + + + char byte_505880; // weak char byte_505881; // weak int amuint_505884; // weak @@ -1130,7 +1120,7 @@ int dword_591178_teleporty; // weak int dword_59117C_teleportx; // weak char byte_591180[6][100]; // idb -struct NPCData *HouseNPCData[6];//array_5913D8 +struct NPCData *HouseNPCData[60];//array_5913D8 struct Texture *pTexture_591428; struct Texture *pTexture_outside; // idb
--- a/mm7_data.h Fri Jun 07 11:31:11 2013 +0600 +++ b/mm7_data.h Fri Jun 07 11:31:20 2013 +0600 @@ -312,25 +312,15 @@ extern int dword_4DF380[]; // weak extern int dword_4DF390; // weak extern char Str2[]; // idb -extern int dword_4DF3A4; // weak + extern char byte_4E185C; // weak -extern char am_byte_4E185D; // weak + extern char byte_4E185E; // weak -extern int amuint_4E1860; // weak -extern int amuint_4E1864; // weak -extern int amuint_4E1868; // weak -extern int amuint_4E186C; // weak -extern int amuint_4E1870; // weak -extern int dword_4E1874; // weak -extern int dword_4E1878; // weak + + extern float flt_4D84E8; -extern int dword_4E187C; // weak -extern int dword_4E1880; // weak -extern int dword_4E1884; // weak -extern int dword_4E1888; // weak -extern char pArcomagePlayer2Name[8]; -extern char pArcomagePlayer1Name[8]; -extern char pDeckMaster[12]; + + extern char aIxf[4]; // idb extern _UNKNOWN unk_4E19FC; // weak extern char aD[]; // idb @@ -549,8 +539,7 @@ extern _UNKNOWN unk_4FAA20; // weak extern char byte_4FAA24; // weak extern HWND dword_4FAA28; // idb -extern char byte_4FAA2C; // weak -extern char byte_4FAA2D; // weak + extern char byte_4FAA2E; // weak extern int amuint_4FAA34; // weak extern int amuint_4FAA38; // weak @@ -562,12 +551,12 @@ extern int amuint_4FAA5C_blt_xy[2]; extern int dword_4FAA64; // weak extern int dword_4FAA68; // weak -extern int amuint_4FAA6C; // idb + extern int dword_4FAA70; // weak extern char byte_4FAA74; // weak extern char am_byte_4FAA75; // weak extern char am_byte_4FAA76; // weak -extern char am_byte_4FAA77; // weak + extern int amuint_4FAA78[777]; // weak extern char am_byte_4FAA7C[777]; // weak extern int amuint_4FAA80[777]; // weak @@ -576,10 +565,10 @@ extern int amuint_4FAA8C[777]; // weak extern int amuint_4FAA90[777][2]; extern int dword_4FABB8; // weak -extern signed int dword_4FABBC; // idb -extern unsigned int amuint_4FABC0; // idb + + extern int amuint_4FABC4; // weak -extern int dword_4FABC8; // weak + extern char byte_4FABD0[]; // weak extern char byte_4FABD1[]; // weak extern _UNKNOWN unk_4FABD4; // weak @@ -598,11 +587,9 @@ extern int dword_4FAC08[]; // weak extern int dword_4FAC0C[]; // weak extern _UNKNOWN unk_5052C8; // weak -extern int dword_505314[]; // weak + extern char byte_5054C8[32]; // idb -extern char byte_5054E8[108]; -extern int dword_505554[]; // weak -extern _UNKNOWN unk_505704; // weak + extern char byte_505880; // weak extern char byte_505881; // weak extern int amuint_505884; // weak @@ -773,7 +760,7 @@ extern int dword_591178_teleporty; // weak extern int dword_59117C_teleportx; // weak extern char byte_591180[6][100]; // idb -extern struct NPCData *HouseNPCData[6]; +extern struct NPCData *HouseNPCData[60]; extern struct Texture *pTexture_591428; extern struct Texture *pTexture_outside; // idb @@ -1169,47 +1156,7 @@ unsigned int __fastcall SearchActorByGroup(unsigned int *pTotalActors, unsigned int uGroup); unsigned int __fastcall SearchActorByID(unsigned int *pTotalActors, unsigned int a2); void __cdecl PrepareArcomage(); -char __cdecl am_409FE9(); -char __cdecl am_40A198(); -int __fastcall am_40A255(int a1, int a2); -int __fastcall am_40A283(int a1, int a2); -signed int __fastcall am_40A324(int a1); -int __fastcall am_40A346(int a1); -void __cdecl am_40A383(); -bool __cdecl am_40A514(); -char __thiscall am_40A560(unsigned int _this); -void __thiscall am_blts(int a1); // idb -void __cdecl am_40AA4E(); -void __cdecl am_chroma_blts(); -void __cdecl am_DrawUI(); -void __fastcall am_40B102(int a1, char *a2, int *pXY); // idb -void __fastcall am_40B17E(int a1, int a2, int *pXY); // idb -void __fastcall am_40B1F3(int a1, int a2, int a3); -void __fastcall am_40B268(int a1, char *a2, int *pXY); // idb -void __cdecl am_chroma_and_copy_blts(); -void __cdecl am_chroma_blt(); -void __cdecl am_40B4B9(); -void __fastcall am_40B76F(int a1); -int __fastcall am_40BB49(int a1); -signed int __fastcall am_40BB67(int a1); -char __fastcall am_40BCFB(int a1, signed int a2); -bool __fastcall am_40BE0E(int a1, signed int a2); -bool __fastcall am_40BF15(int a1, int a2); -void __fastcall am_40BF77(int a1, unsigned int uCardID); // idb -int __fastcall am_40D2B4(struct Vec2_int_ *, int); // weak -int __fastcall am_40D402(int, int); // weak -int __cdecl am_40D444(); -void ModalWindow(const char *pStr, int a4); -void pPrimaryWindow_draws_text(int a1, const char *pText, int *pXY); -void __thiscall am_BeginScene(unsigned __int16 *pPcxPixels, int a2, int a3); // idb -void __fastcall Blt_Chroma(struct ArcomageRect *pSrcXYZW, int *pTargetXY, int a3, int a4); -void __fastcall Blt_Copy(struct ArcomageRect *pSrcXYZW, int *pTargetXY, int a3); -void __cdecl am_EndScene(); -void __fastcall DrawRect(struct Vec4_int_ *pXYZW, unsigned __int16 uColor, char bSolidFill); // idb -int __fastcall rand_interval(int a, int b); // idb -char *__fastcall inv_strcat(const char *Source, char *Dest); -char *__fastcall inv_strcpy(const char *Source, char *Dest); -void __fastcall intToString(int val, char *pOut); + // int __cdecl crt_retnull_sub(); unsigned int __stdcall R8G8B8_to_TargetFormat(int uColor); // idb unsigned short TargetColor(unsigned __int16 r, unsigned __int16 g, unsigned __int16 b); // idb