summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-11-15 21:47:21 +0800
committerIru Cai <mytbk920423@gmail.com>2018-11-15 21:47:21 +0800
commit7368fe7a82532fcfa29159fe9b87edd46ce34fc4 (patch)
tree8a4940f32c1f769e43353b6c611ab4aae0438b14
parentac2ff357f67b4c7fae69fdfaea4daf1c579e2440 (diff)
downloadrich4-7368fe7a82532fcfa29159fe9b87edd46ce34fc4.tar.xz
fcn_004190cf
-rw-r--r--csrc/drawing.c8
-rw-r--r--csrc/loadsave.c7
-rw-r--r--csrc/main.c37
3 files changed, 45 insertions, 7 deletions
diff --git a/csrc/drawing.c b/csrc/drawing.c
index e122baa..0c4addd 100644
--- a/csrc/drawing.c
+++ b/csrc/drawing.c
@@ -300,7 +300,7 @@ void player_say(int p, int t, const char *s)
IDirectDrawSurface_Lock(pddrawsf2, NULL, &sfdesc1, 1, 0);
st_46caec.f8 = sfdesc1.lpSurface;
struct graph_st * edi = crop_graph(&st_46caec, NULL, 0, 40, 440, 220);
- fullscreen_overlay(sfdesc1.lpSurface, dw_48bad8+0x54, 220, 130);
+ fullscreen_overlay(sfdesc1.lpSurface, data_0205->chunk_tab[6], 220, 130);
ecx = dword [p * 0x34 + 0x498eb0];
edx = t + 1;
eax = edx * 12;
@@ -316,10 +316,8 @@ void player_say(int p, int t, const char *s)
}
const char *s2 = s + esi;
if (s2[0] == '@') {
- eax = (s2[1] - '0') * 10 + (s2[2] - '0');
- edx = (eax - 1) * 12;
- eax = dw_48bad4 + 12 + edx;
- fullscreen_overlay(sfdesc1.lpSurface, eax, 240, 130);
+ int nn = (s2[1] - '0') * 10 + (s2[2] - '0');
+ fullscreen_overlay(sfdesc1.lpSurface, data_0207->chunk_tab[nn - 1], 240, 130);
if (esi == 5) {
eax = (s[1] - '0') * 1000 + (s[2] - '0') * 100 + (s[3] - '0') * 10 + (s[4] - '0');
fcn.0045441a(eax);
diff --git a/csrc/loadsave.c b/csrc/loadsave.c
index 26f35cb..583078d 100644
--- a/csrc/loadsave.c
+++ b/csrc/loadsave.c
@@ -93,6 +93,9 @@ label_40e082:
return ebx + 1;
}
+struct spr_smp *data_0205; // @ 0x48bad8
+struct spr_smp *data_0207; // @ 0x48bad4
+
void fcn_00407ad2()
{
fcn_004080f5();
@@ -252,8 +255,8 @@ void fcn_00407ad2()
*(int16_t*)0x48bae0 = (int16_t)ebx;
}
fcn_00428caf();
- dw_48bad8 = read_mkf(mkf_data, 0x205, NULL, NULL);
- dw_48bad4 = read_mkf(mkf_data, 0x207, NULL, NULL);
+ data_0205 = read_mkf(mkf_data, 0x205, NULL, NULL);
+ data_0207 = read_mkf(mkf_data, 0x207, NULL, NULL);
for (int i = 0; i < 20; i++) {
dw_496930[i] = read_mkf(mkf_data, 396 + i, NULL, NULL);
}
diff --git a/csrc/main.c b/csrc/main.c
index aa31d7c..6a3a272 100644
--- a/csrc/main.c
+++ b/csrc/main.c
@@ -269,6 +269,43 @@ static void start_game_loop(int a0)
}
}
+char *panel_0; // @ 0x48be0c
+char *panel_1; // @ 0x475118
+char *panel_2; // @ 0x48be10
+char *panel_3; // @ 0x48be14
+char *panel_7; // @ 0x48be04
+char *panel_8; // @ 0x48be08
+char *panel_456[3]; // @ 0x48bdf8
+
+struct graph_st *gst_48bdcc;
+struct graph_st *gst_48bde0;
+RECT rect_48bdb8;
+
+static void fcn_004190cf()
+{
+ if (panel_1 != NULL)
+ return;
+
+ panel_0 = read_mkf(mkf_panel, 0, NULL, NULL);
+ panel_1 = read_mkf(mkf_panel, 1, NULL, NULL);
+ panel_2 = read_mkf(mkf_panel, 2, NULL, NULL);
+ panel_3 = read_mkf(mkf_panel, 3, NULL, NULL);
+ panel_7 = read_mkf(mkf_panel, 7, NULL, NULL);
+ panel_8 = read_mkf(mkf_panel, 8, NULL, NULL);
+
+ for (int i = 0; i < 3; i++) {
+ panel_456[i] = read_mkf(mkf_panel, i + 4, NULL, NULL);
+ }
+
+ gst_48bdcc = allocate_graph_st(200, 200, 0, 0);
+ gst_48bde0 = allocate_graph_st(data_0205->chunk_tab[0].width,
+ data_0205->chunk_tab[0].height, 0, 0);
+ rect_48bdb8.left = 220 - data_0205->chunk_tab[5].x;
+ rect_48bdb8.top = 140 - data_0205->chunk_tab[5].y;
+ rect_48bdb8.right = rect_48bdb8.left + data_0205->chunk_tab[5].width;
+ rect_48bdb8.bottom = rect_48bdb8.top + data_0205->chunk_tab[5].height;
+}
+
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,