more decomp

This commit is contained in:
Seth Barberee 2023-07-17 08:49:27 -07:00
parent 28f0516f56
commit 1098955bee
7 changed files with 386 additions and 986 deletions

View File

@ -1,335 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8094558
sub_8094558:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0xCC
adds r7, r0, 0
adds r4, r1, 0
adds r6, r2, 0
bl sub_80073B8
movs r5, 0
str r5, [sp]
movs r0, 0x10
movs r1, 0
adds r2, r4, 0
adds r3, r7, 0
bl xxx_format_and_draw
ldr r4, _080945D0
adds r1, r6, 0
adds r1, 0x18
adds r0, r4, 0
bl PrintYellowDungeonNametoBuffer
ldr r0, _080945D4
ldr r2, [r0]
str r5, [sp]
movs r0, 0x4
movs r1, 0x10
adds r3, r7, 0
bl xxx_format_and_draw
movs r5, 0x1A
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0xA
bl sub_80922B4
adds r4, 0x50
adds r1, r6, 0
adds r1, 0xA
adds r0, r4, 0
movs r2, 0xA
bl sub_80922B4
movs r1, 0x14
ldrsh r0, [r6, r1]
bl sub_8094528
lsls r0, 24
cmp r0, 0
beq _080945DC
ldr r0, _080945D8
ldr r0, [r0]
add r2, sp, 0xCC
add r1, sp, 0x4
movs r3, 0
bl xxx_format_string
b _080945EA
.align 2, 0
_080945D0: .4byte gAvailablePokemonNames
_080945D4: .4byte gUnknown_8113850
_080945D8: .4byte gUnknown_8113868
_080945DC:
ldr r0, _0809465C
ldr r0, [r0]
add r2, sp, 0xCC
add r1, sp, 0x4
movs r3, 0
bl xxx_format_string
_080945EA:
add r0, sp, 0x4
bl sub_8008ED0
movs r4, 0xB0
subs r0, r4, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
movs r1, 0
mov r8, r1
str r1, [sp]
adds r1, r5, 0
add r2, sp, 0x4
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0xA
movs r1, 0x14
ldrsh r0, [r6, r1]
add r1, sp, 0x4
bl sub_80944BC
add r0, sp, 0x4
bl sub_8008ED0
subs r4, r0
lsrs r0, r4, 31
adds r4, r0
asrs r0, r4, 1
mov r1, r8
str r1, [sp]
adds r1, r5, 0
add r2, sp, 0x4
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0x10
ldr r1, _08094660
ldr r0, [r6, 0x20]
str r0, [r1]
adds r0, r6, 0
adds r0, 0x2A
ldrb r0, [r0]
str r0, [r1, 0x4]
cmp r0, 0x63
ble _08094668
ldr r0, _08094664
ldr r2, [r0]
mov r0, r8
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _0809467A
.align 2, 0
_0809465C: .4byte gUnknown_8113870
_08094660: .4byte gUnknown_202DE30
_08094664: .4byte gUnknown_81138C0
_08094668:
ldr r0, _080946CC
ldr r2, [r0]
mov r1, r8
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_0809467A:
adds r5, 0xA
ldr r4, _080946D0
movs r1, 0x24
ldrsh r0, [r6, r1]
str r0, [r4]
ldr r0, _080946D4
ldr r2, [r0]
movs r0, 0
mov r8, r0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
adds r5, 0xA
adds r0, r6, 0
adds r0, 0x26
ldrb r2, [r0]
str r2, [r4]
adds r0, 0x2
ldrb r0, [r0]
str r0, [r4, 0x4]
adds r0, r6, 0
adds r0, 0x2B
ldrb r1, [r0]
cmp r1, 0
beq _080946DC
adds r0, r1, 0
adds r0, r2, r0
str r0, [r4]
ldr r0, _080946D8
ldr r2, [r0]
mov r1, r8
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _080946EC
.align 2, 0
_080946CC: .4byte gUnknown_8113898
_080946D0: .4byte gUnknown_202DE30
_080946D4: .4byte gUnknown_81138D0
_080946D8: .4byte gUnknown_8113950
_080946DC:
ldr r0, _08094714
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_080946EC:
adds r0, r6, 0
adds r0, 0x2D
ldrb r1, [r0]
cmp r1, 0
beq _08094720
ldr r2, _08094718
ldr r0, [r2, 0x4]
adds r0, r1
str r0, [r2, 0x4]
ldr r0, _0809471C
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _08094730
.align 2, 0
_08094714: .4byte gUnknown_81138E4
_08094718: .4byte gUnknown_202DE30
_0809471C: .4byte gUnknown_8113974
_08094720:
ldr r0, _08094768
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_08094730:
adds r5, 0xA
ldr r2, _0809476C
adds r0, r6, 0
adds r0, 0x27
ldrb r3, [r0]
str r3, [r2]
adds r0, 0x2
ldrb r0, [r0]
str r0, [r2, 0x4]
adds r0, r6, 0
adds r0, 0x2C
ldrb r1, [r0]
cmp r1, 0
beq _08094774
adds r0, r1, 0
adds r0, r3, r0
str r0, [r2]
ldr r0, _08094770
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _08094784
.align 2, 0
_08094768: .4byte gUnknown_8113900
_0809476C: .4byte gUnknown_202DE30
_08094770: .4byte gUnknown_8113990
_08094774:
ldr r0, _080947AC
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_08094784:
adds r0, r6, 0
adds r0, 0x2E
ldrb r1, [r0]
cmp r1, 0
beq _080947B8
ldr r2, _080947B0
ldr r0, [r2, 0x4]
adds r0, r1
str r0, [r2, 0x4]
ldr r0, _080947B4
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
b _080947C8
.align 2, 0
_080947AC: .4byte gUnknown_8113918
_080947B0: .4byte gUnknown_202DE30
_080947B4: .4byte gUnknown_81139B4
_080947B8:
ldr r0, _080947E4
ldr r2, [r0]
str r1, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
_080947C8:
adds r5, 0x10
adds r2, r6, 0
adds r2, 0x1C
ldrb r1, [r6, 0x1C]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080947EC
ldr r0, _080947E8
adds r1, r2, 0
movs r2, 0
bl sub_8090E14
b _080947F6
.align 2, 0
_080947E4: .4byte gUnknown_8113934
_080947E8: .4byte gUnknown_202DE58
_080947EC:
ldr r0, _0809481C
ldr r1, _08094820
ldr r1, [r1]
bl strcpy
_080947F6:
ldr r0, _08094824
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
adds r1, r5, 0
adds r3, r7, 0
bl xxx_format_and_draw
adds r0, r7, 0
bl sub_80073E0
add sp, 0xCC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809481C: .4byte gUnknown_202DE58
_08094820: .4byte gUnknown_81139B8
_08094824: .4byte gUnknown_81139CC
thumb_func_end sub_8094558
.align 2,0

