Skip to content

Commit 8fee860

Browse files
authored
Merge pull request #159 from Kelebek1/fragment19
fragment19
2 parents 23bb731 + 3b19f10 commit 8fee860

File tree

5 files changed

+175
-13
lines changed

5 files changed

+175
-13
lines changed

src/controller.h

+18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
#ifndef _CONTROLLER_H_
22
#define _CONTROLLER_H_
33

4+
#define BTN_A 0x8000
5+
#define BTN_B 0x4000
6+
#define BTN_Z 0x2000
7+
#define BTN_START 0x1000
8+
#define BTN_DUP 0x0800
9+
#define BTN_DDOWN 0x0400
10+
#define BTN_DLEFT 0x0200
11+
#define BTN_DRIGHT 0x0100
12+
#define BTN_L 0x0020
13+
#define BTN_R 0x0010
14+
#define BTN_CUP 0x0008
15+
#define BTN_CDOWN 0x0004
16+
#define BTN_CLEFT 0x0002
17+
#define BTN_CRIGHT 0x0001
18+
19+
#define BTN_IS_PRESSED(controller, combo) (((controller)->buttonPressed & (combo)) != 0)
20+
#define BTN_IS_DOWN(controller, combo) (((controller)->buttonDown & (combo)) != 0)
21+
422
typedef struct Controller {
523
/* 0x00 */ s16 contId;
624
/* 0x02 */ s16 rawStickX;

src/fragments/19/fragment19.c

+138-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,146 @@
1-
#include "global.h"
1+
#include "fragment19.h"
2+
#include "src/12D80.h"
3+
#include "src/19840.h"
4+
#include "src/1C720.h"
5+
#include "src/1CF30.h"
6+
#include "src/3FB0.h"
7+
#include "src/6A40.h"
8+
#include "src/6BC0.h"
9+
#include "src/fragments/3/fragment3.h"
10+
#include "src/memory.h"
11+
#include "src/stage_loader.h"
12+
#include "src/geo_layout.h"
213

3-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D00020.s")
14+
static u32 D_86D00530[] = {
15+
0x0C00FFFF, 0x05000000, 0x0B00001E, 0x00000000, 0x014000F0, 0x0000000F, 0x00000000, 0x00000000, 0x05000000,
16+
0x0D000000, 0x05000000, 0x0F000002, 0x05000000, 0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064,
17+
0x00640000, 0x05000000, 0x06000000, 0x06000000, 0x14000000, 0x002B0012, 0xFFFFFF32, 0x16FFFFFF, 0x0F000003,
18+
0x05000000, 0x0A000000, &D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000, 0x00000000,
19+
};
420

5-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D000A8.s")
21+
void func_86D00020(void) {
22+
D_87906054 = D_87906050->unk_00.unk_0C;
623

7-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D000D0.s")
24+
D_87906060 = 0xA00;
25+
D_87906062 = 0;
26+
D_87906064 = 0x17C;
27+
D_87906066 = 0x1E;
28+
D_87906068 = 0x32;
29+
D_8790606A = 0x1900;
830

9-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D00134.s")
31+
D_8790606C.x = 0;
32+
D_8790606C.y = 0x1E;
33+
D_8790606C.z = 0;
1034

11-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D0015C.s")
35+
func_87900B64();
36+
}
1237

13-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D0032C.s")
38+
void func_86D000A8(void) {
39+
func_87900C5C();
40+
func_87900B64();
41+
}
1442

15-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D0037C.s")
43+
void func_86D000D0(UNUSED s32 arg0) {
44+
func_800079C4();
45+
func_8000699C(&gDisplayListHead, 1);
46+
func_80015348();
47+
func_80015094(&D_87906050->unk_00);
1648

17-
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/19/fragment19/func_86D003EC.s")
49+
if (D_87903DB0 != 0) {
50+
func_87900F44();
51+
}
52+
53+
func_80007778();
54+
}
55+
56+
void func_86D00134(void) {
57+
func_80006C6C(0x10);
58+
D_87903DC4 = 3;
59+
}
60+
61+
void func_86D0015C(void) {
62+
s32 var_s1 = 1;
63+
64+
while (var_s1 != 0) {
65+
func_87900528();
66+
67+
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A)) {
68+
func_879037D0(0.2f, 0.0f, 50.0f, 50.0f, 0x2000, 0, 0x1000);
69+
}
70+
71+
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_B)) {
72+
func_87903838(0.2f, 50.0f, 50.0f, 50.0f, 0, 0, 0);
73+
}
74+
75+
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_CLEFT)) {
76+
func_879038AC(0.2f, -50.0f, 50.0f, 50.0f, -0x6000, 0, 0x2000);
77+
}
78+
79+
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_Z)) {
80+
D_87903DB0 = (D_87903DB0 + 1) & 1;
81+
}
82+
83+
if ((D_87903DB0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_START)) {
84+
D_87903DA0 = 1;
85+
}
86+
87+
func_8790370C();
88+
func_86D000A8();
89+
90+
if ((D_87903DB0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_CDOWN)) {
91+
var_s1 = 0;
92+
}
93+
94+
func_86D000D0(1);
95+
}
96+
}
97+
98+
void func_86D0032C(void) {
99+
s32 i;
100+
101+
func_80006CB4(0x1E);
102+
103+
for (i = 0; i < 30; i++) {
104+
func_87900528();
105+
func_86D000D0(2);
106+
}
107+
}
108+
109+
void func_86D0037C(void) {
110+
UNUSED s32 pad[2];
111+
MemoryBlock* sp1C = func_80002D10(main_pool_get_available(), 0);
112+
113+
D_87906050 = process_geo_layout(sp1C, &D_86D00530);
114+
func_80002D60(sp1C);
115+
func_8001BB20();
116+
func_8001987C();
117+
func_87903600();
118+
func_86D00020();
119+
}
120+
121+
s32 func_86D003EC(s32 arg0, s32 arg1) {
122+
unk_func_80007444* sp24;
123+
124+
main_pool_push_state('MINI');
125+
126+
func_80005E40(0x20000, 0);
127+
sp24 = func_80007444(0, 1, 3, 1, 2, 1);
128+
func_8001E94C(6, 0);
129+
130+
ASSET_LOAD(D_1000000, common_menu1_ui, 0);
131+
FRAGMENT_LOAD(fragment31);
132+
func_80004454((((u32)D_8D000000 & 0x0FF00000) >> 0x14) - 0x10, _5C7A70_ROM_START, pokedex_area_model_ROM_START);
133+
134+
func_86D0037C();
135+
func_80007678(sp24);
136+
func_86D00134();
137+
func_86D0015C();
138+
func_86D0032C();
139+
func_800076C0();
140+
func_8001E9CC();
141+
func_80005EAC();
142+
143+
main_pool_pop_state('MINI');
144+
145+
return 0;
146+
}

