Skip to content

Commit 257d7b9

Browse files
committed
map5_s03: decode header
This is the map with the newspaper event flag issue, the `mapEvents_24` pointer points to s_EventParams which can be patched to fix it. Right now s_EventParams has too many unk fields to be worth decoding though, MapExaminer has a few named, but maybe best to wait till we find code that's making use of them
1 parent ee809d3 commit 257d7b9

10 files changed

Lines changed: 1905 additions & 17 deletions

File tree

configs/maps/map5_s03.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ segments:
5454
subalign: 4
5555
subsegments:
5656
# .rodata section
57-
- [0x0, .rodata, map5_s03]
57+
- [0x0, rodata]
58+
- [0x4, .rodata, map5_s03_header]
59+
- [0x1050, .rodata, map5_s03]
5860
- [0x1398, .rodata, Chara_Kaufmann]
5961
- [0x1464, rodata]
6062
- [0x1468, .rodata, map5_s03_2]
@@ -65,7 +67,9 @@ segments:
6567
- [0x6FD4, c, map5_s03_2]
6668

6769
# .data section
68-
- [0x9B18, data]
70+
- [0x9B18, .data, map5_s03_anim_info]
71+
- [0x9DB0, data]
72+
- [0xA110, .data, map5_s03_header]
6973
- [0xA32C, .data, map5_s03_2]
7074
- [0xA43C, data]
7175
- [0xDC00]

configs/maps/sym.map1_s03.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ MAP_MESSAGES = 0x800E19E0; // type:u32 size:0xC0
134134
//----------------------------------------------------
135135
//--- PA: 0x018528 VA: 0x800E1AA0 subsegment: data
136136
//----------------------------------------------------
137+
g_CommonWorldObjectPoses = 0x800E2020; // type:WorldObject_0 size:0xC8
137138
sharedData_800DFB4C_0_s00 = 0x800E20F0;
138139
sharedData_800DFB50_0_s00 = 0x800E20F4;
139140
g_Particle_SpeedX = 0x800E2104; // type:s32
@@ -175,7 +176,6 @@ sharedData_800E3A24_0_s00 = 0x800E6118; // type:s32
175176
sharedData_800E3A28_0_s00 = 0x800E611C; // type:s32
176177
sharedData_800E3A2C_0_s00 = 0x800E6120; // type:s32
177178
sharedData_800E57CC_1_s02 = 0x800E6124; // type:s8
178-
g_CommonWorldObjectPoses = 0x800E2020; // type:WorldObject_0 size:0xC8
179179
g_WorldObject5 = 0x800E6130; // type:WorldObjectDesc size:0x2E
180180
g_WorldObject0 = 0x800E6180; // type:WorldObjectDesc size:0x2E
181181
g_WorldObject1 = 0x800E61B0; // type:WorldObjectDesc size:0x2E

configs/maps/sym.map5_s03.txt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,16 @@
66
//================================================
77

88

9+
//------------------------------------------------------
10+
//--- PA: 0x000000 VA: 0x800C9578 subsegment: rodata
11+
//------------------------------------------------------
12+
13+
//------------------------------------------------------------------------
14+
//--- PA: 0x000004 VA: 0x800C957C subsegment: .rodata, map5_s03_header
15+
//------------------------------------------------------------------------
16+
917
//-----------------------------------------------------------------
10-
//--- PA: 0x000000 VA: 0x800C9578 subsegment: .rodata, map5_s03
18+
//--- PA: 0x001050 VA: 0x800CA5C8 subsegment: .rodata, map5_s03
1119
//-----------------------------------------------------------------
1220

1321
//-----------------------------------------------------------------------
@@ -113,12 +121,18 @@ MapEvent_CommonItemTake = 0x800D159C; // type:func
113121
//================================================
114122

115123