View File

@ -5,505 +5,6 @@
.text
thumb_func_start sub_8037400
sub_8037400:
push {r4-r6,lr}
movs r6, 0
movs r5, 0
bl sub_8037810
bl sub_8011830
ldr r4, _08037434
ldr r0, [r4]
ldr r0, [r0]
bl sub_8037B28
ldr r4, [r4]
str r0, [r4, 0x4]
cmp r0, 0
beq _08037422
b _080376BE
_08037422:
ldr r0, [r4]
cmp r0, 0xA
bls _0803742A
b _080375E8
_0803742A:
lsls r0, 2
ldr r1, _08037438
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08037434: .4byte gUnknown_203B35C
_08037438: .4byte _0803743C
.align 2, 0
_0803743C:
.4byte _08037494
.4byte _080374B8
.4byte _08037534
.4byte _0803751C
.4byte _0803756C
.4byte _080375D8
.4byte _080374E4
.4byte _080374D0
.4byte _080375E8
.4byte _08037480
.4byte _08037468
_08037468:
ldr r0, _0803747C
ldr r0, [r0]
movs r1, 0xE7
lsls r1, 2
adds r6, r0, r1
movs r2, 0x8A
lsls r2, 3
adds r5, r0, r2
b _080375E8
.align 2, 0
_0803747C: .4byte gUnknown_203B35C
_08037480:
ldr r0, _08037490
ldr r0, [r0]
movs r3, 0xE7
lsls r3, 2
adds r6, r0, r3
movs r4, 0x8A
lsls r4, 3
b _080375E6
.align 2, 0
_08037490: .4byte gUnknown_203B35C
_08037494:
bl sub_8035D94
ldr r1, _080374B4
ldr r3, [r1]
movs r5, 0xDE
lsls r5, 1
adds r2, r3, r5
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, 0x4]
adds r6, r2, 0
movs r0, 0xE2
lsls r0, 1
adds r5, r3, r0
b _080375E8
.align 2, 0
_080374B4: .4byte gUnknown_203B35C
_080374B8:
ldr r0, _080374CC
ldr r0, [r0]
movs r1, 0xDE
lsls r1, 1
adds r6, r0, r1
movs r2, 0xE2
lsls r2, 1
adds r5, r0, r2
b _080375E8
.align 2, 0
_080374CC: .4byte gUnknown_203B35C
_080374D0:
ldr r0, _080374E0
ldr r0, [r0]
movs r3, 0xE6
lsls r3, 1
adds r6, r0, r3
movs r4, 0xFE
lsls r4, 1
b _080375E6
.align 2, 0
_080374E0: .4byte gUnknown_203B35C
_080374E4:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl GetMailatIndex
ldr r3, _08037518
ldr r1, [r3]
movs r2, 0xE6
lsls r2, 1
adds r1, r2
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r0, [r3]
adds r6, r0, r2
movs r1, 0xFE
lsls r1, 1
adds r5, r0, r1
b _080375E8
.align 2, 0
_08037518: .4byte gUnknown_203B35C
_0803751C:
ldr r0, _08037530
ldr r0, [r0]
movs r2, 0x8B
lsls r2, 2
adds r6, r0, r2
movs r3, 0x97
lsls r3, 2
adds r5, r0, r3
b _080375E8
.align 2, 0
_08037530: .4byte gUnknown_203B35C
_08037534:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl GetMailatIndex
ldr r3, _08037568
ldr r1, [r3]
movs r2, 0x8B
lsls r2, 2
adds r1, r2
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldm r0!, {r4-r6}
stm r1!, {r4-r6}
ldr r0, [r3]
adds r6, r0, r2
movs r1, 0x97
lsls r1, 2
adds r5, r0, r1
b _080375E8
.align 2, 0
_08037568: .4byte gUnknown_203B35C
_0803756C:
bl sub_8035D74
lsls r0, 24
lsrs r0, 24
bl GetMailatIndex
ldr r4, _080375CC
ldr r1, [r4]
movs r5, 0xA3
lsls r5, 2
adds r1, r5
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
bl sub_8035D3C
lsls r0, 16
ldr r1, _080375D0
cmp r0, r1
beq _080375BE
bl sub_8035D3C
ldr r3, [r4]
movs r1, 0xAF
lsls r1, 2
adds r3, r1
ldr r1, _080375D4
ldr r1, [r1]
lsls r0, 16
asrs r0, 16
movs r2, 0x58
muls r0, r2
adds r1, r0
adds r0, r3, 0
bl memcpy
_080375BE:
ldr r0, [r4]
adds r6, r0, r5
movs r2, 0xC5
lsls r2, 2
adds r5, r0, r2
b _080375E8
.align 2, 0
_080375CC: .4byte gUnknown_203B35C
_080375D0: .4byte 0xffff0000
_080375D4: .4byte gRecruitedPokemonRef
_080375D8:
ldr r0, _08037610
ldr r0, [r0]
movs r3, 0xA3
lsls r3, 2
adds r6, r0, r3
movs r4, 0xC5
lsls r4, 2
_080375E6:
adds r5, r0, r4
_080375E8:
ldr r4, _08037610
ldr r0, [r4]
ldr r0, [r0]
adds r1, r6, 0
adds r2, r5, 0
bl sub_8037D64
ldr r1, [r4]
str r0, [r1, 0x4]
cmp r0, 0
bne _080376BE
ldr r0, [r1]
cmp r0, 0xA
bhi _080376AE
lsls r0, 2
ldr r1, _08037614
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08037610: .4byte gUnknown_203B35C
_08037614: .4byte _08037618
.align 2, 0
_08037618:
.4byte _08037644
.4byte _08037644
.4byte _08037658
.4byte _08037658
.4byte _0803766C
.4byte _0803766C
.4byte _08037684
.4byte _08037684
.4byte _080376AE
.4byte _0803769C
.4byte _0803769C
_08037644:
ldr r0, _08037654
ldr r2, [r0]
movs r5, 0xDE
lsls r5, 1
adds r6, r2, r5
movs r1, 0xE2
lsls r1, 1
b _0803767A
.align 2, 0
_08037654: .4byte gUnknown_203B35C
_08037658:
ldr r0, _08037668
ldr r2, [r0]
movs r3, 0x8B
lsls r3, 2
adds r6, r2, r3
movs r4, 0x97
lsls r4, 2
b _08037692
.align 2, 0
_08037668: .4byte gUnknown_203B35C
_0803766C:
ldr r0, _08037680
ldr r2, [r0]
movs r5, 0xA3
lsls r5, 2
adds r6, r2, r5
movs r1, 0xC5
lsls r1, 2
_0803767A:
adds r5, r2, r1
adds r4, r0, 0
b _080376AE
.align 2, 0
_08037680: .4byte gUnknown_203B35C
_08037684:
ldr r0, _08037698
ldr r2, [r0]
movs r3, 0xE6
lsls r3, 1
adds r6, r2, r3
movs r4, 0xFE
lsls r4, 1
_08037692:
adds r5, r2, r4
adds r4, r0, 0
b _080376AE
.align 2, 0
_08037698: .4byte gUnknown_203B35C
_0803769C:
ldr r1, _080376C8
ldr r0, [r1]
movs r5, 0xE7
lsls r5, 2
adds r6, r0, r5
movs r2, 0x8A
lsls r2, 3
adds r5, r0, r2
adds r4, r1, 0
_080376AE:
ldr r0, [r4]
ldr r0, [r0]
adds r1, r6, 0
adds r2, r5, 0
bl sub_80381F4
ldr r1, [r4]
str r0, [r1, 0x4]
_080376BE:
bl xxx_call_start_bg_music
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080376C8: .4byte gUnknown_203B35C
thumb_func_end sub_8037400
thumb_func_start sub_80376CC
sub_80376CC:
push {r4,lr}
ldr r0, _08037728
ldr r3, [r0]
ldrh r1, [r3, 0xC]
ldr r0, _0803772C
ands r0, r1
ldr r1, _08037730
ands r0, r1
ldr r4, _08037734
ands r0, r4
ldr r1, _08037738
ands r0, r1
ldr r1, _0803773C
ands r0, r1
movs r2, 0x80
lsls r2, 7
ldr r1, _08037740
ands r0, r1
orrs r0, r2
strh r0, [r3, 0xC]
movs r2, 0xFC
lsls r2, 2
ldrh r1, [r3, 0x10]
movs r0, 0xFC
lsls r0, 8
ands r0, r1
orrs r0, r2
ands r0, r4
movs r2, 0xF
movs r4, 0xF0
lsls r4, 8
ldr r1, _08037744
ands r0, r1
orrs r0, r4
strh r0, [r3, 0x10]
movs r0, 0
strh r0, [r3, 0xE]
movs r1, 0xC0
lsls r1, 4
ldrh r0, [r3, 0x12]
ands r2, r0
orrs r2, r1
strh r2, [r3, 0x12]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08037728: .4byte gUnknown_203B35C
_0803772C: .4byte 0x0000feff
_08037730: .4byte 0x0000fdff
_08037734: .4byte 0x0000f3ff
_08037738: .4byte 0x0000efff
_0803773C: .4byte 0x0000dfff
_08037740: .4byte 0x00003fff
_08037744: .4byte 0x00000fff
thumb_func_end sub_80376CC
thumb_func_start sub_8037748
sub_8037748:
push {r4,lr}
ldr r4, _08037794
ldr r3, [r4]
ldrh r1, [r3, 0xE]
movs r0, 0xFE
lsls r0, 8
ands r0, r1
movs r1, 0x70
orrs r0, r1
strh r0, [r3, 0xE]
movs r2, 0xD0
lsls r2, 3
ldrh r1, [r3, 0x12]
movs r0, 0xF
ands r0, r1
orrs r0, r2
strh r0, [r3, 0x12]
ldr r0, [r3, 0x14]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _08037782
adds r0, r3, 0
adds r0, 0xC
adds r1, 0xF8
movs r2, 0
movs r3, 0
bl AddSprite
_08037782:
bl xxx_draw_string_80144C4
ldr r1, [r4]
ldr r0, [r1, 0x14]
adds r0, 0x1
str r0, [r1, 0x14]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08037794: .4byte gUnknown_203B35C
thumb_func_end sub_8037748
thumb_func_start sub_8037798
sub_8037798:
push {lr}
ldr r2, _080377B4
ldr r1, _080377B8
ldr r0, [r1]
ldr r0, [r0]
adds r3, r1, 0
cmp r0, 0xA
bhi _0803780A
lsls r0, 2
ldr r1, _080377BC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080377B4: .4byte 0x0000ffdc
_080377B8: .4byte gUnknown_203B35C
_080377BC: .4byte _080377C0
.align 2, 0
_080377C0:
.4byte _080377EC
.4byte _080377EC
.4byte _080377F0
.4byte _080377F0
.4byte _080377F0
.4byte _080377F0
.4byte _080377F0
.4byte _080377F0
.4byte _0803780A
.4byte _080377FE
.4byte _080377FE
_080377EC:
movs r2, 0x1
b _0803780A
_080377F0:
ldr r0, [r3]
ldr r0, [r0, 0x4]
movs r2, 0x1
cmp r0, 0
bne _0803780A
movs r2, 0x2A
b _0803780A
_080377FE:
ldr r0, [r3]
ldr r0, [r0, 0x4]
movs r2, 0xD
cmp r0, 0
bne _0803780A
movs r2, 0x2B
_0803780A:
adds r0, r2, 0
pop {r1}
bx r1
thumb_func_end sub_8037798
thumb_func_start sub_8037810
sub_8037810:
push {r4-r6,lr}

View File

@ -34,8 +34,8 @@ struct unkDungeonGlobal_unk1CE98_sub
{
/* 0x0 */ u8 buffer1[10];
/* 0xA */ u8 buffer2[10];
s16 unk14;
u8 fill16[0x18 - 0x16];
/* 0x14 */ s16 moveID;
/* 0x16 */ u8 fill16[0x2];
/* 0x18 */ struct DungeonLocation dungeonLocation;
/* 0x1C */ struct Item heldItem;
/* 0x20 */ u32 exp;

View File

@ -284,7 +284,6 @@ SECTIONS {
asm/code_8094148.o(.text);
src/number_util.o(.text);
src/code_809447C.o(.text);
asm/code_809447C.o(.text);
src/code_8092334.o(.text);
src/game_options.o(.text);
asm/code_8094D28.o(.text);

View File

@ -3,20 +3,46 @@
#include "code_809447C.h"
#include "item.h"
#include "moves.h"
#include "dungeon_global_data.h"
struct unkStruct_8113080
{
u8 unk0;
u8 *unk4; // some string
u8 *text;
};
extern u8 gUnknown_202DE58[];
extern u8 gAvailablePokemonNames[];
extern s32 gUnknown_202DE30[2];
extern u8 *gUnknown_811383C[];
extern u8 *gUnknown_8113850[];
extern u8 *gUnknown_8113868[];
extern u8 *gUnknown_8113898[];
extern u8 *gUnknown_81138C0[];
extern u8 *gUnknown_81138D0[];
extern u8 *gUnknown_81138E4[];
extern u8 *gUnknown_8113950[];
extern u8 *gUnknown_8113900[];
extern u8 *gUnknown_8113974[];
extern u8 *gUnknown_8113918[];
extern u8 *gUnknown_8113990[];
extern u8 *gUnknown_8113934[];
extern u8 *gUnknown_81139B4[];
extern u8 *gUnknown_81139B8[];
extern u8 *gUnknown_81139CC[];
extern u8 *gUnknown_8113870[];
extern struct unkStruct_8113080 gUnknown_8113080[];
void sub_80928C0(u8 *buffer, struct Move *move, struct unkStruct_80928C0 *param_3);
extern void xxx_format_string(const char *, u8 *, void *, u32);
void PrintYellowDungeonNametoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation);
extern void sub_80073B8(u32);
extern void xxx_format_and_draw(s32, s32, const u8 *, ...);
extern s32 sub_8008ED0(u8 *);
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
extern void sub_80073E0(u32);
void sub_809447C(struct unkStruct_8094924 *r0, u8 *r1)
{
@ -30,24 +56,24 @@ void sub_809449C(struct unkStruct_8094924 *r0, u8 *r1)
SaveIntegerBits(r0, r1 + 2, 0x10);
}
void sub_80944BC(s16 moveID, u8 *arg2)
static void sub_80944BC(s16 moveID, u8 *buffer)
{
u16 moveID_u16;
s32 moveID_s32 = moveID;
struct Move stack;
struct Move move;
if (moveID_s32 < 0x1F4) {
// Needed this cast/variable to match
moveID_u16 = moveID_s32;
sub_8092AA8(&stack, moveID_u16);
sub_80928C0(gUnknown_202DE58, &stack, NULL);
xxx_format_string(*gUnknown_811383C, arg2, arg2 + 200, 0);
sub_8092AA8(&move, moveID_u16);
sub_80928C0(gUnknown_202DE58, &move, NULL);
xxx_format_string(*gUnknown_811383C, buffer, buffer + 200, 0); // $m0's $i0
} else {
strncpy(arg2, gUnknown_8113080[moveID - 0x1F4].unk4, 200);
strncpy(buffer, gUnknown_8113080[moveID - 0x1F4].text, 200);
}
}
u8 sub_8094528(s16 moveID)
static u8 sub_8094528(s16 moveID)
{
if(moveID < 0x1F4)
{
@ -59,3 +85,95 @@ u8 sub_8094528(s16 moveID)
}
}
void sub_8094558(u32 param_1,u8 *param_2,struct unkDungeonGlobal_unk1CE98_sub *param_3)
{
int iVar2;
u8 buffer [200];
s32 y;
struct Item *item;
s32 var;
sub_80073B8(param_1);
xxx_format_and_draw(0x10,0,param_2,param_1,0);
PrintYellowDungeonNametoBuffer(gAvailablePokemonNames, &param_3->dungeonLocation);
xxx_format_and_draw(4,0x10,*gUnknown_8113850,param_1,0); // #+Place: $m0
y = 0x1A;
sub_80922B4(gAvailablePokemonNames, param_3->buffer1, POKEMON_NAME_LENGTH);
sub_80922B4(gAvailablePokemonNames + 0x50, param_3->buffer2, POKEMON_NAME_LENGTH);
if (sub_8094528(param_3->moveID) != 0) {
// $m1 was defeated by
xxx_format_string(*gUnknown_8113868,buffer,(u32 **)&buffer + 50,0); // TODO: fix this hack
}
else {
// $m1
xxx_format_string(*gUnknown_8113870,buffer,(u32 **)&buffer + 50,0); // TODO: fix this hack
}
iVar2 = sub_8008ED0(buffer);
xxx_format_and_draw(((0xb0 - iVar2) / 2),y,buffer,param_1,0);
y += 0xA;
sub_80944BC(param_3->moveID, buffer);
#ifndef NONMATCHING
var = 0xb0 - sub_8008ED0(buffer);
var += (var < 0);
xxx_format_and_draw(var >> 1,y,buffer,param_1,0);
asm(""::"r"(var));
#else
xxx_format_and_draw((0xb0 - sub_8008ED0(buffer) / 2),y,buffer,param_1,0);
#endif
y += 0x10;
gUnknown_202DE30[0] = param_3->exp;
gUnknown_202DE30[1] = param_3->level;
if (gUnknown_202DE30[1] >= 100) {
xxx_format_and_draw(4,y,*gUnknown_81138C0,param_1,0);
}
else {
xxx_format_and_draw(4,y,*gUnknown_8113898,param_1,0);
}
y += 0xA;
gUnknown_202DE30[0] = param_3->maxHPStat;
xxx_format_and_draw(4,y,*gUnknown_81138D0,param_1,0);
y += 0xA;
gUnknown_202DE30[0] = param_3->atk;
gUnknown_202DE30[1] = param_3->def;
if (param_3->attBoost) {
gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->attBoost;
xxx_format_and_draw(4,y,*gUnknown_8113950,param_1,0);
}
else {
xxx_format_and_draw(4,y,*gUnknown_81138E4,param_1,0);
}
if (param_3->defBoost) {
gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->defBoost;
xxx_format_and_draw(4,y,*gUnknown_8113974,param_1,0);
}
else {
xxx_format_and_draw(4,y,*gUnknown_8113900,param_1,0);
}
y += 0xA;
gUnknown_202DE30[0] = param_3->spAtk;
gUnknown_202DE30[1] = param_3->spDef;
if (param_3->spAttBoost) {
gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->spAttBoost;
xxx_format_and_draw(4,y,*gUnknown_8113990,param_1,0);
}
else {
xxx_format_and_draw(4,y,*gUnknown_8113918,param_1,0);
}
if (param_3->spDefBoost) {
gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->spDefBoost;
xxx_format_and_draw(4,y,*gUnknown_81139B4,param_1,0);
}
else {
xxx_format_and_draw(4,y,*gUnknown_8113934,param_1,0);
}
y += 0x10;
item = &(param_3->heldItem);
if ((param_3->heldItem.flags & ITEM_FLAG_EXISTS)) {
sub_8090E14(gUnknown_202DE58,item,0);
}
else {
strcpy(gUnknown_202DE58,*gUnknown_81139B8);
}
xxx_format_and_draw(4,y,*gUnknown_81139CC,param_1,0);
sub_80073E0(param_1);
}

View File

@ -61,7 +61,7 @@ void sub_8083AB0(s16 param_0, struct Entity * target, struct Entity * entity)
}
sub_80709C8(buffer,entityInfo);
CopyStringtoBuffer(temp->buffer2, buffer);
temp->unk14 = param_0_s32;
temp->moveID = param_0_s32;
temp->heldItem = entityInfo->heldItem;
temp->exp = entityInfo->exp;
temp->level = entityInfo->level;
@ -108,7 +108,7 @@ bool8 sub_8083C24(void)
temp = &gDungeon->unk1CE98;
if (temp->unk14 < 0x226) {
if (temp->moveID < 0x226) {
return TRUE;
}
else {
@ -122,7 +122,7 @@ bool8 sub_8083C50(void)
temp = &gDungeon->unk1CE98;
if ((temp->unk14 == 0x227) || (temp->unk14 == 0x22A) || (temp->unk14 == 0x228)) {
if ((temp->moveID == 0x227) || (temp->moveID == 0x22A) || (temp->moveID == 0x228)) {
return TRUE;
}
else {
@ -138,7 +138,7 @@ bool8 sub_8083C88(u8 param_1)
if ((!HasCheckpoint(gDungeon->dungeonLocation.id) &&
((gDungeon->unk65C != 0) || (param_1 != 0))) ||
(temp->unk14 != 0x227)) {
(temp->moveID != 0x227)) {
return TRUE;
}
else {

View File

@ -8,6 +8,18 @@
#include "memory.h"
#include "text.h"
#include "menu_input.h"
#include "dungeon_global_data.h"
#include "pokemon.h"
#include "code_8094F88.h"
struct unkSprite
{
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
};
struct unkStruct_203B35C
{
@ -15,11 +27,23 @@ struct unkStruct_203B35C
u32 unk0;
u32 linkStatus;
u32 state;
u8 fillC[0x1C - 0xC];
struct unkSprite unkC;
u32 unk14;
u8 fill18[0x1C - 0x18];
struct MenuStruct unk1C[4];
struct UnkTextStruct2 unk15C[4];
u8 unk1BC[4];
u32 unk1C0[9];
struct unkStruct_8035D94 unk1BC[2];
struct unkStruct_203B480 unk1CC;
struct unkStruct_203B480 unk1FC;
struct unkStruct_203B480 unk22C;
struct unkStruct_203B480 unk25C;
struct unkStruct_203B480 unk28C;
struct PokemonStruct unk2BC;
struct unkStruct_203B480 unk314;
struct PokemonStruct unk344;
s32 unk39C;
u8 fill3A0[0x450 - 0x3A0];
s32 unk450;
};
extern struct unkStruct_203B35C *gUnknown_203B35C;
@ -440,13 +464,21 @@ extern void TransferBGPaletteBuffer();
extern void xxx_call_update_bg_vram();
extern void sub_8009908();
extern void xxx_call_update_bg_sound_input();
extern s32 sub_8037D64(u32, void *, void *);
extern s32 sub_80381F4(u32, void *, void *);
extern void sub_8037810(void);
extern void sub_8011830(void);
extern s32 sub_8037B28(u32);
s32 sub_8035D3C(void);
extern s32 sub_8035D74(void);
extern void xxx_call_start_bg_music(void);
extern void xxx_draw_string_80144C4(void);
extern void AddSprite(struct unkSprite *, u32, u32, u32);
#ifdef NONMATCHING
void sub_8036FDC(s32 param_1)
{
int iVar3;
int iVar4;
int index1;
int index2;
ResetUnusedInputStruct();
sub_800641C(0,1,1);
@ -457,143 +489,22 @@ void sub_8036FDC(s32 param_1)
}
gUnknown_203B35C->unk0 = param_1;
gUnknown_203B35C->linkStatus = 0;
gUnknown_203B35C->linkStatus = COMMS_GOOD;
gUnknown_203B35C->state = 0;
iVar3 = 0;
do {
gUnknown_203B35C->unk1C0[iVar3 * 2] = 0;
// Add statements of index flip but ends in same result
gUnknown_203B35C->unk1BC[iVar3 * 8] = 0;
iVar3 = iVar3 + 1;
} while (iVar3 < 2);
for(iVar4 = 0; iVar4 < 4; iVar4++){
gUnknown_203B35C->unk15C[iVar4] = gUnknown_80E653C;
for(index1 = 0; index1 < 2; index1++)
{
gUnknown_203B35C->unk1BC[index1].numItems = 0;
gUnknown_203B35C->unk1BC[index1].itemIndex.itemIndex_u8 = ITEM_NOTHING;
}
for(index2 = 0; index2 < 4; index2++){
gUnknown_203B35C->unk15C[index2] = gUnknown_80E653C;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B35C->unk15C,1,1);
SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,
6,0);
SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,6,0);
sub_8035CF4(gUnknown_203B35C->unk1C,0,1);
sub_80376CC();
}
#else
NAKED
void sub_8036FDC(s32 param_1)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
"\tpush {r7}\n"
"\tsub sp, 0x10\n"
"\tadds r6, r0, 0\n"
"\tbl ResetUnusedInputStruct\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tmovs r0, 0\n"
"\tbl ResetSprites\n"
"\tldr r5, _080370C0\n"
"\tldr r0, [r5]\n"
"\tcmp r0, 0\n"
"\tbne _08037016\n"
"\tldr r4, _080370C4\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0x8\n"
"\tbl MemoryAlloc\n"
"\tstr r0, [r5]\n"
"\tmovs r1, 0\n"
"\tadds r2, r4, 0\n"
"\tbl MemoryFill8\n"
"_08037016:\n"
"\tldr r0, [r5]\n"
"\tstr r6, [r0]\n"
"\tmovs r1, 0\n"
"\tstr r1, [r0, 0x4]\n"
"\tstr r1, [r0, 0x8]\n"
"\tmovs r3, 0\n"
"\tadds r7, r5, 0\n"
"\tmovs r6, 0xE0\n"
"\tlsls r6, 1\n"
"\tmovs r4, 0\n"
"\tmovs r5, 0xDE\n"
"\tlsls r5, 1\n"
"_0803702E:\n"
"\tldr r0, [r7]\n"
"\tlsls r2, r3, 3\n"
"\tadds r1, r0, r6\n"
"\tadds r1, r2\n"
"\tstr r4, [r1]\n"
"\tadds r0, r2\n"
"\tadds r0, r5\n"
"\tstrb r4, [r0]\n"
"\tadds r3, 0x1\n"
"\tcmp r3, 0x1\n"
"\tble _0803702E\n"
"\tldr r0, _080370C0\n"
"\tmov r12, r0\n"
"\tmovs r5, 0xAE\n"
"\tlsls r5, 1\n"
"\tmov r8, r5\n"
"\tldr r4, _080370C8\n"
"\tmovs r3, 0\n"
"\tmovs r2, 0x3\n"
"_08037054:\n"
"\tmov r6, r12\n"
"\tldr r1, [r6]\n"
"\tadds r1, r3\n"
"\tadd r1, r8\n"
"\tadds r0, r4, 0\n"
"\tldm r0!, {r5-r7}\n"
"\tstm r1!, {r5-r7}\n"
"\tldm r0!, {r5-r7}\n"
"\tstm r1!, {r5-r7}\n"
"\tadds r3, 0x18\n"
"\tsubs r2, 0x1\n"
"\tcmp r2, 0\n"
"\tbge _08037054\n"
"\tmovs r6, 0\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r5, _080370C0\n"
"\tldr r0, [r5]\n"
"\tmovs r4, 0xAE\n"
"\tlsls r4, 1\n"
"\tadds r0, r4\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tldr r1, [r5]\n"
"\tadds r0, r1, 0\n"
"\tadds r0, 0x1C\n"
"\tadds r1, r4\n"
"\tldr r3, _080370CC\n"
"\tldr r2, _080370D0\n"
"\tstr r2, [sp]\n"
"\tstr r6, [sp, 0x4]\n"
"\tmovs r2, 0x6\n"
"\tstr r2, [sp, 0x8]\n"
"\tstr r6, [sp, 0xC]\n"
"\tmovs r2, 0\n"
"\tbl SetMenuItems\n"
"\tldr r0, [r5]\n"
"\tadds r0, 0x1C\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x1\n"
"\tbl sub_8035CF4\n"
"\tbl sub_80376CC\n"
"\tadd sp, 0x10\n"
"\tpop {r3}\n"
"\tmov r8, r3\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_080370C0: .4byte gUnknown_203B35C\n"
"_080370C4: .4byte 0x00000504\n"
"_080370C8: .4byte gUnknown_80E653C\n"
"_080370CC: .4byte gUnknown_80E6CD0\n"
"_080370D0: .4byte gUnknown_80E6CE8");
}
#endif
void sub_80370D4(void)
{
@ -753,3 +664,209 @@ struct unkStruct_203B35C *sub_80373F4(void)
{
return gUnknown_203B35C;
}
void sub_8037400(void)
{
u8 mailIndex;
void *r5;
void *r6;
s32 species;
struct unkStruct_8035D94 *puVar5;
struct unkStruct_8035D94 *puVar6;
r6 = NULL;
r5 = NULL;
sub_8037810();
sub_8011830();
gUnknown_203B35C->linkStatus = sub_8037B28(gUnknown_203B35C->unk0);
if (gUnknown_203B35C->linkStatus == COMMS_GOOD)
{
switch(gUnknown_203B35C->unk0) {
case 10:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
case 9:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
case 0:
{
#ifndef NONMATCING
register u32 temp1 asm("r1");
#else
u32 temp1;
#endif
puVar5 = sub_8035D94();
puVar6 = &gUnknown_203B35C->unk1BC[0];
temp1 = puVar5->numItems;
puVar6->itemIndex.itemIndex_u32 = puVar5->itemIndex.itemIndex_u32;
puVar6->numItems = temp1;
}
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 1:
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 7:
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 6:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk1CC = *GetMailatIndex(mailIndex);
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 3:
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 2:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk22C = *GetMailatIndex(mailIndex);
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 4:
mailIndex = sub_8035D74();
gUnknown_203B35C->unk28C = *GetMailatIndex(mailIndex);
if( sub_8035D3C() << 0x10 != 0xffff0000)
{
species = sub_8035D3C();
gUnknown_203B35C->unk2BC = gRecruitedPokemonRef->pokemon[(s16)species];
}
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
case 5:
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
}
gUnknown_203B35C->linkStatus = sub_8037D64(gUnknown_203B35C->unk0, r6, r5);
if (gUnknown_203B35C->linkStatus == COMMS_GOOD)
{
switch(gUnknown_203B35C->unk0) {
case 0:
case 1:
r6 = &gUnknown_203B35C->unk1BC[0];
r5 = &gUnknown_203B35C->unk1BC[1];
break;
case 2:
case 3:
r6 = &gUnknown_203B35C->unk22C;
r5 = &gUnknown_203B35C->unk25C;
break;
case 4:
case 5:
r6 = &gUnknown_203B35C->unk28C;
r5 = &gUnknown_203B35C->unk314;
break;
case 6:
case 7:
r6 = &gUnknown_203B35C->unk1CC;
r5 = &gUnknown_203B35C->unk1FC;
break;
case 9:
case 10:
r6 = &gUnknown_203B35C->unk39C;
r5 = &gUnknown_203B35C->unk450;
break;
}
gUnknown_203B35C->linkStatus = sub_80381F4(gUnknown_203B35C->unk0, r6, r5);
}
}
xxx_call_start_bg_music();
}
void sub_80376CC(void)
{
#ifdef NONMATCHING
u32 r0;
u32 r2;
#else
register u32 r0 asm("r0");
register u32 r2 asm("r2");
#endif
u32 r1;
u32 r4;
r1 = gUnknown_203B35C->unkC.unk0;
r0 = 0xfeff;
r0 &= r1;
r0 &= 0xfdff;
r0 &= 0xf3ff;
r0 &= 0xefff;
r0 &= 0xdfff;
r2 = 0x4000;
r0 &= 0x3fff;
r0 |= r2;
gUnknown_203B35C->unkC.unk0 = r0;
r2 = 0x3F0;
r1 = gUnknown_203B35C->unkC.unk4;
r0 = 0xFC00;
r0 &= r1;
r0 |= r2;
r0 &= 0xf3ff;
r2 = 0xF;
r4 = 0xF000;
r0 &= 0xfff;
r0 |= r4;
gUnknown_203B35C->unkC.unk4 = r0;
r0 = 0;
gUnknown_203B35C->unkC.unk2 = r0;
r1 = 0xC00;
r0 = gUnknown_203B35C->unkC.unk6;
r2 &= r0;
r2 |= r1;
gUnknown_203B35C->unkC.unk6 = r2;
}
void sub_8037748(void)
{
u32 temp2;
gUnknown_203B35C->unkC.unk2 = (gUnknown_203B35C->unkC.unk2 & 0xfe00) | 0x70;
temp2 = 0x680;
gUnknown_203B35C->unkC.unk6 = (gUnknown_203B35C->unkC.unk6 & 0xf) | temp2;
if ((gUnknown_203B35C->unk14 & 8) != 0) {
AddSprite(&gUnknown_203B35C->unkC,0x100,0,0x0);
}
xxx_draw_string_80144C4();
gUnknown_203B35C->unk14++;
}
u32 sub_8037798(void)
{
u32 nextMenu = MENU_NO_SCREEN_CHANGE;
switch(gUnknown_203B35C->unk0) {
case 0:
case 1:
nextMenu = MENU_MAIN_SCREEN;
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2A : MENU_MAIN_SCREEN;
break;
case 9:
case 10:
nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2B : MENU_WONDER_MAIL;
break;
}
return nextMenu;
}