src/fragments/19/fragment19.h

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#ifndef _FRAGMENT19_H_
2+
#define _FRAGMENT19_H_
3+
4+
#include "global.h"
5+
6+
void func_86D00020(void);
7+
void func_86D000A8(void);
8+
void func_86D000D0(UNUSED s32 arg0);
9+
void func_86D00134(void);
10+
void func_86D0015C(void);
11+
void func_86D0032C(void);
12+
void func_86D0037C(void);
13+
s32 func_86D003EC(s32 arg0, s32 arg1);
14+
15+
#endif // _FRAGMENT19_H_

src/geo_layout.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,6 @@ void func_800189B8(void); // cmd 35
351351
void func_80018A40(void); // cmd 36
352352
void func_80018A8C(void); // cmd 37
353353
void func_80018AD0(void); // cmd 38
354-
struct GraphNode* process_geo_layout(MemoryBlock*, void*);
354+
GraphNode* process_geo_layout(MemoryBlock*, void*);
355355

356356
#endif // _18480_H_

yamls/us/rom.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1052,10 +1052,10 @@
10521052
subsegments:
10531053
- [0x17FB40, textbin, fragments/19/fragment19_header]
10541054
- [0x17FB60, c, fragments/19/fragment19]
1055-
- [0x180070, data, fragments/19/fragment19_data]
1056-
- [0x180100, rodata, fragments/19/fragment19_rodata]
1055+
- [0x180070, .data, fragments/19/fragment19]
1056+
- [0x180100, .rodata, fragments/19/fragment19]
10571057

1058-
- {vram: 0x86D005D0, type: bss, name: fragments/19/fragment19_bss}
1058+
- {vram: 0x86D005D0, type: .bss, name: fragments/19/fragment19}
10591059

10601060
- name: fragment19_relocs
10611061
type: code

0 commit comments

Comments
 (0)