116-
//----------------------------------------------------
117-
//--- PA: 0x009B18 VA: 0x800D3090 subsegment: data
118-
//----------------------------------------------------
124+
//-------------------------------------------------------------------------
125+
//--- PA: 0x009B18 VA: 0x800D3090 subsegment: .data, map5_s03_anim_info
126+
//-------------------------------------------------------------------------
119127
HARRY_M5S03_ANIM_INFOS = 0x800D3090;
128+
g_MapHeaderTable_38 = 0x800D3280;
129+
LOADABLE_INVENTORY_ITEMS = 0x800D3300;
120130
sharedData_800DD584_0_s00 = 0x800D3321; // type:u8
121131
sharedData_800DD588_0_s00 = 0x800D3324; // type:s32
132+
133+
//----------------------------------------------------
134+
//--- PA: 0x009DB0 VA: 0x800D3328 subsegment: data
135+
//----------------------------------------------------
122136
sharedData_800DF158_1_s02 = 0x800D332C; // type:u8
123137
sharedData_800DD591_0_s00 = 0x800D332D; // type:u8
124138
sharedData_800DD592_0_s00 = 0x800D332E; // type:u8
@@ -138,7 +152,13 @@ sharedData_800CFB3C_0_s02 = 0x800D3668; // type:u8 size:8
138152
sharedData_800CFB44_0_s02 = 0x800D3670; // type:u8 size:8
139153
sharedData_800CFB4C_0_s02 = 0x800D3678; // type:u8 size:8
140154
sharedData_800CFB54_0_s02 = 0x800D3680; // type:u8 size:8
155+
156+
//----------------------------------------------------------------------
157+
//--- PA: 0x00A110 VA: 0x800D3688 subsegment: .data, map5_s03_header
158+
//----------------------------------------------------------------------
159+
g_LoadScreenFuncs = 0x800D3688;
141160
MAP_POINTS = 0x800D3698; // type:MapPoint2d
161+
g_MapEventFuncs = 0x800D3878;
142162

143163
//-----------------------------------------------------------------
144164
//--- PA: 0x00A32C VA: 0x800D38A4 subsegment: .data, map5_s03_2
@@ -154,6 +174,7 @@ g_Particle_SpeedX = 0x800D3C48; // type:s32
154174
g_Particle_SpeedZ = 0x800D3C4C; // type:s32
155175
sharedData_800DFB6C_0_s00 = 0x800D3C50; // type:s32
156176
sharedData_800DFB70_0_s00 = 0x800D3C54; // type:s32
177+
g_Effect_BloodSplats = 0x800D4818;
157178
g_ParticleVectors0 = 0x800D4888; // type:ParticleVectors
158179
g_Particle_RotationY = 0x800D48AA; // type:s16
159180
g_ParticleVectors1 = 0x800D48B8; // type:ParticleVectors

include/maps/map5/map5_s03.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,26 @@ extern s_800D6F68 D_800D6F68;
4747

4848
extern VECTOR3 D_800D6F84;
4949

50+
s32 func_800CF648(void);
51+
52+
void func_800CF840(void);
53+
54+
void func_800CF848(void);
55+
56+
void func_800CF850(void);
57+
58+
void func_800CF858(void);
59+
60+
void func_800CF860(void);
61+
62+
s32 func_800CF868(void);
63+
64+
void func_800CF870(void);
65+
5066
void func_800D1004(s32 arg0);
5167

68+
void func_800D1340(void);
69+
5270
/** @brief Handles a Health Drink or Shotgun Shells item pickup event. */
5371
void MapEvent_CommonItemTake(void);
5472

