Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
5,207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 212.14 KB | None | 0 0
  1. #ifndef DOES_NOT_UPDATE
  2. #define INTERNAL_VERSION "2.1.1"
  3. #else
  4. #define INTERNAL_VERSION "Debug Build"
  5. #endif
  6.  
  7. #define _CRT_SECURE_NO_DEPRECATE
  8. #pragma comment( lib, "comctl32.lib" )
  9.  
  10. #include "sqrt.h"
  11. #include "XPMData.h"
  12. #include <stdio.h>
  13. #include <math.h>
  14. #include <windows.h>
  15. #include <commctrl.h>
  16. #include "scintilla.h"
  17. #include "scilexer.h"
  18. #ifndef DOES_NOT_UPDATE
  19. #include <winsock.h>
  20. #endif
  21. #include "resource.h"
  22.  
  23. #define WIDTH 640
  24. #define HEIGHT 480
  25.  
  26. #define STYLE_NORMAL 10
  27. #define STYLE_IMPORTANT 11
  28. #define STYLE_SPECIAL 12
  29. #define STYLE_COMMAND 13
  30. #define STYLE_ARGUMENT 14
  31. #define STYLE_MESSAGE 15
  32. #define STYLE_LABEL 16
  33.  
  34. LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  35. void UpdateScintLine();
  36. void GoToLine(unsigned int,unsigned int);
  37. unsigned int modechar;
  38.  
  39. unsigned int CalcMem=0;
  40. char FileOpen[MAX_PATH],FileOpen2[MAX_PATH+40],FileOpen3[MAX_PATH],RomOpen[MAX_PATH],
  41. RomOpen2[MAX_PATH],SuperBuffer[MAX_PATH*4],GreatBuffer[MAX_PATH*2],DirBuffer[MAX_PATH*2],
  42. DefRomPath[MAX_PATH],DefScriptPath[MAX_PATH],MegaBuffer[10240];
  43. char AOT=1,autoautocomplete=0,FlagsShown=0;
  44. HWND MainWnd,StatusBar,Text,FindReplaceWin,GotoWin,FFSWin,
  45. DecWin,GenWin,InputWin,Input2Win,NoteWin,ToolBar,HexWin,
  46. MovePlanWin,FlagsWin,ScriptSearchWin,LockWin
  47. #ifdef SCRAP
  48. ,PickupWin,ScrapPunk
  49. #endif
  50. ;
  51. HANDLE ScintLib,PKSV,RomFile=NULL,FileSave
  52. #ifdef SCRAP
  53. ,SearchBox
  54. #endif
  55. ;
  56. int (__cdecl *VersionMismatch)(unsigned char*);
  57. int (__cdecl *DetermineMode)(unsigned char*);
  58. char* (__cdecl *decompile)(unsigned char*,int,int);
  59. char* (__cdecl *decompileASM)(unsigned char*,int);
  60. char* (__cdecl *decompileLevel)(unsigned char*,int);
  61. char* (__cdecl *decompileText)(unsigned char*,int);
  62. char* (__cdecl *decompileMart)(unsigned char*,int);
  63. char* (__cdecl *decompileMoves)(unsigned char*,int);
  64. char* (__cdecl *decompilePointer)(unsigned char*,int);
  65. char* (__cdecl *decompileAttacks)(unsigned char*,int);
  66. char* (__cdecl *NewMode)(int);
  67. int (__cdecl *compile)(unsigned char*,unsigned char*);
  68. int (__cdecl *DebugCompile)(unsigned char*,unsigned char*);
  69. int (__cdecl *SetDynamic)(int,int);
  70. #ifdef SCRAP
  71. int (__cdecl *CreateListClass)();
  72. #endif
  73.  
  74. unsigned int LastCalc;
  75. signed int LastFlag=-1;
  76. #define OP_NONE 0
  77. #define OP_MULT 1
  78. #define OP_DIVI 2
  79. #define OP_ADIT 3
  80. #define OP_SUBT 4
  81. #define OP_POWR 5
  82. #define OP_SHIL 6
  83. #define OP_SHIR 7
  84. #define OP_ROTL 8
  85. #define OP_ROTR 9
  86. #define OP_MODU 10
  87. #define OP_ASCI 11
  88. #define OP_BXOR 12
  89. #define OP_BWOR 13
  90. #define OP_BAND 14
  91.  
  92. #define GBA 0
  93. #define GBC 1
  94.  
  95. char CalcPressed=0,LastCalcOp=OP_NONE,NotSaved=0,collapseatend=1,
  96. collapselines=0,cancelled=0,inputrunning=0,pokemon_version=GBA;
  97. #define FIRE_RED 0
  98. #define RUBY 1
  99. #define GOLD 2
  100. #define DIAMOND 3
  101. #define CRYSTAL 4
  102. HINSTANCE inst;
  103. char strbuffer[2048],strbuffer2[2048];
  104. char*GetString1(unsigned short id)
  105. {
  106. LoadString(inst,id,strbuffer,sizeof(strbuffer));
  107. return strbuffer;
  108. }
  109. char*GetString2(unsigned short id)
  110. {
  111. LoadString(inst,id,strbuffer2,sizeof(strbuffer2));
  112. return strbuffer2;
  113. }
  114. #include "print.h"
  115. BOOL CALLBACK FindReplaceFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  116. BOOL CALLBACK GotoFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  117. BOOL CALLBACK FFSFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  118. BOOL CALLBACK DecFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  119. BOOL CALLBACK GenFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  120. BOOL CALLBACK InputFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  121. BOOL CALLBACK Input2Func(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  122. BOOL CALLBACK NoteFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  123. BOOL CALLBACK HexFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  124. BOOL CALLBACK MovePlanFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  125. BOOL CALLBACK FlagsFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  126. BOOL CALLBACK ScriptSearchFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  127. BOOL CALLBACK LockFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  128. #ifdef SCRAP
  129. BOOL CALLBACK PickupFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
  130. #endif
  131. void FillItems(HWND);
  132. unsigned char search=0xff;
  133. DWORD maintid;
  134. #define SendEditor(x,y,z) SendMessage(Text,x,y,z)
  135.  
  136. void SaveRegSetting(char*sub,char*set,int val)
  137. {
  138. HKEY regkey;
  139. DWORD dummy;
  140. char subbuf[2000];
  141. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  142. if (sub&&*sub)
  143. {
  144. strcat(subbuf,"\\");
  145. strcat(subbuf,sub);
  146. }
  147. RegCreateKeyEx(HKEY_CURRENT_USER,subbuf,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,&dummy);
  148. RegSetValueEx(regkey,set,0,REG_DWORD,(CONST BYTE*)&val,4);
  149. RegCloseKey(regkey);
  150. }
  151.  
  152. int LoadRegSetting(char*sub,char*set)
  153. {
  154. int Data;
  155. DWORD DataSize,Type;
  156. HKEY regkey;
  157. char subbuf[2000];
  158. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  159. if (sub&&*sub)
  160. {
  161. strcat(subbuf,"\\");
  162. strcat(subbuf,sub);
  163. }
  164. RegOpenKeyEx(HKEY_CURRENT_USER,subbuf,0,KEY_READ,&regkey);
  165. DataSize=sizeof(Data);
  166. Data=0;
  167. RegQueryValueEx(regkey,set,NULL,&Type,(LPBYTE)&Data,&DataSize);
  168. RegCloseKey(regkey);
  169. return Data;
  170. }
  171.  
  172. int LoadRegSettingDef(char*sub,char*set,int def)
  173. {
  174. int Data;
  175. DWORD DataSize,Type;
  176. HKEY regkey;
  177. char subbuf[2000];
  178. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  179. if (sub&&*sub)
  180. {
  181. strcat(subbuf,"\\");
  182. strcat(subbuf,sub);
  183. }
  184. RegOpenKeyEx(HKEY_CURRENT_USER,subbuf,0,KEY_READ,&regkey);
  185. DataSize=sizeof(Data);
  186. Data=def;
  187. RegQueryValueEx(regkey,set,NULL,&Type,(LPBYTE)&Data,&DataSize);
  188. RegCloseKey(regkey);
  189. return Data;
  190. }
  191.  
  192. void SaveRegSettingStr(char*sub,char*set,char*val)
  193. {
  194. HKEY regkey;
  195. DWORD dummy;
  196. char subbuf[2000];
  197. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  198. if (sub&&*sub)
  199. {
  200. strcat(subbuf,"\\");
  201. strcat(subbuf,sub);
  202. }
  203. RegCreateKeyEx(HKEY_CURRENT_USER,subbuf,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,&dummy);
  204. RegSetValueEx(regkey,set,0,REG_SZ,val,strlen(val)+1);
  205. RegCloseKey(regkey);
  206. }
  207.  
  208. char* LoadRegSettingStr(char*sub,char*set)
  209. {
  210. DWORD DataSize,Type;
  211. HKEY regkey;
  212. char subbuf[2000];
  213. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  214. if (sub&&*sub)
  215. {
  216. strcat(subbuf,"\\");
  217. strcat(subbuf,sub);
  218. }
  219. *GreatBuffer=0;
  220. RegOpenKeyEx(HKEY_CURRENT_USER,subbuf,0,KEY_READ,&regkey);
  221. DataSize=sizeof(GreatBuffer);
  222. RegQueryValueEx(regkey,set,NULL,&Type,(LPBYTE)&GreatBuffer,&DataSize);
  223. RegCloseKey(regkey);
  224. GreatBuffer[sizeof(GreatBuffer)-1]=0;
  225. return GreatBuffer;
  226. }
  227.  
  228. signed int PointerToOffset(unsigned int ptr)
  229. {
  230. unsigned int pointer=0;
  231. unsigned int bank=0;
  232. unsigned int offset=0;
  233. bank=ptr&0xFF;
  234. pointer=(ptr&0xFFFF00)>>8;
  235. if (pointer<0x4000||pointer>0x7FFF)return -1;
  236. pointer&=0x3FFF;
  237. pointer|=(bank&3)<<14;
  238. bank>>=2;
  239. return pointer|(bank<<16);
  240. }
  241. signed int OffsetToPointer(unsigned int offset)
  242. {
  243. unsigned int pointer=0;
  244. unsigned int bank=0;
  245.  
  246. bank=((offset&0xFF0000)>>14);
  247. if (bank>0xFF) {
  248. return -1;
  249. }
  250. if ((offset&0xFF000000)) {
  251. return -1;
  252. }
  253. pointer=offset&0xFFFF;
  254. bank|=((pointer&0xF000)>>14);
  255. pointer&=0x3FFF;
  256. pointer|=0x4000;
  257. return (pointer<<8)|bank;
  258. }
  259.  
  260. #ifndef DOES_NOT_UPDATE
  261. #ifndef ZH
  262. #pragma comment( lib, "wsock32.lib" )
  263. //UPDATEME
  264. BOOL CALLBACK UpdatesDlgProc(HWND,UINT,WPARAM,LPARAM);
  265. DWORD WINAPI UpdateMe(LPVOID nothing)
  266. {
  267. WSADATA wsaData;
  268. SOCKET sock;
  269. struct sockaddr_in address;
  270. struct hostent * host;
  271. int i,j,sl_sock;
  272. char buffer[4096],*UpdateBuffer;
  273.  
  274. if (WSAStartup(MAKEWORD(1,1),&wsaData)==0)
  275. {
  276. if ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
  277. {
  278. MessageBox(NULL,GetString1(3000),GetString2(3001),0x10);
  279. }
  280. address.sin_family=AF_INET;
  281. address.sin_port=htons(80);
  282. if ((host=gethostbyname("pk-script-view.sourceforge.net"))!=NULL)
  283. {
  284. address.sin_addr.s_addr=*((unsigned long*)host->h_addr);
  285. connect(sock,(struct sockaddr*)&address,sizeof(address));
  286. #define get_update "GET /ver.txt HTTP/1.1\nHost: pk-script-view.sourceforge.net\nAccept-Encoding: None\nConnection: Close\n\n"
  287. send(sock,get_update,(int)strlen(get_update),0);
  288. recv(sock,buffer,4096,0);
  289. i=0;
  290. while (((buffer[i]>'9'||buffer[i]<'0')||(buffer[i+1]>'9'||buffer[i+1]<'0'))&&buffer[i]!=0)
  291. {
  292. i++;
  293. }
  294. if (buffer[i]=='2')
  295. {
  296. i=0;
  297. sl_sock=(int)strlen(buffer);
  298. while (i<sl_sock)
  299. {
  300. if (buffer[i]=='V'&&buffer[i+1]=='='&&buffer[i+2]=='=')
  301. {
  302. break;
  303. }
  304. i++;
  305. }
  306. if (i==sl_sock)
  307. return 0;
  308. j=0;
  309. while (j+i<sl_sock)
  310. {
  311. if (buffer[i+j]=='\n') {
  312. buffer[i+j]=0;
  313. break;
  314. }
  315. j++;
  316. }
  317. if (strcmp(INTERNAL_VERSION,(buffer+i+3)))
  318. {
  319. i+=3;
  320. j=0;
  321. while (j<(int)strlen(buffer+i))
  322. {
  323. if (buffer[i+j]=='.') {
  324. buffer[i+j]='-';
  325. }
  326. j++;
  327. }
  328. if (DialogBox(inst,MAKEINTRESOURCE(3077),MainWnd,UpdatesDlgProc))
  329. {
  330. UpdateBuffer=alloca(79+strlen(buffer+i));
  331. strcpy(UpdateBuffer,"http://downloads.sourceforge.net/pk-script-view/pksvui_pkg");
  332. strcat(UpdateBuffer,buffer+i);
  333. strcat(UpdateBuffer,".zip?use_mirror=osdn");
  334. ShellExecute(GenWin,NULL,UpdateBuffer,NULL,NULL,SW_SHOWDEFAULT);
  335. }
  336. }
  337. else if(nothing)
  338. {
  339. DialogBox(inst,MAKEINTRESOURCE(3076),MainWnd,UpdatesDlgProc);//Dialog, NO UPDATE AVAILABLE
  340. }
  341. }
  342. }
  343. }
  344. else
  345. {
  346. MessageBox(NULL,GetString1(3004),GetString2(3001),0x10);
  347. }
  348. WSACleanup();
  349. return 0;
  350. }
  351. BOOL CALLBACK UpdatesDlgProc(HWND h,UINT m,WPARAM w,LPARAM l)
  352. {
  353. switch(m)
  354. {
  355. case WM_INITDIALOG:
  356. CheckDlgButton(h,1,LoadRegSettingDef(NULL,"AutoUpdate",1));
  357. break;
  358. case WM_COMMAND:
  359. switch(LOWORD(w))
  360. {
  361. case 1:
  362. SaveRegSetting(NULL,"AutoUpdate",IsDlgButtonChecked(h,1)==BST_CHECKED);
  363. break;
  364. case 2:
  365. EndDialog(h,1);
  366. break;
  367. case 3:
  368. EndDialog(h,0);
  369. break;
  370. }
  371. break;
  372. case WM_CLOSE:
  373. EndDialog(h,0);
  374. break;
  375. default:
  376. return 0;
  377. }
  378. return 1;
  379. }
  380. #endif
  381. #endif
  382. //TOLOWER
  383. char*ToLower(char*str)
  384. {
  385. while (*str!=0)
  386. {
  387. if (*str>='A'&&*str<='Z')
  388. {
  389. *str+=' '; //Coincidence?
  390. }
  391. str++;
  392. }
  393. return str;
  394. }
  395. //CTOLOWER
  396. char cToLower(char chr)
  397. {
  398. if (chr>='A'&&chr<='Z')
  399. chr+=' ';
  400. return chr;
  401. }
  402. //GETDIRFROMGREATBUFFER
  403. void GetDirFromGreatBuffer()
  404. {
  405. /*
  406. #ifdef MSVC
  407. char*a=GreatBuffer;
  408. __asm
  409. {
  410. mov eax,a
  411. cmp byte ptr [eax],0x22
  412. pushf
  413. xor edx,edx
  414. mov ebx,eax
  415. popf
  416. jne NoQuote
  417. mov dl,0x22
  418. BkToLp:
  419. inc ebx
  420. NoQuote:
  421. cmp byte ptr [ebx],dl
  422. jnz BkToLp
  423. BkToSLp:
  424. dec ebx
  425. cmp byte ptr [ebx],0x5C
  426. jnz BkToSLp
  427. inc ebx
  428. mov byte ptr [ebx],0
  429. xor ecx,ecx
  430. cmp edx,0
  431. je GDGBEnd
  432. BkToTlp:
  433. mov bl,byte ptr [eax+ecx+1]
  434. mov byte ptr [eax+ecx],bl
  435. inc ecx
  436. cmp byte ptr [eax+ecx],0
  437. jnz BkToTlp
  438. GDGBEnd:
  439. }
  440. return;
  441. #else
  442. asm volatile ( ".intel_syntax noprefix\n"
  443. "push %%ebx\n"
  444. "push %%ecx\n"
  445. "push %%edx\n"
  446. "cmp byte ptr [%%eax],0x22\n"
  447. "pushf\n"
  448. "xor %%edx,%%edx\n"
  449. "mov %%ebx,%%eax\n"
  450. "popf\n"
  451. "jne NoQuote\n"
  452. "mov %%dl,0x22\n"
  453. "BkToLp:inc %%ebx\n"
  454. "NoQuote:cmp byte ptr [%%ebx],%%dl\n"
  455. "jnz BkToLp\n"
  456. "BkToSLp:dec %%ebx\n"
  457. "cmp byte ptr [%%ebx],0x5C\n"
  458. "jnz BkToSLp\n"
  459. "inc %%ebx\n"
  460. "mov byte ptr [%%ebx],0\n"
  461. "xor %%ecx,%%ecx\n"
  462. "cmp %%edx,0\n"
  463. "je GDGBEnd\n"
  464. "BkToTlp:mov %%bl,byte ptr [%%eax+%%ecx+1]\n"
  465. "mov byte ptr [%%eax+%%ecx],%%bl\n"
  466. "inc %%ecx\n"
  467. "cmp byte ptr [%%eax+%%ecx],0\n"
  468. "jnz BkToTlp\n"
  469. "GDGBEnd:\n"
  470. "pop %%edx\n"
  471. "pop %%ecx\n"
  472. "pop %%ebx\n"
  473. ".att_syntax\n"::"a"(GreatBuffer));
  474. return;
  475. #endif
  476. */
  477. register char* b=GreatBuffer;
  478. register int using_quotes=0;
  479. if (*b=='"')
  480. {
  481. using_quotes='"';
  482. b++;
  483. }
  484. while (*b&&*b!=using_quotes)b++;
  485. while (b>GreatBuffer&&*b!='\\')b--;
  486. if (*b=='\\')*b=0;
  487. if (*GreatBuffer=='"')
  488. {
  489. b=GreatBuffer;
  490. while (*b)
  491. {
  492. *b=b[1];
  493. b++;
  494. }
  495. }
  496. }
  497. //GETINPUT
  498. void GetInput(char*title,char*prompt,char*def)
  499. {
  500. inputrunning=1;
  501. SetWindowText(InputWin,title);
  502. SetDlgItemText(InputWin,3,prompt);
  503. SetDlgItemText(InputWin,4,def);
  504. ShowWindow(InputWin,SW_SHOW);
  505. SetForegroundWindow(InputWin);
  506. SetFocus(GetDlgItem(InputWin,4));
  507. EnableWindow(MainWnd,0);
  508. }
  509. //GETINPUT
  510. void GetInput2(char*title,char*prompt,char*def,void (*func)(HWND))
  511. {
  512. inputrunning=1;
  513. func(GetDlgItem(Input2Win,4));
  514. SetWindowText(Input2Win,title);
  515. SetDlgItemText(Input2Win,3,prompt);
  516. SetDlgItemText(Input2Win,4,def);
  517. ShowWindow(Input2Win,SW_SHOW);
  518. SetForegroundWindow(Input2Win);
  519. SetFocus(GetDlgItem(Input2Win,4));
  520. EnableWindow(MainWnd,0);
  521. SendMessage(GetDlgItem(Input2Win,4),CB_SHOWDROPDOWN,1,0);
  522. }
  523. #ifdef SCRAP
  524. #include "miscfuncs.h"
  525. #endif
  526. int foundfont=0;
  527. //FONTENUMARATOR
  528. int CALLBACK FontEnumerator(ENUMLOGFONT *enf,NEWTEXTMETRIC*z,int x,LPARAM c)
  529. {
  530. ToLower(enf->elfFullName);
  531. if (!strcmp(enf->elfFullName,"lucida console"))
  532. foundfont=1;
  533. return 1;
  534. }
  535. TBBUTTON ToolButtons[]={
  536. {0,ID_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  537. {1,ID_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  538. {2,ID_SAVE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  539. {3,ID_SAVEAS,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  540. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  541. {7,1015,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  542. {8,1016,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  543. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  544. {4,1008,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  545. {5,1009,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  546. {6,1010,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  547. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  548. {17,1012,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  549. {15,1032,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  550. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  551. {14,1006,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  552. {9,1005,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  553. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  554. {10,1014,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  555. {11,1004,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  556. {12,1030,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  557. {19,1202,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  558. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  559. {16,1111,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  560. {18,1013,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0},
  561. {0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,-1},
  562. {13,1100,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0}
  563. };
  564.  
  565. void SaveRegSettingBin(char*sub,char*set,char*val,int len)
  566. {
  567. HKEY regkey;
  568. DWORD dummy;
  569. char subbuf[2000];
  570. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  571. if (sub&&*sub)
  572. {
  573. strcat(subbuf,"\\");
  574. strcat(subbuf,sub);
  575. }
  576. RegCreateKeyEx(HKEY_CURRENT_USER,subbuf,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,&dummy);
  577. RegSetValueEx(regkey,set,0,REG_BINARY,(CONST BYTE*)val,len);
  578. RegCloseKey(regkey);
  579. }
  580.  
  581. int LoadRegSettingBin(char*sub,char*set,char**data)
  582. {
  583. DWORD DataSize,Type;
  584. HKEY regkey;
  585. char subbuf[2000];
  586. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  587. if (sub&&*sub)
  588. {
  589. strcat(subbuf,"\\");
  590. strcat(subbuf,sub);
  591. }
  592. *GreatBuffer=0;
  593. RegOpenKeyEx(HKEY_CURRENT_USER,subbuf,0,KEY_READ,&regkey);
  594. DataSize=0;
  595. RegQueryValueEx(regkey,set,NULL,&Type,NULL,&DataSize);
  596. *data=GlobalAlloc(GPTR,DataSize);
  597. RegQueryValueEx(regkey,set,NULL,&Type,(LPBYTE)*data,&DataSize);
  598. RegCloseKey(regkey);
  599. return DataSize;
  600. }
  601.  
  602. void DeleteRegSetting(char*sub,char*set)
  603. {
  604. HKEY regkey;
  605. char subbuf[2000];
  606. strcpy(subbuf,"Software\\Score_Under\\PKSV-UI");
  607. if (sub&&*sub)
  608. {
  609. strcat(subbuf,"\\");
  610. strcat(subbuf,sub);
  611. }
  612. RegOpenKeyEx(HKEY_CURRENT_USER,subbuf,0,KEY_WRITE,&regkey);
  613. RegDeleteValue(regkey,set);
  614. RegCloseKey(regkey);
  615. }
  616.  
  617. short*FlagArr=NULL;
  618. int FlagArrAlloc=0;
  619. int FlagArrLen=0;
  620. void AddFlag(char*a,char*b,char*c)
  621. {
  622. short*newarr;
  623. int flag;
  624. if ((FlagArrAlloc>>1)<=FlagArrLen)
  625. {
  626. newarr=GlobalAlloc(GPTR,FlagArrAlloc+512);
  627. FlagArrAlloc+=512;
  628. if (FlagArr)
  629. {
  630. memcpy(newarr,FlagArr,FlagArrLen<<1);
  631. GlobalFree(FlagArr);
  632. }
  633. FlagArr=newarr;
  634. }
  635. sscanf(a,"%X",&flag);
  636. FlagArr[FlagArrLen]=flag;
  637. FlagArrLen++;
  638. strcpy(MegaBuffer,"0x");
  639. strcpy(MegaBuffer+2,a);
  640. strcat(MegaBuffer," - ");
  641. strcat(MegaBuffer,b);
  642. SendMessage(GetDlgItem(FlagsWin,2),LB_ADDSTRING,0,(LPARAM)MegaBuffer);
  643. SaveRegSettingStr("Flags\\ShortDesc",a,b);
  644. SaveRegSettingStr("Flags\\LongDesc",a,c);
  645. SaveRegSettingBin("Flags","UsedFlags",(char*)FlagArr,FlagArrLen<<1);
  646. }
  647.  
  648. void SortFlags()
  649. {
  650. register int i,j=1;
  651. short k;
  652. while (j)
  653. {
  654. j=0;
  655. for (i=0;i<FlagArrLen-1;i++)
  656. {
  657. if (FlagArr[i]>FlagArr[i+1])
  658. {
  659. k=FlagArr[i];
  660. FlagArr[i]=FlagArr[i+1];
  661. FlagArr[i+1]=k;
  662. j=1;
  663. }
  664. }
  665. }
  666. }
  667.  
  668. void DeleteLastFlag()
  669. {
  670. register int i;
  671. char a[5];
  672. if (LastFlag==-1)return;
  673. FlagArrLen--;
  674. sprintf(a,"%04X",FlagArr[LastFlag]);
  675. for (i=LastFlag;i<FlagArrLen;i++)
  676. FlagArr[i]=FlagArr[i+1];
  677. LastFlag=-1;
  678. DeleteRegSetting("Flags\\ShortDesc",a);
  679. DeleteRegSetting("Flags\\LongDesc",a);
  680. SaveRegSettingBin("Flags","UsedFlags",(char*)FlagArr,FlagArrLen<<1);
  681. }
  682.  
  683. void ReAddFlags()
  684. {
  685. char buf[5];
  686. register int i;
  687. FlagArrLen=(FlagArrAlloc=LoadRegSettingBin("Flags","UsedFlags",(char**)&FlagArr))>>1;
  688. SortFlags();
  689. for (i=0;i<FlagArrLen;i++)
  690. {
  691. sprintf(buf,"%04X",FlagArr[i]);
  692. strcpy(MegaBuffer,"0x");
  693. strcpy(MegaBuffer+2,buf);
  694. strcat(MegaBuffer," - ");
  695. LoadRegSettingStr("Flags\\ShortDesc",buf);
  696. strcat(MegaBuffer,GreatBuffer);
  697. SendMessage(GetDlgItem(FlagsWin,2),LB_ADDSTRING,0,(LPARAM)MegaBuffer);
  698. }
  699. }
  700.  
  701. int ScriptSearchType=11;
  702. //WINMAIN
  703. HBITMAP bmpHero,bmpArrow
  704. #ifdef SCRAP
  705. ,SPIcon
  706. #endif
  707. ;
  708. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,INT nCmdShow)
  709. {
  710. MSG msg;
  711. HDC dc;
  712. char tch[256],determineMode[4],*x,*y,*ptr,IsRom=0;
  713. WNDCLASSEX WndClass;
  714. HACCEL hAccel;
  715. RECT WinSize;
  716. unsigned int GoToPlace,i;
  717. int StatusSize[1],Data,DataSize,Nothing,fsize;
  718. DWORD read;
  719. HANDLE fileM;
  720. MENUITEMINFO mii;
  721. HKEY regkey;
  722. TC_ITEM tab;
  723.  
  724. maintid=GetCurrentThreadId();
  725. ZeroMemory(DefRomPath,sizeof(DefRomPath));
  726. ZeroMemory(DefScriptPath,sizeof(DefScriptPath));
  727. strcpy(GreatBuffer,GetCommandLine());
  728. GetDirFromGreatBuffer();
  729. //GreatBuffer now contains the dir of the EXE.
  730. strcpy(DirBuffer,GreatBuffer);
  731. inst=hInstance; //Globalise variable
  732. //Init window class
  733. ZeroMemory(&WndClass,sizeof(WNDCLASSEX));
  734. WndClass.cbSize = sizeof(WNDCLASSEX);
  735. WndClass.style = CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
  736. WndClass.lpfnWndProc = (WNDPROC)MainWndProc;
  737. WndClass.hInstance = hInstance;
  738. WndClass.hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(1));
  739. WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
  740. WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+11);
  741. WndClass.lpszMenuName = MAKEINTRESOURCE(4);
  742. WndClass.lpszClassName = "Score_Under_PKSVUI";
  743. WndClass.hIconSm = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(1));
  744.  
  745. //Register window with OS
  746. if (!RegisterClassEx(&WndClass)) {
  747. MessageBox(NULL,GetString1(3005),GetString2(3001),0x10);
  748. return 1;
  749. }
  750. if (!(ScintLib=LoadLibrary("Scintilla.dll")))
  751. {
  752. MessageBox(NULL,GetString1(3007),GetString2(3001),0x10);
  753. //Failed to load Scintilla.dll
  754. return 0;
  755. }
  756. if (!(PKSV=LoadLibrary("PKSV.dll")))
  757. {
  758. MessageBox(NULL,GetString1(3069),GetString2(3001),0x10);
  759. //Failed to load PKSV.DLL or failed to load one of PKSV.DLL's functions.
  760. return 0;
  761. }
  762. VersionMismatch=(int (__cdecl *)(unsigned char*))GetProcAddress(PKSV,"VersionMismatch");
  763. DetermineMode=(int (__cdecl *)(unsigned char*))GetProcAddress(PKSV,"DetermineMode");
  764. decompile=(char* (__cdecl *)(unsigned char*,int,int))GetProcAddress(PKSV,"decompile");
  765. decompileASM=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileASM");
  766. decompileLevel=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileLevel");
  767. decompileText=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileText");
  768. decompileMart=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileMart");
  769. decompileMoves=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileMoves");
  770. decompilePointer=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompilePointer");
  771. decompileAttacks=(char* (__cdecl *)(unsigned char*,int))GetProcAddress(PKSV,"decompileAttacks");
  772. NewMode=(char* (__cdecl *)(int))GetProcAddress(PKSV,"NewMode");
  773. compile=(int (__cdecl *)(unsigned char*,unsigned char*))GetProcAddress(PKSV,"compile");
  774. DebugCompile=(int (__cdecl *)(unsigned char*,unsigned char*))GetProcAddress(PKSV,"DebugCompile");
  775. SetDynamic=(int (__cdecl *)(int,int))GetProcAddress(PKSV,"SetDynamic");
  776. if (!VersionMismatch||!NewMode||!DetermineMode||!decompile||!decompileASM||!decompileLevel||!decompileText||!compile||!decompileMart||!decompileMoves||!decompilePointer||!decompileAttacks||!SetDynamic)
  777. {
  778. MessageBox(NULL,GetString1(3069),GetString2(3001),0x10);
  779. //Failed to load PKSV.DLL or failed to load one of PKSV.DLL's functions.
  780. return 0;
  781. }
  782. if (VersionMismatch(INTERNAL_VERSION))
  783. {
  784. MessageBox(NULL,GetString1(3070),GetString2(3071),0x30);
  785. //Warning: PKSV.dll version mismatch! Try downloading the package again.
  786. }
  787. #ifdef SCRAP
  788. SearchBox=LoadLibrary("searchbox.dll");
  789. if (!SearchBox)
  790. {
  791. MessageBox(NULL,"Failed to load searchbox.dll",GetString2(3001),0x10);
  792. return 0;
  793. }
  794. CreateListClass=(int (__cdecl *)())GetProcAddress(SearchBox,"CreateListClass");
  795. if (!CreateListClass)
  796. {
  797. MessageBox(NULL,"Failed to load a function in searchbox.dll",GetString2(3001),0x10);
  798. return 0;
  799. }
  800. CreateListClass();
  801. #endif
  802. *RomOpen=0;
  803. *RomOpen2=0;
  804.  
  805. WinSize.top=WinSize.left=0;
  806. WinSize.right=WIDTH;
  807. WinSize.bottom=HEIGHT;
  808. AdjustWindowRect(&WinSize,WS_OVERLAPPEDWINDOW|WS_POPUPWINDOW,1);
  809. strcpy(FileOpen,GetString1(3008));
  810. strcpy(FileOpen3,strbuffer);
  811.  
  812. //Bitmaps
  813. bmpHero=LoadBitmap(inst,MAKEINTRESOURCE(204));
  814. bmpArrow=LoadBitmap(inst,MAKEINTRESOURCE(205));
  815.  
  816. //Settings
  817. RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Score_Under\\PKSV-UI",0,KEY_READ,&regkey);
  818. DataSize=sizeof(Data);
  819. Data=0;
  820. RegQueryValueEx(regkey,"CollapseBeforeEnd",NULL,(LPDWORD)&Nothing,(LPBYTE)&Data,(LPDWORD)&DataSize);
  821. if (Data==0)
  822. collapseatend=1;
  823. else
  824. collapseatend=0;
  825. Data=0;
  826. RegQueryValueEx(regkey,"CollapseEmptyLines",NULL,(LPDWORD)&Nothing,(LPBYTE)&Data,(LPDWORD)&DataSize);
  827. if (Data!=0)
  828. collapselines=1;
  829. else
  830. collapselines=0;
  831. Data=0;
  832. RegQueryValueEx(regkey,"AutoAutoComplete",NULL,(LPDWORD)&Nothing,(LPBYTE)&Data,(LPDWORD)&DataSize);
  833. if (Data!=0)
  834. autoautocomplete=1;
  835. else
  836. autoautocomplete=0;
  837. RegCloseKey(regkey);
  838.  
  839. LoadRegSettingStr(NULL,"Version");
  840. if (strcmp(GreatBuffer,INTERNAL_VERSION))
  841. {
  842. MessageBox(MainWnd,GetString1(3010),GetString2(3009),0x40);
  843. SaveRegSettingStr(NULL,"Version",INTERNAL_VERSION);
  844. }
  845.  
  846. //Create it!
  847. MainWnd = CreateWindow("Score_Under_PKSVUI","",WS_OVERLAPPEDWINDOW|WS_POPUPWINDOW,
  848. (GetSystemMetrics(SM_CXFULLSCREEN)/2)-((WIDTH+GetSystemMetrics(SM_CXFIXEDFRAME)*2)/2),
  849. (GetSystemMetrics(SM_CYFULLSCREEN)/2)-((HEIGHT+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CXFIXEDFRAME))/2),
  850. WinSize.right+GetSystemMetrics(SM_CXFRAME),
  851. WinSize.bottom+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYFRAME),
  852. HWND_DESKTOP, NULL, hInstance, NULL);
  853. StatusBar=CreateWindow(STATUSCLASSNAME,"Status Bar",WS_CHILD|WS_VISIBLE,0,0,0,0,MainWnd,NULL,hInstance,NULL);
  854. #ifdef SCRAP
  855. Text=CreateWindowEx(WS_EX_CLIENTEDGE,"Scintilla","",WS_CHILD|WS_VISIBLE|ES_LEFT|ES_MULTILINE|ES_NOHIDESEL,0,24,WIDTH-32,HEIGHT-67,MainWnd,NULL,hInstance,NULL);
  856. ScrapPunk=CreateWindow("Button","",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,WIDTH-32,24,32,32,MainWnd,NULL,hInstance,NULL);
  857. #else
  858. Text=CreateWindowEx(WS_EX_CLIENTEDGE,"Scintilla","",WS_CHILD|WS_VISIBLE|ES_LEFT|ES_MULTILINE|ES_NOHIDESEL,0,24,WIDTH,HEIGHT-67,MainWnd,NULL,hInstance,NULL);
  859. #endif
  860. InitCommonControls();
  861. dc=GetDC(MainWnd);
  862. if(GetDeviceCaps(dc,BITSPIXEL)<32)
  863. ToolBar=CreateToolbarEx(MainWnd,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|CCS_ADJUSTABLE|CCS_NODIVIDER|CCS_NOMOVEY|TBSTYLE_TOOLTIPS,5000,20,inst,6,ToolButtons,sizeof(ToolButtons)/sizeof(TBBUTTON),16,16,16,16,sizeof(TBBUTTON));
  864. else
  865. ToolBar=CreateToolbarEx(MainWnd,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|CCS_ADJUSTABLE|CCS_NODIVIDER|CCS_NOMOVEY|TBSTYLE_TOOLTIPS,5000,20,inst,5,ToolButtons,sizeof(ToolButtons)/sizeof(TBBUTTON),16,16,16,16,sizeof(TBBUTTON));
  866. DragAcceptFiles(MainWnd,1);
  867. EditPrintInit();
  868. if (MainWnd==NULL)
  869. {
  870. MessageBox(NULL,GetString1(3011),GetString2(3001),0x10);
  871. return 0;
  872. }
  873. if (Text==NULL)
  874. {
  875. MessageBox(NULL,GetString1(3012),GetString2(3001),0x10);
  876. return 0;
  877. }
  878.  
  879. FindReplaceWin=CreateDialog(inst,MAKEINTRESOURCE(100),MainWnd,(DLGPROC)&FindReplaceFunc);
  880. if (FindReplaceWin==NULL)
  881. {
  882. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  883. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  884. }
  885. GotoWin=CreateDialog(inst,MAKEINTRESOURCE(101),MainWnd,(DLGPROC)&GotoFunc);
  886. if (GotoWin==NULL)
  887. {
  888. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  889. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  890. }
  891. FFSWin=CreateDialog(inst,MAKEINTRESOURCE(102),MainWnd,(DLGPROC)&FFSFunc);
  892. if (FFSWin==NULL)
  893. {
  894. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  895. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  896. }
  897. SetDlgItemText(FFSWin,3,"0x740000");
  898. SetDlgItemText(FFSWin,4,"0x100");
  899. SetDlgItemText(FFSWin,5,"N/A");
  900. DecWin=CreateDialog(inst,MAKEINTRESOURCE(103),MainWnd,(DLGPROC)&DecFunc);
  901. if (DecWin==NULL)
  902. {
  903. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  904. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  905. }
  906. CheckDlgButton(DecWin,8,1);
  907. LoadRegSettingStr("Decompiler","Offset");
  908. if (!*GreatBuffer)strcpy(GreatBuffer,"1BDF13");
  909. SetDlgItemText(DecWin,3,GreatBuffer);
  910. GenWin=CreateDialog(inst,MAKEINTRESOURCE(104),MainWnd,(DLGPROC)&GenFunc);
  911. if (GenWin==NULL)
  912. {
  913. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  914. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  915. }
  916. InputWin=CreateDialog(inst,MAKEINTRESOURCE(105),MainWnd,(DLGPROC)&InputFunc);
  917. if (InputWin==NULL)
  918. {
  919. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  920. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  921. }
  922. Input2Win=CreateDialog(inst,MAKEINTRESOURCE(3070),MainWnd,(DLGPROC)&Input2Func);
  923. if (Input2Win==NULL)
  924. {
  925. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  926. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  927. }
  928. NoteWin=CreateDialog(inst,MAKEINTRESOURCE(106),MainWnd,(DLGPROC)&NoteFunc);
  929. if (NoteWin==NULL)
  930. {
  931. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  932. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  933. }
  934. SetDlgItemText(NoteWin,2,"0");
  935. SetDlgItemText(NoteWin,3,"00");
  936. SetDlgItemText(NoteWin,4,"4000");
  937. HexWin=CreateDialog(inst,MAKEINTRESOURCE(107),MainWnd,(DLGPROC)&HexFunc);
  938. if (HexWin==NULL)
  939. {
  940. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  941. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  942. }
  943. SetDlgItemText(HexWin,1,"F");
  944. SetDlgItemText(HexWin,2,"15");
  945. MovePlanWin=CreateDialog(inst,MAKEINTRESOURCE(108),MainWnd,(DLGPROC)&MovePlanFunc);
  946. if (MovePlanWin==NULL)
  947. {
  948. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  949. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  950. }
  951. ScriptSearchWin=CreateDialog(inst,MAKEINTRESOURCE(109),MainWnd,(DLGPROC)&ScriptSearchFunc);
  952. if (ScriptSearchWin==NULL)
  953. {
  954. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  955. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  956. }
  957. FlagsWin=CreateDialog(inst,MAKEINTRESOURCE(3071),MainWnd,(DLGPROC)&FlagsFunc);
  958. if (FlagsWin==NULL)
  959. {
  960. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  961. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  962. }
  963. LockWin=CreateDialog(inst,MAKEINTRESOURCE(3072),MainWnd,(DLGPROC)&LockFunc);
  964. if (LockWin==NULL)
  965. {
  966. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  967. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  968. }
  969. #ifdef SCRAP
  970. PickupWin=CreateDialog(inst,MAKEINTRESOURCE(3073),MainWnd,(DLGPROC)&PickupFunc);
  971. if (PickupWin==NULL)
  972. {
  973. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tch,sizeof(tch),NULL);
  974. MessageBox(MainWnd,tch,GetString2(3001),0x10);
  975. }
  976. tab.mask=TCIF_TEXT;
  977. tab.pszText="Pickup Editor";
  978. SendMessage(GetDlgItem(PickupWin,1000),TCM_INSERTITEM,0,(LPARAM)&tab);
  979. tab.mask=TCIF_TEXT;
  980. tab.pszText="Item Editor";
  981. SendMessage(GetDlgItem(PickupWin,1000),TCM_INSERTITEM,1,(LPARAM)&tab);
  982. SPIcon=LoadBitmap(inst,MAKEINTRESOURCE(4));
  983. SendMessage(PickupWin,WM_SETICON,0,(LPARAM)LoadIcon(inst,MAKEINTRESOURCE(5)));
  984. #endif
  985. CheckDlgButton(FFSWin,6,BST_CHECKED);
  986. CheckDlgButton(ScriptSearchWin,11,BST_CHECKED);
  987. CheckDlgButton(MovePlanWin,103,BST_CHECKED);
  988. CheckDlgButton(LockWin,3,BST_CHECKED);
  989. LoadRegSettingStr("Decompiler","Dynamic Offset");
  990. if (!*GreatBuffer)strcpy(GreatBuffer,"0x0740000");
  991. SetDlgItemText(DecWin,19,GreatBuffer);
  992. CheckDlgButton(DecWin,18,LoadRegSetting("Decompiler","Use Dynamic"));
  993.  
  994. LoadRegSettingStr("Notes","Text");
  995. if (*GreatBuffer)
  996. {
  997. SetDlgItemText(NoteWin,1,GreatBuffer);
  998. }
  999.  
  1000. SendMessage(StatusBar,WM_SETFONT,(LPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
  1001.  
  1002. StatusSize[0]=-1;
  1003. SendMessage(StatusBar,SB_SETPARTS,1,(LPARAM)StatusSize);
  1004. SendMessage(StatusBar,SB_SETTEXT,0,(LPARAM)GetString1(3014));
  1005.  
  1006. SendEditor(SCI_CLEARDOCUMENTSTYLE,0,0);
  1007. EnumFontFamilies(dc,NULL,(void*)FontEnumerator,0);
  1008. ReleaseDC(MainWnd,dc);
  1009. if (!foundfont)
  1010. {
  1011. SendEditor(SCI_STYLESETFONT,STYLE_DEFAULT,(LPARAM)"Courier New");
  1012. }
  1013. else
  1014. {
  1015. SendEditor(SCI_STYLESETFONT,STYLE_DEFAULT,(LPARAM)"Lucida Console");
  1016. }
  1017. SendEditor(SCI_SETLEXER,SCLEX_CONTAINER,0);
  1018. SendEditor(SCI_STYLESETFORE,STYLE_DEFAULT,0);
  1019. SendEditor(SCI_STYLESETBACK,STYLE_DEFAULT,0xffffff); //In BGR format
  1020. SendEditor(SCI_STYLESETSIZE,STYLE_DEFAULT,10);
  1021. SendEditor(SCI_STYLESETITALIC,STYLE_DEFAULT,0);
  1022. SendEditor(SCI_STYLESETUNDERLINE,STYLE_DEFAULT,0);
  1023. SendEditor(SCI_STYLECLEARALL,0,0);
  1024. SendEditor(SCI_STYLESETFORE,STYLE_NORMAL,0);
  1025. SendEditor(SCI_STYLESETBACK,STYLE_NORMAL,0xffffff); //In BGR format
  1026. SendEditor(SCI_STYLESETSIZE,STYLE_NORMAL,10);
  1027. SendEditor(SCI_STYLESETITALIC,STYLE_NORMAL,0);
  1028. SendEditor(SCI_STYLESETUNDERLINE,STYLE_NORMAL,0);
  1029. SendEditor(SCI_STYLESETBOLD,STYLE_NORMAL,0);
  1030. SendEditor(SCI_STYLESETFORE,STYLE_IMPORTANT,0xc00000);
  1031. SendEditor(SCI_STYLESETSIZE,STYLE_IMPORTANT,10);
  1032. SendEditor(SCI_STYLESETITALIC,STYLE_IMPORTANT,0);
  1033. SendEditor(SCI_STYLESETBOLD,STYLE_IMPORTANT,1);
  1034. SendEditor(SCI_STYLESETUNDERLINE,STYLE_IMPORTANT,0);
  1035. SendEditor(SCI_STYLESETFORE,STYLE_SPECIAL,0x0080ff);
  1036. SendEditor(SCI_STYLESETSIZE,STYLE_SPECIAL,10);
  1037. SendEditor(SCI_STYLESETITALIC,STYLE_SPECIAL,0);
  1038. SendEditor(SCI_STYLESETUNDERLINE,STYLE_SPECIAL,0);
  1039. SendEditor(SCI_STYLESETBOLD,STYLE_SPECIAL,0);
  1040. SendEditor(SCI_STYLESETFORE,STYLE_COMMAND,0xff8000);
  1041. SendEditor(SCI_STYLESETSIZE,STYLE_COMMAND,10);
  1042. SendEditor(SCI_STYLESETITALIC,STYLE_COMMAND,0);
  1043. SendEditor(SCI_STYLESETUNDERLINE,STYLE_COMMAND,0);
  1044. SendEditor(SCI_STYLESETBOLD,STYLE_COMMAND,0);
  1045. SendEditor(SCI_STYLESETFORE,STYLE_ARGUMENT,0x0000ff);
  1046. SendEditor(SCI_STYLESETSIZE,STYLE_ARGUMENT,10);
  1047. SendEditor(SCI_STYLESETITALIC,STYLE_ARGUMENT,0);
  1048. SendEditor(SCI_STYLESETUNDERLINE,STYLE_ARGUMENT,0);
  1049. SendEditor(SCI_STYLESETBOLD,STYLE_ARGUMENT,0);
  1050. SendEditor(SCI_STYLESETFORE,STYLE_MESSAGE,0x008000);
  1051. SendEditor(SCI_STYLESETSIZE,STYLE_MESSAGE,10);
  1052. SendEditor(SCI_STYLESETITALIC,STYLE_MESSAGE,0);
  1053. SendEditor(SCI_STYLESETUNDERLINE,STYLE_MESSAGE,0);
  1054. SendEditor(SCI_STYLESETBOLD,STYLE_MESSAGE,0);
  1055. SendEditor(SCI_STYLESETFORE,STYLE_LABEL,0x000000);
  1056. SendEditor(SCI_STYLESETSIZE,STYLE_LABEL,10);
  1057. SendEditor(SCI_STYLESETITALIC,STYLE_LABEL,0);
  1058. SendEditor(SCI_STYLESETUNDERLINE,STYLE_LABEL,0);
  1059. SendEditor(SCI_STYLESETBOLD,STYLE_LABEL,1);
  1060. SendEditor(SCI_STYLESETFORE,STYLE_LINENUMBER,0x0);
  1061. SendEditor(SCI_STYLESETSIZE,STYLE_LINENUMBER,10);
  1062. SendEditor(SCI_STYLESETITALIC,STYLE_LINENUMBER,0);
  1063. SendEditor(SCI_STYLESETUNDERLINE,STYLE_LINENUMBER,0);
  1064. SendEditor(SCI_STYLESETBOLD,STYLE_LINENUMBER,0);
  1065.  
  1066. SendEditor(SCI_SETPROPERTY,(WPARAM)"fold",(LPARAM)"1");
  1067. SendEditor(SCI_SETPROPERTY,(WPARAM)"fold.compact",(LPARAM)"0");
  1068. SendEditor(SCI_SETPROPERTY,(WPARAM)"fold.comment", (LPARAM)"1");
  1069. SendEditor(SCI_SETPROPERTY,(WPARAM)"fold.preprocessor", (LPARAM)"1");
  1070. SendEditor(SCI_SETMARGINWIDTHN,1,0);
  1071. SendEditor(SCI_SETMARGINTYPEN,1,SC_MARGIN_SYMBOL);
  1072. SendEditor(SCI_SETMARGINMASKN,1,SC_MASK_FOLDERS);
  1073. SendEditor(SCI_SETMARGINWIDTHN,1,20);
  1074. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_BOXMINUS);
  1075. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDER, SC_MARK_BOXPLUS);
  1076. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERSUB, SC_MARK_VLINE);
  1077. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERTAIL, SC_MARK_LCORNERCURVE);
  1078. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEREND, SC_MARK_BOXPLUSCONNECTED);
  1079. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPENMID, SC_MARK_BOXMINUSCONNECTED);
  1080. SendEditor(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_TCORNERCURVE);
  1081. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDEROPEN,0xffffff);
  1082. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDEROPEN,0);
  1083. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDER,0xffffff);
  1084. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDER,0);
  1085. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDERSUB,0xffffff);
  1086. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDERSUB,0);
  1087. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDERTAIL,0xffffff);
  1088. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDERTAIL,0);
  1089. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDEREND,0xffffff);
  1090. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDEREND,0);
  1091. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDEROPENMID,0xffffff);
  1092. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDEROPENMID,0);
  1093. SendEditor(SCI_MARKERSETFORE,SC_MARKNUM_FOLDERMIDTAIL,0xffffff);
  1094. SendEditor(SCI_MARKERSETBACK,SC_MARKNUM_FOLDERMIDTAIL,0);
  1095. SendEditor(SCI_SETFOLDFLAGS, 16, 0);
  1096. SendEditor(SCI_SETMARGINSENSITIVEN, 1, 1);
  1097.  
  1098. SendEditor(SCI_SETSTYLEBITS,0x0D,0);
  1099. SendEditor(SCI_AUTOCSETMAXHEIGHT,15,0);
  1100. SendEditor(SCI_AUTOCSETSEPARATOR,'|',0);
  1101. SendEditor(SCI_AUTOCSETTYPESEPARATOR,';',0);
  1102. SendEditor(SCI_REGISTERIMAGE,0,(LPARAM)unknown_xpm);
  1103. SendEditor(SCI_REGISTERIMAGE,1,(LPARAM)Gary_xpm);
  1104. SendEditor(SCI_REGISTERIMAGE,2,(LPARAM)sign_xpm);
  1105. SendEditor(SCI_REGISTERIMAGE,3,(LPARAM)poke_xpm);
  1106. SendEditor(SCI_REGISTERIMAGE,4,(LPARAM)pokeball_xpm);
  1107. SendEditor(SCI_REGISTERIMAGE,5,(LPARAM)furniture_xpm);
  1108. SendEditor(SCI_REGISTERIMAGE,6,(LPARAM)flag_xpm);
  1109. SendEditor(SCI_REGISTERIMAGE,7,(LPARAM)hero_xpm);
  1110. SendEditor(SCI_REGISTERIMAGE,8,(LPARAM)special_xpm);
  1111. SendEditor(SCI_REGISTERIMAGE,9,(LPARAM)bin_xpm);
  1112. SendEditor(SCI_REGISTERIMAGE,10,(LPARAM)music_xpm);
  1113. SendEditor(SCI_REGISTERIMAGE,11,(LPARAM)money_xpm);
  1114. SendEditor(SCI_REGISTERIMAGE,12,(LPARAM)rsmove_xpm);
  1115. SendEditor(SCI_REGISTERIMAGE,13,(LPARAM)frmove_xpm);
  1116. SendEditor(SCI_AUTOCSETIGNORECASE,1,0);
  1117. SendEditor(SCI_AUTOCSETAUTOHIDE,0,0);
  1118. SendEditor(SCI_AUTOCSETFILLUPS,0,(LPARAM)"\n\r\t");
  1119. SendEditor(SCI_AUTOCSTOPS,0,(LPARAM)" '");
  1120.  
  1121. SendMessage(MainWnd,WM_COMMAND,ID_NEW,0);
  1122. x=GetCommandLine();
  1123. if (x[0]=='"')
  1124. {
  1125. x++;
  1126. while (x[0]!='"'&&x[0]!=0) {
  1127. x++;
  1128. }
  1129. }
  1130. else
  1131. {
  1132. while (x[0]!=' '&&x[0]!=0) {
  1133. x++;
  1134. }
  1135. }
  1136. if (x[0]!=0)
  1137. {
  1138. x++;
  1139. while (x[0]==' ') {
  1140. x++;
  1141. }
  1142. y=0;
  1143. if (x[0]!=0)
  1144. {
  1145. Nothing=0;
  1146. if (x[0]=='"') {
  1147. x++;
  1148. Data='"';
  1149. }
  1150. else {
  1151. Data=' ';
  1152. }
  1153. while (x[Nothing]!=Data&&x[Nothing]!=0) {
  1154. Nothing++;
  1155. }
  1156. y=x;
  1157. if (x[0]!=0)
  1158. {
  1159. x=x+Nothing+1;
  1160. }
  1161. }
  1162. while (x[0]==' '||x[0]=='"') x++;
  1163. if (x[0]!=0)
  1164. {
  1165. GoToPlace=-1;
  1166. sscanf(x,"%X",&GoToPlace);
  1167. if (GoToPlace==-1)
  1168. {
  1169. sscanf(x,"0x%X",&GoToPlace);
  1170. if (GoToPlace==-1)
  1171. {
  1172. sscanf(x,"$%X",&GoToPlace);
  1173. }
  1174. }
  1175. if (GoToPlace!=-1)IsRom=1;
  1176. }
  1177. if (y!=0&&!IsRom)
  1178. {
  1179. x=y;
  1180. x[Nothing]=0;
  1181. strcpy(FileOpen,x);
  1182. strcpy(FileOpen2,FileOpen);
  1183. strcpy(FileOpen3,FileOpen);
  1184. strcpy(GreatBuffer,FileOpen);
  1185. GetDirFromGreatBuffer();
  1186. strcpy(DefScriptPath,GreatBuffer);
  1187. strcat(FileOpen2," - Score_Under's PKSV-UI");
  1188. SetWindowText(MainWnd,FileOpen2);
  1189. fileM=CreateFile(FileOpen,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  1190. if (GetLastError()!=0)
  1191. {
  1192. FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),0,(char*)&ptr,2000,NULL);
  1193. MessageBox(MainWnd,ptr,ptr,0x10);
  1194. LocalFree(ptr);
  1195. return 0;
  1196. }
  1197. fsize=SetFilePointer(fileM,0,NULL,FILE_END);
  1198. ptr=GlobalAlloc(GPTR,fsize+1);
  1199. SetFilePointer(fileM,0,NULL,FILE_BEGIN);
  1200. ReadFile(fileM,ptr,fsize,&read,NULL);
  1201. if (read!=fsize)
  1202. {
  1203. MessageBox(MainWnd,GetString1(3015),GetString2(3001),0x10);
  1204. }
  1205. SendEditor(SCI_CANCEL,0,0);
  1206. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  1207. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  1208. SendEditor(SCI_CLEARALL,0,0);
  1209. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  1210. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  1211. SendEditor(SCI_ADDTEXT,fsize,(LPARAM)ptr);
  1212. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  1213. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  1214. SendEditor(SCI_SETSAVEPOINT,0,0);
  1215. SendEditor(SCI_GOTOPOS,0,0);
  1216. SendEditor(SCI_CHOOSECARETX,0,0);
  1217. GlobalFree(ptr);
  1218. CloseHandle(fileM);
  1219. SetFocus(Text);
  1220. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  1221. SendEditor(SCI_SETSEL,0,0);
  1222. }
  1223. else if (IsRom)
  1224. {
  1225. x=y;
  1226. x[Nothing]=0;
  1227. strcpy(RomOpen,x);
  1228. strcpy(RomOpen2,RomOpen);
  1229. strcpy(GreatBuffer,RomOpen);
  1230. GetDirFromGreatBuffer();
  1231. strcpy(DefRomPath,GreatBuffer);
  1232. fileM=CreateFile(RomOpen,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  1233. if (fileM!=INVALID_HANDLE_VALUE)
  1234. {
  1235. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  1236. ReadFile(fileM,&modechar,4,&read,NULL);
  1237. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  1238. ReadFile(fileM,&determineMode,3,&read,NULL);
  1239. if ((determineMode[0]=='A'&&determineMode[1]=='A')||(determineMode[0]=='S'&&determineMode[1]=='M'))
  1240. {//Detect GSC and Prism
  1241. pokemon_version=GBC;
  1242. }
  1243. else
  1244. {
  1245. SetFilePointer(fileM,0xAC,NULL,FILE_BEGIN);
  1246. ReadFile(fileM,&modechar,4,&read,NULL);
  1247. pokemon_version=GBA;
  1248. }
  1249. CloseHandle(fileM);
  1250. }
  1251. else
  1252. {
  1253. *RomOpen=0;
  1254. *RomOpen2=0;
  1255. }
  1256. sprintf(GreatBuffer,"0x%X",GoToPlace);
  1257. SetDlgItemText(DecWin,3,GreatBuffer);
  1258. DecFunc(NULL,WM_COMMAND,1,0);
  1259. }
  1260. }
  1261. if (!IsRom)
  1262. {
  1263. //OPENROM
  1264. LoadRegSettingStr(NULL,"ROMFile");
  1265. strcpy(RomOpen,GreatBuffer);
  1266. strcpy(RomOpen2,RomOpen);
  1267. strcpy(GreatBuffer,RomOpen);
  1268. GetDirFromGreatBuffer();
  1269. strcpy(DefRomPath,GreatBuffer);
  1270. fileM=CreateFile(RomOpen,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  1271. if (fileM!=INVALID_HANDLE_VALUE)
  1272. {
  1273. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  1274. ReadFile(fileM,&modechar,4,&read,NULL);
  1275. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  1276. ReadFile(fileM,&determineMode,3,&read,NULL);
  1277. if ((determineMode[0]=='A'&&determineMode[1]=='A')||(determineMode[0]=='S'&&determineMode[1]=='M'))
  1278. {//Detect GSC and Prism
  1279. pokemon_version=GBC;
  1280. }
  1281. else
  1282. {
  1283. SetFilePointer(fileM,0xAC,NULL,FILE_BEGIN);
  1284. ReadFile(fileM,&modechar,4,&read,NULL);
  1285. pokemon_version=GBA;
  1286. }
  1287. CloseHandle(fileM);
  1288. }
  1289. else
  1290. {
  1291. *RomOpen=0;
  1292. *RomOpen2=0;
  1293. }
  1294. }
  1295. //Menu items
  1296. mii.cbSize=sizeof(mii);
  1297. mii.fMask=MIIM_STATE;
  1298. if (collapselines)
  1299. mii.fState=MFS_CHECKED;
  1300. else
  1301. mii.fState=MFS_UNCHECKED;
  1302. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  1303. if (!collapseatend)
  1304. {
  1305. mii.fState=MFS_CHECKED;
  1306. SetMenuItemInfo(GetMenu(MainWnd),1020,0,&mii);
  1307. mii.fState=MFS_UNCHECKED|MFS_GRAYED;
  1308. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  1309. collapselines=0;
  1310. }
  1311. else
  1312. {
  1313. mii.fState=MFS_UNCHECKED;
  1314. SetMenuItemInfo(GetMenu(MainWnd),1020,0,&mii);
  1315. mii.fState=MFS_ENABLED;
  1316. if (collapselines) {
  1317. mii.fState|=MFS_CHECKED;
  1318. }
  1319. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  1320. }
  1321. if (autoautocomplete)
  1322. mii.fState=MFS_CHECKED;
  1323. else
  1324. mii.fState=MFS_UNCHECKED;
  1325. SetMenuItemInfo(GetMenu(MainWnd),1112,0,&mii);
  1326.  
  1327. hAccel = LoadAccelerators(hInstance,MAKEINTRESOURCE(10));
  1328. #ifndef DOES_NOT_UPDATE
  1329. #ifndef ZH
  1330. if(LoadRegSettingDef(NULL,"AutoUpdate",1))
  1331. CreateThread(NULL,0,UpdateMe,NULL,0,(LPVOID)&Nothing);
  1332. #endif
  1333. #endif
  1334. UpdateScintLine();
  1335. UpdateWindow(MainWnd);
  1336. ShowWindow(MainWnd,SW_SHOW);
  1337. while (GetMessage(&msg,NULL,0,0))
  1338. {
  1339. if (!TranslateAccelerator(MainWnd,hAccel,&msg))
  1340. {
  1341. if (!IsDialogMessage(FFSWin,&msg)
  1342. &&!IsDialogMessage(FindReplaceWin,&msg)
  1343. &&!IsDialogMessage(GotoWin,&msg)
  1344. &&!IsDialogMessage(NoteWin,&msg)
  1345. &&!IsDialogMessage(MovePlanWin,&msg)
  1346. &&!IsDialogMessage(HexWin,&msg)
  1347. &&!IsDialogMessage(InputWin,&msg)
  1348. &&!IsDialogMessage(Input2Win,&msg)
  1349. &&!IsDialogMessage(GenWin,&msg)
  1350. &&!IsDialogMessage(DecWin,&msg)
  1351. &&!IsDialogMessage(ScriptSearchWin,&msg)
  1352. &&!IsDialogMessage(LockWin,&msg)
  1353. &&!IsDialogMessage(FlagsWin,&msg)
  1354. #ifdef SCRAP
  1355. &&!IsDialogMessage(PickupWin,&msg)
  1356. #endif
  1357. )
  1358. {
  1359. TranslateMessage(&msg);
  1360. DispatchMessage(&msg);
  1361. }
  1362. }
  1363. }
  1364. FreeLibrary(ScintLib);
  1365.  
  1366.  
  1367. i=(unsigned int)SendMessage(GetDlgItem(NoteWin,1),WM_GETTEXTLENGTH,0,0);
  1368. ptr=GlobalAlloc(GPTR,i+1);
  1369. GetDlgItemText(NoteWin,1,ptr,i+1);
  1370. SaveRegSettingStr("Notes","Text",ptr);
  1371. return (int)msg.wParam;
  1372. }
  1373.  
  1374. void SaveFlag()
  1375. {
  1376. char buf[5];
  1377.  
  1378. if (LastFlag==-1)return;
  1379. sprintf(buf,"%04X",FlagArr[LastFlag]);
  1380. GetDlgItemText(FlagsWin,5,GreatBuffer,sizeof(GreatBuffer));
  1381. SaveRegSettingStr("Flags\\ShortDesc",buf,GreatBuffer);
  1382. GetDlgItemText(FlagsWin,6,MegaBuffer,sizeof(MegaBuffer));
  1383. SaveRegSettingStr("Flags\\LongDesc",buf,MegaBuffer);
  1384. SendMessage(GetDlgItem(FlagsWin,2),LB_DELETESTRING,LastFlag,0);
  1385. sprintf(MegaBuffer,"0x%s - %s",buf,GreatBuffer);
  1386. SendMessage(GetDlgItem(FlagsWin,2),LB_ADDSTRING,0,(LPARAM)MegaBuffer);
  1387. }
  1388.  
  1389. void exiting()
  1390. {
  1391. unsigned int i;
  1392. char*ptr;
  1393. i=(unsigned int)SendMessage(GetDlgItem(NoteWin,1),WM_GETTEXTLENGTH,0,0);
  1394. ptr=GlobalAlloc(GPTR,i+1);
  1395. GetDlgItemText(NoteWin,1,ptr,i+1);
  1396. SaveRegSettingStr("Notes","Text",ptr);
  1397. }
  1398.  
  1399. struct SCNotification* scn;
  1400. int TCompile(char*a)
  1401. {
  1402. char*b;
  1403. b=malloc(strlen(RomOpen2)+1);
  1404. strcpy(b,RomOpen2);
  1405. compile(b,a);
  1406. free(b);
  1407. GlobalFree(a);
  1408. return 0;
  1409. }
  1410. int TDebugCompile(char*a)
  1411. {
  1412. char*b;
  1413. b=malloc(strlen(RomOpen2)+1);
  1414. strcpy(b,RomOpen2);
  1415. DebugCompile(b,a);
  1416. free(b);
  1417. GlobalFree(a);
  1418. return 0;
  1419. }
  1420. #ifdef SCRAP
  1421. unsigned char PickupBuf[0x40];
  1422. #endif
  1423. LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  1424. {
  1425. OPENFILENAME ofn;
  1426. HANDLE fileM;
  1427. void*ptr;
  1428. char*lbuf;
  1429. MENUITEMINFO mii;
  1430. char buf[1024];
  1431. LPNMHDR nmh=(LPNMHDR)lParam;
  1432. unsigned long fsize;
  1433. char determineMode[4];
  1434. DWORD read;
  1435. HKEY regkey;
  1436. HDC dc;
  1437. unsigned int sges;
  1438. LPTOOLTIPTEXT text;
  1439. //OSVERSIONINFO ver;
  1440. //BLENDFUNCTION blend;
  1441. int line,start,end,len,ostart,i,dontsetlevel,start2;
  1442. #define SciCharAt(x) (char)SendEditor(SCI_GETCHARAT,x,0)
  1443. #define StrDefault GetString1(3016)
  1444. switch (msg)
  1445. {
  1446. #ifdef SCRAP
  1447. case WM_DRAWITEM:
  1448. if (((LPDRAWITEMSTRUCT)lParam)->hwndItem==ScrapPunk)
  1449. {
  1450. dc=CreateCompatibleDC(((LPDRAWITEMSTRUCT)lParam)->hDC);
  1451. SelectObject(dc,(HBRUSH)(COLOR_WINDOW+11));
  1452. Rectangle(((LPDRAWITEMSTRUCT)lParam)->hDC,0,0,32,32);
  1453. SelectObject(dc,SPIcon);/*
  1454. GetVersionEx(&ver);
  1455. if(ver.dwMajorVersion<=4)
  1456. {*/
  1457. BitBlt(((LPDRAWITEMSTRUCT)lParam)->hDC,
  1458. 0,0,32,32,dc,0,0,SRCCOPY);/*
  1459. }
  1460. else
  1461. {
  1462. blend.AlphaFormat=AC_SRC_ALPHA;
  1463. blend.BlendFlags=0;
  1464. blend.BlendOp=AC_SRC_OVER;
  1465. blend.SourceConstantAlpha=255;
  1466. AlphaBlend(((LPDRAWITEMSTRUCT)lParam)->hDC,
  1467. 0,0,32,32,dc,0,0,32,32,blend);
  1468. }*/
  1469. DeleteDC(dc);
  1470. }
  1471. return 1;
  1472. #endif
  1473. case WM_NOTIFY:
  1474. if (hwnd==MainWnd)
  1475. {
  1476. switch (nmh->code)
  1477. {
  1478. case TTN_NEEDTEXT:
  1479. text=(LPTOOLTIPTEXT)lParam;
  1480. text->hinst=inst;
  1481. switch (text->hdr.idFrom)
  1482. {
  1483. case ID_NEW:
  1484. text->lpszText="New";
  1485. break;
  1486. case ID_OPEN:
  1487. text->lpszText="Open";
  1488. break;
  1489. case ID_SAVE:
  1490. text->lpszText="Save";
  1491. break;
  1492. case ID_SAVEAS:
  1493. text->lpszText="Save As";
  1494. break;
  1495. case 1015:
  1496. text->lpszText="Undo";
  1497. break;
  1498. case 1016:
  1499. text->lpszText="Redo";
  1500. break;
  1501. case 1008:
  1502. text->lpszText="Cut";
  1503. break;
  1504. case 1009:
  1505. text->lpszText="Copy";
  1506. break;
  1507. case 1010:
  1508. text->lpszText="Paste";
  1509. break;
  1510. case 1012:
  1511. text->lpszText="Find/Replace";
  1512. break;
  1513. case 1032:
  1514. text->lpszText="Tools (Calculator and Notes)";
  1515. break;
  1516. case 1006:
  1517. text->lpszText="Open ROM";
  1518. break;
  1519. case 1005:
  1520. text->lpszText="Find Free Space";
  1521. break;
  1522. case 1014:
  1523. text->lpszText="Decompile";
  1524. break;
  1525. case 1004:
  1526. text->lpszText="Compile";
  1527. break;
  1528. case 1030:
  1529. text->lpszText="Play Game";
  1530. break;
  1531. case 1111:
  1532. text->lpszText="Activate Autocomplete";
  1533. break;
  1534. case 1013:
  1535. text->lpszText="Script Generator";
  1536. break;
  1537. case 1100:
  1538. text->lpszText="About...";
  1539. break;
  1540. case 1202:
  1541. text->lpszText="Debug";
  1542. break;
  1543. }
  1544. return DefWindowProc(hwnd, msg, wParam, lParam);
  1545. break;
  1546. case TBN_QUERYINSERT:
  1547. case TBN_QUERYDELETE:
  1548. return 1;
  1549. case TBN_GETBUTTONINFO:
  1550. if (((TBNOTIFY*)nmh)->iItem>=0&&((TBNOTIFY*)nmh)->iItem<(sizeof(ToolButtons)/sizeof(TBBUTTON)))
  1551. {
  1552. ((TBNOTIFY*)nmh)->tbButton=ToolButtons[((TBNOTIFY*)nmh)->iItem];
  1553. return 1;
  1554. }
  1555. return 0;
  1556. case SCN_MARGINCLICK:
  1557. scn=(struct SCNotification*)nmh;
  1558. SendEditor(SCI_TOGGLEFOLD,SendEditor(SCI_LINEFROMPOSITION,scn->position,0),0);
  1559. break;
  1560. case SCN_CHARADDED:
  1561. if (autoautocomplete&&((((struct SCNotification*)nmh)->ch)!='\n')&&((((struct SCNotification*)nmh)->ch)!='\r'))
  1562. {
  1563. len=0;
  1564. i=(int)SendEditor(SCI_GETSELECTIONSTART,0,0);
  1565. start=(int)SendEditor(SCI_POSITIONFROMLINE,SendEditor(SCI_LINEFROMPOSITION,i,0),0);
  1566. while (SciCharAt(start)==' ')start++;
  1567. while (i>start)
  1568. {
  1569. if (SciCharAt(i)=='\''||(SciCharAt(i)=='/'&&SciCharAt(i+1)=='/')) {
  1570. break;
  1571. }
  1572. len++;
  1573. i--;
  1574. }
  1575. if (SciCharAt(i)!='\''&&(SciCharAt(i)!='/'||SciCharAt(i+1)!='/'))
  1576. SendMessage(MainWnd,WM_COMMAND,1111,1111);
  1577. }
  1578. break;
  1579. /*
  1580. case SCN_UPDATEUI:
  1581. //do something for command list
  1582. break;*/
  1583. case SCN_MODIFIED:
  1584. case SCN_ZOOM:
  1585. UpdateScintLine();
  1586. break;
  1587. case SCN_SAVEPOINTREACHED:
  1588. NotSaved = FALSE;
  1589. lbuf=strrchr(FileOpen3,'\\')+1;
  1590. if((ptr=strrchr(FileOpen3,'/'))>(void*)lbuf)
  1591. lbuf=ptr+1;
  1592. if(lbuf<(char*)2)lbuf=FileOpen3;
  1593. strcpy(FileOpen2,lbuf);
  1594. strcat(FileOpen2," - Score_Under's PKSV-UI");
  1595. SetWindowText(MainWnd,FileOpen2);
  1596. break;
  1597. case SCN_SAVEPOINTLEFT:
  1598. NotSaved = TRUE;
  1599. strcpy(FileOpen2,"* ");
  1600. lbuf=strrchr(FileOpen3,'\\')+1;
  1601. if((ptr=strrchr(FileOpen3,'/'))>(void*)lbuf)
  1602. lbuf=ptr+1;
  1603. if(lbuf<(char*)2)lbuf=FileOpen3;
  1604. strcat(FileOpen2,lbuf);
  1605. strcat(FileOpen2," - Score_Under's PKSV-UI");
  1606. SetWindowText(MainWnd,FileOpen2);
  1607. break;
  1608. case SCN_STYLENEEDED:
  1609. sges=(unsigned int)SendEditor(SCI_GETENDSTYLED,0,0)-1;
  1610. while (sges!=SendEditor(SCI_GETENDSTYLED,0,0))
  1611. {
  1612. sges=(unsigned int)SendEditor(SCI_GETENDSTYLED,0,0);
  1613. dontsetlevel=0;
  1614. line=(int)SendEditor(SCI_LINEFROMPOSITION,SendMessage(Text,SCI_GETENDSTYLED,0,0),0);
  1615. start=(int)SendEditor(SCI_POSITIONFROMLINE,line,0);
  1616. start2=0;
  1617. ostart=start;
  1618. end=((struct SCNotification*)nmh)->position;
  1619. len=(int)SendEditor(SCI_LINELENGTH,line,0);
  1620. i=len;
  1621. if (line!=0)
  1622. {
  1623. i=(int)SendEditor(SCI_LINELENGTH,line-1,0);
  1624. if (i<len)i=len;
  1625. }
  1626. lbuf=GlobalAlloc(GPTR,i+3); // \r, \n, \0
  1627. while (start<(ostart+len)&&(SciCharAt(start)==' '||SciCharAt(start)=='\t'))
  1628. {
  1629. start++;
  1630. }
  1631. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1632. if (SendEditor(SCI_GETCHARAT,start,0)=='#')
  1633. {
  1634. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_SPECIAL);
  1635. if ((cToLower(SciCharAt(start+1))=='o'&&cToLower(SciCharAt(start+2))=='r'&&cToLower(SciCharAt(start+3))=='g'&&cToLower(SciCharAt(start+4))==' ')
  1636. ||(cToLower(SciCharAt(start+1))=='e'&&cToLower(SciCharAt(start+2))=='o'&&cToLower(SciCharAt(start+3))=='r'&&cToLower(SciCharAt(start+4))=='g'&&cToLower(SciCharAt(start+5))==' '))
  1637. {
  1638. SendEditor(SCI_SETFOLDLEVEL,line,SC_FOLDLEVELHEADERFLAG|1024);
  1639. }
  1640. else
  1641. {
  1642. start2=(int)SendEditor(SCI_POSITIONFROMLINE,line-1,0);
  1643. while (SciCharAt(start2)==' ') {
  1644. start2++;
  1645. }
  1646. i=0;
  1647. while ((i+start2)<ostart&&SciCharAt(start2+i)!=' '&&SciCharAt(start2+i)!='\''&&(SciCharAt(start2+i)!='/'||SciCharAt(start2+i+1)!='/')&&SciCharAt(start2+i)!='\n'&&SciCharAt(start2+i)!='\r')
  1648. {
  1649. lbuf[i]=SciCharAt(start2+i);
  1650. i++;
  1651. }
  1652. lbuf[i]=0;
  1653. ToLower(lbuf);
  1654. if (!strcmp(lbuf,"end")||!strcmp(lbuf,"jump")||!strcmp(lbuf,"jumpstd")||!strcmp(lbuf,"goto")||!strcmp(lbuf,"return")||!strcmp(lbuf,"m")||!strcmp(lbuf,"="))
  1655. {
  1656. SendEditor(SCI_SETFOLDLEVEL,line,1024); //Don't fold blank lines at end.
  1657. }
  1658. else if (line==0||SendEditor(SCI_GETFOLDLEVEL,line-1,0)==1024)
  1659. {
  1660. SendEditor(SCI_SETFOLDLEVEL,line,1024);
  1661. }
  1662. else
  1663. {
  1664. SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1665. }
  1666. }
  1667. goto commentstyle;
  1668. GlobalFree(lbuf);
  1669. break;
  1670. }
  1671. else if (SciCharAt(start)=='='||SciCharAt(start)=='.'||(cToLower(SciCharAt(start))=='m'&&SciCharAt(start+1)==' '))
  1672. {
  1673. SendEditor(SCI_SETSTYLING,1,STYLE_ARGUMENT);
  1674. SendEditor(SCI_STARTSTYLING,start+1,0x1f);
  1675. SendEditor(SCI_SETSTYLING,(len-1)-(start-ostart),STYLE_MESSAGE);
  1676. while (SciCharAt(ostart+len-1)=='\\')
  1677. {
  1678. ostart+=len;
  1679. len=SendEditor(SCI_LINELENGTH,SendEditor(SCI_LINEFROMPOSITION,ostart,0),0);
  1680. SendEditor(SCI_SETSTYLING,len,STYLE_MESSAGE);
  1681. SendEditor(SCI_SETFOLDLEVEL,SendEditor(SCI_LINEFROMPOSITION,ostart,0),1025);
  1682. }
  1683. SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1684. GlobalFree(lbuf);
  1685. break;
  1686. }
  1687. else if (SciCharAt(start)==':')
  1688. {
  1689. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_LABEL);
  1690. SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1691. GlobalFree(lbuf);
  1692. break;
  1693. }
  1694. else
  1695. {
  1696. if (line!=0&&!collapselines)
  1697. {
  1698. start2=(int)SendEditor(SCI_POSITIONFROMLINE,line-1,0);
  1699. while (SciCharAt(start2)==' ') {
  1700. start2++;
  1701. }
  1702. i=0;
  1703. while ((i+start2)<ostart&&SciCharAt(start2+i)!=' '&&SciCharAt(start2+i)!='\''&&(SciCharAt(start2+i)!='/'||SciCharAt(start2+i+1)!='/')&&SciCharAt(start2+i)!='\n'&&SciCharAt(start2+i)!='\r')
  1704. {
  1705. lbuf[i]=SciCharAt(start2+i);
  1706. i++;
  1707. }
  1708. lbuf[i]=0;
  1709. ToLower(lbuf);
  1710. if (!strcmp(lbuf,"end")||!strcmp(lbuf,"jump")||!strcmp(lbuf,"jumpstd")||!strcmp(lbuf,"goto")||!strcmp(lbuf,"return")||!strcmp(lbuf,"m")||!strcmp(lbuf,"="))
  1711. {
  1712. SendEditor(SCI_SETFOLDLEVEL,line,1024); //Don't fold blank lines at end.
  1713. dontsetlevel=1;
  1714. }
  1715. }
  1716. if (line==0)
  1717. {
  1718. SendEditor(SCI_SETFOLDLEVEL,line,1024);
  1719. dontsetlevel=1;
  1720. }
  1721. else if (SciCharAt(start)=='\n'||SciCharAt(start)=='\r'||SciCharAt(start)=='\''||(SciCharAt(start)=='/'&&SciCharAt(start+1)=='/')||SendEditor(SCI_GETFOLDLEVEL,line-1,0)==1024)
  1722. {
  1723. if (SendEditor(SCI_GETFOLDLEVEL,line-1,0)==1024&&!dontsetlevel)
  1724. {
  1725. SendEditor(SCI_SETFOLDLEVEL,line,1024);
  1726. }
  1727. else if (!dontsetlevel)
  1728. {
  1729. SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1730. }
  1731.  
  1732. dontsetlevel=1;
  1733. SendEditor(SCI_STARTSTYLING,ostart+2,0x1f);
  1734. //SendEditor(SCI_SETSTYLING,(ostart-start),STYLE_NORMAL);
  1735. }
  1736. i=0;
  1737. while (SciCharAt(start+i)!=' '&&SciCharAt(start+i)!='\''&&(SciCharAt(start+i)!='/'||SciCharAt(start+i+1)!='/')&&SciCharAt(start+i)!='\n'&&SciCharAt(start+i)!='\r'&&(i+start)<(ostart+len))
  1738. {
  1739. lbuf[i]=SciCharAt(start+i);
  1740. i++;
  1741. }
  1742. lbuf[i]=0;
  1743. ToLower(lbuf);
  1744. if (!strcmp(lbuf,"end")||!strcmp(lbuf,"jump")||!strcmp(lbuf,"jumpstd")||!strcmp(lbuf,"goto")||!strcmp(lbuf,"return"))
  1745. {
  1746. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1747. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_IMPORTANT);
  1748. if (!dontsetlevel)
  1749. {
  1750. if (collapseatend)
  1751. {
  1752. SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1753. SendEditor(SCI_SETFOLDLEVEL,line+1,1024);
  1754. }
  1755. else
  1756. {
  1757. SendEditor(SCI_SETFOLDLEVEL,line,1024);
  1758. }
  1759. }
  1760. }
  1761. else if (!strcmp(lbuf,"lock")||!strcmp(lbuf,"faceplayer")||!strcmp(lbuf,"release")||!strcmp(lbuf,"msgbox")||!strcmp(lbuf,"callstd")||!strcmp(lbuf,"callasm")||!strcmp(lbuf,"message")||!strcmp(lbuf,"showmsg")||!strcmp(lbuf,"closemsg")||!strcmp(lbuf,"releaseall")||!strcmp(lbuf,"lockall")||!strcmp(lbuf,"waitbutton")||!strcmp(lbuf,"if"))
  1762. {
  1763. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1764. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_IMPORTANT);
  1765. if (!dontsetlevel)SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1766. }
  1767. else
  1768. {
  1769. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1770. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_NORMAL);
  1771. if (!dontsetlevel)SendEditor(SCI_SETFOLDLEVEL,line,1025);
  1772. }
  1773. }
  1774. while (SciCharAt(start)!='\''&&(SciCharAt(start)!='/'||SciCharAt(start+1)!='/')&&SciCharAt(start)!='\n'&&SciCharAt(start)!='\r'&&SciCharAt(start)!=' '&&SciCharAt(start)!='\t'&&start<(ostart+len))
  1775. {
  1776. start++;
  1777. }
  1778. if (start!=(ostart+len))
  1779. {
  1780. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1781. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_ARGUMENT);
  1782. }
  1783. commentstyle:
  1784. while (SciCharAt(start)!='\''&&(SciCharAt(start)!='/'||SciCharAt(start+1)!='/')&&SciCharAt(start)!='\n'&&SciCharAt(start)!='\r'&&start<(ostart+len))
  1785. {
  1786. start++;
  1787. }
  1788. if (SciCharAt(start)=='\''||(SciCharAt(start)=='/'&&SciCharAt(start+1)=='/'))
  1789. {
  1790. SendEditor(SCI_STARTSTYLING,start,0x1f);
  1791. SendEditor(SCI_SETSTYLING,len-(start-ostart),STYLE_MESSAGE);
  1792. }
  1793. GlobalFree(lbuf);
  1794. }
  1795. break;
  1796. }
  1797. }
  1798. break;
  1799. case WM_DROPFILES:
  1800. DragQueryFile((HANDLE)wParam,0,lbuf=alloca(DragQueryFile((HANDLE)wParam,0,NULL,0)+1),sizeof(GreatBuffer));
  1801. fileM=CreateFile(lbuf,GENERIC_READ,
  1802. FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,
  1803. OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  1804. if (fileM!=INVALID_HANDLE_VALUE)
  1805. {
  1806. CloseHandle(fileM);
  1807. i=strlen(lbuf);
  1808. if (!strcmp(lbuf+i-4,".gba")||
  1809. !strcmp(lbuf+i-4,".nds")||
  1810. !strcmp(lbuf+i-4,".gbc")||
  1811. !strcmp(lbuf+i-5,".narc")||
  1812. !strcmp(lbuf+i-3,".gb"))
  1813. {
  1814. strcpy(RomOpen,lbuf);
  1815. goto OpenRoms;
  1816. }
  1817. else
  1818. {
  1819. strcpy(FileOpen,lbuf);
  1820. goto OpenMe;
  1821. }
  1822. }
  1823. DragFinish((HANDLE)wParam);
  1824. break;
  1825. case WM_COMMAND:
  1826. #ifdef SCRAP
  1827. if (lParam==(LPARAM)ScrapPunk)
  1828. {
  1829. goto ScrapPunkCode;
  1830. }
  1831. else
  1832. #endif
  1833. switch (LOWORD(wParam))
  1834. {
  1835. case 2000:
  1836. ShowWindow(GotoWin,SW_HIDE);
  1837. ShowWindow(GenWin,SW_HIDE);
  1838. #ifdef SCRAP
  1839. SendMessage(PickupWin,WM_COMMAND,2000,0);
  1840. #endif
  1841. SendMessage(InputWin,WM_COMMAND,2000,0);
  1842. EnableWindow(MainWnd,1);
  1843. SetFocus(Text);
  1844. SendEditor(SCI_AUTOCCANCEL,0,0);
  1845. break;
  1846. case 1007:
  1847. if (NotSaved)
  1848. {
  1849. i=MessageBox(MainWnd,GetString1(3017),GetString2(3018),0x23);//yes 6 no 7 cancel 2
  1850. if (i==6)
  1851. {
  1852. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  1853. if (NotSaved)
  1854. {
  1855. i=2;
  1856. }
  1857. }
  1858. }
  1859. if (i!=2)
  1860. {
  1861. exiting();
  1862. ExitProcess(0);
  1863. }
  1864. break;
  1865. case ID_NEW:
  1866. i=0;
  1867. if (NotSaved)
  1868. {
  1869. i=MessageBox(MainWnd,GetString1(3017),GetString2(3019),0x23);//yes 6 no 7 cancel 2
  1870. if (i==6)
  1871. {
  1872. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  1873. if (NotSaved)
  1874. {
  1875. i=2;
  1876. }
  1877. }
  1878. }
  1879. if (i!=2)
  1880. {
  1881. strcat(GetString1(3008)," - Score_Under's PKSV-UI");
  1882. SetWindowText(MainWnd,strbuffer);
  1883. strcpy(FileOpen,GetString1(3008));
  1884. *FileOpen2=0;
  1885. strcpy(FileOpen3,GetString1(3008));
  1886. SendEditor(SCI_CANCEL,0,0);
  1887. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  1888. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  1889. SendEditor(SCI_CLEARALL,0,0);
  1890. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  1891. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  1892. SendEditor(SCI_ADDTEXT,strlen(StrDefault),(LPARAM)StrDefault);
  1893. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  1894. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  1895. SendEditor(SCI_SETSAVEPOINT,0,0);
  1896. SendEditor(SCI_GOTOPOS,0,0);
  1897. SendEditor(SCI_CHOOSECARETX,0,0);
  1898. SetFocus(Text);
  1899. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  1900. SendEditor(SCI_SETSEL,0,0);
  1901. }
  1902. break;
  1903. case ID_OPEN:
  1904. if (NotSaved)
  1905. {
  1906. i=MessageBox(MainWnd,GetString1(3017),GetString2(3019),0x23);//yes 6 no 7 cancel 2
  1907. if (i==6)
  1908. {
  1909. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  1910. if (NotSaved)
  1911. {
  1912. i=2;
  1913. }
  1914. }
  1915. if (i==2)
  1916. {
  1917. break;
  1918. }
  1919. }
  1920. ZeroMemory(&ofn,sizeof(OPENFILENAME));
  1921. ofn.lStructSize = sizeof(OPENFILENAME);
  1922. ofn.hwndOwner = MainWnd;
  1923. ofn.hInstance = GetModuleHandle(NULL);
  1924. ofn.lpstrFilter = "PKSV Scripts\0*.pks\0PKSV Temp\0_?_.pks.tmp\0Rubikon/XSE script (*.rbc;*.rbh)\0*.rbc;*.rbh\0Text Files\0*.txt\0All Files\0*.*\0";
  1925. ofn.lpstrFile = FileOpen;
  1926. ofn.nMaxFile = sizeof(FileOpen);
  1927. LoadRegSettingStr(NULL,"ScriptPath");
  1928. strcpy(DefScriptPath,GreatBuffer);
  1929. ofn.lpstrInitialDir = DefScriptPath;
  1930. ofn.Flags = OFN_PATHMUSTEXIST|OFN_HIDEREADONLY;
  1931. ofn.lpstrTitle = GetString2(3021);
  1932. if (*DefScriptPath!=0)
  1933. SetCurrentDirectory(DefScriptPath);
  1934. if (GetOpenFileName(&ofn))
  1935. {
  1936. if (cToLower(FileOpen[strlen(FileOpen)-3])=='g'&&cToLower(FileOpen[strlen(FileOpen)-2])=='b'&&cToLower(FileOpen[strlen(FileOpen)-1])=='a')
  1937. {
  1938. MessageBox(MainWnd,"Warning: This appears to be a GBA ROM, yet you have opened it with the .PKS script opener.\nChoose Rom Tools->Open ROM for the expected behaviour if this was a ROM.","Warning",0x30);
  1939. }
  1940. OpenMe:
  1941. strcpy(FileOpen2,FileOpen);
  1942. strcpy(FileOpen3,FileOpen);
  1943. strcpy(GreatBuffer,FileOpen);
  1944. GetDirFromGreatBuffer();
  1945. strcpy(DefScriptPath,GreatBuffer);
  1946. SaveRegSettingStr(NULL,"ScriptPath",GreatBuffer);
  1947. if (strcmp(GreatBuffer,FileOpen))
  1948. strcpy(FileOpen2,(char*)(FileOpen+strlen(GreatBuffer)));
  1949. strcat(FileOpen2," - Score_Under's PKSV-UI");
  1950. SetWindowText(MainWnd,FileOpen2);
  1951. fileM=CreateFile(FileOpen,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  1952. if (GetLastError()!=0)
  1953. {
  1954. FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),0,(char*)&ptr,2000,NULL);
  1955. MessageBox(MainWnd,ptr,ptr,0x10);
  1956. LocalFree(ptr);
  1957. return 0;
  1958. }
  1959. fsize=SetFilePointer(fileM,0,NULL,FILE_END);
  1960. ptr=GlobalAlloc(GPTR,fsize+1);
  1961. SetFilePointer(fileM,0,NULL,FILE_BEGIN);
  1962. ReadFile(fileM,ptr,fsize,&read,NULL);
  1963. if (read!=fsize)
  1964. {
  1965. MessageBox(MainWnd,GetString1(3015),GetString2(3001),0x10);
  1966. }
  1967. SendEditor(SCI_CANCEL,0,0);
  1968. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  1969. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  1970. SendEditor(SCI_CLEARALL,0,0);
  1971. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  1972. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  1973. SendEditor(SCI_ADDTEXT,fsize,(LPARAM)ptr);
  1974. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  1975. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  1976. SendEditor(SCI_SETSAVEPOINT,0,0);
  1977. SendEditor(SCI_GOTOPOS,0,0);
  1978. SendEditor(SCI_CHOOSECARETX,0,0);
  1979. GlobalFree(ptr);
  1980. CloseHandle(fileM);
  1981. SetFocus(Text);
  1982. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  1983. SendEditor(SCI_SETSEL,0,0);
  1984. }
  1985. break;
  1986. case ID_SAVEAS:
  1987. ZeroMemory(&ofn,sizeof(OPENFILENAME));
  1988. ofn.lStructSize = sizeof(OPENFILENAME);
  1989. ofn.hwndOwner = MainWnd;
  1990. ofn.hInstance = GetModuleHandle(NULL);
  1991. ofn.lpstrFilter = "PKSV Scripts\0*.pks\0Text Files\0*.txt\0All Files\0*.*\0";
  1992. ofn.lpstrFile = FileOpen;
  1993. LoadRegSettingStr(NULL,"ScriptPath");
  1994. strcpy(DefScriptPath,GreatBuffer);
  1995. ofn.lpstrInitialDir = DefScriptPath;
  1996. ofn.nMaxFile = sizeof(FileOpen);
  1997. ofn.Flags = OFN_OVERWRITEPROMPT;
  1998. ofn.lpstrTitle = GetString2(3050);
  1999. if (GetSaveFileName(&ofn)&&strcmp(ofn.lpstrFile,""))
  2000. {
  2001. i=(int)strlen(FileOpen);
  2002. strcpy(GreatBuffer,FileOpen);
  2003. ToLower(GreatBuffer);
  2004. if (GreatBuffer[i-1]!='s'||GreatBuffer[i-2]!='k'||GreatBuffer[i-3]!='p'||GreatBuffer[i-4]!='.')
  2005. strcat(FileOpen,".pks");
  2006. strcpy(FileOpen3,FileOpen);
  2007. strcpy(FileOpen2,FileOpen);
  2008. strcpy(GreatBuffer,FileOpen);
  2009. GetDirFromGreatBuffer();
  2010. SaveRegSettingStr(NULL,"ScriptPath",GreatBuffer);
  2011. if (strcmp(GreatBuffer,FileOpen))
  2012. strcpy(FileOpen2,(char*)(FileOpen+strlen(GreatBuffer)));
  2013. strcat(FileOpen2," - Score_Under's PKSV-UI");
  2014. SetWindowText(MainWnd,FileOpen2);
  2015. /*Wait... what?
  2016. strcpy(FileOpen2,FileOpen);
  2017. strcat(FileOpen2,".bak");
  2018. CopyFile(FileOpen2,FileOpen,0);
  2019. */
  2020. FileSave=CreateFile(FileOpen3,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  2021. if (FileSave!=INVALID_HANDLE_VALUE)
  2022. {
  2023. i=(int)SendEditor(SCI_GETLENGTH,0,0);
  2024. ptr=GlobalAlloc(GPTR,i+1);
  2025. SendEditor(SCI_GETTEXT,i+1,(LPARAM)ptr);
  2026. WriteFile(FileSave,ptr,i,&read,NULL);
  2027. start=0;
  2028. end=10;
  2029. while ((int)read<i-start)
  2030. {
  2031. WriteFile(FileSave,(void*)(((char*)ptr)+start),i-start,&read,NULL);
  2032. start+=read;
  2033. end--;
  2034. if (!end)
  2035. {
  2036. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,buf,sizeof(buf),NULL);
  2037. MessageBox(MainWnd,GetString1(3023),GetString2(3022),0x40);
  2038. MessageBox(MainWnd,buf,GetString1(3022),0x10);
  2039. break;
  2040. }
  2041. }
  2042. GlobalFree(ptr);
  2043. CloseHandle(FileSave);
  2044. }
  2045. else
  2046. {
  2047. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,buf,sizeof(buf),NULL);
  2048. MessageBox(MainWnd,GetString1(3023),GetString2(3024),0x40);
  2049. MessageBox(MainWnd,buf,GetString1(3024),0x10);
  2050. }
  2051. SendEditor(SCI_SETSAVEPOINT,0,0);
  2052. SetFocus(Text);
  2053. }
  2054. break;
  2055. case ID_SAVE:
  2056. if (strcmp(FileOpen3,GetString1(3008)))
  2057. {
  2058. FileSave=CreateFile(FileOpen3,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  2059. if (FileSave!=INVALID_HANDLE_VALUE)
  2060. {
  2061. i=(int)SendEditor(SCI_GETLENGTH,0,0);
  2062. ptr=GlobalAlloc(GPTR,i+1);
  2063. SendEditor(SCI_GETTEXT,i+1,(LPARAM)ptr);
  2064. WriteFile(FileSave,ptr,i,&read,NULL);
  2065. start=0;
  2066. end=10;
  2067. while ((int)read<(i-start))
  2068. {
  2069. WriteFile(FileSave,(char*)ptr+start,(i-start),&read,NULL);
  2070. start+=read;
  2071. end--;
  2072. if (!end)
  2073. {
  2074. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,buf,sizeof(buf),NULL);
  2075. MessageBox(MainWnd,GetString1(3023),GetString2(3022),0x40);
  2076. MessageBox(MainWnd,buf,GetString1(3022),0x10);
  2077. break;
  2078. }
  2079. }
  2080. GlobalFree(ptr);
  2081. CloseHandle(FileSave);
  2082. }
  2083. else
  2084. {
  2085. FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,buf,sizeof(buf),NULL);
  2086. MessageBox(MainWnd,GetString1(3023),GetString2(3024),0x40);
  2087. MessageBox(MainWnd,buf,GetString2(3024),0x10);
  2088. }
  2089. SendEditor(SCI_SETSAVEPOINT,0,0);
  2090. SetFocus(Text);
  2091. }
  2092. else
  2093. {
  2094. SendMessage(hwnd,msg,ID_SAVEAS,0);
  2095. }
  2096. break;
  2097. case 1008:
  2098. SendEditor(SCI_CUT,0,0);
  2099. break;
  2100. case 1009:
  2101. SendEditor(SCI_COPY,0,0);
  2102. break;
  2103. case 1010:
  2104. SendEditor(SCI_PASTE,0,0);
  2105. break;
  2106. case 1015:
  2107. SendEditor(SCI_UNDO,0,0);
  2108. break;
  2109. case 1016:
  2110. SendEditor(SCI_REDO,0,0);
  2111. break;
  2112. case 1017:
  2113. SendEditor(SCI_SELECTALL,0,0);
  2114. break;
  2115. case 1006:
  2116. ZeroMemory(&ofn,sizeof(OPENFILENAME));
  2117. ofn.lStructSize = sizeof(OPENFILENAME);
  2118. ofn.hwndOwner = MainWnd;
  2119. ofn.hInstance = GetModuleHandle(NULL);
  2120. ofn.lpstrFilter = "GBA/GBC ROMs\0*.gb?;*.gb\0All Files\0*.*\0";
  2121. ofn.lpstrFile = RomOpen;
  2122. ofn.nMaxFile = sizeof(RomOpen);
  2123. LoadRegSettingStr(NULL,"ROMPath");
  2124. strcpy(DefRomPath,GreatBuffer);
  2125. ofn.lpstrInitialDir = DefRomPath;
  2126. ofn.Flags = OFN_PATHMUSTEXIST;
  2127. ofn.lpstrTitle = GetString1(3026);
  2128. if (GetOpenFileName(&ofn))
  2129. {
  2130. OpenRoms:
  2131. strcpy(RomOpen2,RomOpen);
  2132. strcpy(GreatBuffer,RomOpen);
  2133. GetDirFromGreatBuffer();
  2134. strcpy(DefRomPath,GreatBuffer);
  2135. SaveRegSettingStr(NULL,"ROMPath",DefRomPath);
  2136. fileM=CreateFile(RomOpen,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  2137. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  2138. ReadFile(fileM,&modechar,4,&read,NULL);
  2139. SetFilePointer(fileM,0x13F,NULL,FILE_BEGIN);
  2140. ReadFile(fileM,&determineMode,3,&read,NULL);
  2141. if ((determineMode[0]=='A'&&determineMode[1]=='A')||(determineMode[0]=='S'&&determineMode[1]=='M'))
  2142. {//Detect GSC and Prism
  2143. pokemon_version=GBC;
  2144. }
  2145. else
  2146. {
  2147. SetFilePointer(fileM,0xAC,NULL,FILE_BEGIN);
  2148. ReadFile(fileM,&modechar,4,&read,NULL);
  2149. pokemon_version=GBA;
  2150. }
  2151. CloseHandle(fileM);
  2152. SaveRegSettingStr(NULL,"ROMFile",RomOpen2);
  2153. }
  2154. break;
  2155. case 1020:
  2156. collapseatend=1-collapseatend;
  2157. mii.cbSize=sizeof(mii);
  2158. mii.fMask=MIIM_STATE;
  2159. if (!collapseatend)
  2160. {
  2161. mii.fState=MFS_CHECKED;
  2162. SetMenuItemInfo(GetMenu(MainWnd),1020,0,&mii);
  2163. mii.fState=MFS_UNCHECKED|MFS_GRAYED;
  2164. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  2165. collapselines=0;
  2166. }
  2167. else
  2168. {
  2169. mii.fState=MFS_UNCHECKED;
  2170. SetMenuItemInfo(GetMenu(MainWnd),1020,0,&mii);
  2171. mii.fState=MFS_ENABLED;
  2172. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  2173. }
  2174. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  2175. RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Score_Under\\PKSV-UI",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,(DWORD*)&start);
  2176. i=1-collapseatend;
  2177. RegSetValueEx(regkey,"CollapseBeforeEnd",0,REG_DWORD,(CONST BYTE*)&i,4);
  2178. RegCloseKey(regkey);
  2179. break;
  2180. case 1021:
  2181. collapselines=1-collapselines;
  2182. mii.cbSize=sizeof(mii);
  2183. mii.fMask=MIIM_STATE;
  2184. if (collapselines)
  2185. mii.fState=MFS_CHECKED;
  2186. else
  2187. mii.fState=MFS_UNCHECKED;
  2188. SetMenuItemInfo(GetMenu(MainWnd),1021,0,&mii);
  2189. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  2190. RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Score_Under\\PKSV-UI",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,(DWORD*)&start);
  2191. i=collapselines;
  2192. RegSetValueEx(regkey,"CollapseEmptyLines",0,REG_DWORD,(CONST BYTE*)&i,4);
  2193. RegCloseKey(regkey);
  2194. break;
  2195. case 1112:
  2196. autoautocomplete=1-autoautocomplete;
  2197. mii.cbSize=sizeof(mii);
  2198. mii.fMask=MIIM_STATE;
  2199. if (autoautocomplete)
  2200. mii.fState=MFS_CHECKED;
  2201. else
  2202. mii.fState=MFS_UNCHECKED;
  2203. SetMenuItemInfo(GetMenu(MainWnd),1112,0,&mii);
  2204. RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Score_Under\\PKSV-UI",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&regkey,(DWORD*)&start);
  2205. i=autoautocomplete;
  2206. RegSetValueEx(regkey,"AutoAutoComplete",0,REG_DWORD,(CONST BYTE*)&i,4);
  2207. RegCloseKey(regkey);
  2208. break;
  2209. case 1012:
  2210. ShowWindow(FindReplaceWin,SW_SHOW);
  2211. SetFocus(GetDlgItem(FindReplaceWin,6));
  2212. break;
  2213. case 1005:
  2214. ShowWindow(FFSWin,SW_SHOW);
  2215. SetFocus(GetDlgItem(FFSWin,4));
  2216. break;
  2217. case 1014:
  2218. ShowWindow(DecWin,SW_SHOW);
  2219. SetFocus(GetDlgItem(DecWin,3));
  2220. break;
  2221. case 1018:
  2222. EnableWindow(MainWnd,0);
  2223. ShowWindow(GotoWin,SW_SHOW);
  2224. SetFocus(GetDlgItem(GotoWin,3));
  2225. sprintf(buf,"%u",SendEditor(SCI_LINEFROMPOSITION,SendEditor(SCI_GETSELECTIONSTART,0,0),0));
  2226. SetDlgItemText(GotoWin,3,buf);
  2227. sprintf(buf,"%u",SendEditor(SCI_GETSELECTIONSTART,0,0)-SendEditor(SCI_POSITIONFROMLINE,SendEditor(SCI_LINEFROMPOSITION,SendEditor(SCI_GETSELECTIONSTART,0,0),0),0));
  2228. SetDlgItemText(GotoWin,4,buf);
  2229. break;
  2230. case 1032:
  2231. ShowWindow(NoteWin,SW_SHOW);
  2232. break;
  2233. case 1101:
  2234. ShowWindow(HexWin,SW_SHOW);
  2235. break;
  2236. case 1031:
  2237. if (AOT)
  2238. {
  2239. SetWindowPos(MainWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
  2240. mii.cbSize=sizeof(mii);
  2241. mii.fMask=MIIM_STATE;
  2242. mii.fState=MFS_CHECKED;
  2243. SetMenuItemInfo(GetMenu(MainWnd),1031,0,&mii);
  2244. }
  2245. else
  2246. {
  2247. SetWindowPos(MainWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
  2248. mii.cbSize=sizeof(mii);
  2249. mii.fMask=MIIM_STATE;
  2250. mii.fState=MFS_UNCHECKED;
  2251. SetMenuItemInfo(GetMenu(MainWnd),1031,0,&mii);
  2252. }
  2253. AOT=!AOT;
  2254. break;
  2255. case 1030:
  2256. if (*RomOpen2!=0)
  2257. {
  2258. ShellExecute(MainWnd,NULL,RomOpen2,NULL,NULL,SW_SHOWDEFAULT);
  2259. }
  2260. else
  2261. {
  2262. MessageBox(MainWnd,GetString1(3027),GetString2(3028),0x40);
  2263. }
  2264. break;
  2265. case 1100:
  2266. strcpy(GreatBuffer,GetString1(3029));
  2267. strcat(GreatBuffer,INTERNAL_VERSION);
  2268. strcat(GreatBuffer,GetString1(3030));
  2269. MessageBox(MainWnd,GreatBuffer,GetString1(3031),0x40);
  2270. break;
  2271. case 1200:
  2272. EditPrintSetup(Text);
  2273. break;
  2274. case 1201:
  2275. EditPrint(Text,FileOpen2,"Page %u");
  2276. break;
  2277. case 1202:
  2278. if (*RomOpen2!=0)
  2279. {
  2280. i=(int)SendEditor(SCI_GETLENGTH,0,0);
  2281. ptr=GlobalAlloc(GPTR,i+1);
  2282. SendEditor(SCI_GETTEXT,i+1,(LPARAM)ptr);
  2283. DetermineMode(RomOpen2);
  2284. CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TDebugCompile,(LPVOID)ptr,0,(LPVOID)&i);
  2285. }
  2286. else
  2287. {
  2288. MessageBox(MainWnd,GetString1(3034),GetString2(3001),0x40);
  2289. }
  2290. break;
  2291. case 1203:
  2292. ShowWindow(MovePlanWin,SW_SHOW);
  2293. break;
  2294. case 1204:
  2295. UpdateMe((void*)1);
  2296. break;
  2297. case 1102:
  2298. if (*RomOpen2)
  2299. {
  2300. ShowWindow(ScriptSearchWin,SW_SHOW);
  2301. }
  2302. else
  2303. {
  2304. MessageBox(MainWnd,GetString1(3027),GetString2(3028),0x30);
  2305. }
  2306. break;
  2307. case 1104:
  2308. if (*RomOpen2&&pokemon_version==GBA)
  2309. {
  2310. ShowWindow(LockWin,SW_SHOW);
  2311. }
  2312. else if (!*RomOpen2)
  2313. {
  2314. MessageBox(MainWnd,GetString1(3027),GetString2(3028),0x30);
  2315. }
  2316. else
  2317. {
  2318. MessageBox(MainWnd,GetString1(3097),GetString2(3028),0x30);
  2319. }
  2320. break;
  2321. #ifdef SCRAP
  2322. case 1105:
  2323. ScrapPunkCode:
  2324. if (*RomOpen2&&((modechar)=='ERPB'||(modechar)=='EGPB'))
  2325. {
  2326. ShowWindow(PickupWin,SW_SHOW);
  2327. }
  2328. else if (!*RomOpen2)
  2329. {
  2330. MessageBox(MainWnd,GetString1(3027),GetString2(3028),0x30);
  2331. }
  2332. else
  2333. {
  2334. MessageBox(MainWnd,GetString1(3098),GetString2(3028),0x30);
  2335. }
  2336. break;
  2337. #endif
  2338. case 1103:
  2339. FlagsShown=1;
  2340. SendMessage(GetDlgItem(FlagsWin,2),LB_RESETCONTENT,0,0);
  2341. if (FlagArr)GlobalFree(FlagArr);
  2342. FlagArr=NULL;
  2343. FlagArrAlloc=0;
  2344. FlagArrLen=0;
  2345. LastFlag=-1;
  2346. SetDlgItemText(FlagsWin,4,"");
  2347. SetDlgItemText(FlagsWin,5,"");
  2348. SetDlgItemText(FlagsWin,6,"");
  2349. if (!LoadRegSetting("Flags","FilledList"))
  2350. {
  2351. SaveRegSetting("Flags","FilledList",1);
  2352. #include "default_flags.h"
  2353. SortFlags();
  2354. }
  2355. else
  2356. ReAddFlags();
  2357. ShowWindow(FlagsWin,SW_SHOW);
  2358. break;
  2359. case 1013: //script-gen
  2360. i=0;
  2361. if (NotSaved)
  2362. {
  2363. i=MessageBox(MainWnd,GetString1(3032),GetString2(3028),0x23);//yes 6 no 7 cancel 2
  2364. if (i==6)
  2365. {
  2366. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  2367. if (NotSaved)
  2368. {
  2369. i=2;
  2370. }
  2371. }
  2372. }
  2373. if (i!=2)
  2374. {
  2375. if (*RomOpen2!=0)
  2376. {
  2377. ShowWindow(GenWin,SW_SHOW);
  2378. EnableWindow(MainWnd,0);
  2379. SetFocus(GetDlgItem(GenWin,1));
  2380. }
  2381. else
  2382. {
  2383. MessageBox(MainWnd,GetString1(3027),GetString2(3028),0);
  2384. }
  2385. }
  2386. break;
  2387. case 1111:
  2388. i=(int)SendEditor(SCI_GETSELECTIONSTART,0,0);
  2389. len=0;
  2390. end=0; //End == type
  2391. start=(int)SendEditor(SCI_POSITIONFROMLINE,SendEditor(SCI_LINEFROMPOSITION,i,0),0);
  2392. while (SciCharAt(start)==' ')start++;
  2393. if (SciCharAt(start)=='=')
  2394. {
  2395. end=1;
  2396. }
  2397. if ((SciCharAt(start)=='m'||SciCharAt(start)=='M')&&SciCharAt(start+1)==' ')
  2398. {
  2399. end=3;
  2400. }
  2401. if (SciCharAt(start)=='.'&&SciCharAt(start+1)==' ')
  2402. {
  2403. end=100;
  2404. }
  2405. while (i>start)
  2406. {
  2407. if (SciCharAt(i-1)==' ') {
  2408. if (end==0) {
  2409. end=2;
  2410. }break;
  2411. }
  2412. len++;
  2413. i--;
  2414. }
  2415. if (pokemon_version==GBA)
  2416. {
  2417. if (end==0)
  2418. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2419. "#define;9|#eorg;9|#loud;9|#org;9|#quiet;9|#raw;9|.;9|=;2|addfurniture;5|additem;4|addpokemon;3|\
  2420. addvar;9|applymovement;1|\
  2421. applymovementfinishat;1|battle;3|braille;2|call;9|callasm;9|callasm2;9|callstd;2|callstdif;2|\
  2422. checkanimation;8|checkattack;3|checkflag;6|checkifroomforfurniture;5|checkitem;4|\
  2423. checkitemspaceinbag;4|checkiteminpc;4|checkitemtype;4|checkfurniture;5|checkgender;7|\
  2424. checkmoney;11|checkobedience;3|checksound;10|checktrainerflag;1|choosecontestpokemon;3|clearflag;6|cleartrainerflag;1|closemsg;2|\
  2425. CMD_2C;0|CMD_2D;0|CMD_60;0|CMD_8A;0|CMD_96;0|CMD_99;0|CMD_9A;0|CMD_A6;0|CMD_B1;0|CMD_B2;0|\
  2426. CMD_C0;0|CMD_C1;0|CMD_C2;0|CMD_C3;0|CMD_D3;0|CMD_FB;0|CMD_FE;0|\
  2427. coincasetovar;11|compare;9|comparefarbytetobyte;9|comparefarbytetofarbyte;9|comparefarbytetovar;9|\
  2428. comparehiddenvar;9|comparevars;9|comparevars2;9|comparevartobyte;9|comparevartofarbyte;9|copybyte;9|\
  2429. copyscriptbanks;9|copyvar;9|\
  2430. copyvarifnotzero;9|countpokemon;3|createtempsprite;1|cry;3|darkenroom;8|disappear;1|disappearat;1|\
  2431. doanimation;8|doorchange;8|doweather;8|end;9|endtrainerbattle;1|endtrainerbattle2;1|executeram;9|faceplayer;1|\
  2432. fadedefault;10|fadein;10|fadeout;10|fadescreen;8|fadescreendelay;8|fadesong;10|fadesound;10|fakecallstd;2|fakejumpstd;2|\
  2433. falldownhole;7|fardisappear;1|farreappear;1|fanfare;10|getplayerxy;7|giveegg;3|giveitemtopc;4|\
  2434. givemoney;11|givetocoincase;11|hidebox;2|hidecoins;11|hidepokepic;2|hidemoney;2|if;9|jump;9|\
  2435. jumpram;9|jumpstd;2|jumpstdif;2|killscript;9|lastbattle;3|lasttrainerbattle;1|lightroom;8|\
  2436. loadbytefrompointer;9|loadpointer;9|lock;1|lockall;1|\
  2437. m;1|message;2|moveoffscreen;1|movesprite;1|movesprite2;1|msgbox;2|msgbox2;2|msgboxnormal;2|msgboxsign;2|multichoice;2|\
  2438. multichoice2;2|multichoice3;2|nop|nop0|nop1|paymoney;11|pause;8|pauseevent;1|picture;2|playsong;10|playsound;10|pokemart;4|pokemart2;4|pokemart3;4|\
  2439. random;9|reappear;1|reappearat;1|release;1|releaseall;1|removeitem;4|resetspritelevel;1|resetvars;9|resetweather;8|return;9|setanimation;8|setbyte;9|setbyte2;9|setcatchlocation;3|\
  2440. setdoorclosed;8|setdoorclosedstatic;8|setdooropened;8|setdooropenedstatic;8|setfarbyte;9|setflag;6|sethealingplace;3|setmapfooter;9|setmaptile;8|setobedience;3|setpokemonpp;3|settrainerflag;1|setvar;9|\
  2441. setweather;8|setworldmapflag;6|showcoins;11|showmoney;11|showmsg;2|showpokepic;3|showyesno;2|slotmachine;4|sound;10|\
  2442. special;8|special2;8|spritebehave;1|spriteface;1|startcontest;8|startwireless;8|storeattack;2|storeboxname;2|storecomp;2|storefirstpokemon;2|storefurniture;2|\
  2443. storeitem;2|storeitems;2|storepokemon;2|storepokemonvar;2|storetext;2|storevar;2|subtractvar;9|takefromcoincase;11|takefurniture;5|tempspriteface;1|textcolor;2|trainerbattle;1|updatecoins;11|updatemoney;11|\
  2444. waitbutton;9|waitcry;3|waitfanfare;10|waitspecial;8|warp;7|warp3;7|warp4;7|warp5;7|warp6;7|warpelevator;7|warpmuted;7|warpteleport;7|warpteleport2;7|warpwalking;7|writebytetooffset;9");
  2445. else if (end==1)
  2446. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2447. "\\v\\h01|\\v\\h02|\\v\\h01 found one \\v\\h02!|\\v\\h01 obtained one \\v\\h02!|\
  2448. \\v\\h01 received the \\v\\h02!|\\v\\h01 received \\v\\h03 \\v\\h02s!");
  2449. else if (end==2)
  2450. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2451. "!=;9|<;9|<=;9|<>;9|=;9|==;9|>;9|>=;9|ABRA;3|ABSOL;3|ACROBIKE;4|AERODACTYL;3|AGGRON;3|AGUAVBERRY;4|AIPOM;3|ALAKAZAM;3|\
  2452. ALTARIA;3|AMPHAROS;3|AMULETCOIN;4|ANORITH;3|ANOTEMAT;5|ANTIDOTE;4|APICOTBERRY;3|ARBOK;3|ARCANINE;3|ARIADOS;3|\
  2453. ARMALDO;3|ARON;3|ARTICUNO;3|ASPEARBERRY;4|ATTRACTMAT;5|AURORATICKET;4|AWAKENING;4|AZUMARILL;3|AZURILL;3|\
  2454. AZURILLDOLL;5|BAGON;3|BALLCUSHION;5|BALLPOSTER;5|BALTOY;3|BALTOYDOLL;5|BANETTE;3|BARBOACH;3|BASEMENTKEY;4|\
  2455. BAYLEEF;3|BEADMAIL;4|BEAUTIFLY;3|BEEDRILL;3|BELDUM;3|BELLOSSOM;3|BELLSPROUT;3|BELUEBERRY;4|BERRYJUICE;4|\
  2456. BERRYPOUCH;4|BICYCLE;4|BIGMUSHROOM;4|BIGPEARL;4|BIGPLANT;5|BIKEVOUCHER;4|BLACKBELT;4|BLACKFLUTE;4|\
  2457. BLACKGLASSES;4|BLASTOISE;3|BLASTOISEDOLL;5|BLAZIKEN;3|BLISSEY;3|BLUEBALLOON;5|BLUEFLUTE;4|BLUEORB;4|\
  2458. BLUEPOSTER;5|BLUESCARF;4|BLUESHARD;4|BLUETENT;5|BLUKBERRY;4|BNOTEMAT;5|BOY;7|BREAKABLEDOOR;5|BRELOOM;3|\
  2459. BRICKCHAIR;5|BRICKDESK;5|BRIGHTPOWDER;4|BULBASAUR;3|BURNHEAL;4|BUTTERFREE;3|CACNEA;3|CACTURNE;3|CALCIUM;4|\
  2460. CAMERA;1|CAMERA_START;8|CAMERA_END;8|CAMERUPT;3|CAMPCHAIR;5|CAMPDESK;5|CARBOS;4|CARDKEY;4|CARVANHA;3|CASCOON;3|CASTFORM;3|CATCH_POKEMON;8|\
  2461. CATERPIE;3|CELEBI;3|CHANSEY;3|CHARCOAL;3|CHARIZARD;3|CHARIZARDDOLL;5|CHARMANDER;3|CHARMELEON;3|CHERIBERRY;4|\
  2462. CHESTOBERRY;4|CHIGHNOTEMAT;5|CHIKORITA;3|CHIKORITADOLL;5|CHIMECHO;3|CHINCHOU;3|CHOICEBAND;4|\
  2463. CHOOSE_POKEMON;8|CLAMPERL;3|CLAWFOSSIL;4|CLAYDOL;3|CLEANSETAG;4|CLEFABLE;3|CLEFAIRY;3|CLEFAIRYDOLL;5|\
  2464. CLEFFA;3|CLOWNOTEMAT;5|CLOYSTER;3|COINCASE;4|COLORFULPLANT;5|COMBUSKEN;3|COMFORTCHAIR;5|COMFORTDESK;5|\
  2465. CONTESTPASS;4|CORNNBERRY;4|CORPHISH;3|CORSOLA;3|CRADILY;3|CRAWDAUNT;3|CROBAT;3|CROCONAW;3|CUBONE;3|\
  2466. CUTEPOSTER;5|CUTETV;5|CYNDAQUIL;3|CYNDAQUILDOLL;5|DEEPSEASCALE;4|DEEPSEATOOTH;4|DELCATTY;3|DELIBIRD;3|\
  2467. DEOXYS;3|DEVONGOODS;4|DEVONSCOPE;4|DEWGONG;3|DIAMONDCUSHION;5|DIGLETT;3|DIREHIT;4|DITTO;3|DITTODOLL;5|\
  2468. DIVEBALL;4|DNOTEMAT;5|DODRIO;3|DODUO;3|DOMEFOSSIL;4|DONPHAN;3|DOWN;7|DRAGONAIR;3|DRAGONFANG;4|DRAGONITE;3|\
  2469. DRAGONSCALE;4|DRATINI;3|DREAMMAIL;4|DROWZEE;3|DUGTRIO;3|DUNSPARCE;3|DURINBERRY;4|DUSCLOPS;3|DUSKULL;3|\
  2470. DUSKULLDOLL;5|DUSTOX;3|EEVEE;3|EKANS;3|ELECTABUZZ;3|ELECTRIKE;3|ELECTRODE;3|ELEKID;3|ELIXIR;4|EM_BADGE_1;6|\
  2471. EM_BADGE_2;6|EM_BADGE_3;6|EM_BADGE_4;6|EM_BADGE_5;6|EM_BADGE_6;6|EM_BADGE_7;6|EM_BADGE_8;6|EM_NATIONAL_DEX;8|\
  2472. EM_POKEDEX;6|EM_POKEMON;6|EM_POKENAV;6|ENERGYPOWDER;4|ENERGYROOT;4|ENIGMABERRY;4|ENOTEMAT;5|ENTEI;3|EONTICKET;4|\
  2473. ESCAPEROPE;4|ESPEON;3|ETHER;4|EVERSTONE;4|EXEGGCUTE;3|EXEGGUTOR;3|EXPLOUD;3|EXPSHARE;4|FABMAIL;4|FAMECHECKER;4|\
  2474. FARFETCHD;3|FEAROW;3|FEEBAS;3|FENCELENGTH;5|FENCEWIDTH;5|FERALIGATR;3|FIGYBERRY;4|FINDFROM;9|FIREBLASTMAT;5|\
  2475. FIRECUSHION;4|FIRESTONE;4|FISSUREMAT;5|FLAAFFY;3|FLAREON;3|FLUFFYTAIL;4|FLYGON;3|FNOTEMAT;5|FOCUSBAND;4|\
  2476. FORRETRESS;3|FR_BADGE_1;6|FR_BADGE_2;6|FR_BADGE_3;6|FR_BADGE_4;6|FR_BADGE_5;6|FR_BADGE_6;6|FR_BADGE_7;6|\
  2477. FR_BADGE_8;6|FR_NATIONAL_DEX;8|FR_POKEDEX;6|FR_POKEMON;6|FRESHWATER;4|FULLHEAL;4|FULLRESTORE;4|FURRET;3|\
  2478. GANLONBERRY;4|GARDEVOIR;3|GASTLY;3|GENGAR;3|GEODUDE;3|GIRAFARIG;3|GIRL;7|GLALIE;3|GLASSORNAMENT;4|\
  2479. GLIGAR;3|GLITTERMAIL;4|GLITTERMAT;5|GLOOM;3|GNOTEMAT;5|GOGOGGLES;4|GOLBAT;3|GOLDEEN;3|\
  2480. GOLDSHIELD;4|GOLDTEETH;4|GOLDUCK;3|GOLEM;3|GOODROD;4|GOREBYSS;3|GORGEOUSPLANT;4|GRANBULL;3|\
  2481. GRASSCUSHION;4|GRAVELER;3|GREATBALL;4|GREENPOSTER;4|GREENSCARF;4|GREENSHARD;4|GREPABERRY;4|\
  2482. GRIMER;3|GROUDON;3|GROVYLE;3|GROWLITHE;3|GRUMPIG;3|GUARDSPEC;4|GULPIN;3|GULPINDOLL;5|GYARADOS;3|\
  2483. HARBORMAIL;4|HARDCHAIR;4|HARDDESK;5|HARDSTONE;4|HARIYAMA;3|HAUNTER;3|HEAL_POKEMON;8|HEALPOWDER;4|\
  2484. HEARTSCALE;4|HEAVYCHAIR;4|HEAVYDESK;5|HELIXFOSSIL;4|HERACROSS;3|HITMONCHAN;3|\
  2485. HITMONLEE;3|HITMONTOP;3|HM01;4|HM02;4|HM03;4|HM04;4|HM05;4|HM06;4|HM07;4|HM08;4|HONDEWBERRY;4|\
  2486. HO-OH;3|HOOTHOOT;3|HOPPIP;3|HORSEA;3|HOUNDOOM;3|HOUNDOUR;3|HPUP;4|HUNTAIL;3|HYPERPOTION;4|HYPNO;3|\
  2487. IAPAPABERRY;4|ICEHEAL;4|IGGLYBUFF;3|ILLUMISE;3|IRON;3|ITEMFINDER;4|IVYSAUR;3|JIGGLYPUFF;3|\
  2488. JIGGLYPUFFDOLL;5|JIRACHI;3|JOLTEON;3|JUMPLUFF;3|JUMPMAT;5|JYNX;3|KABUTO;3|KABUTOPS;3|KADABRA;3|\
  2489. KAKUNA;3|KANGASKHAN;3|KECLEON;3|KECLEONDOLL;5|KELPSYBERRY;4|KINGDRA;3|KINGLER;3|KINGSROCK;4|\
  2490. KIRLIA;3|KISSCUSHION;5|KISSPOSTER;5|KOFFING;3|KRABBY;3|KYOGRE;3|LAIRON;3|LANSATBERRY;4|LANTURN;3|\
  2491. LAPRAS;3|LAPRASDOLL;5|LARVITAR;3|LASTRESULT;9|LASTTALKED;9|LATIAS;3|LATIOS;3|LAVACOOKIE;4|LAXINCENSE;4|\
  2492. LEAFSTONE;4|LEDIAN;3|LEDYBA;3|LEFT;7|LEFTOVERS;4|LEMONADE;4|LEPPABERRY;4|LETTER;4|LICKITUNG;3|\
  2493. LIECHIBERRY;4|LIFTKEY;4|LIGHTBALL;4|LILEEP;3|LINOONE;3|LOMBRE;3|LONGPOSTER;5|LOTAD;3|LOTADDOLL;5|\
  2494. LOUDRED;3|LUCKYEGG;4|LUCKYPUNCH;4|LUDICOLO;3|LUGIA;3|LUMBERRY;3|LUNATONE;3|LUVDISC;3|\
  2495. LUXURYBALL;4|MACHAMP;3|MACHBIKE;4|MACHOBRACE;4|MACHOKE;3|MACHOP;3|MAGBY;3|MAGCARGO;3|\
  2496. MAGIKARP;3|MAGMAEMBLEM;4|MAGMAR;3|MAGNEMITE;3|MAGNET;4|MAGNETON;3|MAGOBERRY;4|MAGOSTBERRY;4|\
  2497. MAKUHITA;3|MANECTRIC;3|MANKEY;3|MANTINE;3|MAREEP;3|MARILL;3|MARILLDOLL;5|MAROWAK;3|MARSHTOMP;3|\
  2498. MASQUERAIN;3|MASTERBALL;4|MAWILE;3|MAXELIXIR;4|MAXETHER;4|MAXPOTION;4|MAXREPEL;4|MAXREVIVE;4|\
  2499. MECHMAIL;4|MEDICHAM;3|MEDITITE;3|MEGANIUM;3|MENTALHERB;4|MEOWTH;3|MEOWTHDOLL;5|METAGROSS;3|\
  2500. METALCOAT;4|METALPOWDER;4|METANG;3|METAPOD;3|METEORITE;4|MEW;3|MEWTWO;3|MIGHTYENA;3|MILOTIC;3|\
  2501. MILTANK;3|MINUN;3|MIRACLESEED;4|MISDREAVUS;3|MISSINGNO;3|MOLTRES;3|MOOMOOMILK;4|MOONSTONE;4|\
  2502. MRMIME;3|MSG_FIND;2|MSG_NOCLOSE;2|MSG_NORMAL;2|MSG_OBTAIN;2|MSG_SIGN;2|MSG_STANDARD;2|\
  2503. MSG_YESNO;2|MUDBALL;4|MUDKIP;3|MUDKIPDOLL;5|MUK;3|MURKROW;3|MYSTICTICKET;4|MYSTICWATER;4|\
  2504. NANABBERRY;4|NATU;3|NESTBALL;4|NETBALL;4|NEVERMELTICE;4|NIDOKING;3|NIDOQUEEN;3|NIDORANF;3|\
  2505. NIDORANM;3|NIDORINA;3|NIDORINO;3|NINCADA;3|NINETALES;3|NINJASK;3|NO;9|NOCTOWL;3|NOMELBERRY;4|NONE;4|\
  2506. NOSEPASS;3|NUGGET;4|NUMEL;3|NUZLEAF;3|OAKSPARCEL;4|OCTILLERY;3|ODDISH;3|OLDAMBER;4|OLDROD;4|OLDSEAMAP;4|\
  2507. OMANYTE;3|OMASTAR;3|ONIX;3|ORANBERRY;4|ORANGEMAIL;4|PAMTREBERRY;4|PARAS;3|PARASECT;3|PARLYZHEAL;4|\
  2508. PEARL;4|PECHABERRY;4|PELIPPER;3|PERSIAN;3|PERSIMBERRY;4|PETAYABERRY;4|PHANPY;3|PICHU;3|PICHUDOLL;5|\
  2509. PIDGEOT;3|PIDGEOTTO;3|PIDGEY;3|PIKACHU;3|PIKACHUDOLL;5|PIKACUSHION;5|PIKAPOSTER;5|PILOSWINE;3|\
  2510. PINAPBERRY;4|PINECO;3|PINKSCARF;4|PINSIR;3|PLAYER;1|PLAYERFACING;9|PLUSLE;3|POISONBARB;4|POKEBALL;4|\
  2511. POKEBLOCKCASE;4|POKEDOLL;5|POKEFLUTE;4|POKEMONCHAIR;5|POKEMONDESK;5|POLITOED;3|POLIWAG;3|POLIWHIRL;3|\
  2512. POLIWRATH;3|POMEGBERRY;4|PONYTA;3|POOCHYENA;3|PORYGON;3|PORYGON2;3|POTION;4|POWDERJAR;4|POWDERSNOWMAT;5|\
  2513. PPMAX;4|PPUP;4|PREMIERBALL;4|PRETTYCHAIR;5|PRETTYDESK;5|PRETTYFLOWERS;5|PRIMEAPE;3|PROTEIN;4|PSYDUCK;3|\
  2514. PUPITAR;3|QUAGSIRE;3|QUALOTBERRY;4|QUICKCLAW;4|QUILAVA;3|QWILFISH;3|RABUTABERRY;4|RAGGEDCHAIR;4|RAGGEDDESK;5|\
  2515. RAICHU;3|RAIKOU;3|RAINBOWPASS;4|RALTS;3|RAPIDASH;3|RARECANDY;4|RATICATE;3|RATTATA;3|RAWSTBERRY;4|\
  2516. RAYQUAZA;3|RAZZBERRY;4|REDBALLOON;5|REDBRICK;5|REDFLUTE;4|REDORB;4|REDPLANT;5|REDPOSTER;5|REDSCARF;4|\
  2517. REDSHARD;4|REDTENT;5|REGICE;3|REGICEDOLL;5|REGIROCK;3|REGIROCKDOLL;5|REGISTEEL;3|REGISTEELDOLL;5|\
  2518. RELICANTH;3|REMORAID;3|REPEATBALL;4|REPEL;4|RETROMAIL;4|REVIVALHERB;4|REVIVE;4|RHYDON;3|RHYDONDOLL;5|\
  2519. RHYHORN;3|RIGHT;7|RM1KEY;4|RM2KEY;4|RM4KEY;4|RM6KEY;4|ROOTFOSSIL;4|ROSELIA;3|ROUNDCUSHION;5|ROUNDTV;5|\
  2520. RS_BADGE_1;6|RS_BADGE_2;6|RS_BADGE_3;6|RS_BADGE_4;6|RS_BADGE_5;6|RS_BADGE_6;6|RS_BADGE_7;6|RS_BADGE_8;6|\
  2521. RS_POKEDEX;6|RS_POKEMON;6|RS_POKENAV;6|RS_RUNNING_SHOES;6|RUBY;4|SABLEYE;3|SACREDASH;4|SAFARIBALL;4|\
  2522. SALACBERRY;4|SALAMENCE;3|SANDORNAMENT;4|SANDSHREW;3|SANDSLASH;3|SAPPHIRE;4|SCANNER;4|SCEPTILE;3|SCIZOR;3|\
  2523. SCOPELENS;4|SCYTHER;3|SEADRA;3|SEAINCENSE;4|SEAKING;3|SEALEO;3|SEAPOSTER;5|SECRETKEY;4|SEEDOT;3|SEEDOTDOLL;5|\
  2524. SEEL;3|SENTRET;3|SEVIPER;3|SHADOWMAIL;4|SHARPBEAK;4|SHARPEDO;3|SHEDINJA;3|SHELGON;3|SHELLBELL;4|SHELLDER;3|\
  2525. SHIFTRY;3|SHOALSALT;4|SHOALSHELL;4|SHROOMISH;3|SHUCKLE;3|SHUPPET;3|SILCOON;3|SILKSCARF;4|SILPHSCOPE;4|\
  2526. SILVERPOWDER;4|SILVERSHIELD;4|SITRUSBERRY;4|SKARMORY;3|SKIPLOOM;3|SKITTY;3|SKITTYDOLL;5|SKYPOSTER;5|\
  2527. SLAKING;3|SLAKOTH;3|SLIDE;5|SLOWBRO;3|SLOWKING;3|SLOWPOKE;3|SLUGMA;3|SMALLCHAIR;5|SMALLDESK;5|SMEARGLE;3|\
  2528. SMOKEBALL;4|SMOOCHUM;3|SMOOCHUMDOLL;5|SNEASEL;3|SNORLAX;3|SNORLAXDOLL;5|SNORUNT;3|SNUBBULL;3|SODAPOP;4|\
  2529. SOFTSAND;4|SOLIDBOARD;5|SOLROCK;3|SOOTHEBELL;4|SOOTSACK;4|SOULDEW;4|SPEAROW;3|SPELLTAG;4|SPELONBERRY;4|\
  2530. SPHEAL;3|SPIKESMAT;5|SPINARAK;3|SPINCUSHION;5|SPINDA;3|SPINMAT;5|SPOINK;3|SQUIRTLE;3|SSTICKET;4|STAND;5|\
  2531. STANTLER;3|STARDUST;4|STARFBERRY;4|STARMIE;3|STARPIECE;4|STARYU;3|STEELIX;3|STICK;4|STORAGEKEY;4|SUDOWOODO;3|\
  2532. SUICUNE;3|SUNFLORA;3|SUNKERN;3|SUNSTONE;4|SUPERPOTION;4|SUPERREPEL;4|SUPERROD;4|SURFMAT;5|SURSKIT;3|SWABLU;3|\
  2533. SWABLUDOLL;5|SWALOT;3|SWAMPERT;3|SWELLOW;3|SWINUB;3|TAILLOW;3|TAMATOBERRY;4|TANGELA;3|TAUROS;3|TEA;4|TEACHYTV;4|\
  2534. TEDDIURSA;3|TENTACOOL;3|TENTACRUEL;3|THICKCLUB;4|THUNDERMAT;5|THUNDERSTONE;4|TIMERBALL;4|TINYMUSHROOM;4|\
  2535. TIRE;5|TM01;4|TM02;4|TM03;4|TM04;4|TM05;4|TM06;4|TM07;4|TM08;4|TM09;4|TM10;4|TM11;4|TM12;4|TM13;4|TM14;4|TM15;4|TM16;4|TM17;4|\
  2536. TM18;4|TM19;4|TM20;4|TM21;4|TM22;4|TM23;4|TM24;4|TM25;4|TM26;4|TM27;4|TM28;4|TM29;4|TM30;4|TM31;4|TM32;4|TM33;4|TM34;4|TM35;4|\
  2537. TM36;4|TM37;4|TM38;4|TM39;4|TM40;4|TM41;4|TM42;4|TM43;4|TM44;4|TM45;4|TM46;4|TM47;4|TM48;4|TM49;4|TM50;4|TMCASE;4|TOGEPI;3|\
  2538. TOGEPIDOLL;5|TOGETIC;3|TORCHIC;3|TORCHICDOLL;5|TORKOAL;3|TOTODILE;3|TOTODILEDOLL;5|TOWNMAP;4|TRAPINCH;3|\
  2539. TREECKO;3|TREECKODOLL;5|TRIPASS;4|TROPICALPLANT;5|TROPICMAIL;4|TROPIUS;3|TWISTEDSPOON;4|TYPHLOSION;3|\
  2540. TYRANITAR;3|TYROGUE;3|ULTRABALL;4|UMBREON;3|UNOWN;3|UP;7|UPGRADE;4|URSARING;3|VAPOREON;3|VENOMOTH;3|\
  2541. VENONAT;3|VENUSAUR;3|VENUSAURDOLL;5|VIBRAVA;3|VICTREEBEL;3|VIGOROTH;3|VILEPLUME;3|VOLBEAT;3|VOLTORB;3|\
  2542. VSSEEKER;4|VULPIX;3|WAILMER;3|WAILMERDOLL;5|WAILMERPAIL;4|WAILORD;3|WALREIN;3|WARTORTLE;3|WATERCUSHION;5|\
  2543. WATERSTONE;4|WATMELBERRY;4|WAVEMAIL;4|WEEDLE;3|WEEPINBELL;3|WEEZING;3|WEPEARBERRY;4|WHISCASH;3|WHISMUR;3|\
  2544. WHITEFLUTE;4|WHITEHERB;4|WIGGLYTUFF;3|WIKIBERRY;4|WINGULL;3|WOBBUFFET;3|WOODMAIL;4|WOOPER;3|WURMPLE;3|\
  2545. WYNAUT;3|WYNAUTDOLL;5|XACCURACY;4|XATTACK;4|XATU;3|XDEFEND;4|XSPECIAL;4|XSPEED;4|YANMA;3|YELLOWBALLOON;5|\
  2546. YELLOWBRICK;5|YELLOWFLUTE;4|YELLOWSCARF;4|YELLOWSHARD;4|YES;9|ZANGOOSE;3|ZAPDOS;3|ZIGZAGCUSHION;5|\
  2547. ZIGZAGOON;3|ZINC;4|ZUBAT;3|FALSE;6|TRUE;6");
  2548. else if (end==3)
  2549. {
  2550. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2551. "alert;12|end;1|face_away;13|faceplayer;13|hide;1|jump_down;13|jump_down1;13|jump_down2;13|jump_downup;13|\
  2552. jump_left;13|jump_left1;13|jump_left2;13|jump_leftright;13|jump_right;13|jump_right1;13|jump_right2;13|\
  2553. jump_rightleft;13|jump_up;13|jump_up1;13|jump_up2;13|jump_updown;13|look_down;1|look_down_delayed;13|\
  2554. look_down_jump_up;13|look_left;1|look_left_delayed;13|look_left_jump_down;13|look_left_jump_right;13|\
  2555. look_right;1|look_right_delayed;13|look_up;1|look_up_delayed;13|look_up_jump_left;13|love;12|onspot_down;13|\
  2556. onspot_down_fast;13|onspot_down_slow;13|onspot_left;13|onspot_left_fast;13|onspot_left_slow;13|onspot_right;13|\
  2557. onspot_right_fast;13|onspot_right_slow;13|onspot_up;13|onspot_up_fast;13|onspot_up_slow;13|pause;13|pause0;12|pause1;12|\
  2558. pause2;12|pause3;12|pause4;12|pause_long;13|pause_short;13|pause_vshort;13|pause_xshort;13|pokeball;12|question;12|rock_animate;13|run_down;1|run_down_fast;12|run_down_vfast;13|run_left;1|run_left_fast;12|run_left_vfast;13|\
  2559. run_right;1|run_right_fast;12|run_right_vfast;13|run_up;1|run_up_fast;12|run_up_vfast;13|say_!!;13|say_!;13|say_:);13|say_?;13|say_X;13|show;12|\
  2560. slide_down;13|slide_down2;13|slide_down3;13|slide_down_vfast;13|slide_left;13|slide_left2;13|slide_left3;13|slide_left_vfast;13|slide_right;13|\
  2561. slide_right2;13|slide_right3;13|slide_right_vfast;13|slide_up;13|slide_up2;13|slide_up3;13|slide_up_vfast;13|tree_animate;13|walk_down;1|walk_down_fast;12|\
  2562. walk_down_slow;1|walk_down_vslow;1|walk_left;1|walk_left_fast;12|walk_left_slow;1|walk_left_vslow;1|walk_onspot;13|\
  2563. walk_right;1|walk_right_fast;12|walk_right_slow;1|walk_right_vslow;1|walk_up;1|walk_up_fast;12|walk_up_slow;1|\
  2564. walk_up_vslow;1");
  2565. }
  2566. }
  2567. else
  2568. {
  2569. if (end==0)
  2570. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2571. "#define;9|#eorg;9|#loud;9|#org;9|#quiet;9|#raw;9|.;9|=;2|\
  2572. 2call;9|2jump;9|2ptcall;9|2ptcallasm;9|2ptjump;9|2writetext;9|3call;9|3callasm;9|3jump;9|3writetext;9|\
  2573. addvar;9|appear;1|applymovement;1|applymoveother;1|askforphonenumber;1|blackoutmod;8|c1celoadbyte;9|\
  2574. callstd;9|catchtutorial;7|changeblock;8|checkbit1;6|checkbit2;6|checkcode;9|checkcoins;11|checkitem;4|\
  2575. checkmaptriggers;8|checkmoney;11|checkphonecall;1|checkphonenumber;1|checkpoke;3|checktime;8|\
  2576. checktriggers;8|checkver;9|clearbit1;6|clearbit2;6|clearfight;1|closetext;2|coinstotext;11|\
  2577. copybytetovar;9|copyvartobyte;9|credits;2|cry;3|deactivatefacing;1|delcmdqueue;9|describedecoration;5|\
  2578. disappear;1|displaylocation;2|domaptrigger;8|dotrigger;8|earthquake;8|elevator;8|end;9|faceperson;1|\
  2579. faceplayer;1|follow;1|follownotexact;1|fruittree;4|givecoins;11|giveegg;3|giveitem;4|givemoney;11|\
  2580. givephonenumber;1|givepoke;3|givepokeitem;4|halloffame;8|hangup;1|if;9|interpretmenu;2|interpretmenu2;2|\
  2581. itemnotify;4|itemtotext;4|jumpstd;9|jumptext;2|jumptextfaceplayer;2|keeptextopen;2|loademote;1|\
  2582. loadfont;2|loadmenudata;2|loadmovesprites;1|loadpikadata;3|loadpokedata;3|loadtrainer;1|loadtrainerseen;1|\
  2583. loadvar;9|loadwilddata;3|locationtotext;2|moneytotext;11|moveperson;1|musicfadeout;10|newloadmap;8|\
  2584. passtoengine;9|pause;8|phonecall;1|playmapmusic;10|playmusic;10|playrammusic;10|playsound;10|pocketisfull;2|\
  2585. pokemart;2|pokepic;2|pokepicyesorno;2|poketotext;3|priorityjump;9|ptpriorityjump;9|random;9|refreshscreen;8|\
  2586. reloadandreturn;9|reloadmap;8|reloadmapmusic;10|reloadmappart;8|repeattext;2|resetfuncs;9|return;9|\
  2587. returnafterbattle;1|setbit1;6|setbit2;6|setlasttalked;1|showemote;1|special;8|specialphonecall;8|specialsound;10|\
  2588. spriteface;1|startbattle;3|stopfollow;1|storetext;2|stringtotext;2|swapmaps;8|takecoins;11|takeifletter;4|\
  2589. takeitem;4|takemoney;11|takephonenumber;1|talkafter;2|talkaftercancel;2|talkaftercheck;2|text-box;2|\
  2590. text-buffer;2|text-day;2|text-hex;2|text-interpretdata;9|text-interpretxdata;9|text-newline;2|\
  2591. text-newlinewitharrow;2|text-newtxt;2|text-number;2|text-playsound0;10|text-playsound1;10|text-playsound2;10|\
  2592. text-playsound9;10|text-playsounda;10|text-playsoundc;10|text-playsoundd;10|text-ram;2|text-reloc;9|\
  2593. text-switchtoasm;9|text-waitbutton;2|text-waitbutton2;2|trade;3|trainerstatus;1|trainertext;1|\
  2594. trainertotext;1|variablesprite;1|vartotext;9|verbosegiveitem;4|waitbutton;8|warp;8|warpcheck;8|\
  2595. warpfacing;8|warpmod;8|warpsound;10|wildoff;3|wildon;3|winlosstext;1|writebackup;9|writebyte;9|\
  2596. writecmdqueue;9|writecode;9|writepersonloc;1|writevarcode;9|xycompare;7|yesorno;");
  2597. else if (end==1)
  2598. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2599. "[PLAYER]|\\e|[PLAYER] found one |[PLAYER] obtained one |\
  2600. [PLAYER] received the |[PLAYER] received ");
  2601. else if (end==2)
  2602. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2603. "!=;9|<;9|<=;9|<>;9|=;9|==;9|>;9|>=;9|ABRA;3|ABSOL;3|ACROBIKE;4|AERODACTYL;3|AGGRON;3|AGUAVBERRY;4|AIPOM;3|ALAKAZAM;3|\
  2604. ALTARIA;3|AMPHAROS;3|AMULETCOIN;4|ANORITH;3|ANOTEMAT;5|ANTIDOTE;4|APICOTBERRY;3|ARBOK;3|ARCANINE;3|ARIADOS;3|\
  2605. ARMALDO;3|ARON;3|ARTICUNO;3|ASPEARBERRY;4|ATTRACTMAT;5|AURORATICKET;4|AWAKENING;4|AZUMARILL;3|AZURILL;3|\
  2606. AZURILLDOLL;5|BAGON;3|BALLCUSHION;5|BALLPOSTER;5|BALTOY;3|BALTOYDOLL;5|BANETTE;3|BARBOACH;3|BASEMENTKEY;4|\
  2607. BAYLEEF;3|BEADMAIL;4|BEAUTIFLY;3|BEEDRILL;3|BELDUM;3|BELLOSSOM;3|BELLSPROUT;3|BELUEBERRY;4|BERRYJUICE;4|\
  2608. BERRYPOUCH;4|BICYCLE;4|BIGMUSHROOM;4|BIGPEARL;4|BIGPLANT;5|BIKEVOUCHER;4|BLACKBELT;4|BLACKFLUTE;4|\
  2609. BLACKGLASSES;4|BLASTOISE;3|BLASTOISEDOLL;5|BLAZIKEN;3|BLISSEY;3|BLUEBALLOON;5|BLUEFLUTE;4|BLUEORB;4|\
  2610. BLUEPOSTER;5|BLUESCARF;4|BLUESHARD;4|BLUETENT;5|BLUKBERRY;4|BNOTEMAT;5|BOY;7|BREAKABLEDOOR;5|BRELOOM;3|\
  2611. BRICKCHAIR;5|BRICKDESK;5|BRIGHTPOWDER;4|BULBASAUR;3|BURNHEAL;4|BUTTERFREE;3|CACNEA;3|CACTURNE;3|CALCIUM;4|\
  2612. CAMERA;1|CAMERA_START;8|CAMERA_END;8|CAMERUPT;3|CAMPCHAIR;5|CAMPDESK;5|CARBOS;4|CARDKEY;4|CARVANHA;3|CASCOON;3|CASTFORM;3|CATCH_POKEMON;8|\
  2613. CATERPIE;3|CELEBI;3|CHANSEY;3|CHARCOAL;3|CHARIZARD;3|CHARIZARDDOLL;5|CHARMANDER;3|CHARMELEON;3|CHERIBERRY;4|\
  2614. CHESTOBERRY;4|CHIGHNOTEMAT;5|CHIKORITA;3|CHIKORITADOLL;5|CHIMECHO;3|CHINCHOU;3|CHOICEBAND;4|\
  2615. CHOOSE_POKEMON;8|CLAMPERL;3|CLAWFOSSIL;4|CLAYDOL;3|CLEANSETAG;4|CLEFABLE;3|CLEFAIRY;3|CLEFAIRYDOLL;5|\
  2616. CLEFFA;3|CLOWNOTEMAT;5|CLOYSTER;3|COINCASE;4|COLORFULPLANT;5|COMBUSKEN;3|COMFORTCHAIR;5|COMFORTDESK;5|\
  2617. CONTESTPASS;4|CORNNBERRY;4|CORPHISH;3|CORSOLA;3|CRADILY;3|CRAWDAUNT;3|CROBAT;3|CROCONAW;3|CUBONE;3|\
  2618. CUTEPOSTER;5|CUTETV;5|CYNDAQUIL;3|CYNDAQUILDOLL;5|DEEPSEASCALE;4|DEEPSEATOOTH;4|DELCATTY;3|DELIBIRD;3|\
  2619. DEOXYS;3|DEVONGOODS;4|DEVONSCOPE;4|DEWGONG;3|DIAMONDCUSHION;5|DIGLETT;3|DIREHIT;4|DITTO;3|DITTODOLL;5|\
  2620. DIVEBALL;4|DNOTEMAT;5|DODRIO;3|DODUO;3|DOMEFOSSIL;4|DONPHAN;3|DOWN;7|DRAGONAIR;3|DRAGONFANG;4|DRAGONITE;3|\
  2621. DRAGONSCALE;4|DRATINI;3|DREAMMAIL;4|DROWZEE;3|DUGTRIO;3|DUNSPARCE;3|DURINBERRY;4|DUSCLOPS;3|DUSKULL;3|\
  2622. DUSKULLDOLL;5|DUSTOX;3|EEVEE;3|EKANS;3|ELECTABUZZ;3|ELECTRIKE;3|ELECTRODE;3|ELEKID;3|ELIXIR;4|EM_BADGE_1;6|\
  2623. EM_BADGE_2;6|EM_BADGE_3;6|EM_BADGE_4;6|EM_BADGE_5;6|EM_BADGE_6;6|EM_BADGE_7;6|EM_BADGE_8;6|EM_NATIONAL_DEX;8|\
  2624. EM_POKEDEX;6|EM_POKEMON;6|EM_POKENAV;6|ENERGYPOWDER;4|ENERGYROOT;4|ENIGMABERRY;4|ENOTEMAT;5|ENTEI;3|EONTICKET;4|\
  2625. ESCAPEROPE;4|ESPEON;3|ETHER;4|EVERSTONE;4|EXEGGCUTE;3|EXEGGUTOR;3|EXPLOUD;3|EXPSHARE;4|FABMAIL;4|FAMECHECKER;4|\
  2626. FARFETCHD;3|FEAROW;3|FEEBAS;3|FENCELENGTH;5|FENCEWIDTH;5|FERALIGATR;3|FIGYBERRY;4|FINDFROM;9|FIREBLASTMAT;5|\
  2627. FIRECUSHION;4|FIRESTONE;4|FISSUREMAT;5|FLAAFFY;3|FLAREON;3|FLUFFYTAIL;4|FLYGON;3|FNOTEMAT;5|FOCUSBAND;4|\
  2628. FORRETRESS;3|FR_BADGE_1;6|FR_BADGE_2;6|FR_BADGE_3;6|FR_BADGE_4;6|FR_BADGE_5;6|FR_BADGE_6;6|FR_BADGE_7;6|\
  2629. FR_BADGE_8;6|FR_NATIONAL_DEX;8|FR_POKEDEX;6|FR_POKEMON;6|FR_RUNNING_SHOES;6|FRESHWATER;4|FULLHEAL;4|FULLRESTORE;4|FURRET;3|\
  2630. GANLONBERRY;4|GARDEVOIR;3|GASTLY;3|GENGAR;3|GEODUDE;3|GIRAFARIG;3|GIRL;7|GLALIE;3|GLASSORNAMENT;4|\
  2631. GLIGAR;3|GLITTERMAIL;4|GLITTERMAT;5|GLOOM;3|GNOTEMAT;5|GOGOGGLES;4|GOLBAT;3|GOLDEEN;3|\
  2632. GOLDSHIELD;4|GOLDTEETH;4|GOLDUCK;3|GOLEM;3|GOODROD;4|GOREBYSS;3|GORGEOUSPLANT;4|GRANBULL;3|\
  2633. GRASSCUSHION;4|GRAVELER;3|GREATBALL;4|GREENPOSTER;4|GREENSCARF;4|GREENSHARD;4|GREPABERRY;4|\
  2634. GRIMER;3|GROUDON;3|GROVYLE;3|GROWLITHE;3|GRUMPIG;3|GUARDSPEC;4|GULPIN;3|GULPINDOLL;5|GYARADOS;3|\
  2635. HARBORMAIL;4|HARDCHAIR;4|HARDDESK;5|HARDSTONE;4|HARIYAMA;3|HAUNTER;3|HEAL_POKEMON;8|HEALPOWDER;4|\
  2636. HEARTSCALE;4|HEAVYCHAIR;4|HEAVYDESK;5|HELIXFOSSIL;4|HERACROSS;3|HITMONCHAN;3|\
  2637. HITMONLEE;3|HITMONTOP;3|HM01;4|HM02;4|HM03;4|HM04;4|HM05;4|HM06;4|HM07;4|HM08;4|HONDEWBERRY;4|\
  2638. HO-OH;3|HOOTHOOT;3|HOPPIP;3|HORSEA;3|HOUNDOOM;3|HOUNDOUR;3|HPUP;4|HUNTAIL;3|HYPERPOTION;4|HYPNO;3|\
  2639. IAPAPABERRY;4|ICEHEAL;4|IGGLYBUFF;3|ILLUMISE;3|IRON;3|ITEMFINDER;4|IVYSAUR;3|JIGGLYPUFF;3|\
  2640. JIGGLYPUFFDOLL;5|JIRACHI;3|JOLTEON;3|JUMPLUFF;3|JUMPMAT;5|JYNX;3|KABUTO;3|KABUTOPS;3|KADABRA;3|\
  2641. KAKUNA;3|KANGASKHAN;3|KECLEON;3|KECLEONDOLL;5|KELPSYBERRY;4|KINGDRA;3|KINGLER;3|KINGSROCK;4|\
  2642. KIRLIA;3|KISSCUSHION;5|KISSPOSTER;5|KOFFING;3|KRABBY;3|KYOGRE;3|LAIRON;3|LANSATBERRY;4|LANTURN;3|\
  2643. LAPRAS;3|LAPRASDOLL;5|LARVITAR;3|LASTRESULT;9|LASTTALKED;9|LATIAS;3|LATIOS;3|LAVACOOKIE;4|LAXINCENSE;4|\
  2644. LEAFSTONE;4|LEDIAN;3|LEDYBA;3|LEFT;7|LEFTOVERS;4|LEMONADE;4|LEPPABERRY;4|LETTER;4|LICKITUNG;3|\
  2645. LIECHIBERRY;4|LIFTKEY;4|LIGHTBALL;4|LILEEP;3|LINOONE;3|LOMBRE;3|LONGPOSTER;5|LOTAD;3|LOTADDOLL;5|\
  2646. LOUDRED;3|LUCKYEGG;4|LUCKYPUNCH;4|LUDICOLO;3|LUGIA;3|LUMBERRY;3|LUNATONE;3|LUVDISC;3|\
  2647. LUXURYBALL;4|MACHAMP;3|MACHBIKE;4|MACHOBRACE;4|MACHOKE;3|MACHOP;3|MAGBY;3|MAGCARGO;3|\
  2648. MAGIKARP;3|MAGMAEMBLEM;4|MAGMAR;3|MAGNEMITE;3|MAGNET;4|MAGNETON;3|MAGOBERRY;4|MAGOSTBERRY;4|\
  2649. MAKUHITA;3|MANECTRIC;3|MANKEY;3|MANTINE;3|MAREEP;3|MARILL;3|MARILLDOLL;5|MAROWAK;3|MARSHTOMP;3|\
  2650. MASQUERAIN;3|MASTERBALL;4|MAWILE;3|MAXELIXIR;4|MAXETHER;4|MAXPOTION;4|MAXREPEL;4|MAXREVIVE;4|\
  2651. MECHMAIL;4|MEDICHAM;3|MEDITITE;3|MEGANIUM;3|MENTALHERB;4|MEOWTH;3|MEOWTHDOLL;5|METAGROSS;3|\
  2652. METALCOAT;4|METALPOWDER;4|METANG;3|METAPOD;3|METEORITE;4|MEW;3|MEWTWO;3|MIGHTYENA;3|MILOTIC;3|\
  2653. MILTANK;3|MINUN;3|MIRACLESEED;4|MISDREAVUS;3|MISSINGNO;3|MOLTRES;3|MOOMOOMILK;4|MOONSTONE;4|\
  2654. MRMIME;3|MSG_FIND;2|MSG_NOCLOSE;2|MSG_NORMAL;2|MSG_OBTAIN;2|MSG_SIGN;2|MSG_STANDARD;2|\
  2655. MSG_YESNO;2|MUDBALL;4|MUDKIP;3|MUDKIPDOLL;5|MUK;3|MURKROW;3|MYSTICTICKET;4|MYSTICWATER;4|\
  2656. NANABBERRY;4|NATU;3|NESTBALL;4|NETBALL;4|NEVERMELTICE;4|NIDOKING;3|NIDOQUEEN;3|NIDORANF;3|\
  2657. NIDORANM;3|NIDORINA;3|NIDORINO;3|NINCADA;3|NINETALES;3|NINJASK;3|NO;9|NOCTOWL;3|NOMELBERRY;4|NONE;4|\
  2658. NOSEPASS;3|NUGGET;4|NUMEL;3|NUZLEAF;3|OAKSPARCEL;4|OCTILLERY;3|ODDISH;3|OLDAMBER;4|OLDROD;4|OLDSEAMAP;4|\
  2659. OMANYTE;3|OMASTAR;3|ONIX;3|ORANBERRY;4|ORANGEMAIL;4|PAMTREBERRY;4|PARAS;3|PARASECT;3|PARLYZHEAL;4|\
  2660. PEARL;4|PECHABERRY;4|PELIPPER;3|PERSIAN;3|PERSIMBERRY;4|PETAYABERRY;4|PHANPY;3|PICHU;3|PICHUDOLL;5|\
  2661. PIDGEOT;3|PIDGEOTTO;3|PIDGEY;3|PIKACHU;3|PIKACHUDOLL;5|PIKACUSHION;5|PIKAPOSTER;5|PILOSWINE;3|\
  2662. PINAPBERRY;4|PINECO;3|PINKSCARF;4|PINSIR;3|PLAYER;1|PLAYERFACING;9|PLUSLE;3|POISONBARB;4|POKEBALL;4|\
  2663. POKEBLOCKCASE;4|POKEDOLL;5|POKEFLUTE;4|POKEMONCHAIR;5|POKEMONDESK;5|POLITOED;3|POLIWAG;3|POLIWHIRL;3|\
  2664. POLIWRATH;3|POMEGBERRY;4|PONYTA;3|POOCHYENA;3|PORYGON;3|PORYGON2;3|POTION;4|POWDERJAR;4|POWDERSNOWMAT;5|\
  2665. PPMAX;4|PPUP;4|PREMIERBALL;4|PRETTYCHAIR;5|PRETTYDESK;5|PRETTYFLOWERS;5|PRIMEAPE;3|PROTEIN;4|PSYDUCK;3|\
  2666. PUPITAR;3|QUAGSIRE;3|QUALOTBERRY;4|QUICKCLAW;4|QUILAVA;3|QWILFISH;3|RABUTABERRY;4|RAGGEDCHAIR;4|RAGGEDDESK;5|\
  2667. RAICHU;3|RAIKOU;3|RAINBOWPASS;4|RALTS;3|RAPIDASH;3|RARECANDY;4|RATICATE;3|RATTATA;3|RAWSTBERRY;4|\
  2668. RAYQUAZA;3|RAZZBERRY;4|REDBALLOON;5|REDBRICK;5|REDFLUTE;4|REDORB;4|REDPLANT;5|REDPOSTER;5|REDSCARF;4|\
  2669. REDSHARD;4|REDTENT;5|REGICE;3|REGICEDOLL;5|REGIROCK;3|REGIROCKDOLL;5|REGISTEEL;3|REGISTEELDOLL;5|\
  2670. RELICANTH;3|REMORAID;3|REPEATBALL;4|REPEL;4|RETROMAIL;4|REVIVALHERB;4|REVIVE;4|RHYDON;3|RHYDONDOLL;5|\
  2671. RHYHORN;3|RIGHT;7|RM1KEY;4|RM2KEY;4|RM4KEY;4|RM6KEY;4|ROOTFOSSIL;4|ROSELIA;3|ROUNDCUSHION;5|ROUNDTV;5|\
  2672. RS_BADGE_1;6|RS_BADGE_2;6|RS_BADGE_3;6|RS_BADGE_4;6|RS_BADGE_5;6|RS_BADGE_6;6|RS_BADGE_7;6|RS_BADGE_8;6|\
  2673. RS_POKEDEX;6|RS_POKEMON;6|RS_POKENAV;6|RS_RUNNING_SHOES;6|RUBY;4|SABLEYE;3|SACREDASH;4|SAFARIBALL;4|\
  2674. SALACBERRY;4|SALAMENCE;3|SANDORNAMENT;4|SANDSHREW;3|SANDSLASH;3|SAPPHIRE;4|SCANNER;4|SCEPTILE;3|SCIZOR;3|\
  2675. SCOPELENS;4|SCYTHER;3|SEADRA;3|SEAINCENSE;4|SEAKING;3|SEALEO;3|SEAPOSTER;5|SECRETKEY;4|SEEDOT;3|SEEDOTDOLL;5|\
  2676. SEEL;3|SENTRET;3|SEVIPER;3|SHADOWMAIL;4|SHARPBEAK;4|SHARPEDO;3|SHEDINJA;3|SHELGON;3|SHELLBELL;4|SHELLDER;3|\
  2677. SHIFTRY;3|SHOALSALT;4|SHOALSHELL;4|SHROOMISH;3|SHUCKLE;3|SHUPPET;3|SILCOON;3|SILKSCARF;4|SILPHSCOPE;4|\
  2678. SILVERPOWDER;4|SILVERSHIELD;4|SITRUSBERRY;4|SKARMORY;3|SKIPLOOM;3|SKITTY;3|SKITTYDOLL;5|SKYPOSTER;5|\
  2679. SLAKING;3|SLAKOTH;3|SLIDE;5|SLOWBRO;3|SLOWKING;3|SLOWPOKE;3|SLUGMA;3|SMALLCHAIR;5|SMALLDESK;5|SMEARGLE;3|\
  2680. SMOKEBALL;4|SMOOCHUM;3|SMOOCHUMDOLL;5|SNEASEL;3|SNORLAX;3|SNORLAXDOLL;5|SNORUNT;3|SNUBBULL;3|SODAPOP;4|\
  2681. SOFTSAND;4|SOLIDBOARD;5|SOLROCK;3|SOOTHEBELL;4|SOOTSACK;4|SOULDEW;4|SPEAROW;3|SPELLTAG;4|SPELONBERRY;4|\
  2682. SPHEAL;3|SPIKESMAT;5|SPINARAK;3|SPINCUSHION;5|SPINDA;3|SPINMAT;5|SPOINK;3|SQUIRTLE;3|SSTICKET;4|STAND;5|\
  2683. STANTLER;3|STARDUST;4|STARFBERRY;4|STARMIE;3|STARPIECE;4|STARYU;3|STEELIX;3|STICK;4|STORAGEKEY;4|SUDOWOODO;3|\
  2684. SUICUNE;3|SUNFLORA;3|SUNKERN;3|SUNSTONE;4|SUPERPOTION;4|SUPERREPEL;4|SUPERROD;4|SURFMAT;5|SURSKIT;3|SWABLU;3|\
  2685. SWABLUDOLL;5|SWALOT;3|SWAMPERT;3|SWELLOW;3|SWINUB;3|TAILLOW;3|TAMATOBERRY;4|TANGELA;3|TAUROS;3|TEA;4|TEACHYTV;4|\
  2686. TEDDIURSA;3|TENTACOOL;3|TENTACRUEL;3|THICKCLUB;4|THUNDERMAT;5|THUNDERSTONE;4|TIMERBALL;4|TINYMUSHROOM;4|\
  2687. TIRE;5|TM01;4|TM02;4|TM03;4|TM04;4|TM05;4|TM06;4|TM07;4|TM08;4|TM09;4|TM10;4|TM11;4|TM12;4|TM13;4|TM14;4|TM15;4|TM16;4|TM17;4|\
  2688. TM18;4|TM19;4|TM20;4|TM21;4|TM22;4|TM23;4|TM24;4|TM25;4|TM26;4|TM27;4|TM28;4|TM29;4|TM30;4|TM31;4|TM32;4|TM33;4|TM34;4|TM35;4|\
  2689. TM36;4|TM37;4|TM38;4|TM39;4|TM40;4|TM41;4|TM42;4|TM43;4|TM44;4|TM45;4|TM46;4|TM47;4|TM48;4|TM49;4|TM50;4|TMCASE;4|TOGEPI;3|\
  2690. TOGEPIDOLL;5|TOGETIC;3|TORCHIC;3|TORCHICDOLL;5|TORKOAL;3|TOTODILE;3|TOTODILEDOLL;5|TOWNMAP;4|TRAPINCH;3|\
  2691. TREECKO;3|TREECKODOLL;5|TRIPASS;4|TROPICALPLANT;5|TROPICMAIL;4|TROPIUS;3|TWISTEDSPOON;4|TYPHLOSION;3|\
  2692. TYRANITAR;3|TYROGUE;3|ULTRABALL;4|UMBREON;3|UNOWN;3|UP;7|UPGRADE;4|URSARING;3|VAPOREON;3|VENOMOTH;3|\
  2693. VENONAT;3|VENUSAUR;3|VENUSAURDOLL;5|VIBRAVA;3|VICTREEBEL;3|VIGOROTH;3|VILEPLUME;3|VOLBEAT;3|VOLTORB;3|\
  2694. VSSEEKER;4|VULPIX;3|WAILMER;3|WAILMERDOLL;5|WAILMERPAIL;4|WAILORD;3|WALREIN;3|WARTORTLE;3|WATERCUSHION;5|\
  2695. WATERSTONE;4|WATMELBERRY;4|WAVEMAIL;4|WEEDLE;3|WEEPINBELL;3|WEEZING;3|WEPEARBERRY;4|WHISCASH;3|WHISMUR;3|\
  2696. WHITEFLUTE;4|WHITEHERB;4|WIGGLYTUFF;3|WIKIBERRY;4|WINGULL;3|WOBBUFFET;3|WOODMAIL;4|WOOPER;3|WURMPLE;3|\
  2697. WYNAUT;3|WYNAUTDOLL;5|XACCURACY;4|XATTACK;4|XATU;3|XDEFEND;4|XSPECIAL;4|XSPEED;4|YANMA;3|YELLOWBALLOON;5|\
  2698. YELLOWBRICK;5|YELLOWFLUTE;4|YELLOWSCARF;4|YELLOWSHARD;4|YES;9|ZANGOOSE;3|ZAPDOS;3|ZIGZAGCUSHION;5|\
  2699. ZIGZAGOON;3|ZINC;4|ZUBAT;3|FALSE;6|TRUE;6");
  2700. else if (end==3)
  2701. {
  2702. SendEditor(SCI_AUTOCSHOW,len,(LPARAM)
  2703. "apply_fixed_facing;1|dontfacehiro_step_down;1|dontfacehiro_step_left;1|dontfacehiro_step_right;1|\
  2704. dontfacehiro_step_up;1|earthquake;1|end;1|facehiro_step_down;1|facehiro_step_left;1|\
  2705. facehiro_step_right;1|facehiro_step_up;1|fall;1|fastjump_down;1|fastjump_left;1|fastjump_right;1|\
  2706. fastjump_up;1|fastslide_down;1|fastslide_left;1|fastslide_right;1|fastslide_up;1|halfstep_down;1|\
  2707. halfstep_left;1|halfstep_right;1|halfstep_up;1|halfstep2_down;1|halfstep2_left;1|halfstep2_right;1|\
  2708. halfstep2_up;1|hide;1|hide2;1|jump_down;1|jump_left;1|jump_right;1|jump_up;1|look_down;1|\
  2709. look_left;1|look_right;1|look_up;1|pause;1|remove_fixed_facing;1|slide_down;1|slide_left;1|\
  2710. slide_right;1|slide_up;1|slowjump_down;1|slowjump_left;1|slowjump_right;1|slowjump_up;1|\
  2711. slowslide_down;1|slowslide_left;1|slowslide_right;1|slowslide_up;1|slowstep_down;1|slowstep_left;1|\
  2712. slowstep_right;1|slowstep_up;1|speed_up;1|spin;1|step_down;1|step_left;1|step_right;1|step_up;1|\
  2713. teleport_from;1|teleport_to;1|tree_animate;1|waterfall_down;1|waterfall_left;1|waterfall_right;1|waterfall_up;1");
  2714. }
  2715. }
  2716. break;
  2717. case 1004: //compile, decompile is 1014
  2718. if (*RomOpen2!=0)
  2719. {
  2720. i=(int)SendEditor(SCI_GETLENGTH,0,0);
  2721. ptr=GlobalAlloc(GPTR,i+1);
  2722. SendEditor(SCI_GETTEXT,i+1,(LPARAM)ptr);
  2723. DetermineMode(RomOpen2);
  2724. CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)TCompile,(LPVOID)ptr,0,(LPVOID)&i);
  2725. }
  2726. else
  2727. {
  2728. MessageBox(MainWnd,GetString1(3034),GetString2(3001),0x40);
  2729. }
  2730. break;
  2731. }
  2732. break;
  2733. case WM_SIZE:
  2734. if (hwnd==MainWnd)
  2735. {
  2736. SendMessage(StatusBar,msg,wParam,lParam);
  2737. SendMessage(ToolBar,TB_AUTOSIZE,0,0);
  2738. #ifdef SCRAP
  2739. SetWindowPos(Text,HWND_TOP,0,24,LOWORD(lParam)-32,HIWORD(lParam)-47,SWP_NOMOVE);
  2740. SetWindowPos(ScrapPunk,HWND_TOP,LOWORD(lParam)-32,24,32,32,SWP_NOSIZE);
  2741. #else
  2742. SetWindowPos(Text,HWND_TOP,0,24,LOWORD(lParam),HIWORD(lParam)-47,SWP_NOMOVE);
  2743. #endif
  2744. }
  2745. else
  2746. {
  2747. return DefWindowProc(hwnd,msg,wParam,lParam);
  2748. }
  2749. break;
  2750. case WM_CLOSE:
  2751. case WM_DESTROY:
  2752. if (hwnd==MainWnd)
  2753. {
  2754. if (FlagsShown)
  2755. SaveFlag();
  2756. i=0;
  2757. if (NotSaved)
  2758. {
  2759. i=MessageBox(MainWnd,GetString1(3017),GetString2(3018),0x23);//yes 6 no 7 cancel 2
  2760. if (i==6)
  2761. {
  2762. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  2763. if (NotSaved)
  2764. {
  2765. i=2;
  2766. }
  2767. }
  2768. }
  2769. if (i!=2)
  2770. {
  2771. exiting();
  2772. ExitProcess(0);
  2773. }
  2774. }
  2775. else
  2776. {
  2777. ShowWindow(hwnd,SW_HIDE);
  2778. }
  2779. break;
  2780. default:
  2781. return DefWindowProc(hwnd,msg,wParam,lParam);
  2782. }
  2783. return 0;
  2784. }
  2785.  
  2786. void UpdateScintLine()
  2787. {
  2788. char Lines[32];
  2789. int Width;
  2790. int NWidth;
  2791. wsprintf(Lines,"_%i_",SendEditor(SCI_GETLINECOUNT,0,0));
  2792. Width = (int)SendEditor(SCI_GETMARGINWIDTHN,0,0);
  2793. NWidth = (int)SendEditor(SCI_TEXTWIDTH,STYLE_LINENUMBER,(LPARAM)Lines);
  2794. if (Width!=NWidth) {
  2795. SendEditor(SCI_SETMARGINWIDTHN,0,NWidth);
  2796. }
  2797. }
  2798.  
  2799. void GoToLine(unsigned int line_number,unsigned int pos)
  2800. {
  2801. SendEditor(SCI_ENSUREVISIBLEENFORCEPOLICY,line_number,0);
  2802. if ((int)SendEditor(SCI_POSITIONFROMLINE,line_number+1,0)<=(int)(SendEditor(SCI_POSITIONFROMLINE,line_number,0)+pos))
  2803. SendEditor(SCI_GOTOPOS,SendEditor(SCI_LINELENGTH,line_number,0),0);
  2804. else
  2805. SendEditor(SCI_GOTOPOS,pos+SendEditor(SCI_POSITIONFROMLINE,line_number,0),0);
  2806. }
  2807.  
  2808. char MatchCase=0,Upwards=0,RegExpr=0;
  2809.  
  2810. BOOL CALLBACK FindReplaceFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  2811. {
  2812. char buf[32];
  2813. char findbuf[4096],repbuf[4096];
  2814. signed int found;
  2815. unsigned int selstart,selend,count;
  2816. WPARAM flags;
  2817. switch (msg)
  2818. {
  2819. case WM_COMMAND:
  2820. switch (LOWORD(wParam))
  2821. {
  2822. case 0x1: //Find
  2823. GetDlgItemText(FindReplaceWin,6,findbuf,4095);
  2824. GetDlgItemText(FindReplaceWin,8,repbuf,4095);
  2825. flags=0;
  2826. if (MatchCase)flags|=SCFIND_MATCHCASE;
  2827. if (RegExpr)flags|=SCFIND_REGEXP|SCFIND_POSIX;
  2828. SendEditor(SCI_SETSEARCHFLAGS,flags,0);
  2829. SendEditor(SCI_SETTARGETSTART,0,0);
  2830. SendEditor(SCI_SETTARGETEND,SendEditor(SCI_GETLENGTH,0,0),0);
  2831. if (Upwards)
  2832. {
  2833. SendEditor(SCI_SETTARGETSTART,SendEditor(SCI_GETSELECTIONSTART,0,0),0);
  2834. SendEditor(SCI_SETTARGETEND,0,0);
  2835. }
  2836. else
  2837. {
  2838. SendEditor(SCI_SETTARGETSTART,SendEditor(SCI_GETSELECTIONEND,0,0),0);
  2839. SendEditor(SCI_SETTARGETEND,SendEditor(SCI_GETLENGTH,0,0),0);
  2840. }
  2841. found=(int)SendEditor(SCI_SEARCHINTARGET,strlen(findbuf),(LPARAM)findbuf);
  2842. if (found==-1)
  2843. {
  2844. MessageBox(FindReplaceWin,GetString1(3035),"PKSVUI",0x40);
  2845. if (Upwards)
  2846. {
  2847. SendEditor(SCI_SETSEARCHFLAGS,flags,0);
  2848. SendEditor(SCI_SETTARGETSTART,SendEditor(SCI_GETLENGTH,0,0),0);
  2849. SendEditor(SCI_SETTARGETEND,0,0);
  2850. found=(int)SendEditor(SCI_SEARCHINTARGET,strlen(findbuf),(LPARAM)findbuf);
  2851. }
  2852. else
  2853. {
  2854. SendEditor(SCI_SETSEARCHFLAGS,flags,0);
  2855. SendEditor(SCI_SETTARGETSTART,0,0);
  2856. SendEditor(SCI_SETTARGETEND,SendEditor(SCI_GETLENGTH,0,0),0);
  2857. found=(int)SendEditor(SCI_SEARCHINTARGET,strlen(findbuf),(LPARAM)findbuf);
  2858. }
  2859. if (found==-1)
  2860. {
  2861. MessageBox(FindReplaceWin,GetString1(3036),"PKSVUI",0x40);
  2862. } else {
  2863. SendEditor(SCI_SETSEL,SendEditor(SCI_GETTARGETSTART,0,0),SendEditor(SCI_GETTARGETEND,0,0));
  2864. }
  2865. } else {
  2866. SendEditor(SCI_SETSEL,SendEditor(SCI_GETTARGETSTART,0,0),SendEditor(SCI_GETTARGETEND,0,0));
  2867. }
  2868. SendEditor(SCI_ENSUREVISIBLEENFORCEPOLICY,SendEditor(SCI_LINEFROMPOSITION,SendEditor(SCI_GETSELECTIONSTART,0,0),0),0);
  2869. SendEditor(SCI_ENSUREVISIBLEENFORCEPOLICY,SendEditor(SCI_LINEFROMPOSITION,SendEditor(SCI_GETSELECTIONEND,0,0),0),0);
  2870. break;
  2871. case 0x2: //Replace
  2872. GetDlgItemText(FindReplaceWin,6,findbuf,4095);
  2873. GetDlgItemText(FindReplaceWin,8,repbuf,4095);
  2874. selstart=(int)SendEditor(SCI_GETSELECTIONSTART,0,0);
  2875. selend=(int)SendEditor(SCI_GETSELECTIONEND,0,0);
  2876. SendEditor(SCI_SETTARGETSTART,selstart,0);
  2877. SendEditor(SCI_SETTARGETEND,selend,0);
  2878. if (selstart!=selend)
  2879. {
  2880. if (RegExpr)SendEditor(SCI_REPLACETARGETRE,(WPARAM)-1,(LPARAM)repbuf);
  2881. else SendEditor(SCI_REPLACETARGET,(WPARAM)-1,(LPARAM)repbuf);
  2882. }
  2883. break;
  2884. case 0x3: //Replace All
  2885. GetDlgItemText(FindReplaceWin,6,findbuf,4095);
  2886. GetDlgItemText(FindReplaceWin,8,repbuf,4095);
  2887. found=0;
  2888. count=0;
  2889. flags=0;
  2890. if (MatchCase)flags|=SCFIND_MATCHCASE;
  2891. if (RegExpr)flags|=SCFIND_REGEXP|SCFIND_POSIX;
  2892. if (*findbuf!=0)
  2893. while (found!=-1)
  2894. {
  2895. SendEditor(SCI_SETSEARCHFLAGS,flags,0);
  2896. SendEditor(SCI_SETTARGETSTART,0,0);
  2897. SendEditor(SCI_SETTARGETEND,SendEditor(SCI_GETLENGTH,0,0),0);
  2898. found=(int)SendEditor(SCI_SEARCHINTARGET,strlen(findbuf),(LPARAM)findbuf);
  2899. if (found!=-1)
  2900. {
  2901. count++;
  2902. if (RegExpr)
  2903. SendEditor(SCI_REPLACETARGETRE,-1,(LPARAM)repbuf);
  2904. else
  2905. SendEditor(SCI_REPLACETARGET,-1,(LPARAM)repbuf);
  2906. }
  2907. }
  2908. sprintf(buf,GetString1(3037),count);
  2909. MessageBox(FindReplaceWin,buf,GetString1(3038),0x40);
  2910. break;
  2911. case 0x4: //Cancel
  2912. ShowWindow(FindReplaceWin,SW_HIDE);
  2913. break;
  2914. case 0x9: //Match case
  2915. MatchCase=(IsDlgButtonChecked(FindReplaceWin,LOWORD(wParam))==BST_CHECKED);
  2916. break;
  2917. case 0xA: //Search up
  2918. Upwards=(IsDlgButtonChecked(FindReplaceWin,LOWORD(wParam))==BST_CHECKED);
  2919. break;
  2920. case 0xB: //Regex
  2921. RegExpr=(IsDlgButtonChecked(FindReplaceWin,LOWORD(wParam))==BST_CHECKED);
  2922. break;
  2923. }
  2924. break;
  2925. case WM_CLOSE:
  2926. ShowWindow(FindReplaceWin,SW_HIDE);
  2927. break;
  2928. default:
  2929. return 0;
  2930. }
  2931. return 1;
  2932. }
  2933.  
  2934. BOOL CALLBACK GotoFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  2935. {
  2936. char linebuf[4096],posbuf[4096];
  2937. unsigned int line,pos;
  2938. switch (msg)
  2939. {
  2940. case WM_COMMAND:
  2941. switch (LOWORD(wParam))
  2942. {
  2943. case 0x1: //Goto
  2944. GetDlgItemText(GotoWin,3,linebuf,4095);
  2945. GetDlgItemText(GotoWin,4,posbuf,4095);
  2946. sscanf(linebuf,"%u",&line);
  2947. sscanf(posbuf,"%u",&pos);
  2948. GoToLine(line,pos);
  2949. //don't break;
  2950. case 0x2: //Cancel
  2951. ShowWindow(GotoWin,SW_HIDE);
  2952. EnableWindow(MainWnd,1);
  2953. SetFocus(Text);
  2954. break;
  2955. case 2000:
  2956. ShowWindow(GotoWin,SW_HIDE);
  2957. EnableWindow(MainWnd,1);
  2958. SetFocus(Text);
  2959. break;
  2960. }
  2961. break;
  2962. case WM_CLOSE:
  2963. ShowWindow(GotoWin,SW_HIDE);
  2964. EnableWindow(MainWnd,1);
  2965. SetFocus(Text);
  2966. break;
  2967. default:
  2968. return 0;
  2969. }
  2970. return 1;
  2971. }
  2972. unsigned int FindFreeSpace(char*romname,unsigned int len,unsigned int start)
  2973. {
  2974. HANDLE RomFile;
  2975. unsigned int i,j=0;
  2976. unsigned char cr,src2;
  2977. DWORD read;
  2978. src2=search;
  2979. RomFile=CreateFile(romname,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  2980. i=start&0x00ffffff;
  2981. SetFilePointer(RomFile,i,NULL,FILE_BEGIN);
  2982. while (i<0x1000000)
  2983. {
  2984. ReadFile(RomFile,&cr,1,&read,NULL);
  2985. if (cr==src2)
  2986. {
  2987. j++;
  2988. }else {
  2989. j=0;
  2990. }
  2991. i++;
  2992. if (j>len) {
  2993. break; //Yes, larger than
  2994. }
  2995. }
  2996. i-=j;
  2997. i++;
  2998. CloseHandle(RomFile);
  2999. return (0x08000000|i);
  3000. }
  3001. char doing=0;
  3002. DWORD WINAPI FindInThread(LPVOID lp)
  3003. {
  3004. unsigned int*lenpos;
  3005. unsigned int pos,len;
  3006. char posbuf[32];
  3007. lenpos=lp;
  3008. len=*lenpos;
  3009. pos=*(lenpos+4);
  3010. SetDlgItemText(FFSWin,5,GetString1(3039));
  3011. pos=FindFreeSpace(RomOpen2,len,pos);
  3012. sprintf(posbuf,"0x%X",pos);
  3013. SetDlgItemText(FFSWin,5,posbuf);
  3014. GlobalFree(lenpos);
  3015. EnableWindow(GetDlgItem(FFSWin,1),1);
  3016. doing=0;
  3017. return 0;
  3018. }
  3019. BOOL CALLBACK FFSFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  3020. {
  3021. char posbuf[41],lenbuf[41];
  3022. unsigned int pos,len;
  3023. unsigned int*ptr;
  3024. switch (msg)
  3025. {
  3026. case WM_COMMAND:
  3027. switch (LOWORD(wParam))
  3028. {
  3029. case 0x1: //Find
  3030. if (*RomOpen2!=0)
  3031. {
  3032. GetDlgItemText(FFSWin,3,posbuf,40);
  3033. GetDlgItemText(FFSWin,4,lenbuf,40);
  3034. if (posbuf[0]=='0'&&posbuf[1]=='x')
  3035. {
  3036. sscanf(posbuf+2,"%X",&pos);
  3037. }
  3038. else
  3039. {
  3040. sscanf(posbuf,"%X",&pos);
  3041. }
  3042. if (lenbuf[0]=='0'&&lenbuf[1]=='x')
  3043. {
  3044. sscanf(lenbuf+2,"%X",&len);
  3045. }
  3046. else
  3047. {
  3048. sscanf(lenbuf,"%X",&len);
  3049. }
  3050. ptr=GlobalAlloc(GPTR,8);
  3051. *ptr=len;
  3052. *(ptr+4)=pos;
  3053. if (!doing)
  3054. {
  3055. EnableWindow(GetDlgItem(FFSWin,1),0);
  3056. doing=1;
  3057. CreateThread(NULL,0,FindInThread,ptr,0,(LPVOID)&pos);
  3058. }
  3059. }
  3060. else
  3061. {
  3062. MessageBox(FFSWin,GetString1(3027),GetString2(3001),0x10);
  3063. }
  3064. break;
  3065. case 0x6:
  3066. search=0xFF;
  3067. break;
  3068. case 0x7:
  3069. search=0x00;
  3070. break;
  3071. case 0x2: //Cancel
  3072. ShowWindow(FFSWin,SW_HIDE);
  3073. break;
  3074. }
  3075. break;
  3076. case WM_CLOSE:
  3077. ShowWindow(FFSWin,SW_HIDE);
  3078. break;
  3079. default:
  3080. return 0;
  3081. }
  3082. return 1;
  3083. }
  3084. char ChosenMode=17;
  3085. BOOL CALLBACK DecFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  3086. {
  3087. char posbuf[41];
  3088. unsigned int i,pos,bank,block,tbank;
  3089. //STARTUPINFO si;
  3090. //PROCESS_INFORMATION pi;
  3091. //DWORD read;
  3092. //unsigned int fsize;
  3093. //HANDLE fileM;
  3094. char*ptr;
  3095. switch (msg)
  3096. {
  3097. case WM_COMMAND:
  3098. switch (LOWORD(wParam))
  3099. {
  3100. case 0x1: //Decompile
  3101. if (*RomOpen2!=0)
  3102. {
  3103. if (NotSaved)
  3104. {
  3105. i=MessageBox(MainWnd,GetString1(3017),GetString2(3040),0x23);//yes 6 no 7 cancel 2
  3106. if (i==6)
  3107. {
  3108. SendMessage(MainWnd,WM_COMMAND,ID_SAVE,0);
  3109. if (NotSaved)
  3110. {
  3111. i=2;
  3112. }
  3113. }
  3114. if (i==2)break;
  3115. }
  3116. GetDlgItemText(DecWin,3,posbuf,40);
  3117. /*SetCurrentDirectory(DirBuffer);
  3118. strcpy(SuperBuffer,"pksv \"");
  3119. strcat(SuperBuffer,RomOpen2);
  3120. strcat(SuperBuffer,"\" \"");
  3121. strcat(SuperBuffer,posbuf);
  3122. strcat(SuperBuffer,"\" _d_.pks.tmp");
  3123. ZeroMemory(&si,sizeof(si));
  3124. ZeroMemory(&pi,sizeof(pi));
  3125. si.cb=sizeof(si);
  3126. strcpy(GreatBuffer,DirBuffer);
  3127. strcat(GreatBuffer,"pksv.exe");
  3128. if(!CreateProcess(GreatBuffer,SuperBuffer,NULL,NULL,0,DETACHED_PROCESS,NULL,NULL,&si,&pi))
  3129. {
  3130. MessageBox(MainWnd,GetString1(3041),GetString2(3001),0x10);
  3131. return 0;
  3132. }
  3133. WaitForSingleObject(pi.hProcess,60000);
  3134. strcpy(FileOpen2,"_d_.pks.tmp");
  3135. strcpy(FileOpen3,"_d_.pks.tmp");
  3136. strcpy(FileOpen,FileOpen3);
  3137. strcat(FileOpen2," - Score_Under's PKSV-UI");
  3138. SetWindowText(MainWnd,FileOpen2);
  3139. fileM=CreateFile(FileOpen3,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  3140. if(GetLastError()!=0)
  3141. {
  3142. FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,0,GetLastError(),0,(char*)&ptr,2000,NULL);
  3143. MessageBox(MainWnd,ptr,ptr,0x10);
  3144. LocalFree(ptr);
  3145. return 0;
  3146. }
  3147. fsize=SetFilePointer(fileM,0,NULL,FILE_END);
  3148. ptr=GlobalAlloc(GPTR,fsize+1);
  3149. SetFilePointer(fileM,0,NULL,FILE_BEGIN);
  3150. ReadFile(fileM,ptr,fsize,&read,NULL);
  3151. if(read!=fsize)
  3152. {
  3153. MessageBox(MainWnd,GetString1(3015),GetString2(3001),0x10);
  3154. }*/
  3155. strcpy(FileOpen2,GetString1(3008));
  3156. strcat(FileOpen2," - Score_Under's PKSV-UI");
  3157. SetWindowText(MainWnd,FileOpen2);
  3158. strcpy(FileOpen,GetString1(3008));
  3159. strcpy(FileOpen3,FileOpen);
  3160. i=0;
  3161. SaveRegSettingStr("Decompiler","Offset",posbuf);
  3162. sscanf(posbuf,"%X",&i);
  3163. if (!i)
  3164. {
  3165. sscanf(posbuf,"$%X",&i);
  3166. if (!i)sscanf(posbuf,"0x%X",&i);
  3167. }
  3168. if (IsDlgButtonChecked(DecWin,12)==BST_CHECKED)
  3169. {
  3170. if (IsDlgButtonChecked(DecWin,13)==BST_CHECKED)
  3171. NewMode(GOLD);
  3172. else if (IsDlgButtonChecked(DecWin,14)==BST_CHECKED)
  3173. NewMode(RUBY);
  3174. else if (IsDlgButtonChecked(DecWin,15)==BST_CHECKED)
  3175. NewMode(DIAMOND);
  3176. else if (IsDlgButtonChecked(DecWin,16)==BST_CHECKED)
  3177. NewMode(CRYSTAL);
  3178. else
  3179. NewMode(FIRE_RED);
  3180. }
  3181. else
  3182. DetermineMode(RomOpen2);
  3183. GetDlgItemText(DecWin,19,GreatBuffer,sizeof(GreatBuffer));
  3184. block=-1;
  3185. sscanf(GreatBuffer,"0x%X",&block);
  3186. if (block==-1)
  3187. sscanf(GreatBuffer,"%X",&block);
  3188. if (block==-1)
  3189. sscanf(GreatBuffer,"$%X",&block);
  3190. SaveRegSetting("Decompiler","Use Dynamic",IsDlgButtonChecked(DecWin,18));
  3191. SaveRegSettingStr("Decompiler","Dynamic Offset",GreatBuffer);
  3192. SetDynamic(IsDlgButtonChecked(DecWin,18),block);
  3193. if (IsDlgButtonChecked(DecWin,9)==BST_CHECKED)
  3194. ptr=decompileASM(RomOpen2,i);
  3195. else if (IsDlgButtonChecked(DecWin,10)==BST_CHECKED)
  3196. ptr=decompileLevel(RomOpen2,i);
  3197. else
  3198. ptr=decompile(RomOpen2,i,0);
  3199.  
  3200. SendEditor(SCI_CANCEL,0,0);
  3201. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3202. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3203. SendEditor(SCI_CLEARALL,0,0);
  3204. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3205. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3206. if (ptr)
  3207. SendEditor(SCI_ADDTEXT,strlen(ptr),(LPARAM)ptr);
  3208. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3209. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3210. SendEditor(SCI_SETSAVEPOINT,0,0);
  3211. SendEditor(SCI_GOTOPOS,0,0);
  3212. SendEditor(SCI_CHOOSECARETX,0,0);
  3213. if (ptr)
  3214. GlobalFree(ptr);
  3215. /*
  3216. CloseHandle(fileM);
  3217. */
  3218. ShowWindow(DecWin,SW_HIDE);
  3219. EnableWindow(MainWnd,1);
  3220. SetFocus(Text);
  3221. }
  3222. else
  3223. {
  3224. MessageBox(FFSWin,GetString1(3027),GetString2(3001),0x10);
  3225. }
  3226. break;
  3227. case 0x7:
  3228. GetDlgItemText(DecWin,4,posbuf,40);
  3229. sscanf(posbuf,"%x",&bank);
  3230. GetDlgItemText(DecWin,5,posbuf,40);
  3231. sscanf(posbuf,"%u",&block);
  3232. GetDlgItemText(DecWin,6,posbuf,40);
  3233. sscanf(posbuf,"%u",&tbank);
  3234. pos=PointerToOffset((tbank<<16)|(block<<8)|bank);
  3235. if (pos!=0xFFFFFFFF)
  3236. {
  3237. sprintf(posbuf,"0x%X",pos);
  3238. SetDlgItemText(DecWin,3,posbuf);
  3239. }
  3240. else
  3241. {
  3242. SetDlgItemText(DecWin,3,"-ERROR-");
  3243. }
  3244. break;
  3245. case 12:
  3246. if (IsDlgButtonChecked(DecWin,12)==BST_CHECKED)
  3247. {
  3248. EnableWindow(GetDlgItem(DecWin,13),1);
  3249. EnableWindow(GetDlgItem(DecWin,14),1);
  3250. EnableWindow(GetDlgItem(DecWin,16),1);
  3251. EnableWindow(GetDlgItem(DecWin,17),1);
  3252. CheckDlgButton(DecWin,ChosenMode,1);
  3253. }
  3254. else
  3255. {
  3256. EnableWindow(GetDlgItem(DecWin,13),0);
  3257. EnableWindow(GetDlgItem(DecWin,14),0);
  3258. EnableWindow(GetDlgItem(DecWin,16),0);
  3259. EnableWindow(GetDlgItem(DecWin,17),0);
  3260. CheckDlgButton(DecWin,ChosenMode,0);
  3261. }
  3262. break;
  3263. case 13:
  3264. case 14:
  3265. case 15:
  3266. case 16:
  3267. case 17:
  3268. if (IsDlgButtonChecked(DecWin,LOWORD(wParam)))
  3269. ChosenMode=(char)LOWORD(wParam);
  3270. break;
  3271. case 0x2: //Cancel
  3272. case 2000:
  3273. ShowWindow(DecWin,SW_HIDE);
  3274. //EnableWindow(MainWnd,1);
  3275. SetFocus(Text);
  3276. break;
  3277. }
  3278. break;
  3279. case WM_CLOSE:
  3280. ShowWindow(DecWin,SW_HIDE);
  3281. //EnableWindow(MainWnd,1);
  3282. SetFocus(Text);
  3283. break;
  3284. default:
  3285. return 0;
  3286. }
  3287. return 1;
  3288. }
  3289.  
  3290. void FillItems(HWND hwndList)
  3291. {
  3292. int i;
  3293. char *pVarName[] = {"NONE","MASTERBALL","ULTRABALL","GREATBALL","POKEBALL",
  3294. "SAFARIBALL","NETBALL","DIVEBALL","NESTBALL","REPEATBALL",
  3295. "TIMERBALL","LUXURYBALL","PREMIERBALL","POTION","ANTIDOTE",
  3296. "BURNHEAL","ICEHEAL","AWAKENING","PARLYZHEAL","FULLRESTORE",
  3297. "MAXPOTION","HYPERPOTION","SUPERPOTION","FULLHEAL","REVIVE",
  3298. "MAXREVIVE","FRESHWATER","SODAPOP","LEMONADE","MOOMOOMILK",
  3299. "ENERGYPOWDER","ENERGYROOT","HEALPOWDER","REVIVALHERB","ETHER",
  3300. "MAXETHER","ELIXIR","MAXELIXIR","LAVACOOKIE","BLUEFLUTE","YELLOWFLUTE",
  3301. "REDFLUTE","BLACKFLUTE","WHITEFLUTE","BERRYJUICE","SACREDASH","SHOALSALT",
  3302. "SHOALSHELL","REDSHARD","BLUESHARD","YELLOWSHARD","GREENSHARD","HPUP",
  3303. "PROTEIN","IRON","CARBOS","CALCIUM","RARECANDY","PPUP","ZINC",
  3304. "PPMAX","GUARDSPEC","DIREHIT","XATTACK","XDEFEND","XSPEED","XACCURACY",
  3305. "XSPECIAL","POKEDOLL","FLUFFYTAIL","SUPERREPEL","MAXREPEL","ESCAPEROPE",
  3306. "REPEL","SUNSTONE","MOONSTONE","FIRESTONE","THUNDERSTONE","WATERSTONE",
  3307. "LEAFSTONE","TINYMUSHROOM","BIGMUSHROOM","PEARL","BIGPEARL","STARDUST",
  3308. "STARPIECE","NUGGET","HEARTSCALE","ORANGEMAIL","HARBORMAIL","GLITTERMAIL",
  3309. "MECHMAIL","WOODMAIL","WAVEMAIL","BEADMAIL","SHADOWMAIL","TROPICMAIL",
  3310. "DREAMMAIL","FABMAIL","RETROMAIL","CHERIBERRY","CHESTOBERRY","PECHABERRY",
  3311. "RAWSTBERRY","ASPEARBERRY","LEPPABERRY","ORANBERRY","PERSIMBERRY","LUMBERRY",
  3312. "SITRUSBERRY","FIGYBERRY","WIKIBERRY","MAGOBERRY","AGUAVBERRY","IAPAPABERRY",
  3313. "RAZZBERRY","BLUKBERRY","NANABBERRY","WEPEARBERRY","PINAPBERRY","POMEGBERRY",
  3314. "KELPSYBERRY","QUALOTBERRY","HONDEWBERRY","GREPABERRY","TAMATOBERRY",
  3315. "CORNNBERRY","MAGOSTBERRY","RABUTABERRY","NOMELBERRY","SPELONBERRY",
  3316. "PAMTREBERRY","WATMELBERRY","DURINBERRY","BELUEBERRY","LIECHIBERRY",
  3317. "GANLONBERRY","SALACBERRY","PETAYABERRY","APICOTBERRY","LANSATBERRY",
  3318. "STARFBERRY","ENIGMABERRY","BRIGHTPOWDER","WHITEHERB","MACHOBRACE",
  3319. "EXPSHARE","QUICKCLAW","SOOTHEBELL","MENTALHERB","CHOICEBAND",
  3320. "KINGSROCK","SILVERPOWDER","AMULETCOIN","CLEANSETAG","SOULDEW",
  3321. "DEEPSEATOOTH","DEEPSEASCALE","SMOKEBALL","EVERSTONE","FOCUSBAND",
  3322. "LUCKYEGG","SCOPELENS","METALCOAT","LEFTOVERS","DRAGONSCALE","LIGHTBALL",
  3323. "SOFTSAND","HARDSTONE","MIRACLESEED","BLACKGLASSES","BLACKBELT","MAGNET",
  3324. "MYSTICWATER","SHARPBEAK","POISONBARB","NEVERMELTICE","SPELLTAG","TWISTEDSPOON",
  3325. "CHARCOAL","DRAGONFANG","SILKSCARF","UPGRADE","SHELLBELL","SEAINCENSE","LAXINCENSE",
  3326. "LUCKYPUNCH","METALPOWDER","THICKCLUB","STICK","REDSCARF","BLUESCARF",
  3327. "PINKSCARF","GREENSCARF","YELLOWSCARF","MACHBIKE","COINCASE","ITEMFINDER",
  3328. "OLDROD","GOODROD","SUPERROD","SSTICKET","CONTESTPASS","WAILMERPAIL",
  3329. "DEVONGOODS","SOOTSACK","BASEMENTKEY","ACROBIKE","POKEBLOCKCASE","LETTER",
  3330. "EONTICKET","REDORB","BLUEORB","SCANNER","GOGOGGLES","METEORITE","RM1KEY",
  3331. "RM2KEY","RM4KEY","RM6KEY","STORAGEKEY","ROOTFOSSIL","CLAWFOSSIL",
  3332. "DEVONSCOPE","TM01","TM02","TM03","TM04","TM05","TM06","TM07","TM08",
  3333. "TM09","TM10","TM11","TM12","TM13","TM14","TM15","TM16","TM17","TM18",
  3334. "TM19","TM20","TM21","TM22","TM23","TM24","TM25","TM26","TM27","TM28",
  3335. "TM29","TM30","TM31","TM32","TM33","TM34","TM35","TM36","TM37","TM38",
  3336. "TM39","TM40","TM41","TM42","TM43","TM44","TM45","TM46","TM47","TM48",
  3337. "TM49","TM50","HM01","HM02","HM03","HM04","HM05","HM06","HM07","HM08",
  3338. "OAKSPARCEL","POKEFLUTE","SECRETKEY","BIKEVOUCHER","GOLDTEETH",
  3339. "OLDAMBER","CARDKEY","LIFTKEY","HELIXFOSSIL","DOMEFOSSIL","SILPHSCOPE",
  3340. "BICYCLE","TOWNMAP","VSSEEKER","FAMECHECKER","TMCASE","BERRYPOUCH",
  3341. "TEACHYTV","TRIPASS","RAINBOWPASS","TEA","MYSTICTICKET","AURORATICKET",
  3342. "POWDERJAR","RUBY","SAPPHIRE","MAGMAEMBLEM","OLDSEAMAP"
  3343. };
  3344. SendMessage(hwndList, CB_RESETCONTENT, 0, 0);
  3345. for (i=0; i<sizeof(pVarName)/sizeof(char*); i++)
  3346. SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pVarName[i]);
  3347.  
  3348. }
  3349.  
  3350.  
  3351. DWORD WINAPI FindItemScript(LPVOID x)
  3352. {
  3353. //unsigned int fspace;
  3354. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3355. ShowWindow(GenWin,SW_HIDE);
  3356. LoadRegSettingStr("ScriptGen","Item");
  3357. if (!*GreatBuffer)strcpy(GreatBuffer,"MASTERBALL");
  3358. GetInput2(GetString1(3042),GetString2(3043),GreatBuffer,FillItems);
  3359. while (inputrunning) {
  3360. Sleep(0);
  3361. }
  3362. if (!cancelled)
  3363. {
  3364. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  3365. strcpy(SuperBuffer,GreatBuffer);
  3366. LoadRegSettingStr("ScriptGen","ItemAmt");
  3367. if (!*GreatBuffer)strcpy(GreatBuffer,"1");
  3368. GetInput(GetString1(3042),GetString2(3044),GreatBuffer);
  3369. while (inputrunning) {
  3370. Sleep(0);
  3371. }
  3372. if (!cancelled)
  3373. {
  3374. SaveRegSettingStr("ScriptGen","ItemAmt",GreatBuffer);
  3375. //fspace=FindFreeSpace(RomOpen2,0x100,0x740000);
  3376. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\ncopyvarifnotzero 0x8000 %s\ncopyvarifnotzero 0x8001 %s\ncallstd MSG_FIND\nend\n",SuperBuffer,GreatBuffer);
  3377. SendEditor(SCI_CANCEL,0,0);
  3378. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3379. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3380. SendEditor(SCI_CLEARALL,0,0);
  3381. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3382. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3383. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3384. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3385. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3386. SendEditor(SCI_SETSAVEPOINT,0,0);
  3387. SendEditor(SCI_GOTOPOS,0,0);
  3388. SendEditor(SCI_CHOOSECARETX,0,0);
  3389. SetForegroundWindow(MainWnd);
  3390. SetFocus(Text);
  3391. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3392. SendEditor(SCI_SETSEL,0,0);
  3393. }
  3394. }
  3395. EnableWindow(MainWnd,1);
  3396. SetForegroundWindow(MainWnd);
  3397. SetFocus(Text);
  3398. return 0;
  3399. }
  3400.  
  3401. void FillMsgs(HWND hwndList)
  3402. {
  3403. int i;
  3404. char *pVarName[] = {"MSG_ITEM","MSG_NORMAL","MSG_YESNO","MSG_NOCLOSE","MSG_SIGN","MSG_STANDARD","MSG_FIND","MSG_OBTAIN"};
  3405. SendMessage(hwndList, CB_RESETCONTENT, 0, 0);
  3406. for (i=0; i<sizeof(pVarName)/sizeof(char*); i++)
  3407. SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pVarName[i]);
  3408.  
  3409. }
  3410.  
  3411. DWORD WINAPI TalkScript(LPVOID x)
  3412. {
  3413. //unsigned int fspace;
  3414. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3415. ShowWindow(GenWin,SW_HIDE);
  3416. LoadRegSettingStr("ScriptGen","Message");
  3417. if (!*GreatBuffer)strcpy(GreatBuffer,"Hi, I'm a cow[.]\\nMoo.");
  3418. GetInput(GetString1(3057),GetString2(3058),GreatBuffer);
  3419. while (inputrunning) {
  3420. Sleep(0);
  3421. }
  3422. if (!cancelled)
  3423. {
  3424. SaveRegSettingStr("ScriptGen","Message",GreatBuffer);
  3425. strcpy(SuperBuffer,GreatBuffer);
  3426. LoadRegSettingStr("ScriptGen","MessageType");
  3427. if (!*GreatBuffer)strcpy(GreatBuffer,"MSG_NORMAL");
  3428. GetInput2(GetString1(3057),GetString2(3059),GreatBuffer,FillMsgs);
  3429. while (inputrunning) {
  3430. Sleep(0);
  3431. }
  3432. if (!cancelled)
  3433. {
  3434. SaveRegSettingStr("ScriptGen","MessageType",GreatBuffer);
  3435. //fspace=FindFreeSpace(RomOpen2,0x400,0x740000);
  3436. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlock\nfaceplayer\nmsgbox @text ' %s\ncallstd %s\nrelease\nend\n\n#org @text\n= %s\n",
  3437. SuperBuffer,GreatBuffer,SuperBuffer);
  3438. SendEditor(SCI_CANCEL,0,0);
  3439. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3440. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3441. SendEditor(SCI_CLEARALL,0,0);
  3442. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3443. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3444. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3445. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3446. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3447. SendEditor(SCI_SETSAVEPOINT,0,0);
  3448. SendEditor(SCI_GOTOPOS,0,0);
  3449. SendEditor(SCI_CHOOSECARETX,0,0);
  3450. SetForegroundWindow(MainWnd);
  3451. SetFocus(Text);
  3452. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3453. SendEditor(SCI_SETSEL,0,0);
  3454. }
  3455. }
  3456. EnableWindow(MainWnd,1);
  3457. SetForegroundWindow(MainWnd);
  3458. SetFocus(Text);
  3459. return 0;
  3460. }
  3461.  
  3462. DWORD WINAPI HealScript(LPVOID x)
  3463. {
  3464. //unsigned int fspace;
  3465. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3466. ShowWindow(GenWin,SW_HIDE);
  3467. //fspace=FindFreeSpace(RomOpen2,0x100,0x740000);
  3468. sprintf(MegaBuffer,"#dyn 0x740000\n#org @\nlockall\nmessage @healmsg\nshowmsg\nwaitbutton\nfadescreen 1\nclosemsg\nspecial 0\nfadescreen 0\nmsgbox @bettermsg\ncallstd MSG_NORMAL\nreleaseall\nend\n\n#org @healmsg\n= Your POKΓ©MON look tired[.]\\nYou should give them a rest.\n\n#org @bettermsg\n= There. All better now!\n");
  3469. SendEditor(SCI_CANCEL,0,0);
  3470. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3471. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3472. SendEditor(SCI_CLEARALL,0,0);
  3473. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3474. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3475. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3476. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3477. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3478. SendEditor(SCI_SETSAVEPOINT,0,0);
  3479. SendEditor(SCI_GOTOPOS,0,0);
  3480. SendEditor(SCI_CHOOSECARETX,0,0);
  3481. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3482. SendEditor(SCI_SETSEL,0,0);
  3483. EnableWindow(MainWnd,1);
  3484. SetForegroundWindow(MainWnd);
  3485. SetFocus(Text);
  3486. return 0;
  3487. }
  3488.  
  3489. DWORD WINAPI GiveItemScript(LPVOID x)
  3490. {
  3491. char*buf1,*buf2;
  3492. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3493. ShowWindow(GenWin,SW_HIDE);
  3494. LoadRegSettingStr("ScriptGen","Item");
  3495. if (!*GreatBuffer)strcpy(GreatBuffer,"MASTERBALL");
  3496. GetInput2(GetString1(3045),GetString2(3043),GreatBuffer,FillItems);
  3497. while (inputrunning) {
  3498. Sleep(0);
  3499. }
  3500. if (!cancelled)
  3501. {
  3502. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  3503. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3504. LoadRegSettingStr("ScriptGen","ItemAmt");
  3505. if (!*GreatBuffer)strcpy(GreatBuffer,"1");
  3506. GetInput(GetString1(3045),GetString2(3044),GreatBuffer);
  3507. while (inputrunning) {
  3508. Sleep(0);
  3509. }
  3510. if (!cancelled)
  3511. {
  3512. SaveRegSettingStr("ScriptGen","ItemAmt",GreatBuffer);
  3513. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3514. LoadRegSettingStr("ScriptGen","Flag");
  3515. if (!*GreatBuffer)strcpy(GreatBuffer,"0x250");
  3516. GetInput(GetString1(3045),GetString2(3046),GreatBuffer);
  3517. while (inputrunning) {
  3518. Sleep(0);
  3519. }
  3520. if (!cancelled)
  3521. {
  3522. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  3523. //fspace=FindFreeSpace(RomOpen2,0x100,0x740000);
  3524. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\ncheckflag %s\nif 0x1 jump :end\ncopyvarifnotzero 0x8000 %s\ncopyvarifnotzero 0x8001 %s\ncallstd MSG_OBTAIN\nsetflag %s\n:end\nend\n",GreatBuffer,buf1,buf2,GreatBuffer);
  3525. SendEditor(SCI_CANCEL,0,0);
  3526. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3527. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3528. SendEditor(SCI_CLEARALL,0,0);
  3529. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3530. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3531. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3532. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3533. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3534. SendEditor(SCI_SETSAVEPOINT,0,0);
  3535. SendEditor(SCI_GOTOPOS,0,0);
  3536. SendEditor(SCI_CHOOSECARETX,0,0);
  3537. SetForegroundWindow(MainWnd);
  3538. SetFocus(Text);
  3539. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3540. SendEditor(SCI_SETSEL,0,0);
  3541. }
  3542. }
  3543. }
  3544. EnableWindow(MainWnd,1);
  3545. SetForegroundWindow(MainWnd);
  3546. SetFocus(Text);
  3547. return 0;
  3548. }
  3549.  
  3550. void FillPokemon(HWND hwndList)
  3551. {
  3552. int i;
  3553. char *pVarName[] = {"MISSINGNO","BULBASAUR","IVYSAUR","VENUSAUR",
  3554. "CHARMANDER","CHARMELEON","CHARIZARD","SQUIRTLE","WARTORTLE",
  3555. "BLASTOISE","CATERPIE","METAPOD","BUTTERFREE","WEEDLE","KAKUNA",
  3556. "BEEDRILL","PIDGEY","PIDGEOTTO","PIDGEOT","RATTATA","RATICATE",
  3557. "SPEAROW","FEAROW","EKANS","ARBOK","PIKACHU","RAICHU","SANDSHREW",
  3558. "SANDSLASH","NIDORANF","NIDORINA","NIDOQUEEN","NIDORANM","NIDORINO",
  3559. "NIDOKING","CLEFAIRY","CLEFABLE","VULPIX","NINETALES","JIGGLYPUFF",
  3560. "WIGGLYTUFF","ZUBAT","GOLBAT","ODDISH","GLOOM","VILEPLUME","PARAS",
  3561. "PARASECT","VENONAT","VENOMOTH","DIGLETT","DUGTRIO","MEOWTH",
  3562. "PERSIAN","PSYDUCK","GOLDUCK","MANKEY","PRIMEAPE","GROWLITHE",
  3563. "ARCANINE","POLIWAG","POLIWHIRL","POLIWRATH","ABRA","KADABRA",
  3564. "ALAKAZAM","MACHOP","MACHOKE","MACHAMP","BELLSPROUT","WEEPINBELL",
  3565. "VICTREEBEL","TENTACOOL","TENTACRUEL","GEODUDE","GRAVELER","GOLEM",
  3566. "PONYTA","RAPIDASH","SLOWPOKE","SLOWBRO","MAGNEMITE","MAGNETON",
  3567. "FARFETCHD","DODUO","DODRIO","SEEL","DEWGONG","GRIMER","MUK",
  3568. "SHELLDER","CLOYSTER","GASTLY","HAUNTER","GENGAR","ONIX","DROWZEE",
  3569. "HYPNO","KRABBY","KINGLER","VOLTORB","ELECTRODE","EXEGGCUTE",
  3570. "EXEGGUTOR","CUBONE","MAROWAK","HITMONLEE","HITMONCHAN","LICKITUNG",
  3571. "KOFFING","WEEZING","RHYHORN","RHYDON","CHANSEY","TANGELA","KANGASKHAN",
  3572. "HORSEA","SEADRA","GOLDEEN","SEAKING","STARYU","STARMIE","MRMIME",
  3573. "SCYTHER","JYNX","ELECTABUZZ","MAGMAR","PINSIR","TAUROS","MAGIKARP",
  3574. "GYARADOS","LAPRAS","DITTO","EEVEE","VAPOREON","JOLTEON","FLAREON",
  3575. "PORYGON","OMANYTE","OMASTAR","KABUTO","KABUTOPS","AERODACTYL",
  3576. "SNORLAX","ARTICUNO","ZAPDOS","MOLTRES","DRATINI","DRAGONAIR",
  3577. "DRAGONITE","MEWTWO","MEW","CHIKORITA","BAYLEEF","MEGANIUM","CYNDAQUIL",
  3578. "QUILAVA","TYPHLOSION","TOTODILE","CROCONAW","FERALIGATR","SENTRET",
  3579. "FURRET","HOOTHOOT","NOCTOWL","LEDYBA","LEDIAN","SPINARAK","ARIADOS",
  3580. "CROBAT","CHINCHOU","LANTURN","PICHU","CLEFFA","IGGLYBUFF","TOGEPI",
  3581. "TOGETIC","NATU","XATU","MAREEP","FLAAFFY","AMPHAROS","BELLOSSOM",
  3582. "MARILL","AZUMARILL","SUDOWOODO","POLITOED","HOPPIP","SKIPLOOM",
  3583. "JUMPLUFF","AIPOM","SUNKERN","SUNFLORA","YANMA","WOOPER","QUAGSIRE",
  3584. "ESPEON","UMBREON","MURKROW","SLOWKING","MISDREAVUS","UNOWN",
  3585. "WOBBUFFET","GIRAFARIG","PINECO","FORRETRESS","DUNSPARCE","GLIGAR",
  3586. "STEELIX","SNUBBULL","GRANBULL","QWILFISH","SCIZOR","SHUCKLE","HERACROSS",
  3587. "SNEASEL","TEDDIURSA","URSARING","SLUGMA","MAGCARGO","SWINUB","PILOSWINE",
  3588. "CORSOLA","REMORAID","OCTILLERY","DELIBIRD","MANTINE","SKARMORY",
  3589. "HOUNDOUR","HOUNDOOM","KINGDRA","PHANPY","DONPHAN","PORYGON2","STANTLER",
  3590. "SMEARGLE","TYROGUE","HITMONTOP","SMOOCHUM","ELEKID","MAGBY","MILTANK",
  3591. "BLISSEY","RAIKOU","ENTEI","SUICUNE","LARVITAR","PUPITAR","TYRANITAR",
  3592. "LUGIA","HO-OH","CELEBI","TREECKO","GROVYLE","SCEPTILE","TORCHIC",
  3593. "COMBUSKEN","BLAZIKEN","MUDKIP","MARSHTOMP","SWAMPERT","POOCHYENA","MIGHTYENA",
  3594. "ZIGZAGOON","LINOONE","WURMPLE","SILCOON","BEAUTIFLY","CASCOON","DUSTOX",
  3595. "LOTAD","LOMBRE","LUDICOLO","SEEDOT","NUZLEAF","SHIFTRY","NINCADA",
  3596. "NINJASK","SHEDINJA","TAILLOW","SWELLOW","SHROOMISH","BRELOOM","SPINDA",
  3597. "WINGULL","PELIPPER","SURSKIT","MASQUERAIN","WAILMER","WAILORD",
  3598. "SKITTY","DELCATTY","KECLEON","BALTOY","CLAYDOL","NOSEPASS","TORKOAL",
  3599. "SABLEYE","BARBOACH","WHISCASH","LUVDISC","CORPHISH","CRAWDAUNT","FEEBAS",
  3600. "MILOTIC","CARVANHA","SHARPEDO","TRAPINCH","VIBRAVA","FLYGON","MAKUHITA",
  3601. "HARIYAMA","ELECTRIKE","MANECTRIC","NUMEL","CAMERUPT","SPHEAL","SEALEO",
  3602. "WALREIN","CACNEA","CACTURNE","SNORUNT","GLALIE","LUNATONE","SOLROCK",
  3603. "AZURILL","SPOINK","GRUMPIG","PLUSLE","MINUN","MAWILE","MEDITITE",
  3604. "MEDICHAM","SWABLU","ALTARIA","WYNAUT","DUSKULL","DUSCLOPS","ROSELIA",
  3605. "SLAKOTH","VIGOROTH","SLAKING","GULPIN","SWALOT","TROPIUS","WHISMUR",
  3606. "LOUDRED","EXPLOUD","CLAMPERL","HUNTAIL","GOREBYSS","ABSOL","SHUPPET",
  3607. "BANETTE","SEVIPER","ZANGOOSE","RELICANTH","ARON","LAIRON","AGGRON",
  3608. "CASTFORM","VOLBEAT","ILLUMISE","LILEEP","CRADILY","ANORITH","ARMALDO",
  3609. "RALTS","KIRLIA","GARDEVOIR","BAGON","SHELGON","SALAMENCE","BELDUM",
  3610. "METANG","METAGROSS","REGIROCK","REGICE","REGISTEEL","KYOGRE","GROUDON",
  3611. "RAYQUAZA","LATIAS","LATIOS","JIRACHI","DEOXYS","CHIMECHO"
  3612. };
  3613. SendMessage(hwndList, CB_RESETCONTENT, 0, 0);
  3614. for (i=0; i<sizeof(pVarName)/sizeof(char*); i++)
  3615. SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pVarName[i]);
  3616.  
  3617. }
  3618.  
  3619. DWORD WINAPI GivePokeScript(LPVOID x)
  3620. {
  3621. char*buf1,*buf2,*buf3;
  3622. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3623. ShowWindow(GenWin,SW_HIDE);
  3624. LoadRegSettingStr("ScriptGen","Pokemon");
  3625. if (!*GreatBuffer)strcpy(GreatBuffer,"CHARMANDER");
  3626. GetInput2(GetString1(3047),GetString2(3048),GreatBuffer,FillPokemon);
  3627. while (inputrunning) {
  3628. Sleep(0);
  3629. }
  3630. if (!cancelled)
  3631. {
  3632. SaveRegSettingStr("ScriptGen","Pokemon",GreatBuffer);
  3633. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3634. LoadRegSettingStr("ScriptGen","PokemonLvl");
  3635. if (!*GreatBuffer)strcpy(GreatBuffer,"0x5");
  3636. GetInput(GetString1(3047),GetString2(3049),GreatBuffer);
  3637. while (inputrunning) {
  3638. Sleep(0);
  3639. }
  3640. if (!cancelled)
  3641. {
  3642. SaveRegSettingStr("ScriptGen","PokemonLvl",GreatBuffer);
  3643. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3644. LoadRegSettingStr("ScriptGen","Item");
  3645. if (!*GreatBuffer)strcpy(GreatBuffer,"MASTERBALL");
  3646. GetInput2(GetString1(3047),GetString2(3086),GreatBuffer,FillItems);
  3647. while (inputrunning) {
  3648. Sleep(0);
  3649. }
  3650. if (!cancelled)
  3651. {
  3652. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  3653. strcpy(buf3=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3654. LoadRegSettingStr("ScriptGen","Flag");
  3655. if (!*GreatBuffer)strcpy(GreatBuffer,"0x250");
  3656. GetInput(GetString1(3047),GetString2(3046),GreatBuffer);
  3657. while (inputrunning) {
  3658. Sleep(0);
  3659. }
  3660. if (!cancelled)
  3661. {
  3662. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  3663. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlock\ncheckflag %s\nif 0x1 jump :end\nsetflag FR_POKEMON\ncountpokemon\ncompare LASTRESULT 6\nif == jump @noroom\naddpokemon %s %s %s 0 0 0\nsetflag %s\nstorepokemon 0 %s\nmessage @get-msg\nfanfare 0x101\nshowmsg\nwaitfanfare\nwaitbutton\n:end\nrelease\nend\n\n#org @noroom\nmsgbox @noroom-msg\ncallstd MSG_NOCLOSE\nrelease\nend\n\n#org @noroom-msg\n= You don't have enough room in your party.\n\n#org @get-msg\n= You got a \\v\\h02!\n",
  3664. GreatBuffer,buf1,buf2,buf3,GreatBuffer,buf1);
  3665. SendEditor(SCI_CANCEL,0,0);
  3666. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3667. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3668. SendEditor(SCI_CLEARALL,0,0);
  3669. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3670. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3671. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3672. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3673. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3674. SendEditor(SCI_SETSAVEPOINT,0,0);
  3675. SendEditor(SCI_GOTOPOS,0,0);
  3676. SendEditor(SCI_CHOOSECARETX,0,0);
  3677. SetForegroundWindow(MainWnd);
  3678. SetFocus(Text);
  3679. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3680. SendEditor(SCI_SETSEL,0,0);
  3681. }
  3682. }
  3683. }
  3684. }
  3685. EnableWindow(MainWnd,1);
  3686. SetForegroundWindow(MainWnd);
  3687. SetFocus(Text);
  3688. return 0;
  3689. }
  3690.  
  3691. DWORD WINAPI BattleScript(LPVOID x)
  3692. {
  3693. char*buf1,*buf2,*buf3;
  3694. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3695. ShowWindow(GenWin,SW_HIDE);
  3696. LoadRegSettingStr("ScriptGen","Pokemon");
  3697. if (!*GreatBuffer)strcpy(GreatBuffer,"RAYQUAZA");
  3698. GetInput2(GetString1(3055),GetString2(3048),GreatBuffer,FillPokemon);
  3699. while (inputrunning) {
  3700. Sleep(0);
  3701. }
  3702. if (!cancelled)
  3703. {
  3704. SaveRegSettingStr("ScriptGen","Pokemon",GreatBuffer);
  3705. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3706. LoadRegSettingStr("ScriptGen","PokemonLvl");
  3707. if (!*GreatBuffer)strcpy(GreatBuffer,"0x5");
  3708. GetInput(GetString1(3055),GetString2(3049),GreatBuffer);
  3709. while (inputrunning) {
  3710. Sleep(0);
  3711. }
  3712. if (!cancelled)
  3713. {
  3714. SaveRegSettingStr("ScriptGen","PokemonLvl",GreatBuffer);
  3715. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3716. LoadRegSettingStr("ScriptGen","Item");
  3717. if (!*GreatBuffer)strcpy(GreatBuffer,"MASTERBALL");
  3718. GetInput2(GetString1(3055),GetString2(3043),GreatBuffer,FillItems);
  3719. while (inputrunning) {
  3720. Sleep(0);
  3721. }
  3722. if (!cancelled)
  3723. {
  3724. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  3725. strcpy(buf3=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3726. LoadRegSettingStr("ScriptGen","Flag");
  3727. if (!*GreatBuffer)strcpy(GreatBuffer,"0x250");
  3728. GetInput(GetString1(3055),GetString2(3056),GreatBuffer);
  3729. while (inputrunning) {
  3730. Sleep(0);
  3731. }
  3732. if (!cancelled)
  3733. {
  3734. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  3735. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nspecial 0x187\ncompare LASTRESULT 2\nif == jump 0x81A7AE0\nspecial 0x188\nlock\nfaceplayer\nchecksound\ncry %s 2\nwaitcry\npause 0x14\nplaysound 0x156 0x0\nbattle %s %s %s\nsetflag 0x807\nspecial 0x138\nwaitspecial\nclearflag 0x807\nspecial2 0x800D 0xB4\ncompare LASTRESULT 1\nif == jump 0x8162558\ncompare LASTRESULT 4\nif == jump 0x8162561\ncompare LASTRESULT 5\nif == jump 0x8162561\nsetflag %s\nrelease\nend\n",
  3736. buf1,buf1,buf2,buf3,GreatBuffer);
  3737. SendEditor(SCI_CANCEL,0,0);
  3738. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3739. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3740. SendEditor(SCI_CLEARALL,0,0);
  3741. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3742. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3743. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3744. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3745. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3746. SendEditor(SCI_SETSAVEPOINT,0,0);
  3747. SendEditor(SCI_GOTOPOS,0,0);
  3748. SendEditor(SCI_CHOOSECARETX,0,0);
  3749. SetForegroundWindow(MainWnd);
  3750. SetFocus(Text);
  3751. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3752. SendEditor(SCI_SETSEL,0,0);
  3753. }
  3754. }
  3755. }
  3756. }
  3757. EnableWindow(MainWnd,1);
  3758. SetForegroundWindow(MainWnd);
  3759. SetFocus(Text);
  3760. return 0;
  3761. }
  3762.  
  3763. DWORD WINAPI RoadClosedScript(LPVOID x)
  3764. {
  3765. char*buf1,*buf2;
  3766. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3767. ShowWindow(GenWin,SW_HIDE);
  3768. LoadRegSettingStr("ScriptGen","Flag");
  3769. if (!*GreatBuffer)strcpy(GreatBuffer,"0x250");
  3770. GetInput(GetString1(3051),GetString2(3052),GreatBuffer);
  3771. while (inputrunning) {
  3772. Sleep(0);
  3773. }
  3774. if (!cancelled)
  3775. {
  3776. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  3777. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3778. LoadRegSettingStr("ScriptGen","PersonID");
  3779. if (!*GreatBuffer)strcpy(GreatBuffer,"0x5");
  3780. GetInput(GetString1(3051),GetString2(3053),GreatBuffer);
  3781. while (inputrunning) {
  3782. Sleep(0);
  3783. }
  3784. if (!cancelled)
  3785. {
  3786. SaveRegSettingStr("ScriptGen","PersonID",GreatBuffer);
  3787. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3788. LoadRegSettingStr("ScriptGen","Flag");
  3789. if (!*GreatBuffer)strcpy(GreatBuffer,"0x251");
  3790. GetInput(GetString1(3051),GetString2(3054),GreatBuffer);
  3791. while (inputrunning) {
  3792. Sleep(0);
  3793. }
  3794. if (!cancelled)
  3795. {
  3796. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  3797. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlockall\ncheckflag %s\nif 0x1 jump @open\nmessage @text\nshowmsg\nwaitbutton\nreleaseall\nend\n\n#org @text\n= I'm sorry, the road is closed\\nuntil further notice.\n\n#org @open\nmessage @opentxt\nshowmsg\nwaitbutton\nfadescreen 3\nclosemsg\ndisappear %s\nsetflag %s\nfadescreen 2\nreleaseall\nend\n#org @opentxt\n= I'm sorry, th-\\pOh right!\\nThe construction just finished%clyesterday[.]\n",
  3798. buf1,buf2,GreatBuffer,'\\');
  3799. SendEditor(SCI_CANCEL,0,0);
  3800. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3801. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3802. SendEditor(SCI_CLEARALL,0,0);
  3803. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3804. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3805. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3806. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3807. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3808. SendEditor(SCI_SETSAVEPOINT,0,0);
  3809. SendEditor(SCI_GOTOPOS,0,0);
  3810. SendEditor(SCI_CHOOSECARETX,0,0);
  3811. SetForegroundWindow(MainWnd);
  3812. SetFocus(Text);
  3813. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3814. SendEditor(SCI_SETSEL,0,0);
  3815. }
  3816. }
  3817. }
  3818. EnableWindow(MainWnd,1);
  3819. SetForegroundWindow(MainWnd);
  3820. SetFocus(Text);
  3821. return 0;
  3822. }
  3823.  
  3824. DWORD WINAPI TrainerBattleScript(LPVOID x)
  3825. {
  3826. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3827. ShowWindow(GenWin,SW_HIDE);
  3828. LoadRegSettingStr("ScriptGen","Trainer");
  3829. if (!*GreatBuffer)strcpy(GreatBuffer,"0xF");
  3830. GetInput(GetString1(3062),GetString2(3063),GreatBuffer);
  3831. while (inputrunning) {
  3832. Sleep(0);
  3833. }
  3834. if (!cancelled)
  3835. {
  3836. SaveRegSettingStr("ScriptGen","Trainer",GreatBuffer);
  3837. sprintf(MegaBuffer,"#dyn 0x740000\n#org @begin\ntrainerbattle 0x0 %s 0x0 @intro @defeat\nmsgbox @afterwards\ncallstd msg_normal\nend\n#org @intro\n= I will crush you!!!\n\n#org @defeat\n= You crushed me[.]\n\n#org @afterwards\n= I can also say something after the battle\n",
  3838. GreatBuffer);
  3839. SendEditor(SCI_CANCEL,0,0);
  3840. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3841. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3842. SendEditor(SCI_CLEARALL,0,0);
  3843. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3844. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3845. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3846. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3847. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3848. SendEditor(SCI_SETSAVEPOINT,0,0);
  3849. SendEditor(SCI_GOTOPOS,0,0);
  3850. SendEditor(SCI_CHOOSECARETX,0,0);
  3851. SetForegroundWindow(MainWnd);
  3852. SetFocus(Text);
  3853. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3854. SendEditor(SCI_SETSEL,0,0);
  3855. }
  3856. EnableWindow(MainWnd,1);
  3857. SetForegroundWindow(MainWnd);
  3858. SetFocus(Text);
  3859. return 0;
  3860. }
  3861.  
  3862. void FillAttacks(HWND hwndList)
  3863. {
  3864. int i;
  3865. char *pVarName[] = {"POUND","KARATECHOP","DOUBLESLAP",
  3866. "COMETPUNCH","MEGAPUNCH","PAYDAY","FIREPUNCH","ICEPUNCH",
  3867. "THUNDERPUNCH","SCRATCH","VICEGRIP","GUILLOTINE","RAZORWIND",
  3868. "SWORDSDANCE","CUT","GUST","WINGATTACK","WHIRLWIND",
  3869. "FLY","BIND","SLAM","VINEWHIP","STOMP","DOUBLEKICK",
  3870. "MEGAKICK","JUMPKICK","ROLLINGKICK","SANDATTACK","HEADBUTT",
  3871. "HORNATTACK","FURYATTACK","HORNDRILL","TACKLE","BODYSLAM",
  3872. "WRAP","TAKEDOWN","THRASH","DOUBLEEDGE","TAILWHIP","POISONSTING",
  3873. "TWINEEDLE","PINMISSLE","LEER","BITE","GROWL","ROAR",
  3874. "SING","SUPERSONIC","SONICBOOM","DISABLE","ACID","EMBER",
  3875. "FLAMETHROWER","MIST","WATERGUN","HYDROPUMP","SURF","ICEBEAM",
  3876. "BLIZZARD","PSYBEAM","BUBBLEBEAM","AURORABEAM","HYPERBEAM","PECK",
  3877. "DRILLPECK","SUBMISSION","LOWKICK","COUNTER","SEISMICTOSS","STRENGTH",
  3878. "ABSORB","MEGADRAIN","LEECHSEED","GROWTH","RAZORLEAF","SOLARBEAM",
  3879. "POISONPOWDER","STUNSPORE","SLEEPPOWDER","PETALDANCE","STRINGSHOT",
  3880. "DRAGONRAGE","FIRESPIN","THUNDERSHOCK","THUNDERBOLT","THUNDERWAVE",
  3881. "THUNDER","ROCKTHROW","EARTHQUAKE","FISSURE","DIG","TOXIC",
  3882. "CONFUSION","PSYCHIC","HYPNOSIS","MEDITATE","AGILITY","QUICKATTACK",
  3883. "RAGE","TELEPORT","NIGHTSHADE","MIMIC","SCREECH","DOUBLETEAM",
  3884. "RECOVER","HARDEN","MINIMIZE","SMOKESCREEN","CONFUSERAY","WITHDRAW",
  3885. "DEFENSECURL","BARRIER","LIGHTSCREEN","HAZE","REFLECT","FOCUSENERGY",
  3886. "BIDE","METRONOME","MIRRORMOVE","SELFDESTRUCT","EGGBOMB","LICK",
  3887. "SMOG","SLUDGE","BONECLUB","FIREBLAST","WATERFALL","CLAMP",
  3888. "SWIFT","SKULLBASH","SPIKECANNON","CONSTRICT","AMNESIA","KINESIS",
  3889. "SOFTBOILED","HIJUMPKICK","GLARE","DREAMEATER","POISONGAS","BARRAGE",
  3890. "LEECHLIFE","LOVELYKISS","SKYATTACK","TRANSFORM","BUBBLE","DIZZYPUNCH",
  3891. "SPORE","FLASH","PSYWAVE","SPLASH","ACIDARMOR","CRABHAMMER",
  3892. "EXPLOSION","FURYSWIPES","BONEMERANG","REST","ROCKSLIDE","HYPERFANG",
  3893. "SHARPEN","CONVERSION","TRIATTACK","SUPERFANG","SLASH","SUBSTITUTE",
  3894. "STRUGGLE","SKETCH","TRIPLEKICK","THIEF","SPIDERWEB","MINDREADER",
  3895. "NIGHTMARE","FLAMEWHEEL","SNORE","CURSE","FLAIL","CONVERSION2","AEROBLAST",
  3896. "COTTONSPORE","REVERSAL","SPITE","POWDERSNOW","PROTECT",
  3897. "MACHPUNCH","SCARYFACE","FAINTATTACK","SWEETKISS","BELLYDRUM",
  3898. "SLUDGEBOMB","MUDSLAP","OCTAZOOKA","SPIKES","ZAPCANNON","FORESIGHT",
  3899. "DESTINYBOND","PERISHSONG","ICYWIND","DETECT","BONERUSH","LOCKON",
  3900. "OUTRAGE","SANDSTORM","GIGADRAIN","ENDURE","CHARM","ROLLOUT",
  3901. "FALSESWIPE","SWAGGER","MILKDRINK","SPARK","FURYCUTTER","STEELWING",
  3902. "MEANLOOK","ATTRACT","SLEEPTALK","HEALBELL","RETURN","PRESENT",
  3903. "FRUSTRATION","SAFEGUARD","PAINSPLIT","SACREDFIRE","MAGNITUTDE","DYNAMICPUNCH",
  3904. "MEGAHORN","DRAGONBREATH","BATONPASS","ENCORE","PURSUIT","RAPIDSPIN",
  3905. "SWEETSCENT","IRONTAIL","METALCLAW","VITALTHROW","MORNINGSUN","SYNTHESIS",
  3906. "MOONLIGHT","HIDDENPOWER","CROSSCHOP","TWISTER","RAINDANCE","SUNNYDAY",
  3907. "CRUNCH","MIRRORCOAT","PSYCHUP","EXTREMESPEED","ANCIENTPOWER","SHADOWBALL",
  3908. "FUTURESIGHT","ROCKSMASH","WHIRLPOOL","BEATUP","FAKEOUT","UPROAR",
  3909. "STOCKPILE","SPITUP","SWALLOW","HEATWAVE","HAIL","TORMENT",
  3910. "FLATTER","WILLOWISP","MEMENTO","FACADE","FOCUSPUNCH","SMELLINGSALT",
  3911. "FOLLOWME","NATUREPOWER","CHARGE","TAUNT","HELPINGHAND","TRICK",
  3912. "ROLEPLAY","WISH","ASSIST","INGRAIN","SUPERPOWER","MAGICCOAT",
  3913. "RECYCLE","REVENGE","BRICKBREAK","YAWN","KNOCKOFF","ENDEAVOUR",
  3914. "ERUPTION","SKILLSWAP","IMPRISON","REFRESH","GRUDGE","SNATCH",
  3915. "SECRETPOWER","DIVE","ARMTHRUST","CAMOUFLAGE","TAILGLOW","LUSTERPURGE",
  3916. "MISTBALL","FEATHERDANCE","TEETERDANCE","BLAZEKICK","MUDSPORT","ICEBALL",
  3917. "NEEDLEARM","SLACKOFF","HYPERVOICE","POISONFANG","CRUSHCLAW","BLASTBURN",
  3918. "HYDROCANNON","METEORMASH","ASTONISH","WEATHERBALL","AROMATHERAPY","FAKETEARS",
  3919. "AIRCUTTER","OVERHEAT","ODORSLEUTH","ROCKTOMB","SILVERWIND","METALSOUND",
  3920. "GRASSWHISTLE","TICKLE","COSMICPOWER","WATERSPOUT","SIGNALBEAM","SHADOWPUNCH",
  3921. "EXTRASENSORY","SKYUPPERCUT","SANDTOMB","SHEERCOLD","MUDDYWATER",
  3922. "BULLETSEED","AERIALACE","ICICLESPEAR","IRONDEFENSE","BLOCK","HOWL",
  3923. "DRAGONCLAW","FRENZYPLANT","BULKUP","BOUNCE","MUDSHOT","POISONTAIL",
  3924. "COVET","VOLTTACKLE","MAGICALLEAF","WATERSPORT","CALMMIND","LEAFBLADE",
  3925. "DRAGONDANCE","ROCKBLAST","SHOCKWAVE","WATERPULSE","DOOMDESIRE",
  3926. "PSYCHOBOOST"
  3927. };
  3928. SendMessage(hwndList, CB_RESETCONTENT, 0, 0);
  3929. for (i=0; i<sizeof(pVarName)/sizeof(char*); i++)
  3930. SendMessage(hwndList, CB_ADDSTRING, 0, (LPARAM)pVarName[i]);
  3931.  
  3932. }
  3933.  
  3934.  
  3935.  
  3936. DWORD WINAPI HMMoveScript(LPVOID x)
  3937. {
  3938. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3939. ShowWindow(GenWin,SW_HIDE);
  3940. LoadRegSettingStr("ScriptGen","Attack");
  3941. if (!*GreatBuffer)strcpy(GreatBuffer,"CUT");
  3942. GetInput2(GetString1(3065),GetString2(3064),GreatBuffer,FillAttacks);
  3943. while (inputrunning) {
  3944. Sleep(0);
  3945. }
  3946. if (!cancelled)
  3947. {
  3948. SaveRegSettingStr("ScriptGen","Attack",GreatBuffer);
  3949. sprintf(MegaBuffer,"' Also used as a demonstration of the new dynamic offsets:\n\n#dyn 0x740000\n#org @start\nspecial 0x187\ncompare LASTRESULT 2\nif == jump 0x81A7AE0\nlockall\ncheckattack %s\ncompare LASTRESULT 6\nif == jump @donthave\nsetanimation 0 LASTRESULT\nstorepokemonvar 0 LASTRESULT\nstoreattack 1 %s\nmsgbox @doit\ncallstd MSG_YESNO\ncompare LASTRESULT 0\nif == jump 0x81BDF91\nmsgbox 0x81BDFD7\ncallstd MSG_NOCLOSE\nclosemsg\ndoanimation 2\nwaitspecial\n' -------------------\n' Enter the code here for what happens when the attack is used\n\n\n' -------------------\nreleaseall\nend\n\n#org @donthave\nmsgbox @donthavemsg\ncallstd 0x3\nreleaseall\nend\n\n#org @doit\n= Do you want to use that attack%cnon this[.] thing? Replace this message with something else. Please.\n\n#org @donthavemsg\n= You don't have the correct attack. Also replace this message.\n",
  3950. GreatBuffer,GreatBuffer,'\\');
  3951. SendEditor(SCI_CANCEL,0,0);
  3952. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  3953. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  3954. SendEditor(SCI_CLEARALL,0,0);
  3955. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  3956. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  3957. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  3958. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  3959. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  3960. SendEditor(SCI_SETSAVEPOINT,0,0);
  3961. SendEditor(SCI_GOTOPOS,0,0);
  3962. SendEditor(SCI_CHOOSECARETX,0,0);
  3963. SetForegroundWindow(MainWnd);
  3964. SetFocus(Text);
  3965. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  3966. SendEditor(SCI_SETSEL,0,0);
  3967. }
  3968. EnableWindow(MainWnd,1);
  3969. SetForegroundWindow(MainWnd);
  3970. SetFocus(Text);
  3971. return 0;
  3972. }
  3973.  
  3974. DWORD WINAPI ItemCraftScript(LPVOID x)
  3975. {
  3976. char*buf1,*buf2,*buf3;
  3977. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  3978. ShowWindow(GenWin,SW_HIDE);
  3979. LoadRegSettingStr("ScriptGen","ToolItem");
  3980. if (!*GreatBuffer)strcpy(GreatBuffer,"STARPIECE");
  3981. GetInput2(GetString1(3072),GetString2(3073),GreatBuffer,FillItems);
  3982. while (inputrunning) {
  3983. Sleep(0);
  3984. }
  3985. if (!cancelled)
  3986. {
  3987. SaveRegSettingStr("ScriptGen","ToolItem",GreatBuffer);
  3988. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3989. LoadRegSettingStr("ScriptGen","Item");
  3990. if (!*GreatBuffer)strcpy(GreatBuffer,"NUGGET");
  3991. GetInput2(GetString1(3072),GetString2(3074),GreatBuffer,FillItems);
  3992. while (inputrunning) {
  3993. Sleep(0);
  3994. }
  3995. if (!cancelled)
  3996. {
  3997. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  3998. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  3999. LoadRegSettingStr("ScriptGen","ItemAmt");
  4000. if (!*GreatBuffer)strcpy(GreatBuffer,"1");
  4001. GetInput(GetString1(3072),GetString2(3075),GreatBuffer);
  4002. while (inputrunning) {
  4003. Sleep(0);
  4004. }
  4005. if (!cancelled)
  4006. {
  4007. SaveRegSettingStr("ScriptGen","ItemAmt",GreatBuffer);
  4008. strcpy(buf3=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4009. LoadRegSettingStr("ScriptGen","ItemOutput");
  4010. if (!*GreatBuffer)strcpy(GreatBuffer,"MASTERBALL");
  4011. GetInput(GetString1(3072),GetString2(3076),GreatBuffer);
  4012. while (inputrunning) {
  4013. Sleep(0);
  4014. }
  4015. if (!cancelled)
  4016. {
  4017. SaveRegSettingStr("ScriptGen","ItemOutput",GreatBuffer);
  4018. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlock\nstoreitem 0 %s\nstoreitem 1 %s\ncheckitem %s 1\ncompare LASTRESULT 0\nif == jump @donthave\ncheckitem %s %s\ncompare LASTRESULT 0\nif == jump @donthave\nmsgbox @msg-have\ncallstd MSG_YESNO\ncompare LASTRESULT NO\nif == jump :end\nremoveitem %s %s\nadditem %s 1\nmsgbox @finished\ncallstd MSG_NOCLOSE\n:end\nrelease\nend\n\n#org @donthave\nmsgbox @msg-donthave\ncallstd MSG_NOCLOSE\nstoreitem 0 %s\nmsgbox @msg-donthave2\ncallstd MSG_NOCLOSE\nrelease\nend\n\n#org @msg-donthave\n= You can craft \\v\\h02s here.\n\n#org @msg-donthave2\n= You will need a \\v\\h02,\\nand %s \\v\\h03s.\n\n#org @msg-have\n= Do you want to craft one \\v\\h02\\nwith %s \\v\\h03s?\n\n#org @finished\n= Done! You used %s \\v\\h03s\\nto create a \\v\\h02!\n",
  4019. GreatBuffer,buf2,buf1,buf2,buf3,buf2,buf3,GreatBuffer,buf1,buf3,buf3,buf3);
  4020. SendEditor(SCI_CANCEL,0,0);
  4021. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4022. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4023. SendEditor(SCI_CLEARALL,0,0);
  4024. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4025. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4026. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4027. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4028. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4029. SendEditor(SCI_SETSAVEPOINT,0,0);
  4030. SendEditor(SCI_GOTOPOS,0,0);
  4031. SendEditor(SCI_CHOOSECARETX,0,0);
  4032. SetForegroundWindow(MainWnd);
  4033. SetFocus(Text);
  4034. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4035. SendEditor(SCI_SETSEL,0,0);
  4036. }
  4037. }
  4038. }
  4039. }
  4040. EnableWindow(MainWnd,1);
  4041. SetForegroundWindow(MainWnd);
  4042. SetFocus(Text);
  4043. return 0;
  4044. }
  4045.  
  4046. DWORD WINAPI QuickStarterScript(LPVOID x)
  4047. {
  4048. char *buf1,*buf2,*buf3,*buf4,*buf5,*buf6,*buf7;
  4049. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4050. ShowWindow(GenWin,SW_HIDE);
  4051. LoadRegSettingStr("ScriptGen","Pokemon");
  4052. if (!*GreatBuffer)strcpy(GreatBuffer,"EKANS");
  4053. GetInput2(GetString1(3077),GetString2(3078),GreatBuffer,FillPokemon);
  4054. while (inputrunning) {
  4055. Sleep(0);
  4056. }
  4057. if (!cancelled)
  4058. {
  4059. SaveRegSettingStr("ScriptGen","Pokemon",GreatBuffer);
  4060. strcpy(buf5=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4061. LoadRegSettingStr("ScriptGen","HoldItem");
  4062. if (!*GreatBuffer)strcpy(GreatBuffer,"SITRUSBERRY");
  4063. GetInput2(GetString1(3077),GetString2(3080),GreatBuffer,FillItems);
  4064. while (inputrunning) {
  4065. Sleep(0);
  4066. }
  4067. if (!cancelled)
  4068. {
  4069. SaveRegSettingStr("ScriptGen","HoldItem",GreatBuffer);
  4070. strcpy(buf3=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4071. LoadRegSettingStr("ScriptGen","Level");
  4072. if (!*GreatBuffer)strcpy(GreatBuffer,"5");
  4073. GetInput(GetString1(3077),GetString2(3079),GreatBuffer);
  4074. while (inputrunning) {
  4075. Sleep(0);
  4076. }
  4077. if (!cancelled)
  4078. {
  4079. SaveRegSettingStr("ScriptGen","Level",GreatBuffer);
  4080. strcpy(buf4=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4081. LoadRegSettingStr("ScriptGen","TM");
  4082. if (!*GreatBuffer)strcpy(GreatBuffer,"TM40");
  4083. GetInput2(GetString1(3077),GetString2(3081),GreatBuffer,FillItems);
  4084. while (inputrunning) {
  4085. Sleep(0);
  4086. }
  4087. if (!cancelled)
  4088. {
  4089. SaveRegSettingStr("ScriptGen","TM",GreatBuffer);
  4090. strcpy(buf6=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4091. LoadRegSettingStr("ScriptGen","Item");
  4092. if (!*GreatBuffer)strcpy(GreatBuffer,"POKEBALL");
  4093. GetInput2(GetString1(3077),GetString2(3082),GreatBuffer,FillItems);
  4094. while (inputrunning) {
  4095. Sleep(0);
  4096. }
  4097. if (!cancelled)
  4098. {
  4099. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  4100. strcpy(buf7=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4101. LoadRegSettingStr("ScriptGen","ItemAmt");
  4102. if (!*GreatBuffer)strcpy(GreatBuffer,"3");
  4103. GetInput(GetString1(3077),GetString2(3083),GreatBuffer);
  4104. while (inputrunning) {
  4105. Sleep(0);
  4106. }
  4107. if (!cancelled)
  4108. {
  4109. SaveRegSettingStr("ScriptGen","ItemAmt",GreatBuffer);
  4110. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4111. LoadRegSettingStr("ScriptGen","Item2");
  4112. if (!*GreatBuffer)strcpy(GreatBuffer,"POTION");
  4113. GetInput2(GetString1(3077),GetString2(3084),GreatBuffer,FillItems);
  4114. while (inputrunning) {
  4115. Sleep(0);
  4116. }
  4117. if (!cancelled)
  4118. {
  4119. SaveRegSettingStr("ScriptGen","Item2",GreatBuffer);
  4120. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4121. LoadRegSettingStr("ScriptGen","Item2Amt");
  4122. if (!*GreatBuffer)strcpy(GreatBuffer,"3");
  4123. GetInput(GetString1(3077),GetString2(3083),GreatBuffer);
  4124. while (inputrunning) {
  4125. Sleep(0);
  4126. }
  4127. if (!cancelled)
  4128. {
  4129. SaveRegSettingStr("ScriptGen","Item2Amt",GreatBuffer);
  4130. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\ncheckflag FR_POKEMON\nif true jump :end\naddpokemon %s %s %s 0 0 0\nsetflag FR_POKEDEX\nsetflag FR_POKEMON\nspecial FR_NATIONAL_DEX\nsethealingplace 1\nsetflag FR_RUNNING_SHOES\nadditem %s 1\nadditem %s %s\nadditem %s %s\n:end\nend\n",
  4131. buf5,buf4,buf3,buf6,buf7,buf1,buf2,GreatBuffer);
  4132. SendEditor(SCI_CANCEL,0,0);
  4133. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4134. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4135. SendEditor(SCI_CLEARALL,0,0);
  4136. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4137. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4138. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4139. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4140. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4141. SendEditor(SCI_SETSAVEPOINT,0,0);
  4142. SendEditor(SCI_GOTOPOS,0,0);
  4143. SendEditor(SCI_CHOOSECARETX,0,0);
  4144. SetForegroundWindow(MainWnd);
  4145. SetFocus(Text);
  4146. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4147. SendEditor(SCI_SETSEL,0,0);
  4148. }
  4149. }
  4150. }
  4151. }
  4152. }
  4153. }
  4154. }
  4155. }
  4156. EnableWindow(MainWnd,1);
  4157. SetForegroundWindow(MainWnd);
  4158. SetFocus(Text);
  4159. return 0;
  4160. }
  4161.  
  4162. DWORD WINAPI RockBlockScript(LPVOID x)
  4163. {
  4164. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4165. ShowWindow(GenWin,SW_HIDE);
  4166. LoadRegSettingStr("ScriptGen","Item");
  4167. if (!*GreatBuffer)strcpy(GreatBuffer,"CLEANSETAG");
  4168. GetInput2(GetString1(3087),GetString2(3074),GreatBuffer,FillItems);
  4169. while (inputrunning) {
  4170. Sleep(0);
  4171. }
  4172. if (!cancelled)
  4173. {
  4174. SaveRegSettingStr("ScriptGen","Item",GreatBuffer);
  4175. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\n'-----------------------------------\nspecial 0x187\ncompare LASTRESULT 2\nif == jump :end\nlockall\nstoreitem 0 %s\ncheckitem %s 1\ncompare LASTRESULT 0\nif == jump @donthave ' Smaller Than\nmsgbox @havemsg ' This rock appears to...\ncallstd MSG_YESNO ' Yes/No message\ncompare LASTRESULT 0\nif == jump :end\nremoveitem %s 1\nmsgbox @IusedThis ' \\v\\h02 used \\v\\h03!\ncallstd MSG_NOCLOSE ' Non-closing message\napplymovement LASTTALKED @move ' rock_animate end\npauseevent 0\ndisappear LASTTALKED\n:end\nreleaseall\nend\n\n#org @donthave\n'-----------------------------------\nmsgbox @donthavemsg ' It's a cursed rock, ...\ncallstd MSG_SIGN\nend\n\n\n\n#org @havemsg\n= This rock appears to be breakable.\\nWould you like to use a \\v\\h02?\n\n#org @IusedThis\n= \\v\\h01 used the \\v\\h02!\n\n#org @donthavemsg\n= It's a cursed rock, but a \\v\\h02\\nmay be able to smash it.\n\n#org @move\nM rock_animate end\n",
  4176. GreatBuffer,GreatBuffer,GreatBuffer);
  4177. SendEditor(SCI_CANCEL,0,0);
  4178. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4179. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4180. SendEditor(SCI_CLEARALL,0,0);
  4181. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4182. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4183. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4184. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4185. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4186. SendEditor(SCI_SETSAVEPOINT,0,0);
  4187. SendEditor(SCI_GOTOPOS,0,0);
  4188. SendEditor(SCI_CHOOSECARETX,0,0);
  4189. SetForegroundWindow(MainWnd);
  4190. SetFocus(Text);
  4191. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4192. SendEditor(SCI_SETSEL,0,0);
  4193. }
  4194. EnableWindow(MainWnd,1);
  4195. SetForegroundWindow(MainWnd);
  4196. SetFocus(Text);
  4197. return 0;
  4198. }
  4199.  
  4200. DWORD WINAPI MoveTutorScript(LPVOID x)
  4201. {
  4202. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4203. ShowWindow(GenWin,SW_HIDE);
  4204. LoadRegSettingStr("ScriptGen","MTID");
  4205. if (!*GreatBuffer)strcpy(GreatBuffer,"1");
  4206. GetInput(GetString1(3093),GetString2(3094),GreatBuffer);
  4207. while (inputrunning) {
  4208. Sleep(0);
  4209. }
  4210. if (!cancelled)
  4211. {
  4212. SaveRegSettingStr("ScriptGen","MTID",GreatBuffer);
  4213. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\n'-----------------------------------\nlock\nfaceplayer\nsetvar 0x8005 %s\nspecial TEACH_ATTACK\nwaitspecial\nlock\nfaceplayer\nrelease\nend\n",
  4214. GreatBuffer);
  4215. SendEditor(SCI_CANCEL,0,0);
  4216. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4217. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4218. SendEditor(SCI_CLEARALL,0,0);
  4219. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4220. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4221. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4222. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4223. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4224. SendEditor(SCI_SETSAVEPOINT,0,0);
  4225. SendEditor(SCI_GOTOPOS,0,0);
  4226. SendEditor(SCI_CHOOSECARETX,0,0);
  4227. SetForegroundWindow(MainWnd);
  4228. SetFocus(Text);
  4229. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4230. SendEditor(SCI_SETSEL,0,0);
  4231. }
  4232. EnableWindow(MainWnd,1);
  4233. SetForegroundWindow(MainWnd);
  4234. SetFocus(Text);
  4235. return 0;
  4236. }
  4237.  
  4238. DWORD WINAPI FlagSkeleton1Script(LPVOID x)
  4239. {
  4240. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4241. ShowWindow(GenWin,SW_HIDE);
  4242. LoadRegSettingStr("ScriptGen","Flag");
  4243. if (!*GreatBuffer)strcpy(GreatBuffer,"0x200");
  4244. GetInput(GetString1(3100),GetString2(3046),GreatBuffer);
  4245. while (inputrunning) {
  4246. Sleep(0);
  4247. }
  4248. if (!cancelled)
  4249. {
  4250. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  4251. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlock\nfaceplayer\ncheckflag %s\nif true jump @flag-2\n\n//Flag has not been activated\nmsgbox @flag-1-msg\ncallstd MSG_NOCLOSE\n\n\nsetflag %s\nrelease\nend\n\n#org @flag-2\n\n//Flag has been activated:\nmsgbox @flag-2-msg\ncallstd MSG_NOCLOSE\n\n\nrelease\nend\n\n#org @flag-1-msg\n= Hello, I'm Jekyll.\n\n#org @flag-2-msg\n= Hi, I'm Hyde!\n",
  4252. GreatBuffer,GreatBuffer);
  4253. SendEditor(SCI_CANCEL,0,0);
  4254. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4255. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4256. SendEditor(SCI_CLEARALL,0,0);
  4257. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4258. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4259. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4260. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4261. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4262. SendEditor(SCI_SETSAVEPOINT,0,0);
  4263. SendEditor(SCI_GOTOPOS,0,0);
  4264. SendEditor(SCI_CHOOSECARETX,0,0);
  4265. SetForegroundWindow(MainWnd);
  4266. SetFocus(Text);
  4267. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4268. SendEditor(SCI_SETSEL,0,0);
  4269. }
  4270. EnableWindow(MainWnd,1);
  4271. SetForegroundWindow(MainWnd);
  4272. SetFocus(Text);
  4273. return 0;
  4274. }
  4275.  
  4276. DWORD WINAPI FlagSkeleton2Script(LPVOID x)
  4277. {
  4278. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4279. ShowWindow(GenWin,SW_HIDE);
  4280. LoadRegSettingStr("ScriptGen","Flag");
  4281. if (!*GreatBuffer)strcpy(GreatBuffer,"0x200");
  4282. GetInput(GetString1(3100),GetString2(3046),GreatBuffer);
  4283. while (inputrunning) {
  4284. Sleep(0);
  4285. }
  4286. if (!cancelled)
  4287. {
  4288. SaveRegSettingStr("ScriptGen","Flag",GreatBuffer);
  4289. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlock\nfaceplayer\ncheckflag %s\nif true jump :flag-2\n\n//Flag has not been activated\nmsgbox @flag-1-msg\ncallstd MSG_NOCLOSE\n\n\nsetflag %s\n:flag-2\n\n//Always executed whether flag is set or not\nmsgbox @flag-2-msg\ncallstd MSG_NOCLOSE\n\n\nrelease\nend\n\n#org @flag-1-msg\n= Hello, I'm Jekyll.\n\n#org @flag-2-msg\n= Well, goodbye.",
  4290. GreatBuffer,GreatBuffer);
  4291. SendEditor(SCI_CANCEL,0,0);
  4292. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4293. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4294. SendEditor(SCI_CLEARALL,0,0);
  4295. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4296. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4297. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4298. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4299. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4300. SendEditor(SCI_SETSAVEPOINT,0,0);
  4301. SendEditor(SCI_GOTOPOS,0,0);
  4302. SendEditor(SCI_CHOOSECARETX,0,0);
  4303. SetForegroundWindow(MainWnd);
  4304. SetFocus(Text);
  4305. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4306. SendEditor(SCI_SETSEL,0,0);
  4307. }
  4308. EnableWindow(MainWnd,1);
  4309. SetForegroundWindow(MainWnd);
  4310. SetFocus(Text);
  4311. return 0;
  4312. }
  4313.  
  4314. DWORD WINAPI EarthquakeScript(LPVOID x)
  4315. {
  4316. char*buf1,*buf2;
  4317. AttachThreadInput(GetCurrentThreadId(),maintid,1);
  4318. ShowWindow(GenWin,SW_HIDE);
  4319. LoadRegSettingStr("ScriptGen","XEarthquake");
  4320. if (!*GreatBuffer)strcpy(GreatBuffer,"12");
  4321. GetInput(GetString1(3101),GetString2(3102),GreatBuffer);
  4322. while (inputrunning) {
  4323. Sleep(0);
  4324. }
  4325. if (!cancelled)
  4326. {
  4327. SaveRegSettingStr("ScriptGen","XEarthquake",GreatBuffer);
  4328. strcpy(buf1=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4329. LoadRegSettingStr("ScriptGen","YEarthquake");
  4330. if (!*GreatBuffer)strcpy(GreatBuffer,"12");
  4331. GetInput(GetString1(3101),GetString2(3103),GreatBuffer);
  4332. while (inputrunning) {
  4333. Sleep(0);
  4334. }
  4335. if (!cancelled)
  4336. {
  4337. SaveRegSettingStr("ScriptGen","YEarthquake",GreatBuffer);
  4338. strcpy(buf2=alloca(strlen(GreatBuffer)+1),GreatBuffer);
  4339. LoadRegSettingStr("ScriptGen","DEarthquake");
  4340. if (!*GreatBuffer)strcpy(GreatBuffer,"3");
  4341. GetInput(GetString1(3101),GetString2(3104),GreatBuffer);
  4342. while (inputrunning) {
  4343. Sleep(0);
  4344. }
  4345. if (!cancelled)
  4346. {
  4347. SaveRegSettingStr("ScriptGen","DEarthquake",GreatBuffer);
  4348. sprintf(MegaBuffer,"#dyn 0x740000\n#org @start\nlockall\nsetvar 0x8004 0x3\nsetvar 0x8005 %s\nsetvar 0x8006 %s\nsetvar 0x8007 %s\nspecial 0x136\nwaitspecial\nreleaseall\nend\n",
  4349. buf1,buf2,GreatBuffer);
  4350. SendEditor(SCI_CANCEL,0,0);
  4351. SendEditor(SCI_SETUNDOCOLLECTION,0,0);
  4352. SendEditor(SCI_EMPTYUNDOBUFFER,0,0);
  4353. SendEditor(SCI_CLEARALL,0,0);
  4354. SendEditor(SCI_MARKERDELETEALL,(WPARAM)-1,0);
  4355. SendEditor(SCI_SETSCROLLWIDTH,2048,0);
  4356. SendEditor(SCI_ADDTEXT,strlen(MegaBuffer),(LPARAM)MegaBuffer);
  4357. SendEditor(SCI_SETUNDOCOLLECTION,1,0);
  4358. SendEditor(EM_EMPTYUNDOBUFFER,0,0);
  4359. SendEditor(SCI_SETSAVEPOINT,0,0);
  4360. SendEditor(SCI_GOTOPOS,0,0);
  4361. SendEditor(SCI_CHOOSECARETX,0,0);
  4362. SetForegroundWindow(MainWnd);
  4363. SetFocus(Text);
  4364. SendEditor(SCI_COLOURISE,0,(LPARAM)-1);
  4365. SendEditor(SCI_SETSEL,0,0);
  4366. }
  4367. }
  4368. }
  4369. EnableWindow(MainWnd,1);
  4370. SetForegroundWindow(MainWnd);
  4371. SetFocus(Text);
  4372. return 0;
  4373. }
  4374.  
  4375. BOOL CALLBACK GenFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  4376. {
  4377. DWORD tid;
  4378. switch (msg)
  4379. {
  4380. case WM_COMMAND:
  4381. switch (LOWORD(wParam))
  4382. {
  4383. case 0x2:
  4384. CreateThread(NULL,0,FindItemScript,(LPVOID)0,0,&tid);
  4385. break;
  4386. case 0x3:
  4387. CreateThread(NULL,0,GiveItemScript,(LPVOID)0,0,&tid);
  4388. break;
  4389. case 0x4:
  4390. CreateThread(NULL,0,GivePokeScript,(LPVOID)0,0,&tid);
  4391. break;
  4392. case 0x7:
  4393. CreateThread(NULL,0,RoadClosedScript,(LPVOID)0,0,&tid);
  4394. break;
  4395. case 0x8:
  4396. CreateThread(NULL,0,HealScript,(LPVOID)0,0,&tid);
  4397. break;
  4398. case 0x9:
  4399. CreateThread(NULL,0,BattleScript,(LPVOID)0,0,&tid);
  4400. break;
  4401. case 0xA:
  4402. CreateThread(NULL,0,TalkScript,(LPVOID)0,0,&tid);
  4403. break;
  4404. case 0xB:
  4405. CreateThread(NULL,0,TrainerBattleScript,(LPVOID)0,0,&tid);
  4406. break;
  4407. case 0xC:
  4408. CreateThread(NULL,0,HMMoveScript,(LPVOID)0,0,&tid);
  4409. break;
  4410. case 0xD:
  4411. CreateThread(NULL,0,ItemCraftScript,(LPVOID)0,0,&tid);
  4412. break;
  4413. case 0xE:
  4414. CreateThread(NULL,0,QuickStarterScript,(LPVOID)0,0,&tid);
  4415. break;
  4416. case 0xF:
  4417. CreateThread(NULL,0,RockBlockScript,(LPVOID)0,0,&tid);
  4418. break;
  4419. case 0x10:
  4420. CreateThread(NULL,0,MoveTutorScript,(LPVOID)0,0,&tid);
  4421. break;
  4422. case 0x11:
  4423. CreateThread(NULL,0,FlagSkeleton1Script,(LPVOID)0,0,&tid);
  4424. break;
  4425. case 0x12:
  4426. CreateThread(NULL,0,FlagSkeleton2Script,(LPVOID)0,0,&tid);
  4427. break;
  4428. case 0x13:
  4429. CreateThread(NULL,0,EarthquakeScript,(LPVOID)0,0,&tid);
  4430. break;
  4431. case 0x5:
  4432. ShellExecute(GenWin,NULL,"mailto:seejay.11@gmail.com?subject=PKSVUI&body=Hi,%20I%20Would%20like...",NULL,NULL,SW_SHOWDEFAULT);
  4433. break;
  4434. case 0x6:
  4435. ShellExecute(GenWin,NULL,"http://www.pokecommunity.com/private.php?do=newpm&u=15354",NULL,NULL,SW_SHOWDEFAULT);
  4436. break;
  4437. case 0x1:
  4438. case 2000:
  4439. ShowWindow(GenWin,SW_HIDE);
  4440. EnableWindow(MainWnd,1);
  4441. SetForegroundWindow(MainWnd);
  4442. SetFocus(Text);
  4443. break;
  4444. }
  4445. break;
  4446. case WM_CLOSE:
  4447. ShowWindow(GenWin,SW_HIDE);
  4448. EnableWindow(MainWnd,1);
  4449. SetForegroundWindow(MainWnd);
  4450. SetFocus(Text);
  4451. break;
  4452. default:
  4453. return 0;
  4454. }
  4455. return 1;
  4456. }
  4457.  
  4458. BOOL CALLBACK Input2Func(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  4459. {
  4460. switch (msg)
  4461. {
  4462. case WM_COMMAND:
  4463. cancelled=1;
  4464. switch (LOWORD(wParam))
  4465. {
  4466. case 0x1:
  4467. cancelled=0;
  4468. GetDlgItemText(Input2Win,4,GreatBuffer,sizeof(GreatBuffer));
  4469. case 0x2:
  4470. case 2000:
  4471. inputrunning=0;
  4472. ShowWindow(Input2Win,SW_HIDE);
  4473. break;
  4474. }
  4475. break;
  4476. case WM_CLOSE:
  4477. cancelled=1;
  4478. inputrunning=0;
  4479. ShowWindow(Input2Win,SW_HIDE);
  4480. break;
  4481. default:
  4482. return 0;
  4483. }
  4484. return 1;
  4485. }
  4486.  
  4487. BOOL CALLBACK InputFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  4488. {
  4489. switch (msg)
  4490. {
  4491. case WM_COMMAND:
  4492. cancelled=1;
  4493. switch (LOWORD(wParam))
  4494. {
  4495. case 0x5:
  4496. MainWndProc(0,WM_COMMAND,1103,0);
  4497. break;
  4498. case 0x1:
  4499. cancelled=0;
  4500. GetDlgItemText(InputWin,4,GreatBuffer,sizeof(GreatBuffer));
  4501. case 0x2:
  4502. case 2000:
  4503. inputrunning=0;
  4504. SetForegroundWindow(MainWnd);
  4505. SetFocus(Text);
  4506. ShowWindow(InputWin,SW_HIDE);
  4507. break;
  4508. }
  4509. break;
  4510. case WM_CLOSE:
  4511. cancelled=1;
  4512. inputrunning=0;
  4513. SetForegroundWindow(MainWnd);
  4514. SetFocus(Text);
  4515. ShowWindow(InputWin,SW_HIDE);
  4516. break;
  4517. default:
  4518. return 0;
  4519. }
  4520. return 1;
  4521. }
  4522.  
  4523. BOOL CALLBACK NoteFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  4524. {
  4525. char thestr[10];
  4526. char buffer[20];
  4527. unsigned int j,k,l;
  4528. unsigned int calc;
  4529. GetDlgItemText(NoteWin,2,thestr,9);
  4530. sscanf(thestr,"%X",&calc);
  4531. switch (msg)
  4532. {
  4533. case WM_COMMAND:
  4534. if ((LOWORD(wParam)&0xFFF0)==0x2000)
  4535. {
  4536. if (CalcPressed)
  4537. {
  4538. sprintf(thestr,"%X",(calc*16)+(wParam&0xF));
  4539. SetDlgItemText(NoteWin,2,thestr);
  4540. }
  4541. else
  4542. {
  4543. LastCalc=calc;
  4544. sprintf(thestr,"%X",(wParam&0xF));
  4545. SetDlgItemText(NoteWin,2,thestr);
  4546. CalcPressed=1;
  4547. }
  4548. }
  4549. else
  4550. {
  4551. switch (LOWORD(wParam))
  4552. {
  4553. case 0x2025:
  4554. GetDlgItemText(NoteWin,3,buffer,19);
  4555. sscanf(buffer,"%X",&j);
  4556. GetDlgItemText(NoteWin,4,buffer,19);
  4557. sscanf(buffer,"%X",&k);
  4558. k<<=8;
  4559. l=j|k;
  4560. l=PointerToOffset(l);
  4561. if (l!=-1)
  4562. {
  4563. sprintf(thestr,"%X",l);
  4564. SetDlgItemText(NoteWin,2,thestr);
  4565. } else {
  4566. MessageBox(NULL,GetString1(3060),GetString2(3001),0);
  4567. }
  4568. break;
  4569. case 0x2026:
  4570. l=OffsetToPointer(calc);
  4571. j=l&0xFF;
  4572. k=l>>8;
  4573. if (l!=-1)
  4574. {
  4575. sprintf(thestr,"%X",j);
  4576. sprintf(buffer,"%X",k);
  4577. SetDlgItemText(NoteWin,3,thestr);
  4578. SetDlgItemText(NoteWin,4,buffer);
  4579. } else {
  4580. MessageBox(NULL,GetString1(3061),GetString2(3001),0);
  4581. }
  4582. break;
  4583. case 0x2010:
  4584. if (CalcPressed)
  4585. {
  4586. LastCalcOp=OP_ADIT;
  4587. CalcPressed=0;
  4588. }
  4589. else
  4590. {
  4591. LastCalcOp=OP_ADIT;
  4592. }
  4593. break;
  4594. case 0x2011:
  4595. if (CalcPressed)
  4596. {
  4597. LastCalcOp=OP_SUBT;
  4598. CalcPressed=0;
  4599. }
  4600. else
  4601. {
  4602. LastCalcOp=OP_SUBT;
  4603. }
  4604. break;
  4605. case 0x2012:
  4606. if (CalcPressed)
  4607. {
  4608. LastCalcOp=OP_MULT;
  4609. CalcPressed=0;
  4610. }
  4611. else
  4612. {
  4613. LastCalcOp=OP_MULT;
  4614. }
  4615. break;
  4616. case 0x2013:
  4617. if (CalcPressed)
  4618. {
  4619. LastCalcOp=OP_DIVI;
  4620. CalcPressed=0;
  4621. }
  4622. else
  4623. {
  4624. LastCalcOp=OP_DIVI;
  4625. }
  4626. break;
  4627. case 0x2014:
  4628. sprintf(thestr,"%X",isqrt(calc));
  4629. SetDlgItemText(NoteWin,2,thestr);
  4630. break;
  4631. case 0x2015:
  4632. if (CalcPressed)
  4633. {
  4634. LastCalcOp=OP_POWR;
  4635. CalcPressed=0;
  4636. }
  4637. else
  4638. {
  4639. LastCalcOp=OP_POWR;
  4640. }
  4641. break;
  4642. case 0x201A:
  4643. if (CalcPressed)
  4644. {
  4645. LastCalcOp=OP_MODU;
  4646. CalcPressed=0;
  4647. }
  4648. else
  4649. {
  4650. LastCalcOp=OP_MODU;
  4651. }
  4652. break;
  4653. case 0x201C:
  4654. if (CalcPressed)
  4655. {
  4656. LastCalcOp=OP_BXOR;
  4657. CalcPressed=0;
  4658. }
  4659. else
  4660. {
  4661. LastCalcOp=OP_BXOR;
  4662. }
  4663. break;
  4664. case 0x201D:
  4665. if (CalcPressed)
  4666. {
  4667. LastCalcOp=OP_BWOR;
  4668. CalcPressed=0;
  4669. }
  4670. else
  4671. {
  4672. LastCalcOp=OP_BWOR;
  4673. }
  4674. break;
  4675. case 0x201E:
  4676. if (CalcPressed)
  4677. {
  4678. LastCalcOp=OP_BAND;
  4679. CalcPressed=0;
  4680. }
  4681. else
  4682. {
  4683. LastCalcOp=OP_BAND;
  4684. }
  4685. break;
  4686. case 0x2016:
  4687. sprintf(thestr,"%X",calc<<1);
  4688. SetDlgItemText(NoteWin,2,thestr);
  4689. break;
  4690. case 0x2017:
  4691. sprintf(thestr,"%X",calc>>1);
  4692. SetDlgItemText(NoteWin,2,thestr);
  4693. break;
  4694. case 0x2018:
  4695. #ifdef MSVC
  4696. __asm
  4697. {
  4698. mov eax,calc
  4699. rol eax,1
  4700. mov calc,eax
  4701. }
  4702. #else
  4703. asm(".intel_syntax noprefix\n"
  4704. "mov %0,%1\n"
  4705. "rol %0,1\n"
  4706. ".att_syntax\n":"=r"(calc):"r"(calc));
  4707. sprintf(thestr,"%X",calc);
  4708. #endif
  4709. SetDlgItemText(NoteWin,2,thestr);
  4710. break;
  4711. case 0x2019:
  4712. #ifdef MSVC
  4713. __asm
  4714. {
  4715. mov eax,calc
  4716. ror eax,1
  4717. mov calc,eax
  4718. }
  4719. #else
  4720. asm(".intel_syntax noprefix\n"
  4721. "mov %0,%1\n"
  4722. "ror %0,1\n"
  4723. ".att_syntax\n":"=r"(calc):"r"(calc));
  4724. sprintf(thestr,"%X",calc);
  4725. #endif
  4726. sprintf(thestr,"%X",calc);
  4727. SetDlgItemText(NoteWin,2,thestr);
  4728. break;
  4729. case 0x201B:
  4730. #ifdef MSVC
  4731. __asm
  4732. {
  4733. mov eax,calc
  4734. and eax,0xF
  4735. cmp eax,0xA
  4736. sbb eax,0x69
  4737. das
  4738. and eax,0xFF
  4739. mov calc,eax
  4740. }
  4741. #else
  4742. asm(".intel_syntax noprefix\n"
  4743. "mov %0,%1\n"
  4744. "and %0,0xF\n"
  4745. "cmp %0,0xA\n"
  4746. "sbb %0,0x69\n"
  4747. "das\n"
  4748. "and %0,0xFF\n"
  4749. ".att_syntax\n":"=r"(calc):"r"(calc));
  4750. #endif
  4751. sprintf(thestr,"%X",calc);
  4752. SetDlgItemText(NoteWin,2,thestr);
  4753. break;
  4754. case 0x201F:
  4755. CalcMem+=calc;
  4756. break;
  4757. case 0x2020:
  4758. CalcMem-=calc;
  4759. break;
  4760. case 0x2021:
  4761. sprintf(thestr,"%X",CalcMem);
  4762. SetDlgItemText(NoteWin,2,thestr);
  4763. break;
  4764. case 0x2022:
  4765. CalcMem=0;
  4766. break;
  4767. case 0x2024:
  4768. LastCalcOp=OP_NONE;
  4769. case 0x2023:
  4770. SetDlgItemText(NoteWin,2,"0");
  4771. break;
  4772. case 0x1FFF:
  4773. switch (LastCalcOp)
  4774. {
  4775. case OP_ADIT:
  4776. calc=calc+LastCalc;
  4777. break;
  4778. case OP_SUBT:
  4779. calc=LastCalc-calc;
  4780. break;
  4781. case OP_MULT:
  4782. calc=LastCalc*calc;
  4783. break;
  4784. case OP_DIVI:
  4785. calc=(unsigned int)(LastCalc/calc);
  4786. break;
  4787. case OP_POWR:
  4788. calc=(unsigned int)pow(LastCalc,calc);
  4789. break;
  4790. case OP_BXOR:
  4791. calc=calc^LastCalc;
  4792. break;
  4793. case OP_BWOR:
  4794. calc=calc|LastCalc;
  4795. break;
  4796. case OP_BAND:
  4797. calc=calc&LastCalc;
  4798. break;
  4799. case OP_MODU:
  4800. calc=LastCalc%calc;
  4801. break;
  4802. }
  4803. LastCalcOp=OP_NONE;
  4804. sprintf(thestr,"%X",calc);
  4805. SetDlgItemText(NoteWin,2,thestr);
  4806. break;
  4807. }
  4808. }
  4809. break;
  4810. case WM_CLOSE:
  4811. ShowWindow(NoteWin,SW_HIDE);
  4812. break;
  4813. default:
  4814. return 0;
  4815. }
  4816. return 1;
  4817. }
  4818.  
  4819. BOOL CALLBACK HexFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  4820. {
  4821. char thestr[15];
  4822. unsigned int i;
  4823. switch (msg)
  4824. {
  4825. case WM_COMMAND:
  4826. switch (LOWORD(wParam))
  4827. {
  4828. case 3:
  4829. GetDlgItemText(HexWin,1,thestr,15);
  4830. sscanf(thestr,"%X",&i);
  4831. sprintf(thestr,"%u",i);
  4832. SetDlgItemText(HexWin,2,thestr);
  4833. break;
  4834. case 4:
  4835. GetDlgItemText(HexWin,2,thestr,15);
  4836. sscanf(thestr,"%u",&i);
  4837. sprintf(thestr,"%X",i);
  4838. SetDlgItemText(HexWin,1,thestr);
  4839. break;
  4840. }
  4841. break;
  4842. case WM_CLOSE:
  4843. ShowWindow(HexWin,SW_HIDE);
  4844. break;
  4845. default:
  4846. return 0;
  4847. }
  4848. return 1;
  4849. }
  4850.  
  4851. typedef struct _list
  4852. {
  4853. struct _list*prev;
  4854. struct _list*next;
  4855. unsigned int type;
  4856. char*str;
  4857. } list;
  4858. list*moves=NULL;
  4859. unsigned int currtype=0x10;
  4860. char*txttype="Walk";
  4861.  
  4862. char tbuf[30];
  4863. char*GetMoveName(unsigned int p)
  4864. {
  4865. switch (p)
  4866. {
  4867. case 254:
  4868. return "end";
  4869. case 0x1:
  4870. return "look_up";
  4871. case 0x2:
  4872. return "look_left";
  4873. case 0x3:
  4874. return "look_right";
  4875. case 0x4:
  4876. return "look_down";
  4877. case 0x8:
  4878. return "walk_down_vslow";
  4879. case 0x9:
  4880. return "walk_up_vslow";
  4881. case 0xA:
  4882. return "walk_left_vslow";
  4883. case 0xB:
  4884. return "walk_right_vslow";
  4885. case 0xC:
  4886. return "walk_down_slow";
  4887. case 0xD:
  4888. return "walk_up_slow";
  4889. case 0xE:
  4890. return "walk_left_slow";
  4891. case 0xF:
  4892. return "walk_right_slow";
  4893. case 0x10:
  4894. return "walk_down";
  4895. case 0x11:
  4896. return "walk_up";
  4897. case 0x12:
  4898. return "walk_left";
  4899. case 0x13:
  4900. return "walk_right";
  4901. case 0x14:
  4902. return "jump_down2";
  4903. case 0x15:
  4904. return "jump_up2";
  4905. case 0x16:
  4906. return "jump_left2";
  4907. case 0x17:
  4908. return "jump_right2";
  4909. case 0x1D:
  4910. return "run_down";
  4911. case 0x1E:
  4912. return "run_up";
  4913. case 0x1F:
  4914. return "run_left";
  4915. case 0x20:
  4916. return "run_right";
  4917. case 0x2E:
  4918. return "walk_to_lasttalk";
  4919. case 0x2F:
  4920. return "walk_to_player";
  4921. case 0x46:
  4922. return "look_left_jump_down";
  4923. case 0x47:
  4924. return "look_down_jump_up";
  4925. case 0x48:
  4926. return "look_up_jump_left";
  4927. case 0x49:
  4928. return "look_left_jump_right";
  4929. case 0x4A:
  4930. return "faceplayer";
  4931. case 0x4B:
  4932. return "face_away";
  4933. case 0x4E:
  4934. return "jump_down1";
  4935. case 0x4F:
  4936. return "jump_up1";
  4937. case 0x50:
  4938. return "jump_left1";
  4939. case 0x51:
  4940. return "jump_right1";
  4941. case 0x52:
  4942. return "jump_down";
  4943. case 0x53:
  4944. return "jump_up";
  4945. case 0x54:
  4946. return "jump_left";
  4947. case 0x55:
  4948. return "jump_right";
  4949. case 0x56:
  4950. return "jump_downup";
  4951. case 0x57:
  4952. return "jump_updown";
  4953. case 0x58:
  4954. return "jump_leftright";
  4955. case 0x59:
  4956. return "jump_rightleft";
  4957. case 0x5A:
  4958. return "face_default";
  4959. case 0x60:
  4960. return "hide";
  4961. case 0x62:
  4962. return "say_!";
  4963. case 0x63:
  4964. return "say_?";
  4965. case 0x64:
  4966. return "say_X";
  4967. case 0x65:
  4968. return "say_!!";
  4969. case 0x66:
  4970. return "say_:)";
  4971. case 0x68:
  4972. return "rock_animate";
  4973. case 0x69:
  4974. return "tree_animate";
  4975. default:
  4976. sprintf(tbuf,"raw_%02X",p);
  4977. return tbuf;
  4978. }
  4979. }
  4980.  
  4981. void swap(list*first)
  4982. {
  4983. list*temp=first;
  4984. if (first==NULL||first->next==NULL)return;
  4985. if (first==moves)moves=first->next;
  4986. if (first->prev)
  4987. first->prev->next=first->next;
  4988. first=first->next;
  4989. first->prev=temp->prev;
  4990. if (first->next)
  4991. first->next->prev=temp;
  4992. temp->next=first->next;
  4993. first->next=temp;
  4994. if (first->next)
  4995. first->next->prev=first;
  4996. }
  4997. void SwapItems(unsigned int a,unsigned int b)
  4998. {
  4999. list*c=NULL;
  5000. list*f=moves;
  5001. unsigned int i;
  5002. for (i=0;i<=a&&f;i++) //loop until end of moves, or until the larger of a or b is reached.
  5003. {
  5004. if (i==a)
  5005. c=f;
  5006. f=f->next;
  5007. }
  5008. if (!c||!(c->next))
  5009. return;
  5010. swap(c);
  5011. SendMessage(GetDlgItem(MovePlanWin,13),LB_RESETCONTENT,0,0);
  5012. f=moves;
  5013. while (f)
  5014. {
  5015. SendMessage(GetDlgItem(MovePlanWin,13),LB_ADDSTRING,0,(LPARAM)f->str);
  5016. f=f->next;
  5017. }
  5018. SendMessage(GetDlgItem(MovePlanWin,13),LB_SETCURSEL,b,0);
  5019. return;
  5020. }
  5021. void AddToList(unsigned int a,char*b)
  5022. {
  5023. char z[30];
  5024. list*c;
  5025. list*d;
  5026. unsigned int y;
  5027. strcpy(z,txttype);
  5028. strcat(z," ");
  5029. strcat(z,b);
  5030. y=a+currtype;
  5031. if (y==0)y=4;
  5032. if (moves==NULL)
  5033. {
  5034. moves=malloc(sizeof(list));
  5035. moves->next=NULL;
  5036. moves->prev=NULL;
  5037. moves->type=y;
  5038. moves->str=malloc(strlen(z)+1);
  5039. strcpy(moves->str,z);
  5040. }
  5041. else
  5042. {
  5043. c=moves;
  5044. while (c!=NULL)
  5045. {
  5046. d=c;
  5047. c=c->next;
  5048. }
  5049. d->next=malloc(sizeof(list));
  5050. c=d;
  5051. d=d->next;
  5052. d->next=NULL;
  5053. d->prev=c;
  5054. d->type=y;
  5055. d->str=malloc(strlen(z)+1);
  5056. strcpy(d->str,z);
  5057. }
  5058. SendMessage(GetDlgItem(MovePlanWin,13),LB_ADDSTRING,0,(LPARAM)z);
  5059. }
  5060.  
  5061. BOOL CALLBACK MovePlanFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  5062. {
  5063. unsigned int len,i,j,x,y;
  5064. char*ptr;
  5065. char*ptr2;
  5066. list*c;
  5067. list*d;
  5068. HDC dc,dc2;
  5069. HPEN pen;
  5070. HGDIOBJ temp;
  5071. switch (msg)
  5072. {
  5073. case WM_DRAWITEM:
  5074. if (wParam!=14)
  5075. return 0;
  5076. dc=((LPDRAWITEMSTRUCT)lParam)->hDC;
  5077. dc2=CreateCompatibleDC(dc);
  5078. pen=CreatePen(PS_SOLID,0,RGB(255,255,255));
  5079. temp=SelectObject(dc,pen);
  5080. Rectangle(dc,((LPDRAWITEMSTRUCT)lParam)->rcItem.left,((LPDRAWITEMSTRUCT)lParam)->rcItem.top,((LPDRAWITEMSTRUCT)lParam)->rcItem.right,((LPDRAWITEMSTRUCT)lParam)->rcItem.bottom);
  5081. SelectObject(dc,temp);
  5082. DeleteObject(pen);
  5083. SelectObject(dc2,bmpHero);
  5084. x=(((((LPDRAWITEMSTRUCT)lParam)->rcItem.right)-(((LPDRAWITEMSTRUCT)lParam)->rcItem.left))/2)-8;
  5085. y=(((((LPDRAWITEMSTRUCT)lParam)->rcItem.bottom)-(((LPDRAWITEMSTRUCT)lParam)->rcItem.top))/2)-8;
  5086. i=x&15;
  5087. j=((LPDRAWITEMSTRUCT)lParam)->rcItem.bottom-((LPDRAWITEMSTRUCT)lParam)->rcItem.top;
  5088. pen=CreatePen(PS_SOLID,0,RGB(128,128,128));
  5089. temp=SelectObject(dc,pen);
  5090. while (i<(unsigned int)((LPDRAWITEMSTRUCT)lParam)->rcItem.right)
  5091. {
  5092. Rectangle(dc,i,0,i+1,j);
  5093. i+=16;
  5094. }
  5095. i=y&15;
  5096. j=((LPDRAWITEMSTRUCT)lParam)->rcItem.right-((LPDRAWITEMSTRUCT)lParam)->rcItem.left;
  5097. while (i<(unsigned int)((LPDRAWITEMSTRUCT)lParam)->rcItem.bottom)
  5098. {
  5099. Rectangle(dc,0,i,j,i+1);
  5100. i+=16;
  5101. }
  5102. SelectObject(dc,temp);
  5103. DeleteObject(pen);
  5104. BitBlt(dc,x,y-16,16,32,dc2,16,0,SRCAND);
  5105. BitBlt(dc,x,y-16,16,32,dc2,0,0,SRCPAINT);
  5106. c=moves;
  5107. SelectObject(dc2,bmpArrow);
  5108. while (c)
  5109. {
  5110. i=c->type;
  5111. if (i>=1&&i<=4)
  5112. {
  5113. BitBlt(dc,x+4,y+4,9,9,dc2,(i&3)*9,9,SRCAND);
  5114. BitBlt(dc,x+4,y+4,9,9,dc2,(i&3)*9,0,SRCPAINT);
  5115. }
  5116. else if (i>=0x52&&i<=0x55)
  5117. {
  5118. BitBlt(dc,x+3,y+3,11,11,dc2,((i-2)&3)*11+152,11,SRCAND);
  5119. BitBlt(dc,x+3,y+3,11,11,dc2,((i-2)&3)*11+152,0,SRCPAINT);
  5120. }
  5121. else if (i>=0x4E&&i<=0x51)
  5122. {
  5123. if ((i&3)==2) {
  5124. y+=8;
  5125. }
  5126. else if ((i&3)==3) {
  5127. y-=8;
  5128. }
  5129. else if ((i&3)==0) {
  5130. x-=8;
  5131. }
  5132. else if ((i&3)==1) {
  5133. x+=8;
  5134. }
  5135. BitBlt(dc,x+1,y+1,16,16,dc2,((i-2)&3)*16+120,38,SRCAND);
  5136. BitBlt(dc,x+1,y+1,16,16,dc2,((i-2)&3)*16+120,22,SRCPAINT);
  5137. if ((i&3)==2) {
  5138. y+=8;
  5139. }
  5140. else if ((i&3)==3) {
  5141. y-=8;
  5142. }
  5143. else if ((i&3)==0) {
  5144. x-=8;
  5145. }
  5146. else if ((i&3)==1) {
  5147. x+=8;
  5148. }
  5149. }
  5150. else if (i>=0x14&&i<=0x17)
  5151. {
  5152. if ((i&3)==0) {
  5153. y+=16;
  5154. }
  5155. else if ((i&3)==1) {
  5156. y-=16;
  5157. }
  5158. else if ((i&3)==2) {
  5159. x-=16;
  5160. }
  5161. else if ((i&3)==3) {
  5162. x+=16;
  5163. }
  5164. BitBlt(dc,x-7,y-7,30,30,dc2,(i&3)*30,52,SRCAND);
  5165. BitBlt(dc,x-7,y-7,30,30,dc2,(i&3)*30,22,SRCPAINT);
  5166. if ((i&3)==0) {
  5167. y+=16;
  5168. }
  5169. else if ((i&3)==1) {
  5170. y-=16;
  5171. }
  5172. else if ((i&3)==2) {
  5173. x-=16;
  5174. }
  5175. else if ((i&3)==3) {
  5176. x+=16;
  5177. }
  5178. }
  5179. else if (i>=0x8&&i<=0x13)
  5180. {
  5181. if ((i&3)==0) {
  5182. y+=8;
  5183. }
  5184. else if ((i&3)==1) {
  5185. y-=8;
  5186. }
  5187. else if ((i&3)==2) {
  5188. x-=8;
  5189. }
  5190. else if ((i&3)==3) {
  5191. x+=8;
  5192. }
  5193. if (i<0xC) {
  5194. j=72;
  5195. }
  5196. else if (i<0x10) {
  5197. j=36;
  5198. }
  5199. else {
  5200. j=0;
  5201. }
  5202. BitBlt(dc,x+4,y+4,9,9,dc2,(i&3)*9+j,9,SRCAND);
  5203. BitBlt(dc,x+4,y+4,9,9,dc2,(i&3)*9+j,0,SRCPAINT);
  5204. if ((i&3)==0) {
  5205. y+=8;
  5206. }
  5207. else if ((i&3)==1) {
  5208. y-=8;
  5209. }
  5210. else if ((i&3)==2) {
  5211. x-=8;
  5212. }
  5213. else if ((i&3)==3) {
  5214. x+=8;
  5215. }
  5216. }
  5217. else if (i>=0x1D&&i<=0x20)
  5218. {
  5219. if ((i&3)==1) {
  5220. y+=8;
  5221. }
  5222. else if ((i&3)==2) {
  5223. y-=8;
  5224. }
  5225. else if ((i&3)==3) {
  5226. x-=8;
  5227. }
  5228. else if ((i&3)==0) {
  5229. x+=8;
  5230. }
  5231. BitBlt(dc,x+3,y+3,11,11,dc2,((i-1)&3)*11+108,11,SRCAND);
  5232. BitBlt(dc,x+3,y+3,11,11,dc2,((i-1)&3)*11+108,0,SRCPAINT);
  5233. if ((i&3)==1) {
  5234. y+=8;
  5235. }
  5236. else if ((i&3)==2) {
  5237. y-=8;
  5238. }
  5239. else if ((i&3)==3) {
  5240. x-=8;
  5241. }
  5242. else if ((i&3)==0) {
  5243. x+=8;
  5244. }
  5245. }
  5246. else if (i>=0x62&&i<=0x66)
  5247. {
  5248. if (i==0x64)i=120;
  5249. else if (i==0x63)i=134;
  5250. else if (i==0x66)i=148;
  5251. else if (i==0x62)i=162;
  5252. else i=176;
  5253. BitBlt(dc,x+1,y+1,14,14,dc2,i,68,SRCAND);
  5254. BitBlt(dc,x+1,y+1,14,14,dc2,i,54,SRCPAINT);
  5255. }
  5256. c=c->next;
  5257. }
  5258. pen=CreatePen(PS_SOLID,0,RGB(255,0,0));
  5259. temp=SelectObject(dc,pen);
  5260. Rectangle(dc,x+6,y+6,x+10,y+10);
  5261. SelectObject(dc,temp);
  5262. DeleteObject(pen);
  5263. DeleteDC(dc2);
  5264. SetWindowLongPtr(MovePlanWin, DWLP_MSGRESULT, TRUE);
  5265. break;
  5266. case WM_COMMAND:
  5267. InvalidateRect(GetDlgItem(MovePlanWin,14),NULL,0);
  5268. switch (LOWORD(wParam))
  5269. {
  5270. case 1:
  5271. ShowWindow(MovePlanWin,SW_HIDE);
  5272. break;
  5273. case 2:
  5274. if (OpenClipboard(NULL))
  5275. {
  5276. EmptyClipboard();
  5277. c=moves;
  5278. len=0;
  5279. while (c!=NULL)
  5280. {
  5281. len+=strlen(GetMoveName(c->type))+1;
  5282. c=c->next;
  5283. }
  5284. ptr=GlobalAlloc(GMEM_MOVEABLE,len+6);
  5285. ptr2=(char*)GlobalLock(ptr);
  5286. *ptr2=0;
  5287. strcat(ptr2,"m ");
  5288. c=moves;
  5289. while (c!=NULL)
  5290. {
  5291. strcat(ptr2,GetMoveName(c->type));
  5292. strcat(ptr2," ");
  5293. c=c->next;
  5294. }
  5295. strcat(ptr2,"end");
  5296. GlobalUnlock(ptr);
  5297. SetClipboardData(CF_TEXT,ptr);
  5298. CloseClipboard();
  5299. }
  5300. break;
  5301. case 3:
  5302. c=moves;
  5303. len=0;
  5304. while (c!=NULL)
  5305. {
  5306. len+=strlen(GetMoveName(c->type))+1;
  5307. c=c->next;
  5308. }
  5309. ptr2=malloc(len+6);
  5310. *ptr2=0;
  5311. strcat(ptr2,"m ");
  5312. c=moves;
  5313. while (c!=NULL)
  5314. {
  5315. strcat(ptr2,GetMoveName(c->type));
  5316. strcat(ptr2," ");
  5317. c=c->next;
  5318. }
  5319. strcat(ptr2,"end");
  5320. SendMessage(Text,SCI_ADDTEXT,len+5,(LPARAM)ptr2);
  5321. free(ptr2);
  5322. break;
  5323. case 4:
  5324. AddToList(1,"Up");
  5325. break;
  5326. case 5:
  5327. AddToList(3,"Right");
  5328. break;
  5329. case 6:
  5330. AddToList(2,"Left");
  5331. break;
  5332. case 7:
  5333. AddToList(0,"Down");
  5334. break;
  5335. case 8:
  5336. i=SendMessage(GetDlgItem(MovePlanWin,13),LB_GETCURSEL,0,0);
  5337. if (i-1>=0&&i!=LB_ERR)
  5338. SwapItems(i-1,i-1);
  5339. break;
  5340. case 9:
  5341. i=SendMessage(GetDlgItem(MovePlanWin,13),LB_GETCURSEL,0,0);
  5342. if (i!=LB_ERR)
  5343. SwapItems(i,i+1);
  5344. break;
  5345. case 100:
  5346. txttype="Look";
  5347. currtype=0x0;
  5348. break;
  5349. case 101:
  5350. txttype="Walk V-Slow";
  5351. currtype=0x8;
  5352. break;
  5353. case 102:
  5354. txttype="Walk Slow";
  5355. currtype=0xC;
  5356. break;
  5357. case 103:
  5358. txttype="Walk";
  5359. currtype=0x10;
  5360. break;
  5361. case 104:
  5362. txttype="Run";
  5363. currtype=0x1D;
  5364. break;
  5365. case 105:
  5366. txttype="Jump [0]";
  5367. currtype=0x52;
  5368. break;
  5369. case 106:
  5370. txttype="Jump [1]";
  5371. currtype=0x4E;
  5372. break;
  5373. case 107:
  5374. txttype="Jump [2]";
  5375. currtype=0x14;
  5376. break;
  5377. case 10:
  5378. i=(unsigned int)SendMessage(GetDlgItem(MovePlanWin,13),LB_GETCURSEL,0,0);
  5379. if (i==LB_ERR)break;
  5380. SendMessage(GetDlgItem(MovePlanWin,13),LB_DELETESTRING,i,0);
  5381. if (SendMessage(GetDlgItem(MovePlanWin,13),LB_SETCURSEL,i,0)==LB_ERR)
  5382. SendMessage(GetDlgItem(MovePlanWin,13),LB_SETCURSEL,i-1,0);
  5383. if (i==0)
  5384. {
  5385. c=moves;
  5386. d=moves->next;
  5387. if (d==NULL)
  5388. {
  5389. moves=NULL;
  5390. }
  5391. else
  5392. {
  5393. moves=d;
  5394. }
  5395. free(c->str);
  5396. free(c);
  5397. }
  5398. else
  5399. {
  5400. c=moves;
  5401. while (i>0)
  5402. {
  5403. c=c->next;
  5404. i--;
  5405. }
  5406. free(c->str);
  5407. if (c->next!=NULL)
  5408. {
  5409. c->next->prev=c->prev;
  5410. }
  5411. c->prev->next=c->next;
  5412. free(c);
  5413. }
  5414. break;
  5415. case 12:
  5416. if (moves==NULL)break;
  5417. SendMessage(GetDlgItem(MovePlanWin,13),LB_RESETCONTENT,0,0);
  5418. c=moves;
  5419. while (c!=NULL)
  5420. {
  5421. d=c;
  5422. c=c->next;
  5423. }
  5424. c=d;
  5425. while (c!=NULL)
  5426. {
  5427. free(c->str);
  5428. if (c->prev==NULL)
  5429. {
  5430. free(c);
  5431. c=NULL;
  5432. moves=NULL;
  5433. }
  5434. else
  5435. {
  5436. c=c->prev;
  5437. free(c->next);
  5438. }
  5439. }
  5440. break;
  5441. case 15:
  5442. ptr=txttype;
  5443. txttype="Say";
  5444. i=currtype;
  5445. currtype=0;
  5446. AddToList(0x65,"\"!!\"");
  5447. currtype=i;
  5448. txttype=ptr;
  5449. break;
  5450. case 16:
  5451. ptr=txttype;
  5452. txttype="Say";
  5453. i=currtype;
  5454. currtype=0;
  5455. AddToList(0x62,"\"!\"");
  5456. currtype=i;
  5457. txttype=ptr;
  5458. break;
  5459. case 17:
  5460. ptr=txttype;
  5461. txttype="Say";
  5462. i=currtype;
  5463. currtype=0;
  5464. AddToList(0x63,"\"?\"");
  5465. currtype=i;
  5466. txttype=ptr;
  5467. break;
  5468. case 18:
  5469. ptr=txttype;
  5470. txttype="Say";
  5471. i=currtype;
  5472. currtype=0;
  5473. AddToList(0x66,"\"^_^\"");
  5474. currtype=i;
  5475. txttype=ptr;
  5476. break;
  5477. case 19:
  5478. ptr=txttype;
  5479. txttype="Say";
  5480. i=currtype;
  5481. currtype=0;
  5482. AddToList(0x64,"\"X\"");
  5483. currtype=i;
  5484. txttype=ptr;
  5485. break;
  5486. }
  5487. break;
  5488. case WM_CLOSE:
  5489. ShowWindow(MovePlanWin,SW_HIDE);
  5490. break;
  5491. default:
  5492. return 0;
  5493. }
  5494. return 1;
  5495. }
  5496.  
  5497. BOOL CALLBACK FlagsFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  5498. {
  5499. int x,i;
  5500. char buf[5],buf2[7];
  5501. switch (msg)
  5502. {
  5503. case WM_COMMAND:
  5504. switch (LOWORD(wParam))
  5505. {
  5506. case 2:
  5507. if (HIWORD(wParam)==LBN_SELCHANGE)
  5508. {
  5509. SaveFlag();
  5510. x=SendMessage(GetDlgItem(FlagsWin,2),LB_GETCURSEL,0,0);
  5511. LastFlag=x;
  5512. sprintf(buf,"%04X",FlagArr[x]);
  5513. strcpy(buf2,"0x");
  5514. strcpy(buf2+2,buf);
  5515. LoadRegSettingStr("Flags\\ShortDesc",buf);
  5516. SetDlgItemText(FlagsWin,4,buf2);
  5517. SetDlgItemText(FlagsWin,5,GreatBuffer);
  5518. LoadRegSettingStr("Flags\\LongDesc",buf);
  5519. SetDlgItemText(FlagsWin,6,GreatBuffer);
  5520. } else if (HIWORD(wParam)==LBN_SELCANCEL)
  5521. {
  5522. SaveFlag();
  5523. LastFlag=-1;
  5524. }
  5525. break;
  5526. case 3:
  5527. SaveFlag();
  5528. GetDlgItemText(FlagsWin,1,GreatBuffer,sizeof(GreatBuffer));
  5529. sscanf(GreatBuffer,"%X",&x);
  5530. for (i=0;i<FlagArrLen;i++)
  5531. {
  5532. if (FlagArr[i]==x)
  5533. {
  5534. x=-1;
  5535. break;
  5536. }
  5537. }
  5538. if (x==-1)break;
  5539. sprintf(buf,"%04X",x);
  5540. AddFlag(buf,"Unused","This flag is not used");
  5541. if (FlagArr[LastFlag]>x)
  5542. LastFlag++;
  5543. SortFlags();
  5544. for (i=0;i<FlagArrLen;i++)
  5545. if (FlagArr[i]==x)
  5546. {
  5547. SendMessage(GetDlgItem(FlagsWin,2),LB_SETCURSEL,i,0);
  5548. FlagsFunc(hwnd,WM_COMMAND,(LBN_SELCHANGE<<16)|2,0);
  5549. break;
  5550. }
  5551. break;
  5552. case 11:
  5553. MessageBox(FlagsWin,GetString1(3089),GetString2(3090),0x40);
  5554. break;
  5555. case 8:
  5556. if (MessageBox(FlagsWin,GetString1(3092),GetString1(3091),0x20|MB_YESNO)==6)
  5557. {
  5558. DeleteRegSetting("Flags","FilledList");
  5559. while (FlagArrLen)
  5560. {
  5561. LastFlag=FlagArrLen-1;
  5562. DeleteLastFlag();
  5563. }
  5564. ShowWindow(FlagsWin,SW_HIDE);
  5565. FlagsShown=0;
  5566. }
  5567. break;
  5568. case 7:
  5569. if (LastFlag==-1)break;
  5570. SendMessage(GetDlgItem(FlagsWin,2),LB_DELETESTRING,LastFlag,0);
  5571. x=LastFlag;
  5572. if (x>=FlagArrLen)x=FlagArrLen-1;
  5573. DeleteLastFlag();
  5574. if (FlagArrLen)
  5575. {
  5576. SendMessage(GetDlgItem(FlagsWin,2),LB_SETCURSEL,x,0);
  5577. FlagsFunc(hwnd,WM_COMMAND,(LBN_SELCHANGE<<16)|2,0);
  5578. }
  5579. else
  5580. {
  5581. *GreatBuffer=0;
  5582. SetDlgItemText(FlagsWin,4,GreatBuffer);
  5583. SetDlgItemText(FlagsWin,5,GreatBuffer);
  5584. SetDlgItemText(FlagsWin,6,GreatBuffer);
  5585. }
  5586. break;
  5587. case 9:
  5588. ShowWindow(FlagsWin,SW_HIDE);
  5589. SaveFlag();
  5590. FlagsShown=0;
  5591. break;
  5592. }
  5593. break;
  5594. case WM_CLOSE:
  5595. ShowWindow(FlagsWin,SW_HIDE);
  5596. SaveFlag();
  5597. FlagsShown=0;
  5598. break;
  5599. default:
  5600. return 0;
  5601. }
  5602. return 1;
  5603. }
  5604.  
  5605. int ReadWholeFile(char*a,char**mm)
  5606. {
  5607. char*m;
  5608. HANDLE b;
  5609. int len;
  5610. DWORD read;
  5611. b=CreateFile(a,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,NULL);
  5612. if (b==INVALID_HANDLE_VALUE)
  5613. {
  5614. *mm=0;
  5615. return 0;
  5616. }
  5617. len=SetFilePointer(b,0,NULL,FILE_END);
  5618. SetFilePointer(b,0,NULL,FILE_BEGIN);
  5619. m=GlobalAlloc(GPTR,len);
  5620. *mm=m;
  5621. ReadFile(b,m,len,&read,NULL);
  5622. CloseHandle(b);
  5623. return len;
  5624. }
  5625. int romlen=0,romloaded=0;
  5626. char*mem2=NULL;
  5627. BOOL CALLBACK ScriptSearchFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  5628. {
  5629. int txtlen,i,j,binlen;
  5630. char*mem;
  5631. char buf[50];
  5632. switch (msg)
  5633. {
  5634. case WM_COMMAND:
  5635. switch (LOWORD(wParam))
  5636. {
  5637. case 1:
  5638. ShowWindow(ScriptSearchWin,SW_HIDE);
  5639. romloaded=0;
  5640. if (mem2);
  5641. GlobalFree(mem2);
  5642. mem2=NULL;
  5643. break;
  5644. case 3:
  5645. txtlen=SendMessage(GetDlgItem(ScriptSearchWin,2),WM_GETTEXTLENGTH,0,0);
  5646. mem=GlobalAlloc(GPTR,txtlen+100);
  5647. strcpy(mem,"#org 0x0\n");
  5648. SendMessage(GetDlgItem(ScriptSearchWin,2),WM_GETTEXT,txtlen+1,(LPARAM)mem+strlen("#org 0x0\n"));
  5649. CloseHandle(CreateFile("tmp.bin",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL));
  5650. compile("tmp.bin",mem);
  5651. for (i=4;i<=9;i++)
  5652. EnableWindow(GetDlgItem(ScriptSearchWin,i),1);
  5653. EnableWindow(GetDlgItem(ScriptSearchWin,16),1);
  5654. SetWindowText(GetDlgItem(ScriptSearchWin,4),"000000");
  5655. break;
  5656. case 11:
  5657. ScriptSearchType=11;
  5658. break;
  5659. case 12:
  5660. ScriptSearchType=12;
  5661. break;
  5662. case 13:
  5663. ScriptSearchType=13;
  5664. break;
  5665. case 17:
  5666. ScriptSearchType=17;
  5667. break;
  5668. case 19:
  5669. ScriptSearchType=19;
  5670. break;
  5671. case 21:
  5672. ScriptSearchType=21;
  5673. break;
  5674. case 22:
  5675. ScriptSearchType=22;
  5676. break;
  5677. case 25:
  5678. ScriptSearchType=25;
  5679. break;
  5680. case 26:
  5681. SendEditor(SCI_CLEARALL,0,0);
  5682. break;
  5683. case 5:
  5684. GetWindowText(GetDlgItem(ScriptSearchWin,4),buf,50);
  5685. i=-1;
  5686. sscanf(buf,"0x%X",&i);
  5687. if (i==-1)
  5688. sscanf(buf,"%X",&i);
  5689. if (i==-1)
  5690. sscanf(buf,"$%X",&i);
  5691. binlen=ReadWholeFile("tmp.bin",&mem);
  5692. if (!romloaded)
  5693. romlen=ReadWholeFile(RomOpen2,&mem2);
  5694. romloaded=1;
  5695. if (!mem||!mem2)
  5696. {
  5697. MessageBox(ScriptSearchWin,GetString1(3088),GetString2(3095),0x10);
  5698. if (mem)GlobalFree(mem);
  5699. if (mem2)GlobalFree(mem2);
  5700. romloaded=0;
  5701. break;
  5702. }
  5703. if (IsDlgButtonChecked(ScriptSearchWin,24))
  5704. binlen--;
  5705. for (i++;i<romlen;i++)
  5706. {
  5707. for (j=0;j<binlen;j++)
  5708. {
  5709. if (mem[j]!=mem2[i] && (unsigned char)mem[j]!=(unsigned char)0xBA)
  5710. {
  5711. break;
  5712. }
  5713. i++;
  5714. }
  5715. i-=j;
  5716. if (j==binlen)break;
  5717. }
  5718. GlobalFree(mem);
  5719. if (j==binlen)
  5720. {
  5721. sprintf(buf,"0x%X",i);
  5722. SetWindowText(GetDlgItem(ScriptSearchWin,4),buf);
  5723.  
  5724. switch (ScriptSearchType)
  5725. {
  5726. case 11:
  5727. mem=decompile(RomOpen2,i,0);
  5728. break;
  5729. case 12:
  5730. mem=decompileASM(RomOpen2,i|1);
  5731. break;
  5732. case 13:
  5733. mem=decompileText(RomOpen2,i);
  5734. break;
  5735. case 17:
  5736. mem=decompileLevel(RomOpen2,i);
  5737. break;
  5738. case 19:
  5739. mem=decompileMoves(RomOpen2,i);
  5740. break;
  5741. case 21:
  5742. mem=decompileMart(RomOpen2,i);
  5743. break;
  5744. case 22:
  5745. mem=decompileAttacks(RomOpen2,i);
  5746. break;
  5747. case 25:
  5748. mem=decompilePointer(RomOpen2,i);
  5749. break;
  5750. }
  5751. if (mem)
  5752. {
  5753. SetWindowText(GetDlgItem(ScriptSearchWin,14),mem);
  5754. GlobalFree(mem);
  5755. }
  5756. }
  5757. else
  5758. {
  5759. SetWindowText(GetDlgItem(ScriptSearchWin,4),"000000");
  5760. }
  5761. break;
  5762. case 7:
  5763. GetWindowText(GetDlgItem(ScriptSearchWin,4),buf,50);
  5764. i=-1;
  5765. sscanf(buf,"0x%X",&i);
  5766. if (i==-1)
  5767. sscanf(buf,"%X",&i);
  5768. if (i==-1)
  5769. sscanf(buf,"$%X",&i);
  5770. i--;
  5771. sprintf(buf,"0x%X",i);
  5772. SetWindowText(GetDlgItem(ScriptSearchWin,4),buf);
  5773. switch (ScriptSearchType)
  5774. {
  5775. case 11:
  5776. mem=decompile(RomOpen2,i,0);
  5777. break;
  5778. case 12:
  5779. mem=decompileASM(RomOpen2,i|1);
  5780. break;
  5781. case 13:
  5782. mem=decompileText(RomOpen2,i);
  5783. break;
  5784. case 17:
  5785. mem=decompileLevel(RomOpen2,i);
  5786. break;
  5787. case 19:
  5788. mem=decompileMoves(RomOpen2,i);
  5789. break;
  5790. case 21:
  5791. mem=decompileMart(RomOpen2,i);
  5792. break;
  5793. case 22:
  5794. mem=decompileAttacks(RomOpen2,i);
  5795. break;
  5796. case 25:
  5797. mem=decompilePointer(RomOpen2,i);
  5798. break;
  5799. }
  5800. if (mem)
  5801. {
  5802. SetWindowText(GetDlgItem(ScriptSearchWin,14),mem);
  5803. GlobalFree(mem);
  5804. }
  5805. break;
  5806. case 8:
  5807. GetWindowText(GetDlgItem(ScriptSearchWin,4),buf,50);
  5808. i=-1;
  5809. sscanf(buf,"0x%X",&i);
  5810. if (i==-1)
  5811. sscanf(buf,"%X",&i);
  5812. if (i==-1)
  5813. sscanf(buf,"$%X",&i);
  5814. i++;
  5815. sprintf(buf,"0x%X",i);
  5816. SetWindowText(GetDlgItem(ScriptSearchWin,4),buf);
  5817. switch (ScriptSearchType)
  5818. {
  5819. case 11:
  5820. mem=decompile(RomOpen2,i,0);
  5821. break;
  5822. case 12:
  5823. mem=decompileASM(RomOpen2,i|1);
  5824. break;
  5825. case 13:
  5826. mem=decompileText(RomOpen2,i);
  5827. break;
  5828. case 17:
  5829. mem=decompileLevel(RomOpen2,i);
  5830. break;
  5831. case 19:
  5832. mem=decompileMoves(RomOpen2,i);
  5833. break;
  5834. case 21:
  5835. mem=decompileMart(RomOpen2,i);
  5836. break;
  5837. case 22:
  5838. mem=decompileAttacks(RomOpen2,i);
  5839. break;
  5840. case 25:
  5841. mem=decompilePointer(RomOpen2,i);
  5842. break;
  5843. }
  5844. if (mem)
  5845. {
  5846. SetWindowText(GetDlgItem(ScriptSearchWin,14),mem);
  5847. GlobalFree(mem);
  5848. }
  5849. break;
  5850. case 6:
  5851. GetWindowText(GetDlgItem(ScriptSearchWin,4),buf,50);
  5852. i=-1;
  5853. sscanf(buf,"0x%X",&i);
  5854. if (i==-1)
  5855. sscanf(buf,"%X",&i);
  5856. if (i==-1)
  5857. sscanf(buf,"$%X",&i);
  5858. i-=16;
  5859. sprintf(buf,"0x%X",i);
  5860. SetWindowText(GetDlgItem(ScriptSearchWin,4),buf);
  5861. switch (ScriptSearchType)
  5862. {
  5863. case 11:
  5864. mem=decompile(RomOpen2,i,0);
  5865. break;
  5866. case 12:
  5867. mem=decompileASM(RomOpen2,i|1);
  5868. break;
  5869. case 13:
  5870. mem=decompileText(RomOpen2,i);
  5871. break;
  5872. case 17:
  5873. mem=decompileLevel(RomOpen2,i);
  5874. break;
  5875. case 19:
  5876. mem=decompileMoves(RomOpen2,i);
  5877. break;
  5878. case 21:
  5879. mem=decompileMart(RomOpen2,i);
  5880. break;
  5881. case 22:
  5882. mem=decompileAttacks(RomOpen2,i);
  5883. break;
  5884. case 25:
  5885. mem=decompilePointer(RomOpen2,i);
  5886. break;
  5887. }
  5888. if (mem)
  5889. {
  5890. SetWindowText(GetDlgItem(ScriptSearchWin,14),mem);
  5891. GlobalFree(mem);
  5892. }
  5893. break;
  5894. case 9:
  5895. GetWindowText(GetDlgItem(ScriptSearchWin,4),buf,50);
  5896. i=-1;
  5897. sscanf(buf,"0x%X",&i);
  5898. if (i==-1)
  5899. sscanf(buf,"%X",&i);
  5900. if (i==-1)
  5901. sscanf(buf,"$%X",&i);
  5902. i+=16;
  5903. sprintf(buf,"0x%X",i);
  5904. SetWindowText(GetDlgItem(ScriptSearchWin,4),buf);
  5905. switch (ScriptSearchType)
  5906. {
  5907. case 11:
  5908. mem=decompile(RomOpen2,i,0);
  5909. break;
  5910. case 12:
  5911. mem=decompileASM(RomOpen2,i|1);
  5912. break;
  5913. case 13:
  5914. mem=decompileText(RomOpen2,i);
  5915. break;
  5916. case 17:
  5917. mem=decompileLevel(RomOpen2,i);
  5918. break;
  5919. case 19:
  5920. mem=decompileMoves(RomOpen2,i);
  5921. break;
  5922. case 21:
  5923. mem=decompileMart(RomOpen2,i);
  5924. break;
  5925. case 22:
  5926. mem=decompileAttacks(RomOpen2,i);
  5927. break;
  5928. case 25:
  5929. mem=decompilePointer(RomOpen2,i);
  5930. break;
  5931. }
  5932. if (mem)
  5933. {
  5934. SetWindowText(GetDlgItem(ScriptSearchWin,14),mem);
  5935. GlobalFree(mem);
  5936. }
  5937. break;
  5938. case 16:
  5939. i=SendMessage(GetDlgItem(ScriptSearchWin,14),WM_GETTEXTLENGTH,0,0);
  5940. mem=GlobalAlloc(GPTR,i+3);
  5941. if (mem)
  5942. {
  5943. *mem='\n';
  5944. GetWindowText(GetDlgItem(ScriptSearchWin,14),mem+1,i+1);
  5945. mem[i+2]='\n';
  5946. SendEditor(SCI_ADDTEXT,i,(LPARAM)mem);
  5947. GlobalFree(mem);
  5948. }
  5949. break;
  5950. }
  5951. break;
  5952. case WM_CLOSE:
  5953. ShowWindow(ScriptSearchWin,SW_HIDE);
  5954. romloaded=0;
  5955. if (mem2);
  5956. GlobalFree(mem2);
  5957. mem2=NULL;
  5958. break;
  5959. default:
  5960. return 0;
  5961. }
  5962. return 1;
  5963. }
  5964.  
  5965. char detecttype=1;
  5966.  
  5967. BOOL CALLBACK LockFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  5968. {
  5969. HANDLE file;
  5970. char thing;
  5971. DWORD bytes;
  5972. char buf[50];
  5973. switch (msg)
  5974. {
  5975. case WM_COMMAND:
  5976. switch (LOWORD(wParam))
  5977. {
  5978. case 1:
  5979. ShowWindow(LockWin,SW_HIDE);
  5980. break;
  5981. case 3:
  5982. case 4:
  5983. case 5:
  5984. case 6:
  5985. case 7:
  5986. detecttype=LOWORD(wParam)-2;
  5987. break;
  5988. case 10:
  5989. file=CreateFile(RomOpen2,GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);
  5990. if (file==INVALID_HANDLE_VALUE)
  5991. {
  5992. MessageBox(LockWin,GetString1(3096),GetString2(3001),0x10);
  5993. break;
  5994. }
  5995. SetFilePointer(file,0xAC,NULL,FILE_BEGIN);
  5996. thing=rand()&0xFF;
  5997. WriteFile(file,&thing,1,&bytes,NULL);
  5998. thing=rand()&0xFF;
  5999. WriteFile(file,&thing,1,&bytes,NULL);
  6000. thing=rand()&0xFF;
  6001. WriteFile(file,&thing,1,&bytes,NULL);
  6002. thing=rand()&0xFF;
  6003. WriteFile(file,&thing,1,&bytes,NULL);
  6004. CloseHandle(file);
  6005. break;
  6006. case 8:
  6007. file=CreateFile(RomOpen2,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);
  6008. if (file==INVALID_HANDLE_VALUE)
  6009. {
  6010. MessageBox(LockWin,GetString1(3096),GetString2(3001),0x10);
  6011. break;
  6012. }
  6013. switch (detecttype)
  6014. {
  6015. case 1:
  6016. SetFilePointer(file,0x11B,NULL,FILE_BEGIN);
  6017. ReadFile(file,&thing,1,&bytes,NULL);
  6018. //if not FR or LG, 0x256 - d6 ruby 9e sapphire else ????
  6019. switch (thing)
  6020. {
  6021. case 0:
  6022. SetDlgItemText(LockWin,9,"BPRE");
  6023. break;
  6024. case 0xE1:
  6025. SetFilePointer(file,0x256,NULL,FILE_BEGIN);
  6026. ReadFile(file,&thing,1,&bytes,NULL);
  6027. switch (thing)
  6028. {
  6029. case 0xD6:
  6030. SetDlgItemText(LockWin,9,"AXVE");
  6031. break;
  6032. case 0x9E:
  6033. SetDlgItemText(LockWin,9,"AXPE");
  6034. break;
  6035. default:
  6036. SetDlgItemText(LockWin,9,"????");
  6037. }
  6038. break;
  6039. case 0x6F:
  6040. SetDlgItemText(LockWin,9,"BPGE");
  6041. break;
  6042. case 0x73:
  6043. SetDlgItemText(LockWin,9,"BPEE");
  6044. break;
  6045. default:
  6046. SetDlgItemText(LockWin,9,"????");
  6047. }
  6048. break;
  6049. case 2:
  6050. SetFilePointer(file,0x318,NULL,FILE_BEGIN);
  6051. ReadFile(file,&thing,1,&bytes,NULL);
  6052. switch (thing)
  6053. {
  6054. case 0xCB:
  6055. SetDlgItemText(LockWin,9,"AXPE");
  6056. break;
  6057. case 0xC9:
  6058. SetDlgItemText(LockWin,9,"AXVE");
  6059. break;
  6060. case 0x7C:
  6061. SetFilePointer(file,0x3AE,NULL,FILE_BEGIN);
  6062. ReadFile(file,&thing,1,&bytes,NULL);
  6063. switch (thing)
  6064. {
  6065. case 0xE8:
  6066. SetDlgItemText(LockWin,9,"BPRE");
  6067. break;
  6068. case 0xD6:
  6069. SetDlgItemText(LockWin,9,"BPGE");
  6070. break;
  6071. case 0x7C:
  6072. SetDlgItemText(LockWin,9,"BPEE");
  6073. break;
  6074. default:
  6075. SetDlgItemText(LockWin,9,"????");
  6076. }
  6077. break;
  6078. default:
  6079. SetDlgItemText(LockWin,9,"????");
  6080. }
  6081. break;
  6082. case 3:
  6083. break;
  6084. case 4:
  6085. break;
  6086. case 5:
  6087. break;
  6088. }
  6089. CloseHandle(file);
  6090. break;
  6091. case 2:
  6092. GetDlgItemText(LockWin,9,buf,5);
  6093. file=CreateFile(RomOpen2,GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);
  6094. if (file==INVALID_HANDLE_VALUE)
  6095. {
  6096. MessageBox(LockWin,GetString1(3096),GetString2(3001),0x10);
  6097. break;
  6098. }
  6099. SetFilePointer(file,0xAC,NULL,FILE_BEGIN);
  6100. modechar=*(unsigned int*)buf;
  6101. WriteFile(file,&buf,4,&bytes,NULL);
  6102. CloseHandle(file);
  6103. break;
  6104. case 11:
  6105. file=CreateFile(RomOpen2,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);
  6106. if (file==INVALID_HANDLE_VALUE)
  6107. {
  6108. MessageBox(LockWin,GetString1(3096),GetString2(3001),0x10);
  6109. break;
  6110. }
  6111. SetFilePointer(file,0xAC,NULL,FILE_BEGIN);
  6112. ReadFile(file,&buf,4,&bytes,NULL);
  6113. buf[4]=buf[5]=buf[6]=buf[7]=
  6114. buf[8]=buf[9]=buf[10]=buf[11]=0;
  6115. SetDlgItemText(LockWin,9,buf);
  6116. modechar=*(unsigned int*)buf;
  6117. CloseHandle(file);
  6118. break;
  6119. }
  6120. break;
  6121. case WM_CLOSE:
  6122. ShowWindow(LockWin,SW_HIDE);
  6123. break;
  6124. default:
  6125. return 0;
  6126. }
  6127. return 1;
  6128. }
  6129. #ifdef SCRAP
  6130. int DescLen;
  6131.  
  6132. int GetVal(char*buf)
  6133. {
  6134. int i=-1;
  6135. sscanf(buf,"0x%X",&i);
  6136. if (i==-1)
  6137. {
  6138. sscanf(buf,"$%x",&i);
  6139. if (i==-1)
  6140. {
  6141. sscanf(buf,"%u",&i);
  6142. if (i==-1)i=0;
  6143. }
  6144. }
  6145. return i;
  6146. }
  6147.  
  6148. BOOL CALLBACK PickupFunc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
  6149. {
  6150. int i,j,k,start;
  6151. HANDLE file,fileM;
  6152. char buf[1024],buf2[4096];
  6153. DWORD read;
  6154. switch (msg)
  6155. {
  6156. case WM_NOTIFY:
  6157. switch (LOWORD(wParam))
  6158. {
  6159. case 1000:
  6160. switch (SendMessage(GetDlgItem(PickupWin,1000),TCM_GETCURSEL,0,0))
  6161. {
  6162. case 0:
  6163. for (i=1;i<=10;i++)ShowWindow(GetDlgItem(PickupWin,i),SW_SHOW);
  6164. for (i=50;i<=87;i++)ShowWindow(GetDlgItem(PickupWin,i),SW_HIDE);
  6165. break;
  6166. case 1:
  6167. for (i=50;i<=87;i++)ShowWindow(GetDlgItem(PickupWin,i),SW_SHOW);
  6168. for (i=1;i<=10;i++)if (i!=2)ShowWindow(GetDlgItem(PickupWin,i),SW_HIDE);
  6169. break;
  6170. }
  6171. break;
  6172. }
  6173. break;
  6174. case WM_COMMAND:
  6175. switch (LOWORD(wParam))
  6176. {
  6177. case 52:
  6178. start=SendMessage(GetDlgItem(PickupWin,50),CB_GETCURSEL,0,0);
  6179. if (start==-1)break;
  6180. file=CreateFile(RomOpen2,GENERIC_READ|GENERIC_WRITE,
  6181. FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
  6182. NULL,OPEN_EXISTING,0,NULL);
  6183. if (file==INVALID_HANDLE_VALUE)
  6184. {
  6185. MessageBox(PickupWin,GetString1(3096),GetString2(3001),0x10);
  6186. break;
  6187. }
  6188. if (modechar=='ERPB')SetFilePointer(file,0x3DB028+0x2C*start,NULL,FILE_BEGIN);
  6189. else if (modechar=='EGPB')SetFilePointer(file,0x3DAE64+0x2C*start,NULL,FILE_BEGIN);
  6190. else {
  6191. CloseHandle(file);
  6192. MessageBox(PickupWin,GetString1(3098),GetString2(3001),0x10);
  6193. break;
  6194. }
  6195. GetDlgItemText(PickupWin,56,buf2,sizeof(buf2));
  6196. Ascii2Game(buf2,buf,0xE);
  6197. buf[0xE]=0xFF;
  6198. WriteFile(file,buf,0xE,&read,NULL);
  6199. GetDlgItemText(PickupWin,57,buf,20);
  6200. i=GetVal(buf);
  6201. WriteFile(file,&i,0x2,&read,NULL);
  6202. GetDlgItemText(PickupWin,61,buf,20);
  6203. i=GetVal(buf);
  6204. WriteFile(file,&i,0x2,&read,NULL);
  6205. GetDlgItemText(PickupWin,79,buf,20);
  6206. i=GetVal(buf);
  6207. WriteFile(file,&i,0x1,&read,NULL);
  6208. GetDlgItemText(PickupWin,76,buf,20);
  6209. i=GetVal(buf);
  6210. WriteFile(file,&i,0x1,&read,NULL);
  6211. GetDlgItemText(PickupWin,75,buf2,sizeof(buf2));
  6212. i=Ascii2Game(buf2,buf,sizeof(buf));
  6213. k=i+1;
  6214. memcpy(buf2,buf,sizeof(buf));
  6215. if (i>DescLen)
  6216. {
  6217. i=0x08000000|FindFreeSpace(RomOpen2,i+100,0x740000);
  6218. WriteFile(file,&i,4,&read,NULL);
  6219. }
  6220. else
  6221. {
  6222. ReadFile(file,&i,4,&read,NULL);
  6223. }
  6224. start=i; //DESCRIPTION POINTER
  6225. GetDlgItemText(PickupWin,63,buf,20);
  6226. i=GetVal(buf);
  6227. WriteFile(file,&i,0x2,&read,NULL);
  6228. for (j=0;j<5;j++)
  6229. if (IsDlgButtonChecked(PickupWin,82+j))break;
  6230. j++;
  6231. if (j>5)
  6232. {
  6233. GetDlgItemText(PickupWin,65,buf,20);
  6234. j=GetVal(buf);
  6235. }
  6236. WriteFile(file,&j,0x1,&read,NULL);
  6237. GetDlgItemText(PickupWin,81,buf,20);
  6238. i=GetVal(buf);
  6239. WriteFile(file,&i,0x1,&read,NULL);
  6240. GetDlgItemText(PickupWin,67,buf,20);
  6241. i=GetVal(buf);
  6242. WriteFile(file,&i,0x4,&read,NULL);
  6243. GetDlgItemText(PickupWin,69,buf,20);
  6244. i=GetVal(buf);
  6245. WriteFile(file,&i,0x4,&read,NULL);
  6246. GetDlgItemText(PickupWin,73,buf,20);
  6247. i=GetVal(buf);
  6248. WriteFile(file,&i,0x4,&read,NULL);
  6249. GetDlgItemText(PickupWin,71,buf,20);
  6250. i=GetVal(buf);
  6251. WriteFile(file,&i,0x4,&read,NULL);
  6252. SetFilePointer(file,start&0x07FFFFFF,NULL,FILE_BEGIN);
  6253. WriteFile(file,buf2,k,&read,NULL);
  6254. CloseHandle(file);
  6255. break;
  6256. case 51:
  6257. SendMessage(GetDlgItem(PickupWin,50),CB_RESETCONTENT,0,0);
  6258. FillItemNames(GetDlgItem(PickupWin,50),RomOpen2);
  6259. break;
  6260. case 50:
  6261. if (HIWORD(wParam)==CBN_SELCHANGE)
  6262. {
  6263. start=SendMessage(GetDlgItem(PickupWin,50),CB_GETCURSEL,0,0);
  6264. if (start==-1)break;
  6265. file=CreateFile(RomOpen2,GENERIC_READ,
  6266. FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
  6267. NULL,OPEN_EXISTING,0,NULL);
  6268. if (file==INVALID_HANDLE_VALUE)
  6269. {
  6270. MessageBox(PickupWin,GetString1(3096),GetString2(3001),0x10);
  6271. break;
  6272. }
  6273. if (modechar=='ERPB')SetFilePointer(file,0x3DB028+0x2C*start,NULL,FILE_BEGIN);
  6274. else if (modechar=='EGPB')SetFilePointer(file,0x3DAE64+0x2C*start,NULL,FILE_BEGIN);
  6275. else {
  6276. CloseHandle(file);
  6277. MessageBox(PickupWin,GetString1(3098),GetString2(3001),0x10);
  6278. break;
  6279. }
  6280. EnableWindow(GetDlgItem(PickupWin,52),1);
  6281. ReadFile(file,buf,0xE,&read,NULL);
  6282. Game2Ascii(buf,buf2,0);
  6283. SetDlgItemText(PickupWin,56,buf2);
  6284. i=0;
  6285. ReadFile(file,&i,0x2,&read,NULL);
  6286. sprintf(buf2,"0x%X",i);
  6287. SetDlgItemText(PickupWin,57,buf2);
  6288. i=0;
  6289. ReadFile(file,&i,0x2,&read,NULL);
  6290. sprintf(buf2,"%u",i);
  6291. SetDlgItemText(PickupWin,61,buf2);
  6292. i=0;
  6293. ReadFile(file,&i,0x1,&read,NULL);
  6294. sprintf(buf2,"%u",i);
  6295. SetDlgItemText(PickupWin,79,buf2);
  6296. i=0;
  6297. ReadFile(file,&i,0x1,&read,NULL);
  6298. sprintf(buf2,"%u",i);
  6299. SetDlgItemText(PickupWin,76,buf2);
  6300. ReadFile(file,&i,0x4,&read,NULL);
  6301. start=i;
  6302. i=0;
  6303. ReadFile(file,&i,0x2,&read,NULL);
  6304. sprintf(buf2,"0x%X",i);
  6305. SetDlgItemText(PickupWin,63,buf2);
  6306. i=0;
  6307. ReadFile(file,&i,0x1,&read,NULL);
  6308. sprintf(buf2,"%u",i);
  6309. SetDlgItemText(PickupWin,65,buf2);
  6310. for (j=0;j<5;j++)
  6311. if (i==j+1) CheckDlgButton(PickupWin,82+j,1);
  6312. else CheckDlgButton(PickupWin,82+j,0);
  6313. if (i==0||i>5)
  6314. CheckDlgButton(PickupWin,87,1);
  6315. ReadFile(file,&i,0x1,&read,NULL);
  6316. sprintf(buf2,"%u",i);
  6317. SetDlgItemText(PickupWin,81,buf2);
  6318. i=0;
  6319. ReadFile(file,&i,0x4,&read,NULL);
  6320. sprintf(buf2,"0x%X",i);
  6321. SetDlgItemText(PickupWin,67,buf2);
  6322. i=0;
  6323. ReadFile(file,&i,0x4,&read,NULL);
  6324. sprintf(buf2,"%u",i);
  6325. SetDlgItemText(PickupWin,69,buf2);
  6326. i=0;
  6327. ReadFile(file,&i,0x4,&read,NULL);
  6328. sprintf(buf2,"0x%X",i);
  6329. SetDlgItemText(PickupWin,73,buf2);
  6330. i=0;
  6331. ReadFile(file,&i,0x4,&read,NULL);
  6332. sprintf(buf2,"0x%X",i);
  6333. SetDlgItemText(PickupWin,71,buf2);
  6334. if (start)
  6335. {
  6336. SetFilePointer(file,start&0x07FFFFFF,NULL,FILE_BEGIN);
  6337. ReadFile(file,buf,0x3FF,&read,NULL);
  6338. buf[0x3FF]=0xFF;
  6339. Game2Ascii(buf,buf2,1);
  6340. SetDlgItemText(PickupWin,75,buf2);
  6341. for (DescLen=0;(unsigned char)buf[DescLen]!=0xFF;DescLen++);
  6342. } else {
  6343. DescLen=0;
  6344. SetDlgItemText(PickupWin,75,"");
  6345. }
  6346. CloseHandle(file);
  6347. }
  6348. break;
  6349. case 5:
  6350. if (HIWORD(wParam)==LBN_SELCHANGE)
  6351. {
  6352. start=SendMessage(GetDlgItem(PickupWin,5),LB_GETCURSEL,0,0);
  6353. sprintf(buf,"%u",*(unsigned short*)(PickupBuf+2+(start<<2)));
  6354. SetDlgItemText(PickupWin,4,buf);
  6355. start=*(unsigned short*)(PickupBuf+(start<<2));
  6356. SendMessage(GetDlgItem(PickupWin,3),CB_SETCURSEL,start,0);
  6357. }
  6358. break;
  6359. case 3:
  6360. if (HIWORD(wParam)==CBN_SELCHANGE)
  6361. {
  6362. i=SendMessage(GetDlgItem(PickupWin,5),LB_GETCURSEL,0,0);
  6363. if (i==-1)break;
  6364. start=SendMessage(GetDlgItem(PickupWin,3),CB_GETCURSEL,0,0);
  6365. if (start!=-1)
  6366. {
  6367. GetItemNameRom(buf2,start,RomOpen2);
  6368. sprintf(buf,"%02u - %s",i+1,buf2);
  6369. SendMessage(GetDlgItem(PickupWin,5),LB_DELETESTRING,i,0);
  6370. SendMessage(GetDlgItem(PickupWin,5),LB_ADDSTRING,0,(LPARAM)buf);
  6371. SendMessage(GetDlgItem(PickupWin,5),LB_SETCURSEL,i,0);
  6372. *(unsigned short*)(PickupBuf+(i<<2))=start;
  6373. }
  6374. GetDlgItemText(PickupWin,4,buf,sizeof(buf));
  6375. sscanf(buf,"%u",&start);
  6376. *(unsigned short*)(PickupBuf+(i<<2)+2)=start;
  6377. }
  6378. break;
  6379. case 1:
  6380. file=CreateFile(RomOpen2,GENERIC_READ|GENERIC_WRITE,
  6381. FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
  6382. NULL,OPEN_EXISTING,0,NULL);
  6383. if (file!=INVALID_HANDLE_VALUE)
  6384. {
  6385. SetFilePointer(file,0x2CEE4,NULL,FILE_BEGIN);
  6386. ReadFile(file,&start,4,&read,NULL);
  6387. if (start&0x8000000)
  6388. {
  6389. SetFilePointer(file,start&0x07FFFFFF,NULL,FILE_BEGIN);
  6390. i=SendMessage(GetDlgItem(PickupWin,5),LB_GETCURSEL,0,0);
  6391. GetDlgItemText(PickupWin,3,buf,1024);
  6392. start=GetItemIDRom(buf,RomOpen2);
  6393. if (start!=-1)
  6394. {
  6395. GetItemNameRom(buf2,start,RomOpen2);
  6396. sprintf(buf,"%02u - %s",i+1,buf2);
  6397. SendMessage(GetDlgItem(PickupWin,5),LB_DELETESTRING,i,0);
  6398. SendMessage(GetDlgItem(PickupWin,5),LB_ADDSTRING,0,(LPARAM)buf);
  6399. SendMessage(GetDlgItem(PickupWin,5),LB_SETCURSEL,i,0);
  6400. *(unsigned short*)(PickupBuf+(i<<2))=start;
  6401. }
  6402. GetDlgItemText(PickupWin,4,buf,sizeof(buf));
  6403. sscanf(buf,"%u",&start);
  6404. *(unsigned short*)(PickupBuf+(i<<2)+2)=start;
  6405. WriteFile(file,PickupBuf,0x40,&read,NULL);
  6406. }
  6407. else
  6408. {
  6409. MessageBox(MainWnd,GetString1(3098),GetString2(3028),0x30);
  6410. }
  6411. CloseHandle(file);
  6412. }
  6413. break;
  6414. case 2:
  6415. case 2000:
  6416. ShowWindow(PickupWin,SW_HIDE);
  6417. break;
  6418. case 6:
  6419. SendMessage(GetDlgItem(PickupWin,3),CB_RESETCONTENT,0,0);
  6420. SendMessage(GetDlgItem(PickupWin,5),LB_RESETCONTENT,0,0);
  6421. if (SendMessage(GetDlgItem(PickupWin,1000),TCM_GETCURSEL,0,0)==0)
  6422. {
  6423. FillItemNames(GetDlgItem(PickupWin,3),RomOpen2);
  6424. fileM=CreateFile(RomOpen2,GENERIC_READ,
  6425. FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
  6426. NULL,OPEN_EXISTING,0,NULL);
  6427. if (fileM!=INVALID_HANDLE_VALUE)
  6428. {
  6429. SetFilePointer(fileM,0x2CEE4,NULL,FILE_BEGIN);
  6430. ReadFile(fileM,&start,4,&read,NULL);
  6431. if (start&0x8000000)
  6432. {
  6433. SetFilePointer(fileM,start&0x07FFFFFF,NULL,FILE_BEGIN);
  6434. ReadFile(fileM,PickupBuf,0x40,&read,NULL);
  6435. start=*(unsigned short*)(PickupBuf);
  6436. SendMessage(GetDlgItem(PickupWin,3),CB_SETCURSEL,start,0);
  6437. sprintf(buf,"%u",*(unsigned short*)(PickupBuf+2));
  6438. SetDlgItemText(PickupWin,4,buf);
  6439. for (i=0;i<16;i++)
  6440. {
  6441. start=*(unsigned short*)(PickupBuf+(i<<2));
  6442. GetItemNameRom(buf2,start,RomOpen2);
  6443. sprintf(buf,"%02u - %s",i+1,buf2);
  6444. SendMessage(GetDlgItem(PickupWin,5),LB_ADDSTRING,0,(LPARAM)buf);
  6445. }
  6446. SendMessage(GetDlgItem(PickupWin,5),LB_SETCURSEL,0,0);
  6447. EnableWindow(GetDlgItem(PickupWin,1),1);
  6448. }
  6449. else
  6450. {
  6451. MessageBox(MainWnd,GetString1(3098),GetString2(3028),0x30);
  6452. }
  6453. CloseHandle(fileM);
  6454. }
  6455. }
  6456. break;
  6457. }
  6458. break;
  6459. case WM_CLOSE:
  6460. ShowWindow(PickupWin,SW_HIDE);
  6461. break;
  6462. default:
  6463. return 0;
  6464. }
  6465. return 1;
  6466. }
  6467. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement