through sub_8104EC0

This commit is contained in:
PikalaxALT
2019-12-13 10:50:31 -05:00
parent 2b2e3dc3e7
commit e38355d255
3 changed files with 78 additions and 325 deletions
-322
View File
@@ -5,328 +5,6 @@
.text
thumb_func_start sub_8104C64
sub_8104C64: @ 8104C64
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x20
lsls r0, 16
lsrs r0, 16
mov r8, r0
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 24
movs r0, 0xFF
lsls r0, 24
adds r2, r0
lsrs r2, 24
mov r9, r2
ldr r1, _08104D50 @ =gUnknown_845228C
ldr r2, _08104D54 @ =gUnknown_8452334
mov r3, r9
lsls r0, r3, 2
adds r6, r0, r2
ldr r0, [r6]
lsls r4, r5, 2
adds r0, r4, r0
ldrb r2, [r0]
ldrb r3, [r0, 0x1]
movs r0, 0x8
str r0, [sp]
str r0, [sp, 0x4]
adds r0, r5, 0x5
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x8]
movs r0, 0x3
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r7, _08104D58 @ =gUnknown_203ACF0
ldr r0, [r7]
adds r0, 0x20
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, 0xFF
bne _08104D6C
ldr r0, _08104D5C @ =gUnknown_84521C4
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x18]
str r1, [sp, 0x1C]
ldr r0, [r6]
adds r0, r4, r0
ldrb r0, [r0]
lsls r0, 8
ldr r3, _08104D60 @ =0xffff00ff
ldr r2, [sp, 0x18]
ands r2, r3
orrs r2, r0
str r2, [sp, 0x18]
ldr r0, [r6]
adds r0, r4, r0
ldrb r1, [r0, 0x1]
lsls r1, 16
ldr r0, _08104D64 @ =0xff00ffff
ands r0, r2
orrs r0, r1
str r0, [sp, 0x18]
adds r1, r5, 0x1
lsls r1, 24
lsrs r1, 16
ldr r0, [sp, 0x1C]
ands r0, r3
orrs r0, r1
lsls r1, r5, 6
adds r1, 0x8
lsls r1, 16
ldr r2, _08104D68 @ =0x0000ffff
ands r0, r2
orrs r0, r1
str r0, [sp, 0x1C]
add r0, sp, 0x18
bl AddWindow
ldr r1, [r7]
adds r1, 0x20
adds r1, r5
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x20
adds r0, r5
ldrb r0, [r0]
movs r1, 0
bl FillWindowPixelBuffer
ldr r0, [r7]
adds r0, 0x20
adds r0, r5
ldrb r0, [r0]
lsls r2, r5, 20
movs r1, 0x80
lsls r1, 13
adds r2, r1
lsrs r2, 16
mov r1, r8
bl sub_81049FC
ldr r0, [r7]
adds r0, 0x20
adds r0, r5
ldrb r0, [r0]
bl PutWindowTilemap
ldr r0, [r7]
adds r0, 0x20
adds r0, r5
ldrb r0, [r0]
movs r1, 0x2
bl CopyWindowToVram
b _08104D72
.align 2, 0
_08104D50: .4byte gUnknown_845228C
_08104D54: .4byte gUnknown_8452334
_08104D58: .4byte gUnknown_203ACF0
_08104D5C: .4byte gUnknown_84521C4
_08104D60: .4byte 0xffff00ff
_08104D64: .4byte 0xff00ffff
_08104D68: .4byte 0x0000ffff
_08104D6C:
ldrb r0, [r1]
bl PutWindowTilemap
_08104D72:
ldr r6, _08104E60 @ =gUnknown_203ACF0
ldr r0, [r6]
adds r0, 0x24
adds r1, r0, r5
ldrb r0, [r1]
cmp r0, 0xFF
bne _08104E78
mov r3, r8
cmp r3, 0
beq _08104E7E
ldr r0, _08104E64 @ =gUnknown_84521CC
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [sp, 0x18]
str r1, [sp, 0x1C]
ldr r0, _08104E68 @ =gUnknown_8452334
mov r1, r9
lsls r2, r1, 2
adds r2, r0
ldr r0, [r2]
lsls r1, r5, 2
adds r0, r1, r0
ldrb r0, [r0, 0x2]
add r3, sp, 0x18
movs r4, 0
strb r0, [r3, 0x1]
ldr r0, [r2]
adds r0, r1, r0
ldrb r0, [r0, 0x3]
strb r0, [r3, 0x2]
adds r1, r5
lsls r1, 3
movs r0, 0x84
lsls r0, 1
adds r1, r0
strh r1, [r3, 0x6]
adds r0, r3, 0
bl AddWindow
ldr r1, [r6]
adds r1, 0x24
adds r1, r5
strb r0, [r1]
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
ldr r1, _08104E6C @ =gUnknown_8440124
movs r2, 0
movs r3, 0
bl CopyToWindowPixelBuffer
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
str r4, [sp]
movs r1, 0
mov r2, r8
movs r3, 0xC
bl sub_8104A34
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
movs r1, 0xB
mov r2, r8
muls r2, r1
ldr r1, _08104E70 @ =gSpeciesNames
adds r2, r1
movs r1, 0xD
str r1, [sp]
str r4, [sp, 0x4]
movs r1, 0x2
movs r3, 0x2
bl sub_81047C8
mov r0, r8
movs r1, 0x1
movs r2, 0x1
bl sub_8104AB0
lsls r0, 24
cmp r0, 0
beq _08104E42
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
ldr r1, _08104E74 @ =gUnknown_8443600
movs r3, 0x8
str r3, [sp]
str r3, [sp, 0x4]
movs r2, 0x2
str r2, [sp, 0x8]
movs r2, 0x3
str r2, [sp, 0xC]
str r3, [sp, 0x10]
str r3, [sp, 0x14]
movs r2, 0
movs r3, 0
bl BlitBitmapRectToWindow
_08104E42:
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
bl PutWindowTilemap
ldr r0, [r6]
adds r0, 0x24
adds r0, r5
ldrb r0, [r0]
movs r1, 0x2
bl CopyWindowToVram
b _08104E7E
.align 2, 0
_08104E60: .4byte gUnknown_203ACF0
_08104E64: .4byte gUnknown_84521CC
_08104E68: .4byte gUnknown_8452334
_08104E6C: .4byte gUnknown_8440124
_08104E70: .4byte gSpeciesNames
_08104E74: .4byte gUnknown_8443600
_08104E78:
ldrb r0, [r1]
bl PutWindowTilemap
_08104E7E:
movs r0, 0x1
add sp, 0x20
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8104C64
thumb_func_start sub_8104E90
sub_8104E90: @ 8104E90
push {r4,r5,lr}
movs r4, 0
ldr r5, _08104EBC @ =gUnknown_203ACF0
_08104E96:
adds r1, r4, 0
adds r1, 0x20
ldr r0, [r5]
adds r0, r1
bl sub_81047B0
adds r1, r4, 0
adds r1, 0x24
ldr r0, [r5]
adds r0, r1
bl sub_81047B0
adds r4, 0x1
cmp r4, 0x3
ble _08104E96
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08104EBC: .4byte gUnknown_203ACF0
thumb_func_end sub_8104E90
thumb_func_start sub_8104EC0
sub_8104EC0: @ 8104EC0
push {r4,r5,lr}
sub sp, 0x20
adds r4, r1, 0
adds r5, r2, 0
lsls r4, 16
lsrs r4, 16
lsls r5, 16
lsrs r5, 16
ldr r1, _08104F08 @ =gUnknown_8416002
mov r0, sp
bl StringCopy
adds r1, r0, 0
adds r1, r4, 0
movs r2, 0x1
movs r3, 0x2
bl ConvertIntToDecimalStringN
adds r1, r0, 0
movs r0, 0xBA
strb r0, [r1]
adds r1, 0x1
adds r0, r1, 0
adds r1, r5, 0
movs r2, 0x1
movs r3, 0x2
bl ConvertIntToDecimalStringN
mov r0, sp
movs r1, 0x2
bl sub_8106E78
add sp, 0x20
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08104F08: .4byte gUnknown_8416002
thumb_func_end sub_8104EC0
thumb_func_start sub_8104F0C
sub_8104F0C: @ 8104F0C
push {r4-r6,lr}
+1
View File
@@ -976,6 +976,7 @@ extern const u8 gUnknown_8415F3D[];
extern const u8 gUnknown_8415F4A[];
extern const u8 gUnknown_8415F66[];
extern const u8 gUnknown_8415FFF[];
extern const u8 gUnknown_8416002[];
// trainer card
extern const u8 gText_WaitingTrainerFinishReading[];
+77 -3
View File
@@ -21,6 +21,7 @@
#include "pokedex_screen.h"
#include "data.h"
#include "pokedex.h"
#include "string_util.h"
#include "trainer_pokemon_sprites.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -40,7 +41,9 @@ struct PokedexScreenData
u8 field_15;
u8 field_16;
u8 field_17;
u16 field_18[0x8];
u16 field_18[0x4];
u8 field_20[0x4];
u8 field_24[0x4];
u8 field_28;
u8 field_29;
u8 field_2A;
@@ -120,12 +123,14 @@ void sub_81067C0(void);
void sub_8106B34(void);
void sub_8106E78(const u8 *a0, s32 a1);
extern const u16 gUnknown_8440124[];
extern const u32 gUnknown_8440274[];
extern const u32 gUnknown_84403AC[];
extern const u16 gUnknown_84404C8[];
extern const u16 gUnknown_84406E0[];
extern const u16 gUnknown_8440EF0[];
extern const u16 gUnknown_8443460[];
extern const u8 gUnknown_8443600[];
extern const u16 gUnknown_8443FC0[];
extern const u16 gUnknown_84442F6[];
extern const u16 gUnknown_84448FE[];
@@ -136,15 +141,19 @@ extern const struct PokedexScreenData gUnknown_8451EE4;
extern const struct WindowTemplate gUnknown_8451F54;
extern const struct WindowTemplate gUnknown_8451F5C;
extern const struct WindowTemplate gUnknown_8451F64;
extern const struct WindowTemplate gUnknown_845216C;
extern const struct ListMenuTemplate gUnknown_8452174;
extern const struct ListMenuTemplate gUnknown_8452004;
extern const struct ListMenuTemplate gUnknown_84520BC;
extern const struct ScrollArrowsTemplate gUnknown_84520D4;
extern const struct ScrollArrowsTemplate gUnknown_84520E4;
extern const struct PokedexScreenWindowGfx gUnknown_84520F4[];
extern const struct WindowTemplate gUnknown_845216C;
extern const struct ListMenuTemplate gUnknown_8452174;
extern const struct ListMenuWindowRect gUnknown_845218C;
extern const struct ScrollArrowsTemplate gUnknown_84521B4;
extern const struct WindowTemplate gUnknown_84521C4;
extern const struct WindowTemplate gUnknown_84521CC;
extern const u16 gUnknown_845228C[];
extern const u8 (*const gUnknown_8452334[])[4];
extern const struct ScrollArrowsTemplate gUnknown_84524B4;
extern const struct CursorStruct gUnknown_84524C4;
@@ -1767,3 +1776,68 @@ void sub_8104C2C(const u8 *src)
{
sub_81047C8(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4);
}
bool8 sub_8104C64(u16 a0, u8 a1, u8 a2)
{
struct WindowTemplate template;
a2--;
CopyToBgTilemapBufferRect_ChangePalette(3, gUnknown_845228C, gUnknown_8452334[a2][a1][0], gUnknown_8452334[a2][a1][1], 8, 8, a1 + 5);
if (gUnknown_203ACF0->field_20[a1] == 0xFF)
{
template = gUnknown_84521C4;
template.tilemapLeft = gUnknown_8452334[a2][a1][0];
template.tilemapTop = gUnknown_8452334[a2][a1][1];
template.paletteNum = a1 + 1;
template.baseBlock = a1 * 64 + 8;
gUnknown_203ACF0->field_20[a1] = AddWindow(&template);
FillWindowPixelBuffer(gUnknown_203ACF0->field_20[a1], PIXEL_FILL(0));
sub_81049FC(gUnknown_203ACF0->field_20[a1], a0, a1 * 16 + 16);
PutWindowTilemap(gUnknown_203ACF0->field_20[a1]);
CopyWindowToVram(gUnknown_203ACF0->field_20[a1], 2);
}
else
PutWindowTilemap(gUnknown_203ACF0->field_20[a1]);
if (gUnknown_203ACF0->field_24[a1] == 0xFF)
{
if (a0 != SPECIES_NONE)
{
template = gUnknown_84521CC;
template.tilemapLeft = gUnknown_8452334[a2][a1][2];
template.tilemapTop = gUnknown_8452334[a2][a1][3];
template.baseBlock = a1 * 40 + 0x108;
gUnknown_203ACF0->field_24[a1] = AddWindow(&template);
CopyToWindowPixelBuffer(gUnknown_203ACF0->field_24[a1], gUnknown_8440124, 0, 0);
sub_8104A34(gUnknown_203ACF0->field_24[a1], 0, a0, 12, 0);
sub_81047C8(gUnknown_203ACF0->field_24[a1], 2, gSpeciesNames[a0], 2, 13, 0);
if (sub_8104AB0(a0, FLAG_GET_CAUGHT, TRUE))
BlitBitmapRectToWindow(gUnknown_203ACF0->field_24[a1], gUnknown_8443600, 0, 0, 8, 8, 2, 3, 8, 8);
PutWindowTilemap(gUnknown_203ACF0->field_24[a1]);
CopyWindowToVram(gUnknown_203ACF0->field_24[a1], 2);
}
}
else
PutWindowTilemap(gUnknown_203ACF0->field_24[a1]);
return TRUE;
}
void sub_8104E90(void)
{
int i;
for (i = 0; i < 4; i++)
{
sub_81047B0(&gUnknown_203ACF0->field_20[i]);
sub_81047B0(&gUnknown_203ACF0->field_24[i]);
}
}
void sub_8104EC0(u8 unused, u16 a1, u16 a2)
{
u8 buffer[30];
u8 *ptr = StringCopy(buffer, gUnknown_8416002);
ptr = ConvertIntToDecimalStringN(ptr, a1, STR_CONV_MODE_RIGHT_ALIGN, 2);
*ptr++ = CHAR_SLASH;
ptr = ConvertIntToDecimalStringN(ptr, a2, STR_CONV_MODE_RIGHT_ALIGN, 2);
sub_8106E78(buffer, 2);
}