include/maps/shared.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2632,6 +2632,13 @@ s32 sharedFunc_800D2FB4_0_s01(s_SubCharacter* chara, VECTOR3* playerPos, s32 pla
26322632
void sharedFunc_800D72E8_0_s01(s_SubCharacter* chara, s32 field_34, s32 rotationSpeedY);
26332633

26342634
void sharedFunc_800D6EC4_0_s01(s_SubCharacter* chara);
2635+
2636+
void MapEvent_DoorJammed(void);
2637+
2638+
void MapEvent_DoorLocked(void);
2639+
2640+
void MapEvent_DoorUnlocked(void);
2641+
26352642
/** @brief Gets the room index corresponding to the current 2D position.
26362643
*
26372644
* @param x X position in Q19.12.

src/maps/map5_s03/map5_s03.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55
#include "maps/shared.h"
66
#include "maps/map5/map5_s03.h"
77

8-
INCLUDE_RODATA("asm/maps/map5_s03/nonmatchings/map5_s03", D_800C9578);
9-
10-
INCLUDE_RODATA("asm/maps/map5_s03/nonmatchings/map5_s03", g_MapOverlayHeader);
11-
128
#include "maps/shared/sharedFunc_800CB6B0_0_s00.h" // 0x800CB8F4
139

1410
#include "maps/shared/sharedFunc_800CBBBC_0_s00.h" // 0x800CBD8C
@@ -57,7 +53,7 @@ INCLUDE_ASM("asm/maps/map5_s03/nonmatchings/map5_s03", sharedFunc_800CEFD0_1_s02
5753

5854
#include "maps/shared/sharedFunc_800D2244_0_s00.h" // 0x800CF470
5955

60-
s32 func_800CF648()
56+
s32 func_800CF648(void) // 0x800CF648
6157
{
6258
return 0;
6359
}
@@ -88,7 +84,7 @@ void func_800CF858(void) {}
8884

8985
void func_800CF860(void) {}
9086

91-
s32 func_800CF868()
87+
s32 func_800CF868(void)
9288
{
9389
return 0;
9490
}

src/maps/map5_s03/map5_s03_2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747

4848
#include "maps/shared/sharedFunc_800CE934_0_s02.h" // 0x800D10B4
4949

50-
void func_800D1340(void) {}
50+
void func_800D1340(void) {} // 0x800D1340
5151

5252
#include "maps/shared/SysWork_StateStepIncrementAfterTime.h" // 0x800D1348
5353

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#include "bodyprog/bodyprog.h"
2+
#include "bodyprog/math/math.h"
3+
4+
s_AnimInfo HARRY_M5S03_ANIM_INFOS[] = {
5+
{ Anim_Update2, ANIM_STATUS(38, false), false, ANIM_STATUS(38, true), { Q12(10.0f) }, NO_VALUE, 676 },
6+
{ Anim_Update0, ANIM_STATUS(38, true), false, ANIM_STATUS(38, true), { Q12(10.0f) }, 676, 677 },
7+
{ Anim_Update2, ANIM_STATUS(39, false), false, ANIM_STATUS(39, true), { Q12(10.0f) }, NO_VALUE, 678 },
8+
{ Anim_Update0, ANIM_STATUS(39, true), false, ANIM_STATUS(39, true), { Q12(15.0f) }, 678, 688 },
9+
{ Anim_Update2, ANIM_STATUS(40, false), false, ANIM_STATUS(40, true), { Q12(10.0f) }, NO_VALUE, 689 },
10+
{ Anim_Update0, ANIM_STATUS(40, true), false, ANIM_STATUS(40, true), { Q12(10.0f) }, 689, 724 },
11+
{ Anim_Update2, ANIM_STATUS(41, false), false, ANIM_STATUS(41, true), { Q12(10.0f) }, NO_VALUE, 729 },
12+
{ Anim_Update0, ANIM_STATUS(41, true), false, ANIM_STATUS(41, true), { Q12(15.0f) }, 729, 743 },
13+
{ Anim_Update2, ANIM_STATUS(42, false), false, ANIM_STATUS(42, true), { Q12(10.0f) }, NO_VALUE, 748 },
14+
{ Anim_Update0, ANIM_STATUS(42, true), false, ANIM_STATUS(42, true), { Q12(15.0f) }, 748, 762 },
15+
{ Anim_Update2, ANIM_STATUS(43, false), false, ANIM_STATUS(43, true), { Q12(10.0f) }, NO_VALUE, 769 },
16+
{ Anim_Update0, ANIM_STATUS(43, true), false, ANIM_STATUS(43, true), { Q12(10.0f) }, 769, 781 },
17+
{ Anim_Update2, ANIM_STATUS(44, false), false, ANIM_STATUS(44, true), { Q12(10.0f) }, NO_VALUE, 788 },
18+
{ Anim_Update0, ANIM_STATUS(44, true), false, ANIM_STATUS(44, true), { Q12(10.0f) }, 788, 800 },
19+
{ Anim_Update2, ANIM_STATUS(45, false), false, ANIM_STATUS(45, true), { Q12(10.0f) }, NO_VALUE, 801 },
20+
{ Anim_Update0, ANIM_STATUS(45, true), false, ANIM_STATUS(45, true), { Q12(15.0f) }, 801, 815 },
21+
{ Anim_Update2, ANIM_STATUS(46, false), false, ANIM_STATUS(46, true), { Q12(10.0f) }, NO_VALUE, 816 },
22+
{ Anim_Update0, ANIM_STATUS(46, true), false, ANIM_STATUS(46, true), { Q12(15.0f) }, 816, 827 },
23+
{ Anim_Update2, ANIM_STATUS(47, false), false, ANIM_STATUS(47, true), { Q12(10.0f) }, NO_VALUE, 828 },
24+
{ Anim_Update1, ANIM_STATUS(47, true), false, NO_VALUE, { Q12(6.0f) }, 828, 841 },
25+
{ Anim_Update2, ANIM_STATUS(48, false), false, ANIM_STATUS(48, true), { Q12(10.0f) }, NO_VALUE, 842 },
26+
{ Anim_Update1, ANIM_STATUS(48, true), false, NO_VALUE, { Q12(2.0f) }, 842, 845 },
27+
{ Anim_Update2, ANIM_STATUS(49, false), false, ANIM_STATUS(49, true), { Q12(10.0f) }, NO_VALUE, 846 },
28+
{ Anim_Update0, ANIM_STATUS(49, true), false, ANIM_STATUS(49, true), { Q12(10.0f) }, 846, 863 },
29+
{ Anim_Update2, ANIM_STATUS(50, false), false, ANIM_STATUS(50, true), { Q12(10.0f) }, NO_VALUE, 864 },
30+
{ Anim_Update0, ANIM_STATUS(50, true), false, ANIM_STATUS(50, true), { Q12(10.0f) }, 864, 900 },
31+
{ Anim_Update2, ANIM_STATUS(51, false), false, ANIM_STATUS(51, true), { Q12(10.0f) }, NO_VALUE, 901 },
32+
{ Anim_Update0, ANIM_STATUS(51, true), false, ANIM_STATUS(51, true), { Q12(10.0f) }, 901, 955 },
33+
{ Anim_Update2, ANIM_STATUS(52, false), false, ANIM_STATUS(52, true), { Q12(10.0f) }, NO_VALUE, 485 },
34+
{ Anim_Update0, ANIM_STATUS(52, true), false, ANIM_STATUS(52, true), { Q12(20.0f) }, 485, 502 },
35+
{}
36+
};
37+
38+
s_UnkStruct3_Mo g_MapHeaderTable_38[] = {
39+
{ 0x4D4C, 0x0, 0x2A4, 0x2A5 },
40+
{ 0x4F4E, 0xC8, 0x2A6, 0x2B0 },
41+
{ 0x5150, 0xCA, 0x2B1, 0x2D4 },
42+
{ 0x5352, 0xD2, 0x2D5, 0x2E7 },
43+
{ 0x5554, 0xD3, 0x2E8, 0x2FA },
44+
{ 0x5756, 0xD4, 0x2FB, 0x30D },
45+
{ 0x5958, 0xD5, 0x30E, 0x320 },
46+
{ 0x5B5A, 0x12C, 0x321, 0x32F },
47+
{ 0x5D5C, 0x12D, 0x330, 0x33B },
48+
{ 0x5F5E, 0x14B, 0x33C, 0x349 },
49+
{ 0x6160, 0x190, 0x34A, 0x34D },
50+
{ 0x6362, 0x1B2, 0x34E, 0x35F },
51+
{ 0x6564, 0x1BC, 0x360, 0x384 },
52+
{ 0x6766, 0x1CE, 0x385, 0x3BB },
53+
{ 0x6968, 0x1F4, 0x1E5, 0x1F6 },
54+
{},
55+
};
56+
57+
u8 LOADABLE_INVENTORY_ITEMS[] = {
58+
32,
59+
33,
60+
34,
61+
128,
62+
129,
63+
132,
64+
133,
65+
135,
66+
160,
67+
161,
68+
162,
69+
163,
70+
192,
71+
193,
72+
194,
73+
224,
74+
225,
75+
77,
76+
87,
77+
100,
78+
112,
79+
113,
80+
114,
81+
115,
82+
116,
83+
101,
84+
102,
85+
110,
86+
130,
87+
226,
88+
88,
89+
134,
90+
0,
91+
};
92+
93+
u8 sharedData_800DD584_0_s00 = 0;
94+
95+
s32 sharedData_800DD588_0_s00 = 0;

0 commit comments

Comments
 (0)