-
Notifications
You must be signed in to change notification settings - Fork 0
/
droptool.c
138 lines (101 loc) · 2.99 KB
/
droptool.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
#include <windows.h>
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif
static HANDLE stdoutHandle;
static DWORD outModeInit;
void setupConsole(void) {
DWORD outMode = 0;
stdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE);
if(stdoutHandle == INVALID_HANDLE_VALUE) {
exit(GetLastError());
}
if(!GetConsoleMode(stdoutHandle, &outMode)) {
exit(GetLastError());
}
outModeInit = outMode;
// Enable ANSI escape codes
outMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
if(!SetConsoleMode(stdoutHandle, outMode)) {
exit(GetLastError());
}
}
void restoreConsole(void) {
// Reset colors
printf("\x1b[0m\x1b[0m");
// Reset console mode
if(!SetConsoleMode(stdoutHandle, outModeInit)) {
exit(GetLastError());
}
}
void printOpening();
int beginningAddress=0x10188;
int whichCharacter;
int main(void) {
setupConsole();
printOpening();
scanf("%d", &whichCharacter);
FILE *f;
unsigned char c[1];
f = fopen("pzfe.03", "r");
int OffsetMove=0,OffsetMoveRow=0;
printf(" 1 | 2 | 3 | 4 | 5 | 6 |\n");
for(int row=0;row<12;row++)
{
for(int col=0;col<6;col++)
{
fseek(f, (beginningAddress+(whichCharacter*192)+OffsetMove+OffsetMoveRow), SEEK_SET);
fread(c, sizeof(unsigned char), 1, f);
//printf("c[0] is %d",c[0]);
switch(c[0])
{
case 00:
printf("ERROR printing 00s");break;
case 1://blue
printf("\x1b[0m\x1b[44m");break;
case 2://yellow
printf("\x1b[0m\x1b[43m");break;
case 3://green
printf("\x1b[0m\x1b[42m");break;
case 4://red
printf("\x1b[0m\x1b[41m");break;
case 0x11://blue crash gem
printf("\x1b[30m\x1b[44m");break;
case 0x12://yellow crash gem
printf("\x1b[30m\x1b[43m");break;
case 0x13://green crash gem
printf("\x1b[30m\x1b[42m");break;
}
if(c[0]>0 && c[0]<=4){printf("|**|");}
else if(c[0]>=0x11 && c[0]<=0x13){printf("|CC|");}
printf("\x1b[0m\x1b[0m");
//if(OffsetMove<10)printf("-");
OffsetMove+=2;
}
printf(" %d\n",row+1);
OffsetMove=0;
OffsetMoveRow+=16;
}
scanf("%d", &whichCharacter); //because trashboat was crashing on exit, maybe the fclose
fclose(f);
restoreConsole();
return 0;
}
void printOpening()
{
printf("SPF2T character drop pattern reader\n");
printf("-----------------------------------\n");
printf("0: Morrigan\n");
printf("1: Chun-Li\n");
printf("2: Ryu\n");
printf("3: Ken\n");
printf("4: Hsien-Ko\n");
printf("5: Donovan\n");
printf("6: Felicia\n");
printf("7: Sakura\n");
printf("8: Devilot\n");
printf("9: Akuma\n");
printf("10 (not A): Dan\n");
printf("input your selection:\n");
}