through sub_8131338

This commit is contained in:
scnorton
2019-04-11 12:19:58 -04:00
parent 2bdcff73e6
commit b9e852193a
7 changed files with 260 additions and 421 deletions
-367
View File
@@ -5,373 +5,6 @@
.text
thumb_func_start sub_8131168
sub_8131168: @ 8131168
push {r4-r7,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r6, r1, 24
movs r4, 0
lsls r1, r0, 2
adds r1, r0
lsls r5, r1, 3
ldr r7, _081311AC @ =gTasks+0x8
_0813117C:
adds r0, r4, 0x7
lsls r0, 1
adds r0, r5
adds r0, r7
movs r2, 0
ldrsh r1, [r0, r2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _081311B0 @ =gSprites
adds r0, r1
bl DestroySprite
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _0813117C
cmp r6, 0
beq _081311B4
cmp r6, 0x1
beq _081311DC
b _081311EC
.align 2, 0
_081311AC: .4byte gTasks+0x8
_081311B0: .4byte gSprites
_081311B4:
ldr r0, _081311D0 @ =0x00001003
bl FreeSpriteTilesByTag
ldr r0, _081311D4 @ =0x00001002
bl FreeSpriteTilesByTag
ldr r4, _081311D8 @ =0x00001001
adds r0, r4, 0
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
b _081311EC
.align 2, 0
_081311D0: .4byte 0x00001003
_081311D4: .4byte 0x00001002
_081311D8: .4byte 0x00001001
_081311DC:
movs r4, 0x80
lsls r4, 5
adds r0, r4, 0
bl FreeSpriteTilesByTag
adds r0, r4, 0
bl FreeSpritePaletteByTag
_081311EC:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8131168
thumb_func_start sub_81311F4
sub_81311F4: @ 81311F4
push {r4-r6,lr}
sub sp, 0x24
lsls r0, 16
lsrs r0, 16
adds r2, r0, 0
lsls r1, 16
lsrs r4, r1, 16
cmp r0, 0x1
beq _08131230
cmp r0, 0x1
bgt _08131210
cmp r0, 0
beq _0813121A
b _081312F6
_08131210:
cmp r2, 0x2
beq _08131248
cmp r2, 0x3
beq _0813126C
b _081312F6
_0813121A:
ldr r0, _08131228 @ =gUnknown_84615FC
movs r1, 0x40
movs r2, 0x40
bl LoadPalette
ldr r0, _0813122C @ =gUnknown_846163C
b _08131254
.align 2, 0
_08131228: .4byte gUnknown_84615FC
_0813122C: .4byte gUnknown_846163C
_08131230:
ldr r0, _08131240 @ =gUnknown_8460ED4
movs r1, 0x40
movs r2, 0x40
bl LoadPalette
ldr r0, _08131244 @ =gUnknown_8460F14
b _08131254
.align 2, 0
_08131240: .4byte gUnknown_8460ED4
_08131244: .4byte gUnknown_8460F14
_08131248:
ldr r0, _08131260 @ =gUnknown_84623AC
movs r1, 0x60
movs r2, 0x40
bl LoadPalette
ldr r0, _08131264 @ =gUnknown_84623EC
_08131254:
ldr r2, _08131268 @ =0x06000600
adds r1, r4, r2
bl LZ77UnCompVram
b _08131280
.align 2, 0
_08131260: .4byte gUnknown_84623AC
_08131264: .4byte gUnknown_84623EC
_08131268: .4byte 0x06000600
_0813126C:
ldr r0, _08131300 @ =gUnknown_8461CD4
movs r1, 0x60
movs r2, 0x40
bl LoadPalette
ldr r0, _08131304 @ =gUnknown_8461D14
ldr r2, _08131308 @ =0x06000600
adds r1, r4, r2
bl LZ77UnCompVram
_08131280:
movs r0, 0x60
bl AllocZeroed
ldr r2, _0813130C @ =sOakSpeechResources
ldr r1, [r2]
str r0, [r1, 0x4]
movs r1, 0
lsrs r6, r4, 6
_08131290:
ldr r0, [r2]
ldr r0, [r0, 0x4]
adds r0, r1
strb r1, [r0]
adds r1, 0x1
cmp r1, 0x5F
bls _08131290
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
movs r5, 0x10
str r5, [sp, 0x8]
movs r0, 0x2
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect
ldr r4, _0813130C @ =sOakSpeechResources
ldr r0, [r4]
ldr r1, [r0, 0x4]
movs r3, 0x8
str r3, [sp]
movs r2, 0xC
str r2, [sp, 0x4]
movs r0, 0xB
str r0, [sp, 0x8]
movs r0, 0x2
str r0, [sp, 0xC]
str r3, [sp, 0x10]
str r2, [sp, 0x14]
str r5, [sp, 0x18]
adds r0, r6, 0
adds r0, 0x18
str r0, [sp, 0x1C]
movs r5, 0
str r5, [sp, 0x20]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl CopyRectToBgTilemapBufferRect
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldr r0, [r4]
ldr r0, [r0, 0x4]
bl Free
ldr r0, [r4]
str r5, [r0, 0x4]
_081312F6:
add sp, 0x24
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08131300: .4byte gUnknown_8461CD4
_08131304: .4byte gUnknown_8461D14
_08131308: .4byte 0x06000600
_0813130C: .4byte sOakSpeechResources
thumb_func_end sub_81311F4
thumb_func_start sub_8131310
sub_8131310: @ 8131310
push {lr}
sub sp, 0xC
movs r0, 0x8
str r0, [sp]
movs r0, 0xC
str r0, [sp, 0x4]
movs r0, 0x10
str r0, [sp, 0x8]
movs r0, 0x2
movs r1, 0
movs r2, 0xB
movs r3, 0x1
bl FillBgTilemapBufferRect
movs r0, 0x2
bl CopyBgTilemapBufferToVram
add sp, 0xC
pop {r0}
bx r0
thumb_func_end sub_8131310
thumb_func_start sub_8131338
sub_8131338: @ 8131338
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
lsls r0, 24
lsrs r6, r0, 24
movs r4, 0
ldr r1, _081313A8 @ =gTasks
lsls r0, r6, 2
mov r9, r0
adds r0, r6
lsls r5, r0, 3
adds r2, r5, r1
ldrh r3, [r2, 0xA]
movs r7, 0xA
ldrsh r0, [r2, r7]
mov r8, r1
cmp r0, 0
bne _081313B0
movs r1, 0x8
ldrsh r0, [r2, r1]
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
add r1, r8
movs r0, 0x1
strh r0, [r1, 0xC]
adds r0, r6, 0
bl DestroyTask
ldr r6, _081313AC @ =gSprites
adds r2, r5, 0
mov r5, r8
adds r5, 0x8
movs r3, 0x4
_08131380:
adds r0, r4, 0x7
lsls r0, 1
adds r0, r2
adds r0, r5
movs r7, 0
ldrsh r1, [r0, r7]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r6
adds r0, 0x3E
ldrb r1, [r0]
orrs r1, r3
strb r1, [r0]
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _08131380
b _0813143A
.align 2, 0
_081313A8: .4byte gTasks
_081313AC: .4byte gSprites
_081313B0:
ldrh r1, [r2, 0x10]
movs r7, 0x10
ldrsh r0, [r2, r7]
cmp r0, 0
beq _081313C0
subs r0, r1, 0x1
strh r0, [r2, 0x10]
b _0813143A
_081313C0:
ldrh r0, [r2, 0xE]
strh r0, [r2, 0x10]
subs r1, r3, 0x1
strh r1, [r2, 0xA]
ldrh r0, [r2, 0xC]
adds r0, 0x1
strh r0, [r2, 0xC]
lsls r1, 16
asrs r1, 16
mov r12, r9
cmp r1, 0x8
bne _0813141E
adds r7, r5, 0
movs r0, 0x8
add r0, r8
mov r10, r0
movs r5, 0x1
movs r1, 0x5
negs r1, r1
mov r9, r1
_081313E8:
adds r0, r4, 0x7
lsls r0, 1
adds r0, r7
add r0, r10
movs r2, 0
ldrsh r0, [r0, r2]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
ldr r0, _08131448 @ =gSprites
adds r2, r0
adds r2, 0x3E
ldrb r3, [r2]
lsls r1, r3, 29
lsrs r1, 31
eors r1, r5
ands r1, r5
lsls r1, 2
mov r0, r9
ands r0, r3
orrs r0, r1
strb r0, [r2]
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x2
bls _081313E8
_0813141E:
mov r1, r12
adds r0, r1, r6
lsls r0, 3
add r0, r8
movs r2, 0xC
ldrsh r1, [r0, r2]
lsls r1, 8
ldrh r0, [r0, 0xA]
adds r1, r0
lsls r1, 16
lsrs r1, 16
movs r0, 0x52
bl SetGpuReg
_0813143A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08131448: .4byte gSprites
thumb_func_end sub_8131338
thumb_func_start sub_813144C
sub_813144C: @ 813144C
push {r4-r7,lr}
+3 -49
View File
@@ -5,56 +5,10 @@
.align 2
// oak_speech
gUnknown_8460D94:: @ 8460D94
.incbin "baserom.gba", 0x460D94, 0xA0
gUnknown_8460E34:: @ 8460E34
.incbin "baserom.gba", 0x460E34, 0xA0
gUnknown_8460ED4:: @ 8460ED4
.incbin "baserom.gba", 0x460ED4, 0x40
gUnknown_8460F14:: @ 8460F14
.incbin "baserom.gba", 0x460F14, 0x6E8
gUnknown_84615FC:: @ 84615FC
.incbin "baserom.gba", 0x4615FC, 0x40
gUnknown_846163C:: @ 846163C
.incbin "baserom.gba", 0x46163C, 0x698
gUnknown_8461CD4:: @ 8461CD4
.incbin "baserom.gba", 0x461CD4, 0x40
gUnknown_8461D14:: @ 8461D14
.incbin "baserom.gba", 0x461D14, 0x698
gUnknown_84623AC:: @ 84623AC
.incbin "baserom.gba", 0x4623AC, 0x40
gUnknown_84623EC:: @ 84623EC
.incbin "baserom.gba", 0x4623EC, 0x5E4
gUnknown_84629D0::
.incbin "data/oak_speech/unk_84629D0.gbapal"
gUnknown_84629F0::
.incbin "data/oak_speech/unk_84629F0.gbapal"
gUnknown_8462A10::
.incbin "data/oak_speech/unk_8462A10.4bpp.lz"
gUnknown_8462B74::
.incbin "data/oak_speech/unk_8462B74.4bpp.lz"
gUnknown_8462D34::
.incbin "data/oak_speech/unk_8462D34.4bpp.lz"
gUnknown_8462E18::
.incbin "data/oak_speech/unk_8462E18.4bpp.lz"
gUnknown_8462E58:: @ 8462E58
.incbin "baserom.gba", 0x462E58, 0xC
.4byte 0x000001f8
.4byte 0x000021e1
.4byte 0x00001bc2
gUnknown_8462E64:: @ 8462E64
window_template 0x00, 0x00, 0x07, 0x1e, 0x04, 0x0f, 0x0001
+35
View File
@@ -0,0 +1,35 @@
JASC-PAL
0100
32
115 197 164
255 238 205
246 205 180
213 164 148
172 131 106
106 74 65
205 164 139
164 123 98
115 74 49
74 41 16
222 222 222
180 180 180
131 131 131
82 82 90
41 41 49
255 255 255
0 0 0
131 189 213
106 156 180
82 131 156
49 90 115
32 65 90
0 0 255
255 255 189
222 222 82
172 172 57
98 98 0
213 131 123
189 106 98
164 82 74
139 57 49
98 24 16
+35
View File
@@ -0,0 +1,35 @@
JASC-PAL
0100
32
115 197 164
255 230 205
222 189 156
197 148 131
148 106 90
106 74 65
205 164 139
164 123 98
115 74 49
82 65 32
222 222 222
180 180 180
131 131 131
82 82 90
57 57 65
255 255 255
0 0 0
131 189 213
106 156 180
82 131 156
49 90 115
32 65 90
0 0 255
238 238 74
205 205 49
164 164 32
98 98 0
213 131 123
189 106 98
164 82 74
139 57 49
98 24 16
+35
View File
@@ -0,0 +1,35 @@
JASC-PAL
0100
32
115 197 164
255 230 205
222 189 156
197 148 115
106 74 65
238 222 148
205 189 115
172 156 90
139 123 65
98 90 49
255 0 255
205 205 222
123 131 156
57 74 106
255 255 255
0 0 0
0 0 255
172 148 222
131 115 172
82 65 115
230 222 180
205 197 156
180 172 139
164 156 123
123 115 90
82 57 49
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
+35
View File
@@ -0,0 +1,35 @@
JASC-PAL
0100
32
115 197 164
255 230 205
222 189 156
197 148 115
106 74 65
238 189 74
213 156 57
189 123 41
139 82 41
164 123 106
222 222 222
197 197 197
139 139 139
98 98 98
65 65 65
255 255 255
0 0 0
180 148 180
139 106 139
106 74 106
82 49 82
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
255 0 255
246 131 131
205 82 82
+117 -5
View File
@@ -29,7 +29,7 @@
struct OakSpeechResources
{
void * unk_0000;
u8 filler_0004[0x4];
void * unk_0004;
void * unk_0008;
u8 filler_000C[4];
u16 unk_0010;
@@ -96,7 +96,7 @@ static void CB2_ReturnFromNamingScreen(void);
static void CreateNidoranFSprite(u8 taskId);
void sub_8130FD4(u8 taskId, u8 state);
void sub_8131168(u8 taskId, u8 state);
void sub_81311F4(u8 arg0, u8 state);
void sub_81311F4(u16 whichPic, u16 tileOffset);
void sub_8131310(void);
void sub_813144C(u8 taskId, u8 state);
void sub_81315CC(u8 taskId, u8 state);
@@ -533,9 +533,22 @@ const u32 gUnknown_84605E8[] = INCBIN_U32("data/oak_speech/unk_84605E8.4bpp.lz")
const u32 gUnknown_8460BA8[] = INCBIN_U32("data/oak_speech/unk_8460BA8.bin.lz");
const u32 gUnknown_8460CA4[] = INCBIN_U32("data/oak_speech/unk_8460CA4.4bpp.lz");
const u32 gUnknown_8460CE8[] = INCBIN_U32("data/oak_speech/unk_8460CE8.bin.lz");
extern const u16 gUnknown_8460D94[];
extern const u16 gUnknown_8460E34[];
const u16 gUnknown_8460D94[] = INCBIN_U16("data/oak_speech/unk_8460D94.bin");
const u16 gUnknown_8460E34[] = INCBIN_U16("data/oak_speech/unk_8460E34.bin");
const u16 gUnknown_8460ED4[] = INCBIN_U16("data/oak_speech/unk_8460ED4.gbapal");
const u32 gUnknown_8460F14[] = INCBIN_U32("data/oak_speech/unk_8460F14.8bpp.lz");
const u16 gUnknown_84615FC[] = INCBIN_U16("data/oak_speech/unk_84615FC.gbapal");
const u32 gUnknown_846163C[] = INCBIN_U32("data/oak_speech/unk_846163C.8bpp.lz");
const u16 gUnknown_8461CD4[] = INCBIN_U16("data/oak_speech/unk_8461CD4.gbapal");
const u32 gUnknown_8461D14[] = INCBIN_U32("data/oak_speech/unk_8461D14.8bpp.lz");
const u16 gUnknown_84623AC[] = INCBIN_U16("data/oak_speech/unk_84623AC.gbapal");
const u32 gUnknown_84623EC[] = INCBIN_U32("data/oak_speech/unk_84623EC.8bpp.lz");
const u16 gUnknown_84629D0[] = INCBIN_U16("data/oak_speech/unk_84629D0.gbapal");
const u16 gUnknown_84629F0[] = INCBIN_U16("data/oak_speech/unk_84629F0.gbapal");
const u32 gUnknown_8462A10[] = INCBIN_U32("data/oak_speech/unk_8462A10.4bpp.lz");
const u32 gUnknown_8462B74[] = INCBIN_U32("data/oak_speech/unk_8462B74.4bpp.lz");
const u32 gUnknown_8462D34[] = INCBIN_U32("data/oak_speech/unk_8462D34.4bpp.lz");
const u32 gUnknown_8462E18[] = INCBIN_U32("data/oak_speech/unk_8462E18.4bpp.lz");
extern const struct BgTemplate gUnknown_8462E58[3];
extern const struct WindowTemplate *const gUnknown_8462EB4[3];
@@ -1845,3 +1858,102 @@ void sub_8130FD4(u8 taskId, u8 state)
break;
}
}
void sub_8131168(u8 taskId, u8 state)
{
u8 i;
for (i = 0; i < 3; i++)
{
DestroySprite(&gSprites[gTasks[taskId].data[7 + i]]);
}
switch (state)
{
case 0:
FreeSpriteTilesByTag(0x1003);
FreeSpriteTilesByTag(0x1002);
FreeSpriteTilesByTag(0x1001);
FreeSpritePaletteByTag(0x1001);
break;
case 1:
FreeSpriteTilesByTag(0x1000);
FreeSpritePaletteByTag(0x1000);
break;
}
}
void sub_81311F4(u16 whichPic, u16 tileOffset)
{
u32 i;
switch (whichPic)
{
case 0: // FIRE
LoadPalette(gUnknown_84615FC, 0x40, 0x40);
LZ77UnCompVram(gUnknown_846163C, (void *)0x06000600 + tileOffset);
break;
case 1: // LEAF
LoadPalette(gUnknown_8460ED4, 0x40, 0x40);
LZ77UnCompVram(gUnknown_8460F14, (void *)0x06000600 + tileOffset);
break;
case 2: // BLUE
LoadPalette(gUnknown_84623AC, 0x60, 0x40);
LZ77UnCompVram(gUnknown_84623EC, (void *)0x06000600 + tileOffset);
break;
case 3: // OAK
LoadPalette(gUnknown_8461CD4, 0x60, 0x40);
LZ77UnCompVram(gUnknown_8461D14, (void *)0x06000600 + tileOffset);
break;
default:
return;
}
sOakSpeechResources->unk_0004 = AllocZeroed(0x60);
for (i = 0; i < 0x60; i++)
((u8 *)sOakSpeechResources->unk_0004)[i] = i;
FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x10);
CopyRectToBgTilemapBufferRect(2, sOakSpeechResources->unk_0004, 0, 0, 8, 12, 11, 2, 8, 12, 0x10, (tileOffset / 64) + 0x18, 0x00);
CopyBgTilemapBufferToVram(2);
Free(sOakSpeechResources->unk_0004);
sOakSpeechResources->unk_0004 = 0;
}
void sub_8131310(void)
{
FillBgTilemapBufferRect(2, 0x000, 11, 1, 8, 12, 0x10);
CopyBgTilemapBufferToVram(2);
}
void sub_8131338(u8 taskId)
{
u8 i = 0;
if (gTasks[taskId].data[1] == 0)
{
gTasks[gTasks[taskId].data[0]].data[2] = 1;
DestroyTask(taskId);
for (i = 0; i < 3; i++)
{
gSprites[gTasks[taskId].data[7 + i]].invisible = TRUE;
}
}
else
{
if (gTasks[taskId].data[4] != 0)
gTasks[taskId].data[4]--;
else
{
gTasks[taskId].data[4] = gTasks[taskId].data[3];
gTasks[taskId].data[1]--;
gTasks[taskId].data[2]++;
if (gTasks[taskId].data[1] == 8)
{
for (i = 0; i < 3; i++)
{
gSprites[gTasks[taskId].data[7 + i]].invisible ^= TRUE;
}
}
SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[2] * 256) + gTasks[taskId].data[1]);
}
}
}