diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-07-20 22:42:32 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-20 22:42:32 -0500 |
commit | 959f78fe146e75f9ce02b318eb6a8d97652a9996 (patch) | |
tree | c3100c9cb3ac199ced8b28203878fac7c2a76994 | |
parent | b23014cfa0573e53a104f433cf2d75f350340d60 (diff) | |
parent | 7d960d219fae9d0a14ef1974c11231f8de55b89c (diff) |
Merge branch 'master' into master
56 files changed, 4201 insertions, 8984 deletions
diff --git a/asm/battle_records.s b/asm/battle_records.s deleted file mode 100644 index cfe822acc..000000000 --- a/asm/battle_records.s +++ /dev/null @@ -1,868 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_810FF78 -sub_810FF78: @ 810FF78 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r2, _0810FFA4 @ =0x01000008 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r4] - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810FFA4: .4byte 0x01000008 - thumb_func_end sub_810FF78 - - thumb_func_start InitLinkBattleRecords_ -InitLinkBattleRecords_: @ 810FFA8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0x4 -_0810FFAE: - adds r0, r4, 0 - bl sub_810FF78 - adds r4, 0x10 - subs r5, 0x1 - cmp r5, 0 - bge _0810FFAE - movs r0, 0x17 - movs r1, 0 - bl SetGameStat - movs r0, 0x18 - movs r1, 0 - bl SetGameStat - movs r0, 0x19 - movs r1, 0 - bl SetGameStat - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitLinkBattleRecords_ - - thumb_func_start sub_810FFDC -sub_810FFDC: @ 810FFDC - adds r1, r0, 0 - ldrh r0, [r1, 0xA] - ldrh r2, [r1, 0xC] - adds r0, r2 - ldrh r1, [r1, 0xE] - adds r0, r1 - bx lr - thumb_func_end sub_810FFDC - - thumb_func_start sub_810FFEC -sub_810FFEC: @ 810FFEC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - lsls r2, 16 - lsrs r7, r2, 16 - movs r5, 0 - ldr r6, _08110024 @ =gStringVar1 - adds r4, r0, 0 -_0810FFFE: - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x7 - bl memcpy - movs r0, 0xFF - strb r0, [r6, 0x7] - adds r0, r6, 0 - mov r1, r8 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _08110028 - ldrh r0, [r4, 0x8] - cmp r0, r7 - bne _08110028 - adds r0, r5, 0 - b _08110032 - .align 2, 0 -_08110024: .4byte gStringVar1 -_08110028: - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x4 - ble _0810FFFE - movs r0, 0x5 -_08110032: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_810FFEC - - thumb_func_start sub_811003C -sub_811003C: @ 811003C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r8, r0 - movs r0, 0x4 -_0811004A: - subs r2, r0, 0x1 - mov r9, r2 - cmp r2, 0 - blt _081100A4 - lsls r0, 4 - mov r1, r8 - adds r6, r1, r0 - lsls r0, r2, 4 - adds r5, r0, r1 -_0811005C: - adds r0, r6, 0 - str r2, [sp, 0x10] - bl sub_810FFDC - adds r4, r0, 0 - adds r0, r5, 0 - bl sub_810FFDC - ldr r2, [sp, 0x10] - cmp r4, r0 - ble _08110096 - mov r1, sp - adds r0, r6, 0 - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r6, 0 - adds r0, r5, 0 - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r5, 0 - mov r0, sp - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] -_08110096: - subs r5, 0x10 - movs r0, 0x1 - negs r0, r0 - add r9, r0 - mov r1, r9 - cmp r1, 0 - bge _0811005C -_081100A4: - adds r0, r2, 0 - cmp r0, 0 - bgt _0811004A - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_811003C - - thumb_func_start sub_81100B8 -sub_81100B8: @ 81100B8 - push {lr} - adds r2, r0, 0 - cmp r1, 0x2 - beq _081100E8 - cmp r1, 0x2 - bgt _081100CA - cmp r1, 0x1 - beq _081100D0 - b _08110112 -_081100CA: - cmp r1, 0x3 - beq _08110100 - b _08110112 -_081100D0: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081100E4 @ =0x0000270f - cmp r0, r1 - bls _08110112 - strh r1, [r2, 0xA] - b _08110112 - .align 2, 0 -_081100E4: .4byte 0x0000270f -_081100E8: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081100FC @ =0x0000270f - cmp r0, r1 - bls _08110112 - strh r1, [r2, 0xC] - b _08110112 - .align 2, 0 -_081100FC: .4byte 0x0000270f -_08110100: - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _08110118 @ =0x0000270f - cmp r0, r1 - bls _08110112 - strh r1, [r2, 0xE] -_08110112: - pop {r0} - bx r0 - .align 2, 0 -_08110118: .4byte 0x0000270f - thumb_func_end sub_81100B8 - - thumb_func_start sub_811011C -sub_811011C: @ 811011C - push {r4,lr} - cmp r0, 0x2 - beq _08110136 - cmp r0, 0x2 - bgt _0811012C - cmp r0, 0x1 - beq _08110132 - b _0811014E -_0811012C: - cmp r0, 0x3 - beq _0811013A - b _0811014E -_08110132: - movs r4, 0x17 - b _0811013C -_08110136: - movs r4, 0x18 - b _0811013C -_0811013A: - movs r4, 0x19 -_0811013C: - adds r0, r4, 0 - bl GetGameStat - ldr r1, _08110154 @ =0x0000270e - cmp r0, r1 - bhi _0811014E - adds r0, r4, 0 - bl IncrementGameStat -_0811014E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08110154: .4byte 0x0000270e - thumb_func_end sub_811011C - - thumb_func_start sub_8110158 -sub_8110158: @ 8110158 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r5, r0, 0 - adds r7, r1, 0 - mov r10, r3 - ldr r0, [sp, 0x20] - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r10 - bl sub_811011C - adds r0, r5, 0 - bl sub_811003C - adds r0, r5, 0 - adds r1, r7, 0 - mov r2, r9 - bl sub_810FFEC - adds r6, r0, 0 - cmp r6, 0x5 - bne _081101CC - movs r6, 0x4 - adds r4, r5, 0 - adds r4, 0x40 - adds r0, r4, 0 - bl sub_810FF78 - mov r0, r8 - cmp r0, 0x1 - bne _081101BA - movs r0, 0xFC - strb r0, [r4] - movs r0, 0x15 - strb r0, [r4, 0x1] - adds r0, r5, 0 - adds r0, 0x42 - adds r1, r7, 0 - movs r2, 0x5 - bl StringCopyN - b _081101C4 -_081101BA: - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x7 - bl StringCopyN -_081101C4: - lsls r0, r6, 4 - adds r0, r5, r0 - mov r1, r9 - strh r1, [r0, 0x8] -_081101CC: - lsls r0, r6, 4 - adds r0, r5, r0 - mov r1, r10 - bl sub_81100B8 - adds r0, r5, 0 - bl sub_811003C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8110158 - - thumb_func_start InitLinkBattleRecords -InitLinkBattleRecords: @ 81101EC - push {lr} - ldr r0, _081101F8 @ =gSaveBlock1 + 0x30B8 - bl InitLinkBattleRecords_ - pop {r0} - bx r0 - .align 2, 0 -_081101F8: .4byte gSaveBlock1 + 0x30B8 - thumb_func_end InitLinkBattleRecords - - thumb_func_start sub_81101FC -sub_81101FC: @ 81101FC - push {lr} - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 3 - ldr r0, _08110220 @ =gTrainerCards + 0x14 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08110224 @ =0x0000270f - cmp r0, r2 - bls _0811021A - strh r2, [r1] -_0811021A: - pop {r0} - bx r0 - .align 2, 0 -_08110220: .4byte gTrainerCards + 0x14 -_08110224: .4byte 0x0000270f - thumb_func_end sub_81101FC - - thumb_func_start sub_8110228 -sub_8110228: @ 8110228 - push {lr} - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 3 - ldr r0, _0811024C @ =gTrainerCards + 0x16 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08110250 @ =0x0000270f - cmp r0, r2 - bls _08110246 - strh r2, [r1] -_08110246: - pop {r0} - bx r0 - .align 2, 0 -_0811024C: .4byte gTrainerCards + 0x16 -_08110250: .4byte 0x0000270f - thumb_func_end sub_8110228 - - thumb_func_start sub_8110254 -sub_8110254: @ 8110254 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08110268 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _0811026C - cmp r0, 0x2 - beq _0811027A - b _08110288 - .align 2, 0 -_08110268: .4byte gBattleOutcome -_0811026C: - eors r0, r4 - bl sub_81101FC - adds r0, r4, 0 - bl sub_8110228 - b _08110288 -_0811027A: - movs r0, 0x1 - eors r0, r4 - bl sub_8110228 - adds r0, r4, 0 - bl sub_81101FC -_08110288: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8110254 - - thumb_func_start sub_8110290 -sub_8110290: @ 8110290 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl sub_8110254 - ldr r0, _081102D4 @ =gSaveBlock1 + 0x30B8 - lsls r2, r4, 3 - subs r2, r4 - lsls r2, 3 - ldr r3, _081102D8 @ =gTrainerCards + 0x30 - adds r1, r2, r3 - subs r3, 0x30 - adds r2, r3 - ldrh r2, [r2, 0xE] - ldr r3, _081102DC @ =gBattleOutcome - ldrb r3, [r3] - ldr r6, _081102E0 @ =gLinkPlayers - ldr r5, _081102E4 @ =gLinkPlayerMapObjects - lsls r4, 2 - adds r4, r5 - ldrb r5, [r4, 0x1] - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - adds r4, r6 - ldrb r4, [r4, 0x1A] - str r4, [sp] - bl sub_8110158 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081102D4: .4byte gSaveBlock1 + 0x30B8 -_081102D8: .4byte gTrainerCards + 0x30 -_081102DC: .4byte gBattleOutcome -_081102E0: .4byte gLinkPlayers -_081102E4: .4byte gLinkPlayerMapObjects - thumb_func_end sub_8110290 - - thumb_func_start PrintLinkBattleWinsLossesDraws -PrintLinkBattleWinsLossesDraws: @ 81102E8 - push {r4,lr} - ldr r4, _08110338 @ =gStringVar1 - movs r0, 0x17 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN_DigitWidth6 - ldr r4, _0811033C @ =gStringVar2 - movs r0, 0x18 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN_DigitWidth6 - ldr r4, _08110340 @ =gStringVar3 - movs r0, 0x19 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN_DigitWidth6 - ldr r0, _08110344 @ =gOtherText_WinRecord - movs r1, 0x3 - movs r2, 0x3 - bl MenuPrint - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08110338: .4byte gStringVar1 -_0811033C: .4byte gStringVar2 -_08110340: .4byte gStringVar3 -_08110344: .4byte gOtherText_WinRecord - thumb_func_end PrintLinkBattleWinsLossesDraws - - thumb_func_start PrintLinkBattleRecord -PrintLinkBattleRecord: @ 8110348 - push {r4-r7,lr} - sub sp, 0x10 - adds r7, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - ldrh r0, [r7, 0xA] - cmp r0, 0 - bne _081103C0 - ldr r0, [r7, 0xC] - cmp r0, 0 - bne _081103C0 - mov r0, sp - movs r2, 0xFC - strb r2, [r0] - mov r1, sp - movs r0, 0x14 - strb r0, [r1, 0x1] - movs r0, 0x6 - strb r0, [r1, 0x2] - mov r0, sp - strb r2, [r0, 0x3] - movs r0, 0x11 - strb r0, [r1, 0x4] - movs r0, 0x1 - strb r0, [r1, 0x5] - mov r4, sp - adds r4, 0x6 - ldr r1, _081103B8 @ =gOtherText_SevenDashes - adds r0, r4, 0 - bl StringCopy - mov r0, sp - movs r1, 0x3 - adds r2, r6, 0 - bl MenuPrint - ldr r1, _081103BC @ =gOtherText_FourDashes - adds r0, r4, 0 - bl StringCopy - mov r0, sp - movs r1, 0xB - adds r2, r6, 0 - bl MenuPrint - mov r0, sp - movs r1, 0x11 - adds r2, r6, 0 - bl MenuPrint - mov r0, sp - movs r1, 0x17 - adds r2, r6, 0 - bl MenuPrint - b _0811042E - .align 2, 0 -_081103B8: .4byte gOtherText_SevenDashes -_081103BC: .4byte gOtherText_FourDashes -_081103C0: - ldr r4, _08110438 @ =gStringVar1 - adds r0, r4, 0 - movs r1, 0x8 - bl StringFillWithTerminator - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x7 - bl StringCopyN - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r6, 0 - bl MenuPrint - movs r0, 0xFC - strb r0, [r4] - movs r0, 0x14 - strb r0, [r4, 0x1] - movs r0, 0x6 - strb r0, [r4, 0x2] - adds r5, r4, 0x3 - ldrh r1, [r7, 0xA] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0xB - adds r2, r6, 0 - bl MenuPrint - ldrh r1, [r7, 0xC] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0x11 - adds r2, r6, 0 - bl MenuPrint - ldrh r1, [r7, 0xE] - adds r0, r5, 0 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0x17 - adds r2, r6, 0 - bl MenuPrint -_0811042E: - add sp, 0x10 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08110438: .4byte gStringVar1 - thumb_func_end PrintLinkBattleRecord - -.section .text_8110494 - - thumb_func_start sub_8110494 -sub_8110494: @ 8110494 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _081104B4 @ =gSaveBlock2 + 0xA8 - ldr r2, _081104B8 @ =0x000004ae - adds r1, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x6 - bhi _081104E0 - lsls r0, 2 - ldr r1, _081104BC @ =_081104C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081104B4: .4byte gSaveBlock2 + 0xA8 -_081104B8: .4byte 0x000004ae -_081104BC: .4byte _081104C0 - .align 2, 0 -_081104C0: - .4byte _081104E0 - .4byte _081104E0 - .4byte _081104DC - .4byte _081104DC - .4byte _081104E0 - .4byte _081104E0 - .4byte _081104DC -_081104DC: - movs r0, 0x1 - b _081104E2 -_081104E0: - movs r0, 0 -_081104E2: - pop {r1} - bx r1 - thumb_func_end sub_8110494 - - thumb_func_start sub_81104E8 -sub_81104E8: @ 81104E8 - push {r4-r6,lr} - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r2, 24 - adds r5, r2, 0 - lsls r3, 24 - lsrs r3, 24 - adds r6, r3, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl MenuPrint - ldr r0, _0811052C @ =0x0000270f - cmp r4, r0 - bls _0811050A - adds r4, r0, 0 -_0811050A: - ldr r0, _08110530 @ =gStringVar1 - adds r1, r4, 0 - movs r2, 0x18 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _08110534 @ =gOtherText_WinStreak - adds r1, r5, 0x7 - lsls r1, 24 - lsrs r1, 24 - adds r2, r6, 0 - bl MenuPrint - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0811052C: .4byte 0x0000270f -_08110530: .4byte gStringVar1 -_08110534: .4byte gOtherText_WinStreak - thumb_func_end sub_81104E8 - - thumb_func_start sub_8110538 -sub_8110538: @ 8110538 - push {r4,lr} - adds r4, r1, 0 - adds r3, r2, 0 - lsls r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r1, _08110564 @ =gSaveBlock2 + 0xA8 - lsrs r0, 23 - movs r2, 0x97 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _08110568 @ =gOtherText_Record - adds r2, r4, 0 - bl sub_81104E8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08110564: .4byte gSaveBlock2 + 0xA8 -_08110568: .4byte gOtherText_Record - thumb_func_end sub_8110538 - - thumb_func_start sub_811056C -sub_811056C: @ 811056C - push {lr} - lsls r0, 24 - ldr r1, _08110588 @ =gSaveBlock2 - lsrs r0, 23 - ldr r2, _0811058C @ =0x00000574 - adds r1, r2 - adds r0, r1 - ldrh r0, [r0] - ldr r1, _08110590 @ =0x0000270f - cmp r0, r1 - bls _08110584 - adds r0, r1, 0 -_08110584: - pop {r1} - bx r1 - .align 2, 0 -_08110588: .4byte gSaveBlock2 -_0811058C: .4byte 0x00000574 -_08110590: .4byte 0x0000270f - thumb_func_end sub_811056C - - thumb_func_start sub_8110594 -sub_8110594: @ 8110594 - push {r4-r7,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r4, 0 - bl sub_811056C - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - bl sub_8110494 - cmp r0, 0x1 - bne _081105CC - ldr r0, _081105C8 @ =gOtherText_Current - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_81104E8 - b _081105D8 - .align 2, 0 -_081105C8: .4byte gOtherText_Current -_081105CC: - ldr r0, _081105E0 @ =gOtherText_Prev - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_81104E8 -_081105D8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081105E0: .4byte gOtherText_Prev - thumb_func_end sub_8110594 - - thumb_func_start ShowBattleTowerRecords -ShowBattleTowerRecords: @ 81105E4 - push {r4,lr} - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1B - movs r3, 0x11 - bl MenuDrawTextWindow - ldr r0, _08110658 @ =gOtherText_BattleTowerResults - movs r1, 0x3 - movs r2, 0x2 - movs r3, 0xC8 - bl sub_8072BD8 - ldr r0, _0811065C @ =gOtherText_Lv50 - movs r1, 0x5 - movs r2, 0x6 - bl MenuPrint - ldr r0, _08110660 @ =gOtherText_Lv100 - movs r1, 0x5 - movs r2, 0xC - bl MenuPrint - movs r4, 0x5 -_08110614: - lsls r1, r4, 24 - lsrs r1, 24 - movs r0, 0xAE - movs r2, 0xA - bl sub_8071F60 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x19 - bls _08110614 - movs r0, 0 - movs r1, 0xA - movs r2, 0x6 - bl sub_8110594 - movs r0, 0 - movs r1, 0xA - movs r2, 0x8 - bl sub_8110538 - movs r0, 0x1 - movs r1, 0xA - movs r2, 0xC - bl sub_8110594 - movs r0, 0x1 - movs r1, 0xA - movs r2, 0xE - bl sub_8110538 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08110658: .4byte gOtherText_BattleTowerResults -_0811065C: .4byte gOtherText_Lv50 -_08110660: .4byte gOtherText_Lv100 - thumb_func_end ShowBattleTowerRecords - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/cable_club.s b/asm/cable_club.s index 7e5d19c24..68804ca21 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1215,7 +1215,7 @@ sub_8083958: @ 8083958 ldrb r1, [r0] movs r0, 0x1 eors r0, r1 - bl sub_8110290 + bl UpdateLinkBattleRecords _0808397E: ldr r0, _08083998 @ =gMain ldr r1, _0808399C @ =sub_805465C diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s deleted file mode 100644 index 4fbfae1a2..000000000 --- a/asm/field_screen_effect.s +++ /dev/null @@ -1,789 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_808136C -sub_808136C: @ 808136C - push {lr} - cmp r1, 0xA0 - bhi _08081394 - cmp r2, 0 - bge _08081378 - movs r2, 0 -_08081378: - cmp r2, 0xFF - ble _0808137E - movs r2, 0xFF -_0808137E: - cmp r3, 0 - bge _08081384 - movs r3, 0 -_08081384: - cmp r3, 0xFF - ble _0808138A - movs r3, 0xFF -_0808138A: - lsls r1, 1 - adds r1, r0 - lsls r0, r2, 8 - orrs r0, r3 - strh r0, [r1] -_08081394: - pop {r0} - bx r0 - thumb_func_end sub_808136C - - thumb_func_start sub_8081398 -sub_8081398: @ 8081398 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - mov r10, r1 - mov r9, r2 - adds r6, r3, 0 - mov r8, r6 - movs r7, 0 - cmp r6, 0 - blt _08081414 -_080813B4: - mov r0, r9 - subs r1, r0, r7 - mov r0, r10 - subs r4, r0, r6 - adds r5, r0, r6 - ldr r0, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_808136C - mov r0, r9 - adds r1, r0, r7 - ldr r0, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_808136C - mov r0, r9 - subs r1, r0, r6 - mov r0, r10 - subs r4, r0, r7 - adds r5, r0, r7 - ldr r0, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_808136C - mov r0, r9 - adds r1, r0, r6 - ldr r0, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_808136C - mov r1, r8 - adds r1, 0x1 - lsls r0, r7, 1 - subs r1, r0 - mov r8, r1 - adds r7, 0x1 - cmp r1, 0 - bge _08081410 - subs r1, r6, 0x1 - lsls r0, r1, 1 - add r8, r0 - adds r6, r1, 0 -_08081410: - cmp r6, r7 - bge _080813B4 -_08081414: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8081398 - - thumb_func_start sub_8081424 -sub_8081424: @ 8081424 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08081448 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08081480 - cmp r0, 0x1 - bgt _0808144C - cmp r0, 0 - beq _08081452 - b _080814E2 - .align 2, 0 -_08081448: .4byte gTasks + 0x8 -_0808144C: - cmp r0, 0x2 - beq _080814D8 - b _080814E2 -_08081452: - ldr r0, _08081478 @ =gUnknown_03004DC0 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _0808147C @ =gUnknown_03004DE0 - adds r0, r1 - movs r2, 0x2 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r5, 0x6 - ldrsh r3, [r4, r5] - bl sub_8081398 - movs r0, 0x1 - strh r0, [r4] - b _080814E2 - .align 2, 0 -_08081478: .4byte gUnknown_03004DC0 -_0808147C: .4byte gUnknown_03004DE0 -_08081480: - ldr r0, _080814C8 @ =gUnknown_03004DC0 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _080814CC @ =gUnknown_03004DE0 - adds r0, r1 - movs r6, 0x2 - ldrsh r1, [r4, r6] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r6, 0x6 - ldrsh r3, [r4, r6] - bl sub_8081398 - movs r0, 0 - strh r0, [r4] - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r4, 0x6] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x8 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _080814E2 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _080814D0 - bl remove_some_task - movs r0, 0x2 - strh r0, [r4] - b _080814E2 - .align 2, 0 -_080814C8: .4byte gUnknown_03004DC0 -_080814CC: .4byte gUnknown_03004DE0 -_080814D0: - adds r0, r5, 0 - bl DestroyTask - b _080814E2 -_080814D8: - bl dp12_8087EA4 - adds r0, r5, 0 - bl DestroyTask -_080814E2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8081424 - - thumb_func_start sub_80814E8 -sub_80814E8: @ 80814E8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0808150C @ =sub_8081424 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08081504 - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_08081504: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808150C: .4byte sub_8081424 - thumb_func_end sub_80814E8 - - thumb_func_start sub_8081510 -sub_8081510: @ 8081510 - push {r4,lr} - ldr r4, _08081530 @ =sub_80814E8 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08081528 - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_08081528: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08081530: .4byte sub_80814E8 - thumb_func_end sub_8081510 - - thumb_func_start sub_8081534 -sub_8081534: @ 8081534 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - adds r5, r2, 0 - adds r4, r3, 0 - ldr r6, [sp, 0x1C] - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08081578 @ =sub_8081424 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0808157C @ =gTasks + 0x8 - adds r1, r0, r1 - strh r5, [r1, 0x6] - strh r4, [r1, 0x8] - mov r0, r8 - strh r0, [r1, 0x2] - mov r0, r9 - strh r0, [r1, 0x4] - strh r6, [r1, 0xC] - cmp r5, r4 - bge _08081580 - strh r7, [r1, 0xA] - b _08081584 - .align 2, 0 -_08081578: .4byte sub_8081424 -_0808157C: .4byte gTasks + 0x8 -_08081580: - negs r0, r7 - strh r0, [r1, 0xA] -_08081584: - adds r0, r2, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8081534 - - thumb_func_start sub_8081594 -sub_8081594: @ 8081594 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - bl sav1_get_flash_used_on_map - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - cmp r4, 0 - bne _080815AE - movs r5, 0x1 -_080815AE: - ldr r1, _080815DC @ =gUnknown_0839ACDC - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] - lsls r0, r4, 1 - adds r0, r1 - ldrh r3, [r0] - str r5, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x78 - movs r1, 0x50 - bl sub_8081534 - bl sub_8081510 - bl ScriptContext2_Enable - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080815DC: .4byte gUnknown_0839ACDC - thumb_func_end sub_8081594 - - thumb_func_start sub_80815E0 -sub_80815E0: @ 80815E0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0808160E - ldr r4, _08081614 @ =gUnknown_03004DE0 - ldr r1, _08081618 @ =gUnknown_0839ACDC - lsls r0, 1 - adds r0, r1 - ldrh r3, [r0] - adds r0, r4, 0 - movs r1, 0x78 - movs r2, 0x50 - bl sub_8081398 - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - movs r2, 0xF0 - lsls r2, 1 - adds r0, r4, 0 - bl CpuFastSet -_0808160E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08081614: .4byte gUnknown_03004DE0 -_08081618: .4byte gUnknown_0839ACDC - thumb_func_end sub_80815E0 - - thumb_func_start sub_808161C -sub_808161C: @ 808161C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - cmp r0, 0 - bne _0808162A - movs r1, 0x1F - b _08081630 -_0808162A: - movs r0, 0xF8 - lsls r0, 7 - adds r1, r0, 0 -_08081630: - mov r0, sp - strh r1, [r0] - movs r5, 0 - movs r4, 0xF0 - lsls r4, 16 -_0808163A: - lsrs r1, r4, 16 - mov r0, sp - movs r2, 0x2 - bl LoadPalette - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r5, 0x1 - cmp r5, 0xF - ble _0808163A - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808161C - - thumb_func_start sub_8081658 -sub_8081658: @ 8081658 - push {lr} - lsls r0, 16 - ldr r2, _08081678 @ =REG_BLDALPHA - ldrh r1, [r2] - lsls r1, 24 - lsrs r3, r1, 24 - ldrh r1, [r2] - lsrs r2, r1, 8 - cmp r0, 0 - beq _0808167C - cmp r3, 0 - beq _08081686 - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - b _08081686 - .align 2, 0 -_08081678: .4byte REG_BLDALPHA -_0808167C: - cmp r2, 0xF - bhi _08081686 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08081686: - ldr r1, _0808169C @ =REG_BLDALPHA - lsls r0, r2, 8 - orrs r0, r3 - strh r0, [r1] - cmp r3, 0 - bne _080816A0 - cmp r2, 0x10 - bne _080816A0 - movs r0, 0x1 - b _080816A2 - .align 2, 0 -_0808169C: .4byte REG_BLDALPHA -_080816A0: - movs r0, 0 -_080816A2: - pop {r1} - bx r1 - thumb_func_end sub_8081658 - - thumb_func_start sub_80816A8 -sub_80816A8: @ 80816A8 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080816D0 @ =gTasks + 0x8 - adds r7, r0, r1 - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0x7 - bls _080816C4 - b _08081892 -_080816C4: - lsls r0, 2 - ldr r1, _080816D4 @ =_080816D8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080816D0: .4byte gTasks + 0x8 -_080816D4: .4byte _080816D8 - .align 2, 0 -_080816D8: - .4byte _080816F8 - .4byte _08081790 - .4byte _080817BC - .4byte _080817D8 - .4byte _080817EE - .4byte _08081852 - .4byte _08081818 - .4byte _08081826 -_080816F8: - movs r2, 0x80 - lsls r2, 19 - ldrh r0, [r2] - strh r0, [r7, 0xC] - ldr r3, _0808176C @ =REG_BLDCNT - ldrh r0, [r3] - strh r0, [r7, 0xE] - ldr r6, _08081770 @ =REG_BLDALPHA - ldrh r0, [r6] - strh r0, [r7, 0x10] - ldr r5, _08081774 @ =REG_WININ - ldrh r0, [r5] - strh r0, [r7, 0x12] - ldr r4, _08081778 @ =REG_WINOUT - ldrh r0, [r4] - strh r0, [r7, 0x14] - ldrh r1, [r2] - ldr r0, _0808177C @ =0x0000bfff - ands r0, r1 - strh r0, [r2] - ldr r1, _08081780 @ =gUnknown_081E29E8 - ldrh r0, [r3] - ldrh r1, [r1] - orrs r0, r1 - strh r0, [r3] - ldr r2, _08081784 @ =0x0000070c - adds r0, r2, 0 - strh r0, [r6] - movs r0, 0x3F - strh r0, [r5] - movs r0, 0x1E - strh r0, [r4] - ldr r4, _08081788 @ =gUnknown_03004DE0 - movs r0, 0x4 - ldrsh r1, [r7, r0] - movs r0, 0x6 - ldrsh r2, [r7, r0] - adds r0, r4, 0 - movs r3, 0x1 - bl sub_8081398 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r4, r2 - movs r2, 0xF0 - lsls r2, 1 - adds r0, r4, 0 - bl CpuFastSet - ldr r2, _0808178C @ =gUnknown_0839ACEC - ldr r0, [r2] - ldr r1, [r2, 0x4] - ldr r2, [r2, 0x8] - bl sub_80895F8 - movs r0, 0x1 - strh r0, [r7] - b _08081892 - .align 2, 0 -_0808176C: .4byte REG_BLDCNT -_08081770: .4byte REG_BLDALPHA -_08081774: .4byte REG_WININ -_08081778: .4byte REG_WINOUT -_0808177C: .4byte 0x0000bfff -_08081780: .4byte gUnknown_081E29E8 -_08081784: .4byte 0x0000070c -_08081788: .4byte gUnknown_03004DE0 -_0808178C: .4byte gUnknown_0839ACEC -_08081790: - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuFillWindowRectWithBlankTile - ldrb r0, [r7, 0x2] - bl sub_808161C - movs r1, 0x4 - ldrsh r0, [r7, r1] - movs r2, 0x6 - ldrsh r1, [r7, r2] - movs r2, 0x1 - str r2, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - movs r3, 0xA0 - bl sub_8081534 - strh r4, [r7] - b _08081892 -_080817BC: - ldr r0, _080817D4 @ =sub_8081424 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08081892 - bl EnableBothScriptContexts - movs r0, 0x3 - strh r0, [r7] - b _08081892 - .align 2, 0 -_080817D4: .4byte sub_8081424 -_080817D8: - bl InstallCameraPanAheadCallback - movs r0, 0 - bl SetCameraPanningCallback - movs r0, 0 - strh r0, [r7, 0xA] - movs r0, 0x4 - strh r0, [r7, 0x8] - strh r0, [r7] - b _08081892 -_080817EE: - ldrh r0, [r7, 0x8] - subs r0, 0x1 - strh r0, [r7, 0x8] - lsls r0, 16 - cmp r0, 0 - bne _08081892 - movs r0, 0x4 - strh r0, [r7, 0x8] - ldrh r0, [r7, 0xA] - movs r1, 0x1 - eors r0, r1 - strh r0, [r7, 0xA] - movs r1, 0x4 - negs r1, r1 - cmp r0, 0 - beq _08081810 - movs r1, 0x4 -_08081810: - movs r0, 0 - bl SetCameraPanning - b _08081892 -_08081818: - bl InstallCameraPanAheadCallback - movs r0, 0x8 - strh r0, [r7, 0x8] - movs r0, 0x7 - strh r0, [r7] - b _08081892 -_08081826: - ldrh r0, [r7, 0x8] - subs r0, 0x1 - strh r0, [r7, 0x8] - lsls r0, 16 - cmp r0, 0 - bne _08081892 - movs r0, 0x8 - strh r0, [r7, 0x8] - ldrh r0, [r7, 0xA] - movs r1, 0x1 - eors r0, r1 - strh r0, [r7, 0xA] - ldrh r0, [r7, 0xA] - bl sub_8081658 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08081892 - movs r0, 0x5 - strh r0, [r7] - b _08081892 -_08081852: - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r0, _0808189C @ =gWindowConfig_81E6CE4 - bl LoadFontDefaultPalette - ldr r1, _080818A0 @ =REG_WIN0H - movs r0, 0xFF - strh r0, [r1] - subs r1, 0x40 - ldrh r0, [r7, 0xC] - strh r0, [r1] - adds r1, 0x50 - ldrh r0, [r7, 0xE] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r7, 0x10] - strh r0, [r1] - subs r1, 0xA - ldrh r0, [r7, 0x12] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r7, 0x14] - strh r0, [r1] - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_08081892: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808189C: .4byte gWindowConfig_81E6CE4 -_080818A0: .4byte REG_WIN0H - thumb_func_end sub_80816A8 - - thumb_func_start sub_80818A4 -sub_80818A4: @ 80818A4 - push {lr} - ldr r0, _080818CC @ =sub_80816A8 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080818D0 @ =gTasks + 0x8 - adds r1, r0 - ldr r0, _080818D4 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080818D8 - strh r0, [r1, 0x2] - movs r0, 0x68 - b _080818F0 - .align 2, 0 -_080818CC: .4byte sub_80816A8 -_080818D0: .4byte gTasks + 0x8 -_080818D4: .4byte gScriptResult -_080818D8: - cmp r0, 0x1 - bne _080818E2 - strh r0, [r1, 0x2] - movs r0, 0x68 - b _080818F0 -_080818E2: - cmp r0, 0x2 - bne _080818EA - movs r0, 0 - b _080818EC -_080818EA: - movs r0, 0x1 -_080818EC: - strh r0, [r1, 0x2] - movs r0, 0x78 -_080818F0: - strh r0, [r1, 0x4] - movs r0, 0x50 - strh r0, [r1, 0x6] - pop {r0} - bx r0 - thumb_func_end sub_80818A4 - - thumb_func_start sub_80818FC -sub_80818FC: @ 80818FC - push {lr} - ldr r0, _0808191C @ =sub_80816A8 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08081920 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x6 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0808191C: .4byte sub_80816A8 -_08081920: .4byte gTasks - thumb_func_end sub_80818FC - - thumb_func_start sub_8081924 -sub_8081924: @ 8081924 - push {lr} - bl sub_8054044 - ldr r0, _08081938 @ =task50_0807F0C8 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08081938: .4byte task50_0807F0C8 - thumb_func_end sub_8081924 - - thumb_func_start task50_0807F0C8 -task50_0807F0C8: @ 808193C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8054034 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08081958 - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_08081958: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task50_0807F0C8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index bd8db8a2c..542eed201 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -92,7 +92,7 @@ _08110720: ldr r4, _0811073C @ =0x020006e8 adds r0, r4, 0 movs r1, 0 - bl sub_80FA8EC + bl InitRegionMap movs r0, 0x88 lsls r0, 4 adds r4, r0 @@ -115,7 +115,7 @@ _08110746: _08110752: movs r0, 0x1 movs r1, 0x1 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon movs r1, 0x8 negs r1, r1 movs r0, 0 @@ -1700,7 +1700,7 @@ _08111344: lsls r0, 24 cmp r0, 0 bne _08111358 - bl sub_80FAB10 + bl FreeRegionMapIconResources ldr r0, [r4, 0x4] bl SetMainCallback2 _08111358: @@ -1740,7 +1740,7 @@ _08111390: lsls r0, 24 cmp r0, 0 bne _081113A4 - bl sub_80FAB10 + bl FreeRegionMapIconResources ldr r0, [r4, 0x8] bl SetMainCallback2 _081113A4: @@ -1859,7 +1859,7 @@ _08111496: ldr r4, _081114B4 @ =0x020006e8 adds r0, r4, 0 movs r1, 0 - bl sub_80FA8EC + bl InitRegionMap movs r0, 0x88 lsls r0, 4 adds r4, r0 @@ -1882,7 +1882,7 @@ _081114BE: _081114CA: movs r0, 0x1 movs r1, 0x1 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon movs r1, 0x8 negs r1, r1 movs r0, 0 diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s index 3a1552f70..fe1b41724 100644 --- a/asm/pokemon_menu.s +++ b/asm/pokemon_menu.s @@ -2093,7 +2093,7 @@ _0808AB6C: .4byte gPaletteFade _0808AB70: .4byte gTasks _0808AB74: .4byte c2_exit_to_overworld_2_switch _0808AB78: - ldr r0, _0808AB8C @ =sub_80FC074 + ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap bl SetMainCallback2 _0808AB7E: adds r0, r4, 0 @@ -2103,7 +2103,7 @@ _0808AB84: pop {r0} bx r0 .align 2, 0 -_0808AB8C: .4byte sub_80FC074 +_0808AB8C: .4byte CB2_InitFlyRegionMap thumb_func_end sub_808AB34 thumb_func_start sub_808AB90 diff --git a/asm/pokenav.s b/asm/pokenav.s index 757a2a5a2..cb6a40450 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -340,7 +340,7 @@ sub_80EBD30: @ 80EBD30 bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer - bl sub_80FB260 + bl UpdateRegionMapVideoRegs bl sub_80EFE7C pop {r0} bx r0 @@ -10523,7 +10523,7 @@ sub_80F0FFC: @ 80F0FFC ldrh r1, [r0] adds r0, r5, 0 movs r2, 0 - bl sub_80FBFB4 + bl GetMapSectionName ldr r0, _080F1054 @ =gWindowConfig_81E710C bl BasicInitMenuWindow adds r0, r5, 0 @@ -14321,10 +14321,10 @@ sub_80F2DD8: @ 80F2DD8 push {lr} movs r0, 0x7 movs r1, 0x7 - bl sub_80FBB3C + bl CreateRegionMapCursor movs r0, 0x8 movs r1, 0x8 - bl sub_80FBCF0 + bl CreateRegionMapPlayerIcon bl sub_80FBF94 pop {r0} bx r0 @@ -14333,7 +14333,7 @@ sub_80F2DD8: @ 80F2DD8 thumb_func_start sub_80F2DF4 sub_80F2DF4: @ 80F2DF4 push {lr} - bl sub_80FAB10 + bl FreeRegionMapIconResources pop {r0} bx r0 thumb_func_end sub_80F2DF4 diff --git a/asm/record_mixing.s b/asm/record_mixing.s deleted file mode 100644 index ce0121a40..000000000 --- a/asm/record_mixing.s +++ /dev/null @@ -1,543 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80B9C6C -sub_80B9C6C: @ 80B9C6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x58 - str r0, [sp, 0x2C] - str r1, [sp, 0x30] - str r3, [sp, 0x38] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x34] - bl Random - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x40] - ldr r0, _080B9DA8 @ =gLinkPlayers - ldrh r0, [r0, 0x4] - bl SeedRng - bl GetLinkPlayerCount - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r3, 0 - add r0, sp, 0x1C - mov r9, r0 - movs r1, 0x1D - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0xC - str r2, [sp, 0x4C] - movs r7, 0xFF - add r4, sp, 0x8 - movs r2, 0 - mov r6, r9 - mov r5, r10 -_080B9CBC: - mov r1, sp - adds r1, r3 - adds r1, 0x4 - ldrb r0, [r1] - orrs r0, r7 - strb r0, [r1] - adds r0, r4, r3 - strb r2, [r0] - lsls r1, r3, 1 - adds r0, r6, r1 - strb r2, [r0] - adds r1, r5, r1 - strb r2, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080B9CBC - movs r4, 0 - str r4, [sp, 0x3C] - movs r3, 0 - mov r1, r8 - lsls r0, r1, 16 - lsrs r1, r0, 16 - str r0, [sp, 0x50] - ldr r4, [sp, 0x30] - ldr r0, [sp, 0x34] - adds r2, r4, 0 - muls r2, r0 - str r2, [sp, 0x48] - ldr r2, [sp, 0x3C] - cmp r2, r1 - bcs _080B9D46 - mov r8, r1 -_080B9D00: - ldr r4, [sp, 0x30] - adds r0, r4, 0 - muls r0, r3 - ldr r1, [sp, 0x2C] - adds r6, r1, r0 - ldr r0, [r6, 0x70] - cmp r0, 0 - beq _080B9D3C - movs r7, 0 - cmp r7, r0 - bcs _080B9D3C - adds r4, r6, 0 - adds r4, 0x74 - mov r2, r9 - lsls r1, r3, 1 - movs r5, 0x1 -_080B9D20: - lsls r0, r7, 1 - adds r0, r4, r0 - ldrh r0, [r0] - cmp r0, 0 - bne _080B9D30 - adds r0, r7, r1 - adds r0, r2, r0 - strb r5, [r0] -_080B9D30: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, [r6, 0x70] - cmp r7, r0 - bcc _080B9D20 -_080B9D3C: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r8 - bcc _080B9D00 -_080B9D46: - movs r7, 0 - movs r3, 0 - ldr r2, [sp, 0x50] - cmp r2, 0 - beq _080B9E3E - mov r4, sp - adds r4, 0x24 - str r4, [sp, 0x44] - movs r0, 0x25 - add r0, sp - mov r8, r0 -_080B9D5C: - ldr r1, [sp, 0x30] - adds r0, r1, 0 - muls r0, r3 - ldr r2, [sp, 0x2C] - adds r6, r2, r0 - lsls r1, r3, 1 - mov r4, r9 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080B9D7C - mov r2, r10 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9D86 -_080B9D7C: - ldr r0, [sp, 0x3C] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x3C] -_080B9D86: - mov r4, r9 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9DAC - mov r2, r10 - adds r0, r2, r1 - ldrb r2, [r0] - cmp r2, 0 - bne _080B9DAC -_080B9D9A: - lsls r1, r7, 1 - ldr r4, [sp, 0x44] - adds r0, r4, r1 - strb r3, [r0] - add r1, r8 - strb r2, [r1] - b _080B9E2C - .align 2, 0 -_080B9DA8: .4byte gLinkPlayers -_080B9DAC: - mov r2, r9 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080B9DC0 - mov r4, r10 - adds r0, r4, r1 - ldrb r2, [r0] - cmp r2, 0x1 - beq _080B9D9A -_080B9DC0: - mov r2, r9 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9E32 - mov r4, r10 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080B9E32 - lsls r5, r7, 1 - ldr r1, [sp, 0x44] - adds r0, r1, r5 - strb r3, [r0] - adds r0, r6, 0 - str r3, [sp, 0x54] - bl sub_80B9BBC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r0, 0x38 - bl sub_80B9BBC - lsls r0, 24 - lsrs r1, r0, 24 - ldr r3, [sp, 0x54] - cmp r4, 0 - bne _080B9E0A - cmp r1, 0 - beq _080B9E0E - mov r2, r8 - adds r1, r2, r5 - movs r0, 0x1 - strb r0, [r1] - b _080B9E2C -_080B9E0A: - cmp r1, 0 - beq _080B9E26 -_080B9E0E: - str r3, [sp, 0x54] - bl Random - mov r4, r8 - adds r2, r4, r5 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - strb r0, [r2] - ldr r3, [sp, 0x54] - b _080B9E2C -_080B9E26: - mov r2, r8 - adds r0, r2, r5 - strb r1, [r0] -_080B9E2C: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 -_080B9E32: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r4, [sp, 0x50] - cmp r0, r4 - bcc _080B9D5C -_080B9E3E: - movs r3, 0 - ldr r1, [sp, 0x48] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 3 - ldr r2, [sp, 0x2C] - adds r6, r2, r0 - ldr r1, [sp, 0x4C] -_080B9E4E: - lsls r0, r3, 2 - adds r0, r1, r0 - str r6, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080B9E4E - ldr r0, [sp, 0x38] - bl sub_80B9C4C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 24 - lsrs r1, r0, 24 - ldr r4, [sp, 0x3C] - cmp r4, 0x3 - beq _080B9E9C - cmp r4, 0x3 - bgt _080B9E82 - cmp r4, 0x2 - beq _080B9E8A - b _080B9EF0 -_080B9E82: - ldr r0, [sp, 0x3C] - cmp r0, 0x4 - beq _080B9EBC - b _080B9EF0 -_080B9E8A: - add r2, sp, 0x24 - movs r0, 0x1 - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - movs r3, 0 - bl sub_80B9BC4 - b _080B9EF0 -_080B9E9C: - ldr r0, _080B9EB8 @ =gUnknown_083D02B4 - lsls r1, 1 - adds r2, r1, r0 - ldrb r3, [r2] - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - add r2, sp, 0x24 - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - bl sub_80B9BC4 - b _080B9EF0 - .align 2, 0 -_080B9EB8: .4byte gUnknown_083D02B4 -_080B9EBC: - add r6, sp, 0x24 - ldr r4, _080B9F2C @ =gUnknown_083D02BA - lsls r5, r1, 2 - adds r0, r5, r4 - ldrb r3, [r0] - adds r0, r4, 0x1 - adds r0, r5, r0 - ldrb r0, [r0] - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - adds r2, r6, 0 - bl sub_80B9BC4 - adds r0, r4, 0x2 - adds r0, r5, r0 - ldrb r3, [r0] - adds r4, 0x3 - adds r5, r4 - ldrb r0, [r5] - str r0, [sp] - ldr r0, [sp, 0x2C] - ldr r1, [sp, 0x30] - adds r2, r6, 0 - bl sub_80B9BC4 -_080B9EF0: - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x48] - adds r6, r1, r2 - ldr r4, _080B9F30 @ =gSaveBlock1 - ldr r1, _080B9F34 @ =0x0000303c - adds r0, r4, r1 - adds r1, r6, 0 - movs r2, 0x38 - bl memcpy - ldr r2, _080B9F38 @ =0x00003074 - adds r4, r2 - adds r1, r6, 0 - adds r1, 0x38 - adds r0, r4, 0 - movs r2, 0x38 - bl memcpy - ldr r0, [sp, 0x40] - bl SeedRng - add sp, 0x58 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B9F2C: .4byte gUnknown_083D02BA -_080B9F30: .4byte gSaveBlock1 -_080B9F34: .4byte 0x0000303c -_080B9F38: .4byte 0x00003074 - thumb_func_end sub_80B9C6C - - thumb_func_start sub_80B9F3C -sub_80B9F3C: @ 80B9F3C - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - cmp r1, 0 - beq _080BA000 - ldrh r0, [r4] - cmp r0, 0 - beq _080BA000 - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080B9FC8 - ldrh r0, [r4] - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - bne _080B9FB8 - ldrh r0, [r4] - movs r1, 0x1 - bl CheckPCHasItem - lsls r0, 24 - cmp r0, 0 - bne _080B9FB8 - ldrh r0, [r4] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - beq _080B9FB8 - ldr r0, _080B9FA4 @ =0x00004001 - ldrh r1, [r4] - bl VarSet - ldr r0, _080B9FA8 @ =gStringVar1 - ldr r1, _080B9FAC @ =gLinkPlayers + 0x8 - bl StringCopy - ldrh r1, [r4] - ldr r0, _080B9FB0 @ =0x00000113 - cmp r1, r0 - bne _080BA000 - ldr r0, _080B9FB4 @ =0x00000853 - bl FlagSet - b _080BA000 - .align 2, 0 -_080B9FA4: .4byte 0x00004001 -_080B9FA8: .4byte gStringVar1 -_080B9FAC: .4byte gLinkPlayers + 0x8 -_080B9FB0: .4byte 0x00000113 -_080B9FB4: .4byte 0x00000853 -_080B9FB8: - ldr r0, _080B9FC4 @ =0x00004001 - movs r1, 0 - bl VarSet - b _080BA000 - .align 2, 0 -_080B9FC4: .4byte 0x00004001 -_080B9FC8: - ldrh r0, [r4] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080B9FF8 - ldr r0, _080B9FEC @ =0x00004001 - ldrh r1, [r4] - bl VarSet - ldr r0, _080B9FF0 @ =gStringVar1 - ldr r1, _080B9FF4 @ =gLinkPlayers + 0x8 - bl StringCopy - b _080BA000 - .align 2, 0 -_080B9FEC: .4byte 0x00004001 -_080B9FF0: .4byte gStringVar1 -_080B9FF4: .4byte gLinkPlayers + 0x8 -_080B9FF8: - ldr r0, _080BA008 @ =0x00004001 - movs r1, 0 - bl VarSet -_080BA000: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA008: .4byte 0x00004001 - thumb_func_end sub_80B9F3C - - thumb_func_start sub_80BA00C -sub_80BA00C: @ 80BA00C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080BA030 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x5 - bhi _080BA09C - lsls r0, 2 - ldr r1, _080BA034 @ =_080BA038 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BA030: .4byte gTasks -_080BA034: .4byte _080BA038 - .align 2, 0 -_080BA038: - .4byte _080BA086 - .4byte _080BA086 - .4byte _080BA050 - .4byte _080BA05A - .4byte _080BA074 - .4byte _080BA08E -_080BA050: - bl SetSecretBase2Field_9_AndHideBG - bl sub_8125E2C - b _080BA086 -_080BA05A: - bl sub_8125E6C - lsls r0, 24 - cmp r0, 0 - beq _080BA09C - bl ClearSecretBase2Field_9_2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - b _080BA09C -_080BA074: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - ble _080BA09C - bl sub_800832C -_080BA086: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _080BA09C -_080BA08E: - ldr r0, _080BA0A4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080BA09C - adds r0, r2, 0 - bl DestroyTask -_080BA09C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA0A4: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_80BA00C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/region_map.s b/asm/region_map.s deleted file mode 100644 index 44d6a4e91..000000000 --- a/asm/region_map.s +++ /dev/null @@ -1,3969 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FA8EC -sub_80FA8EC: @ 80FA8EC - push {lr} - lsls r1, 24 - lsrs r1, 24 - bl sub_80FA904 -_080FA8F6: - bl sub_80FA940 - lsls r0, 24 - cmp r0, 0 - bne _080FA8F6 - pop {r0} - bx r0 - thumb_func_end sub_80FA8EC - - thumb_func_start sub_80FA904 -sub_80FA904: @ 80FA904 - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldr r3, _080FA928 @ =gUnknown_020388CC - str r0, [r3] - movs r2, 0x79 - adds r2, r0 - mov r12, r2 - movs r2, 0 - mov r4, r12 - strb r2, [r4] - adds r0, 0x78 - strb r1, [r0] - ldr r3, [r3] - cmp r1, 0 - bne _080FA930 - ldr r0, _080FA92C @ =sub_80FAB78 - b _080FA932 - .align 2, 0 -_080FA928: .4byte gUnknown_020388CC -_080FA92C: .4byte sub_80FAB78 -_080FA930: - ldr r0, _080FA93C @ =sub_80FAD04 -_080FA932: - str r0, [r3, 0x18] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FA93C: .4byte sub_80FAD04 - thumb_func_end sub_80FA904 - - thumb_func_start sub_80FA940 -sub_80FA940: @ 80FA940 - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _080FA95C @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x7 - bls _080FA952 - b _080FAAE2 -_080FA952: - lsls r0, 2 - ldr r1, _080FA960 @ =_080FA964 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FA95C: .4byte gUnknown_020388CC -_080FA960: .4byte _080FA964 - .align 2, 0 -_080FA964: - .4byte _080FA984 - .4byte _080FA998 - .4byte _080FA9AC - .4byte _080FA9BC - .4byte _080FA9D8 - .4byte _080FA9F4 - .4byte _080FAA38 - .4byte _080FAAB4 -_080FA984: - ldr r0, _080FA990 @ =gUnknown_083E5DA0 - ldr r1, _080FA994 @ =0x06008000 - bl LZ77UnCompVram - b _080FAAF4 - .align 2, 0 -_080FA990: .4byte gUnknown_083E5DA0 -_080FA994: .4byte 0x06008000 -_080FA998: - ldr r0, _080FA9A4 @ =gUnknown_083E6B04 - ldr r1, _080FA9A8 @ =0x0600e000 - bl LZ77UnCompVram - b _080FAAF4 - .align 2, 0 -_080FA9A4: .4byte gUnknown_083E6B04 -_080FA9A8: .4byte 0x0600e000 -_080FA9AC: - ldr r0, _080FA9B8 @ =gUnknown_083E5D60 - movs r1, 0x70 - movs r2, 0x60 - bl LoadPalette - b _080FAAF4 - .align 2, 0 -_080FA9B8: .4byte gUnknown_083E5D60 -_080FA9BC: - ldr r0, _080FA9D0 @ =gUnknown_083E5AF0 - ldr r1, _080FA9D4 @ =gUnknown_020388CC - ldr r1, [r1] - movs r2, 0xC0 - lsls r2, 1 - adds r1, r2 - bl LZ77UnCompWram - b _080FAAF4 - .align 2, 0 -_080FA9D0: .4byte gUnknown_083E5AF0 -_080FA9D4: .4byte gUnknown_020388CC -_080FA9D8: - ldr r0, _080FA9EC @ =gUnknown_083E5B34 - ldr r1, _080FA9F0 @ =gUnknown_020388CC - ldr r1, [r1] - movs r3, 0xA0 - lsls r3, 2 - adds r1, r3 - bl LZ77UnCompWram - b _080FAAF4 - .align 2, 0 -_080FA9EC: .4byte gUnknown_083E5B34 -_080FA9F0: .4byte gUnknown_020388CC -_080FA9F4: - bl sub_80FB32C - ldr r4, _080FAA34 @ =gUnknown_020388CC - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x54 - ldrh r1, [r0] - adds r0, 0x20 - strh r1, [r0] - subs r0, 0x1E - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x76 - strh r0, [r1] - ldrh r0, [r2, 0x14] - bl sub_80FB758 - ldr r1, [r4] - strb r0, [r1, 0x16] - ldr r0, [r4] - ldrh r0, [r0, 0x14] - bl sub_80FB9C0 - adds r1, r0, 0 - ldr r0, [r4] - strh r1, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 - b _080FAAF4 - .align 2, 0 -_080FAA34: .4byte gUnknown_020388CC -_080FAA38: - ldr r0, _080FAA60 @ =gUnknown_020388CC - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x78 - ldrb r1, [r0] - cmp r1, 0 - bne _080FAA64 - movs r0, 0x80 - lsls r0, 1 - str r0, [sp] - str r0, [sp, 0x4] - str r1, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_80FB170 - b _080FAAF4 - .align 2, 0 -_080FAA60: .4byte gUnknown_020388CC -_080FAA64: - adds r1, r4, 0 - adds r1, 0x54 - ldrh r0, [r1] - lsls r0, 3 - subs r0, 0x34 - adds r2, r4, 0 - adds r2, 0x5C - movs r3, 0 - strh r0, [r2] - movs r5, 0x56 - adds r5, r4 - mov r12, r5 - ldrh r0, [r5] - lsls r0, 3 - subs r0, 0x44 - adds r5, r4, 0 - adds r5, 0x5E - strh r0, [r5] - ldrh r1, [r1] - adds r0, r4, 0 - adds r0, 0x64 - strh r1, [r0] - mov r0, r12 - ldrh r1, [r0] - adds r0, r4, 0 - adds r0, 0x66 - strh r1, [r0] - movs r1, 0 - ldrsh r0, [r2, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x80 - str r2, [sp] - str r2, [sp, 0x4] - str r3, [sp, 0x8] - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - b _080FAAF4 -_080FAAB4: - bl sub_80FBA18 - bl sub_80FB260 - ldr r2, _080FAAE8 @ =gUnknown_020388CC - ldr r0, [r2] - movs r1, 0 - str r1, [r0, 0x1C] - str r1, [r0, 0x20] - adds r0, 0x7A - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x7E - strb r1, [r0] - ldr r1, _080FAAEC @ =REG_BG2CNT - ldr r3, _080FAAF0 @ =0x0000bc8a - adds r0, r3, 0 - strh r0, [r1] - ldr r1, [r2] - adds r1, 0x79 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080FAAE2: - movs r0, 0 - b _080FAB02 - .align 2, 0 -_080FAAE8: .4byte gUnknown_020388CC -_080FAAEC: .4byte REG_BG2CNT -_080FAAF0: .4byte 0x0000bc8a -_080FAAF4: - ldr r0, _080FAB0C @ =gUnknown_020388CC - ldr r1, [r0] - adds r1, 0x79 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0x1 -_080FAB02: - add sp, 0xC - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FAB0C: .4byte gUnknown_020388CC - thumb_func_end sub_80FA940 - - thumb_func_start sub_80FAB10 -sub_80FAB10: @ 80FAB10 - push {r4,lr} - ldr r4, _080FAB5C @ =gUnknown_020388CC - ldr r0, [r4] - ldr r0, [r0, 0x1C] - cmp r0, 0 - beq _080FAB34 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x58 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FAB34: - ldr r0, [r4] - ldr r0, [r0, 0x20] - cmp r0, 0 - beq _080FAB54 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x70 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x72 - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FAB54: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FAB5C: .4byte gUnknown_020388CC - thumb_func_end sub_80FAB10 - - thumb_func_start sub_80FAB60 -sub_80FAB60: @ 80FAB60 - push {lr} - ldr r0, _080FAB74 @ =gUnknown_020388CC - ldr r0, [r0] - ldr r0, [r0, 0x18] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080FAB74: .4byte gUnknown_020388CC - thumb_func_end sub_80FAB60 - - thumb_func_start sub_80FAB78 -sub_80FAB78: @ 80FAB78 - push {r4,lr} - movs r4, 0 - ldr r2, _080FAC14 @ =gUnknown_020388CC - ldr r0, [r2] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r2] - adds r0, 0x7C - strb r4, [r0] - ldr r3, _080FAC18 @ =gMain - ldrh r1, [r3, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FABAA - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - cmp r0, 0x2 - bls _080FABAA - adds r1, 0x7C - movs r0, 0xFF - strb r0, [r1] - movs r4, 0x1 -_080FABAA: - ldrh r1, [r3, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FABC8 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x56 - ldrh r0, [r0] - cmp r0, 0xF - bhi _080FABC8 - adds r1, 0x7C - movs r0, 0x1 - strb r0, [r1] - movs r4, 0x1 -_080FABC8: - ldrh r1, [r3, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FABE6 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - cmp r0, 0x1 - bls _080FABE6 - adds r1, 0x7B - movs r0, 0xFF - strb r0, [r1] - movs r4, 0x1 -_080FABE6: - ldrh r1, [r3, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080FAC04 - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - cmp r0, 0x1B - bhi _080FAC04 - adds r1, 0x7B - movs r0, 0x1 - strb r0, [r1] - movs r4, 0x1 -_080FAC04: - ldrh r3, [r3, 0x2E] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _080FAC1C - movs r4, 0x4 - b _080FAC26 - .align 2, 0 -_080FAC14: .4byte gUnknown_020388CC -_080FAC18: .4byte gMain -_080FAC1C: - movs r0, 0x2 - ands r0, r3 - cmp r0, 0 - beq _080FAC26 - movs r4, 0x5 -_080FAC26: - cmp r4, 0x1 - bne _080FAC38 - ldr r0, [r2] - adds r0, 0x7A - movs r1, 0x4 - strb r1, [r0] - ldr r1, [r2] - ldr r0, _080FAC40 @ =_swiopen - str r0, [r1, 0x18] -_080FAC38: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080FAC40: .4byte _swiopen - thumb_func_end sub_80FAB78 - - thumb_func_start _swiopen -_swiopen: @ 80FAC44 - push {r4,r5,lr} - ldr r5, _080FAC5C @ =gUnknown_020388CC - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7A - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - beq _080FAC60 - movs r0, 0x2 - b _080FACFA - .align 2, 0 -_080FAC5C: .4byte gUnknown_020388CC -_080FAC60: - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080FAC76 - adds r1, 0x54 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080FAC76: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080FAC8E - adds r1, 0x54 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080FAC8E: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - ble _080FACA6 - adds r1, 0x56 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080FACA6: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080FACBE - adds r1, 0x56 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080FACBE: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - adds r1, 0x56 - ldrh r1, [r1] - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80FB758 - ldr r1, [r5] - strb r0, [r1, 0x16] - ldr r0, [r5] - ldrh r1, [r0, 0x14] - cmp r4, r1 - beq _080FACEE - strh r4, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 -_080FACEE: - bl sub_80FBA18 - ldr r1, [r5] - ldr r0, _080FAD00 @ =sub_80FAB78 - str r0, [r1, 0x18] - movs r0, 0x3 -_080FACFA: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FAD00: .4byte sub_80FAB78 - thumb_func_end _swiopen - - thumb_func_start sub_80FAD04 -sub_80FAD04: @ 80FAD04 - push {r4-r6,lr} - movs r4, 0 - ldr r3, _080FADD4 @ =gUnknown_020388CC - ldr r0, [r3] - mov r12, r0 - adds r0, 0x6A - strh r4, [r0] - mov r5, r12 - adds r5, 0x68 - strh r4, [r5] - ldr r2, _080FADD8 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - adds r6, r3, 0 - adds r3, r2, 0 - cmp r0, 0 - beq _080FAD3E - mov r0, r12 - adds r0, 0x5E - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x34 - negs r0, r0 - cmp r1, r0 - ble _080FAD3E - ldr r0, _080FADDC @ =0x0000ffff - strh r0, [r5] - movs r4, 0x1 -_080FAD3E: - ldrh r1, [r3, 0x2C] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FAD5E - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x5E - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0x3B - bgt _080FAD5E - adds r1, 0x68 - movs r0, 0x1 - strh r0, [r1] - movs r4, 0x1 -_080FAD5E: - ldrh r1, [r3, 0x2C] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080FAD84 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x5C - movs r5, 0 - ldrsh r1, [r0, r5] - movs r0, 0x2C - negs r0, r0 - cmp r1, r0 - ble _080FAD84 - adds r1, r2, 0 - adds r1, 0x6A - ldr r0, _080FADDC @ =0x0000ffff - strh r0, [r1] - movs r4, 0x1 -_080FAD84: - ldrh r1, [r3, 0x2C] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080FADA4 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0x5C - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0xAB - bgt _080FADA4 - adds r1, 0x6A - movs r0, 0x1 - strh r0, [r1] - movs r4, 0x1 -_080FADA4: - ldrh r2, [r3, 0x2E] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _080FADB0 - movs r4, 0x4 -_080FADB0: - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080FADBA - movs r4, 0x5 -_080FADBA: - cmp r4, 0x1 - bne _080FADCA - ldr r0, [r6] - ldr r1, _080FADE0 @ =sub_80FADE4 - str r1, [r0, 0x18] - adds r0, 0x6C - movs r1, 0 - strh r1, [r0] -_080FADCA: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FADD4: .4byte gUnknown_020388CC -_080FADD8: .4byte gMain -_080FADDC: .4byte 0x0000ffff -_080FADE0: .4byte sub_80FADE4 - thumb_func_end sub_80FAD04 - - thumb_func_start sub_80FADE4 -sub_80FADE4: @ 80FADE4 - push {r4,r5,lr} - ldr r5, _080FAEB4 @ =gUnknown_020388CC - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0x5E - adds r0, r2, 0 - adds r0, 0x68 - ldrh r0, [r0] - ldrh r1, [r3] - adds r0, r1 - strh r0, [r3] - adds r1, r2, 0 - adds r1, 0x5C - adds r0, r2, 0 - adds r0, 0x6A - ldrh r0, [r0] - ldrh r2, [r1] - adds r0, r2 - strh r0, [r1] - movs r4, 0 - ldrsh r0, [r1, r4] - movs r2, 0 - ldrsh r1, [r3, r2] - bl sub_80FB238 - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x6C - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bne _080FAEBC - adds r0, r2, 0 - adds r0, 0x5C - movs r3, 0 - ldrsh r1, [r0, r3] - adds r0, r1, 0 - adds r0, 0x2C - cmp r0, 0 - bge _080FAE3C - adds r0, 0x7 -_080FAE3C: - asrs r0, 3 - adds r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r2, 0 - adds r0, 0x5E - movs r4, 0 - ldrsh r1, [r0, r4] - adds r0, r1, 0 - adds r0, 0x34 - cmp r0, 0 - bge _080FAE56 - adds r0, 0x7 -_080FAE56: - asrs r0, 3 - adds r0, 0x2 - lsls r0, 16 - lsrs r1, r0, 16 - adds r4, r2, 0 - adds r4, 0x64 - adds r0, r2, 0 - adds r0, 0x66 - ldrh r2, [r4] - cmp r3, r2 - bne _080FAE72 - ldrh r2, [r0] - cmp r1, r2 - beq _080FAEA0 -_080FAE72: - strh r3, [r4] - strh r1, [r0] - adds r0, r3, 0 - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl sub_80FB758 - ldr r1, [r5] - strb r0, [r1, 0x16] - ldr r0, [r5] - ldrh r3, [r0, 0x14] - cmp r4, r3 - beq _080FAE9C - strh r4, [r0, 0x14] - ldrh r1, [r0, 0x14] - movs r2, 0x10 - bl sub_80FBFB4 -_080FAE9C: - bl sub_80FBA18 -_080FAEA0: - ldr r0, _080FAEB4 @ =gUnknown_020388CC - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x6C - movs r0, 0 - strh r0, [r1] - ldr r0, _080FAEB8 @ =sub_80FAD04 - str r0, [r2, 0x18] - movs r0, 0x3 - b _080FAEBE - .align 2, 0 -_080FAEB4: .4byte gUnknown_020388CC -_080FAEB8: .4byte sub_80FAD04 -_080FAEBC: - movs r0, 0x2 -_080FAEBE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FADE4 - - thumb_func_start sub_80FAEC4 -sub_80FAEC4: @ 80FAEC4 - push {r4-r6,lr} - ldr r1, _080FAF40 @ =gUnknown_020388CC - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r3, [r0] - adds r5, r1, 0 - cmp r3, 0 - bne _080FAF48 - subs r0, 0x1A - strh r3, [r0] - subs r0, 0x2 - strh r3, [r0] - str r3, [r2, 0x40] - str r3, [r2, 0x3C] - adds r4, r2, 0 - adds r4, 0x54 - ldrh r0, [r4] - lsls r0, 3 - subs r0, 0x34 - adds r1, r2, 0 - adds r1, 0x60 - strh r0, [r1] - movs r0, 0x56 - adds r0, r2 - mov r12, r0 - ldrh r0, [r0] - lsls r0, 3 - subs r0, 0x44 - adds r3, r2, 0 - adds r3, 0x62 - strh r0, [r3] - movs r6, 0 - ldrsh r0, [r1, r6] - lsls r0, 8 - cmp r0, 0 - bge _080FAF10 - adds r0, 0xF -_080FAF10: - asrs r0, 4 - str r0, [r2, 0x44] - movs r1, 0 - ldrsh r0, [r3, r1] - lsls r0, 8 - cmp r0, 0 - bge _080FAF20 - adds r0, 0xF -_080FAF20: - asrs r0, 4 - str r0, [r2, 0x48] - ldrh r1, [r4] - adds r0, r2, 0 - adds r0, 0x64 - strh r1, [r0] - mov r3, r12 - ldrh r0, [r3] - adds r1, r2, 0 - adds r1, 0x66 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 9 - str r0, [r2, 0x4C] - ldr r0, _080FAF44 @ =0xfffff800 - b _080FAFA6 - .align 2, 0 -_080FAF40: .4byte gUnknown_020388CC -_080FAF44: .4byte 0xfffff800 -_080FAF48: - adds r0, r2, 0 - adds r0, 0x5C - movs r6, 0 - ldrsh r0, [r0, r6] - lsls r0, 8 - str r0, [r2, 0x3C] - adds r0, r2, 0 - adds r0, 0x5E - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 8 - str r0, [r2, 0x40] - adds r0, r2, 0 - adds r0, 0x60 - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r0, [r2, 0x3C] - cmp r0, 0 - bge _080FAF74 - adds r0, 0xF -_080FAF74: - asrs r0, 4 - negs r0, r0 - str r0, [r2, 0x44] - ldr r0, [r2, 0x40] - cmp r0, 0 - bge _080FAF82 - adds r0, 0xF -_080FAF82: - asrs r0, 4 - negs r0, r0 - str r0, [r2, 0x48] - adds r0, r2, 0 - adds r0, 0x64 - ldrh r1, [r0] - subs r0, 0x10 - strh r1, [r0] - adds r0, 0x12 - ldrh r0, [r0] - adds r1, r2, 0 - adds r1, 0x56 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 8 - str r0, [r2, 0x4C] - movs r0, 0x80 - lsls r0, 4 -_080FAFA6: - str r0, [r2, 0x50] - ldr r0, [r5] - adds r0, 0x6E - movs r1, 0 - strh r1, [r0] - bl sub_80FBCA0 - bl sub_80FBDF8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80FAEC4 - - thumb_func_start sub_80FAFC0 -sub_80FAFC0: @ 80FAFC0 - push {r4-r6,lr} - sub sp, 0xC - ldr r0, _080FAFD8 @ =gUnknown_020388CC - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x6E - ldrh r1, [r2] - adds r5, r0, 0 - cmp r1, 0xF - bls _080FAFDC - movs r0, 0 - b _080FB164 - .align 2, 0 -_080FAFD8: .4byte gUnknown_020388CC -_080FAFDC: - adds r0, r1, 0x1 - movs r1, 0 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bne _080FB050 - str r1, [r3, 0x44] - str r1, [r3, 0x48] - adds r0, r3, 0 - adds r0, 0x60 - ldrh r1, [r0] - subs r0, 0x4 - strh r1, [r0] - adds r0, 0x6 - ldrh r0, [r0] - adds r1, r3, 0 - adds r1, 0x5E - strh r0, [r1] - adds r1, 0x1A - ldrb r0, [r1] - movs r2, 0x80 - lsls r2, 9 - cmp r0, 0 - bne _080FB012 - movs r2, 0x80 - lsls r2, 8 -_080FB012: - str r2, [r3, 0x4C] - movs r2, 0 - ldrb r0, [r1] - cmp r0, 0 - bne _080FB01E - movs r2, 0x1 -_080FB01E: - strb r2, [r1] - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x78 - ldrb r0, [r0] - ldr r2, _080FB048 @ =sub_80FAD04 - cmp r0, 0 - bne _080FB030 - ldr r2, _080FB04C @ =sub_80FAB78 -_080FB030: - str r2, [r1, 0x18] - adds r0, r1, 0 - adds r0, 0x58 - ldrh r0, [r0] - adds r1, 0x5A - ldrh r1, [r1] - bl sub_80FBB3C - bl sub_80FBE24 - movs r4, 0 - b _080FB132 - .align 2, 0 -_080FB048: .4byte sub_80FAD04 -_080FB04C: .4byte sub_80FAB78 -_080FB050: - ldr r2, [r3, 0x3C] - ldr r0, [r3, 0x44] - adds r2, r0 - str r2, [r3, 0x3C] - ldr r0, [r3, 0x40] - ldr r1, [r3, 0x48] - adds r0, r1 - str r0, [r3, 0x40] - asrs r2, 8 - adds r4, r3, 0 - adds r4, 0x5C - strh r2, [r4] - ldr r0, [r3, 0x40] - asrs r0, 8 - adds r1, r3, 0 - adds r1, 0x5E - strh r0, [r1] - ldr r0, [r3, 0x4C] - ldr r1, [r3, 0x50] - adds r0, r1 - str r0, [r3, 0x4C] - ldr r2, [r3, 0x44] - cmp r2, 0 - bge _080FB090 - adds r0, r3, 0 - adds r0, 0x60 - movs r6, 0 - ldrsh r1, [r4, r6] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - blt _080FB0A4 -_080FB090: - cmp r2, 0 - ble _080FB0B4 - adds r0, r3, 0 - adds r0, 0x60 - movs r2, 0 - ldrsh r1, [r4, r2] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - ble _080FB0B4 -_080FB0A4: - ldr r3, [r5] - adds r0, r3, 0 - adds r0, 0x60 - ldrh r2, [r0] - subs r0, 0x4 - movs r1, 0 - strh r2, [r0] - str r1, [r3, 0x44] -_080FB0B4: - ldr r2, [r5] - ldr r4, [r2, 0x48] - cmp r4, 0 - bge _080FB0D0 - adds r0, r2, 0 - adds r0, 0x5E - adds r3, r2, 0 - adds r3, 0x62 - movs r6, 0 - ldrsh r1, [r0, r6] - movs r6, 0 - ldrsh r0, [r3, r6] - cmp r1, r0 - blt _080FB0E8 -_080FB0D0: - cmp r4, 0 - ble _080FB0FA - adds r1, r2, 0 - adds r1, 0x5E - adds r0, r2, 0 - adds r0, 0x62 - movs r2, 0 - ldrsh r1, [r1, r2] - movs r6, 0 - ldrsh r0, [r0, r6] - cmp r1, r0 - ble _080FB0FA -_080FB0E8: - ldr r2, [r5] - adds r0, r2, 0 - adds r0, 0x62 - ldrh r1, [r0] - adds r3, r2, 0 - adds r3, 0x5E - movs r0, 0 - strh r1, [r3] - str r0, [r2, 0x48] -_080FB0FA: - ldr r0, _080FB118 @ =gUnknown_020388CC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r3, [r0] - cmp r3, 0 - bne _080FB120 - ldr r1, [r2, 0x4C] - ldr r0, _080FB11C @ =0x00007fff - cmp r1, r0 - bgt _080FB130 - adds r0, 0x1 - str r0, [r2, 0x4C] - str r3, [r2, 0x50] - b _080FB130 - .align 2, 0 -_080FB118: .4byte gUnknown_020388CC -_080FB11C: .4byte 0x00007fff -_080FB120: - ldr r0, [r2, 0x4C] - movs r1, 0x80 - lsls r1, 9 - cmp r0, r1 - ble _080FB130 - str r1, [r2, 0x4C] - movs r0, 0 - str r0, [r2, 0x50] -_080FB130: - movs r4, 0x1 -_080FB132: - ldr r0, _080FB16C @ =gUnknown_020388CC - ldr r3, [r0] - adds r0, r3, 0 - adds r0, 0x5C - movs r1, 0 - ldrsh r0, [r0, r1] - adds r1, r3, 0 - adds r1, 0x5E - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, [r3, 0x4C] - lsls r2, 8 - lsrs r2, 16 - str r2, [sp] - ldr r2, [r3, 0x4C] - lsls r2, 8 - lsrs r2, 16 - str r2, [sp, 0x4] - movs r2, 0 - str r2, [sp, 0x8] - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - adds r0, r4, 0 -_080FB164: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080FB16C: .4byte gUnknown_020388CC - thumb_func_end sub_80FAFC0 - - thumb_func_start sub_80FB170 -sub_80FB170: @ 80FB170 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r7, [sp, 0x28] - ldr r5, [sp, 0x2C] - lsls r4, 16 - lsrs r4, 16 - mov r8, r4 - lsls r7, 16 - adds r4, r7, 0 - lsrs r4, 16 - mov r9, r4 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _080FB230 @ =gUnknown_020388CC - ldr r6, [r4] - ldr r7, _080FB234 @ =gSineTable - mov r12, r7 - adds r4, r5, 0 - adds r4, 0x40 - lsls r4, 1 - add r4, r12 - movs r7, 0 - ldrsh r4, [r4, r7] - str r4, [sp] - mov r7, r8 - muls r7, r4 - adds r4, r7, 0 - asrs r4, 8 - mov r10, r4 - str r4, [r6, 0x2C] - lsls r5, 1 - add r5, r12 - movs r7, 0 - ldrsh r5, [r5, r7] - negs r4, r5 - mov r7, r8 - muls r7, r4 - adds r4, r7, 0 - asrs r4, 8 - mov r12, r4 - str r4, [r6, 0x30] - mov r7, r9 - muls r7, r5 - adds r5, r7, 0 - asrs r5, 8 - str r5, [r6, 0x34] - ldr r7, [sp] - mov r4, r9 - muls r4, r7 - asrs r4, 8 - mov r8, r4 - str r4, [r6, 0x38] - lsls r0, 16 - asrs r0, 8 - lsls r2, 16 - asrs r2, 16 - lsls r4, r2, 8 - adds r0, r4 - lsls r3, 16 - asrs r3, 16 - adds r4, r3, 0 - muls r4, r5 - mov r5, r10 - muls r5, r2 - adds r4, r5 - subs r0, r4 - str r0, [r6, 0x24] - lsls r1, 16 - asrs r1, 8 - lsls r0, r3, 8 - adds r1, r0 - mov r0, r8 - muls r0, r3 - mov r3, r12 - muls r3, r2 - adds r2, r3, 0 - adds r0, r2 - subs r1, r0 - str r1, [r6, 0x28] - adds r6, 0x7D - movs r0, 0x1 - strb r0, [r6] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB230: .4byte gUnknown_020388CC -_080FB234: .4byte gSineTable - thumb_func_end sub_80FB170 - - thumb_func_start sub_80FB238 -sub_80FB238: @ 80FB238 - ldr r2, _080FB25C @ =gUnknown_020388CC - ldr r2, [r2] - lsls r0, 16 - asrs r0, 8 - movs r3, 0xE0 - lsls r3, 5 - adds r0, r3 - str r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 8 - movs r0, 0x90 - lsls r0, 6 - adds r1, r0 - str r1, [r2, 0x28] - adds r2, 0x7D - movs r0, 0x1 - strb r0, [r2] - bx lr - .align 2, 0 -_080FB25C: .4byte gUnknown_020388CC - thumb_func_end sub_80FB238 - - thumb_func_start sub_80FB260 -sub_80FB260: @ 80FB260 - push {lr} - ldr r0, _080FB29C @ =gUnknown_020388CC - ldr r2, [r0] - adds r3, r2, 0 - adds r3, 0x7D - ldrb r0, [r3] - cmp r0, 0 - beq _080FB298 - ldr r1, _080FB2A0 @ =REG_BG2PA - ldr r0, [r2, 0x2C] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x34] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x30] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x38] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r2, 0x24] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r2, 0x28] - str r0, [r1] - movs r0, 0 - strb r0, [r3] -_080FB298: - pop {r0} - bx r0 - .align 2, 0 -_080FB29C: .4byte gUnknown_020388CC -_080FB2A0: .4byte REG_BG2PA - thumb_func_end sub_80FB260 - - thumb_func_start sub_80FB2A4 -sub_80FB2A4: @ 80FB2A4 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - movs r0, 0x80 - lsls r0, 1 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x38 - movs r3, 0x48 - bl sub_80FB170 - bl sub_80FB260 - ldr r0, _080FB2E8 @ =gUnknown_020388CC - ldr r2, [r0] - ldr r1, [r2, 0x20] - cmp r1, 0 - beq _080FB2E0 - negs r0, r4 - strh r0, [r1, 0x24] - ldr r1, [r2, 0x20] - negs r0, r5 - strh r0, [r1, 0x26] -_080FB2E0: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FB2E8: .4byte gUnknown_020388CC - thumb_func_end sub_80FB2A4 - - thumb_func_start GetRegionMapSectionAt -GetRegionMapSectionAt: @ 80FB2EC - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - ldr r0, _080FB30C @ =0xfffe0000 - adds r1, r0 - lsrs r2, r1, 16 - cmp r2, 0xE - bhi _080FB306 - cmp r3, 0 - beq _080FB306 - cmp r3, 0x1C - bls _080FB310 -_080FB306: - movs r0, 0x58 - b _080FB324 - .align 2, 0 -_080FB30C: .4byte 0xfffe0000 -_080FB310: - subs r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, _080FB328 @ =gRegionMapSections - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3, r0 - adds r0, r1 - ldrb r0, [r0] -_080FB324: - pop {r1} - bx r1 - .align 2, 0 -_080FB328: .4byte gRegionMapSections - thumb_func_end GetRegionMapSectionAt - - thumb_func_start sub_80FB32C -sub_80FB32C: @ 80FB32C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _080FB358 @ =gSaveBlock1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - adds r2, r0, 0 - cmp r1, 0x19 - bne _080FB35C - ldrb r0, [r2, 0x5] - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _080FB35C - bl sub_80FB600 - b _080FB5E8 - .align 2, 0 -_080FB358: .4byte gSaveBlock1 -_080FB35C: - movs r0, 0x4 - ldrsb r0, [r2, r0] - movs r1, 0x5 - ldrsb r1, [r2, r1] - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x8 - bhi _080FB3A4 - lsls r0, 2 - ldr r1, _080FB37C @ =_080FB380 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB37C: .4byte _080FB380 - .align 2, 0 -_080FB380: - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3E0 - .4byte _080FB3A4 - .4byte _080FB3A4 - .4byte _080FB3E0 - .4byte _080FB464 - .4byte _080FB428 -_080FB3A4: - ldr r4, _080FB3D4 @ =gUnknown_020388CC - ldr r0, [r4] - ldr r3, _080FB3D8 @ =gMapHeader - ldrb r1, [r3, 0x14] - movs r2, 0 - strh r1, [r0, 0x14] - adds r0, 0x7F - strb r2, [r0] - ldr r0, [r3] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldr r0, _080FB3DC @ =gSaveBlock1 - ldrh r6, [r0] - ldrh r3, [r0, 0x2] - ldr r1, [r4] - ldrh r0, [r1, 0x14] - cmp r0, 0x45 - beq _080FB3CC - b _080FB4CC -_080FB3CC: - adds r1, 0x7F - movs r0, 0x1 - strb r0, [r1] - b _080FB4CC - .align 2, 0 -_080FB3D4: .4byte gUnknown_020388CC -_080FB3D8: .4byte gMapHeader -_080FB3DC: .4byte gSaveBlock1 -_080FB3E0: - ldr r4, _080FB420 @ =gSaveBlock1 - adds r0, r4, 0 - adds r0, 0x24 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - adds r1, 0x25 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r0, _080FB424 @ =gUnknown_020388CC - ldr r0, [r0] - ldrb r1, [r2, 0x14] - strh r1, [r0, 0x14] - adds r0, 0x7F - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x28] - ldrh r3, [r4, 0x2A] - b _080FB4CC - .align 2, 0 -_080FB420: .4byte gSaveBlock1 -_080FB424: .4byte gUnknown_020388CC -_080FB428: - ldr r4, _080FB45C @ =gSaveBlock1 - movs r0, 0x14 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x15 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r0, _080FB460 @ =gUnknown_020388CC - ldr r0, [r0] - ldrb r1, [r2, 0x14] - strh r1, [r0, 0x14] - adds r0, 0x7F - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x18] - ldrh r3, [r4, 0x1A] - b _080FB4CC - .align 2, 0 -_080FB45C: .4byte gSaveBlock1 -_080FB460: .4byte gUnknown_020388CC -_080FB464: - ldr r5, _080FB48C @ =gUnknown_020388CC - ldr r0, [r5] - ldr r1, _080FB490 @ =gMapHeader - ldrb r1, [r1, 0x14] - strh r1, [r0, 0x14] - cmp r1, 0x57 - beq _080FB498 - ldr r4, _080FB494 @ =gSaveBlock1 + 0x24 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - b _080FB4B6 - .align 2, 0 -_080FB48C: .4byte gUnknown_020388CC -_080FB490: .4byte gMapHeader -_080FB494: .4byte gSaveBlock1 + 0x24 -_080FB498: - ldr r4, _080FB548 @ =gSaveBlock1 + 0x14 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r2, r0, 0 - ldr r1, [r5] - ldrb r0, [r2, 0x14] - strh r0, [r1, 0x14] -_080FB4B6: - ldr r0, _080FB54C @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x7F - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldrh r2, [r0] - ldrh r0, [r0, 0x4] - mov r8, r0 - ldrh r6, [r4, 0x4] - ldrh r3, [r4, 0x6] -_080FB4CC: - mov r9, r6 - ldr r4, _080FB54C @ =gUnknown_020388CC - ldr r0, [r4] - ldrh r5, [r0, 0x14] - lsls r0, r5, 3 - ldr r1, _080FB550 @ =gRegionMapLocations - adds r0, r1 - mov r10, r0 - ldrb r7, [r0, 0x2] - adds r0, r2, 0 - adds r1, r7, 0 - str r3, [sp] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r3, [sp] - cmp r1, 0 - bne _080FB4F4 - movs r1, 0x1 -_080FB4F4: - adds r0, r6, 0 - str r3, [sp] - bl __udivsi3 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r3, [sp] - cmp r6, r7 - bcc _080FB50C - subs r0, r7, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB50C: - mov r2, r10 - ldrb r4, [r2, 0x3] - mov r0, r8 - adds r1, r4, 0 - str r3, [sp] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r3, [sp] - cmp r1, 0 - bne _080FB526 - movs r1, 0x1 -_080FB526: - adds r0, r3, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r4 - bcc _080FB53A - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 -_080FB53A: - cmp r5, 0x24 - beq _080FB59C - cmp r5, 0x24 - bgt _080FB554 - cmp r5, 0x1D - beq _080FB55E - b _080FB5BE - .align 2, 0 -_080FB548: .4byte gSaveBlock1 + 0x14 -_080FB54C: .4byte gUnknown_020388CC -_080FB550: .4byte gRegionMapLocations -_080FB554: - cmp r5, 0x29 - beq _080FB566 - cmp r5, 0x33 - beq _080FB566 - b _080FB5BE -_080FB55E: - cmp r3, 0 - beq _080FB5BE - movs r6, 0 - b _080FB5BE -_080FB566: - movs r6, 0 - ldr r1, _080FB598 @ =gSaveBlock1 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x20 - ble _080FB574 - movs r6, 0x1 -_080FB574: - cmp r0, 0x33 - ble _080FB57E - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB57E: - movs r3, 0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0x25 - ble _080FB58A - movs r3, 0x1 -_080FB58A: - cmp r0, 0x38 - ble _080FB5BE - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - b _080FB5BE - .align 2, 0 -_080FB598: .4byte gSaveBlock1 -_080FB59C: - movs r6, 0 - mov r0, r9 - cmp r0, 0xE - bls _080FB5A6 - movs r6, 0x1 -_080FB5A6: - mov r1, r9 - cmp r1, 0x1C - bls _080FB5B2 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB5B2: - mov r2, r9 - cmp r2, 0x36 - bls _080FB5BE - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FB5BE: - ldr r0, _080FB5F8 @ =gUnknown_020388CC - ldr r2, [r0] - ldrh r0, [r2, 0x14] - lsls r0, 3 - ldr r1, _080FB5FC @ =gRegionMapLocations - adds r0, r1 - ldrb r0, [r0] - adds r0, r6, r0 - adds r0, 0x1 - adds r1, r2, 0 - adds r1, 0x54 - strh r0, [r1] - ldrh r0, [r2, 0x14] - lsls r0, 3 - ldr r1, _080FB5FC @ =gRegionMapLocations - adds r0, r1 - ldrb r0, [r0, 0x1] - adds r0, r3, r0 - adds r0, 0x2 - adds r2, 0x56 - strh r0, [r2] -_080FB5E8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB5F8: .4byte gUnknown_020388CC -_080FB5FC: .4byte gRegionMapLocations - thumb_func_end sub_80FB32C - - thumb_func_start sub_80FB600 -sub_80FB600: @ 80FB600 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r7, 0 - movs r0, 0 - mov r8, r0 - mov r4, sp - adds r4, 0x1 - mov r5, sp - adds r5, 0x2 - add r6, sp, 0x4 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl GetSSTidalLocation - lsls r0, 24 - lsrs r0, 24 - mov r10, r5 - cmp r0, 0x4 - bhi _080FB694 - lsls r0, 2 - ldr r1, _080FB63C @ =_080FB640 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB63C: .4byte _080FB640 - .align 2, 0 -_080FB640: - .4byte _080FB694 - .4byte _080FB654 - .4byte _080FB664 - .4byte _080FB674 - .4byte _080FB684 -_080FB654: - ldr r2, _080FB660 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x8 - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB660: .4byte gUnknown_020388CC -_080FB664: - ldr r2, _080FB670 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0xC - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB670: .4byte gUnknown_020388CC -_080FB674: - ldr r2, _080FB680 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x27 - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB680: .4byte gUnknown_020388CC -_080FB684: - ldr r2, _080FB690 @ =gUnknown_020388CC - ldr r1, [r2] - movs r0, 0x2E - strh r0, [r1, 0x14] - b _080FB710 - .align 2, 0 -_080FB690: .4byte gUnknown_020388CC -_080FB694: - mov r0, sp - ldrb r0, [r0] - ldrb r1, [r4] - bl get_mapheader_by_bank_and_number - ldr r1, _080FB750 @ =gUnknown_020388CC - mov r9, r1 - ldr r2, [r1] - ldrb r1, [r0, 0x14] - strh r1, [r2, 0x14] - ldr r6, [r0] - ldr r1, _080FB754 @ =gRegionMapLocations - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r5, r0, r1 - ldrb r4, [r5, 0x2] - ldr r0, [r6] - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080FB6C6 - movs r1, 0x1 -_080FB6C6: - mov r2, r10 - movs r3, 0 - ldrsh r0, [r2, r3] - bl __divsi3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r8, r4 - bcc _080FB6E2 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 -_080FB6E2: - ldrb r4, [r5, 0x3] - ldr r0, [r6, 0x4] - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080FB6F6 - movs r1, 0x1 -_080FB6F6: - mov r2, sp - movs r3, 0x4 - ldrsh r0, [r2, r3] - bl __divsi3 - lsls r0, 16 - lsrs r7, r0, 16 - mov r2, r9 - cmp r7, r4 - bcc _080FB710 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 -_080FB710: - ldr r0, [r2] - adds r0, 0x7F - movs r1, 0 - strb r1, [r0] - ldr r2, [r2] - ldr r3, _080FB754 @ =gRegionMapLocations - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0] - add r0, r8 - adds r0, 0x1 - adds r1, r2, 0 - adds r1, 0x54 - strh r0, [r1] - ldrh r0, [r2, 0x14] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, r7, r0 - adds r0, 0x2 - adds r2, 0x56 - strh r0, [r2] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FB750: .4byte gUnknown_020388CC -_080FB754: .4byte gRegionMapLocations - thumb_func_end sub_80FB600 - - thumb_func_start sub_80FB758 -sub_80FB758: @ 80FB758 - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x58 - bls _080FB764 - b _080FB9A0 -_080FB764: - lsls r0, 2 - ldr r1, _080FB770 @ =_080FB774 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FB770: .4byte _080FB774 - .align 2, 0 -_080FB774: - .4byte _080FB8DC - .4byte _080FB8E4 - .4byte _080FB8EA - .4byte _080FB8F4 - .4byte _080FB8FC - .4byte _080FB904 - .4byte _080FB90C - .4byte _080FB914 - .4byte _080FB91C - .4byte _080FB924 - .4byte _080FB92C - .4byte _080FB934 - .4byte _080FB93C - .4byte _080FB944 - .4byte _080FB94C - .4byte _080FB954 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB96C - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB988 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB9A0 - .4byte _080FB8D8 -_080FB8D8: - movs r0, 0 - b _080FB9A2 -_080FB8DC: - ldr r0, _080FB8E0 @ =0x0000080f - b _080FB956 - .align 2, 0 -_080FB8E0: .4byte 0x0000080f -_080FB8E4: - movs r0, 0x81 - lsls r0, 4 - b _080FB956 -_080FB8EA: - ldr r0, _080FB8F0 @ =0x00000811 - b _080FB956 - .align 2, 0 -_080FB8F0: .4byte 0x00000811 -_080FB8F4: - ldr r0, _080FB8F8 @ =0x00000812 - b _080FB956 - .align 2, 0 -_080FB8F8: .4byte 0x00000812 -_080FB8FC: - ldr r0, _080FB900 @ =0x00000813 - b _080FB956 - .align 2, 0 -_080FB900: .4byte 0x00000813 -_080FB904: - ldr r0, _080FB908 @ =0x00000814 - b _080FB956 - .align 2, 0 -_080FB908: .4byte 0x00000814 -_080FB90C: - ldr r0, _080FB910 @ =0x00000815 - b _080FB956 - .align 2, 0 -_080FB910: .4byte 0x00000815 -_080FB914: - ldr r0, _080FB918 @ =0x00000816 - b _080FB956 - .align 2, 0 -_080FB918: .4byte 0x00000816 -_080FB91C: - ldr r0, _080FB920 @ =0x00000817 - b _080FB956 - .align 2, 0 -_080FB920: .4byte 0x00000817 -_080FB924: - ldr r0, _080FB928 @ =0x00000818 - b _080FB956 - .align 2, 0 -_080FB928: .4byte 0x00000818 -_080FB92C: - ldr r0, _080FB930 @ =0x00000819 - b _080FB956 - .align 2, 0 -_080FB930: .4byte 0x00000819 -_080FB934: - ldr r0, _080FB938 @ =0x0000081a - b _080FB956 - .align 2, 0 -_080FB938: .4byte 0x0000081a -_080FB93C: - ldr r0, _080FB940 @ =0x0000081b - b _080FB956 - .align 2, 0 -_080FB940: .4byte 0x0000081b -_080FB944: - ldr r0, _080FB948 @ =0x0000081c - b _080FB956 - .align 2, 0 -_080FB948: .4byte 0x0000081c -_080FB94C: - ldr r0, _080FB950 @ =0x0000081d - b _080FB956 - .align 2, 0 -_080FB950: .4byte 0x0000081d -_080FB954: - ldr r0, _080FB968 @ =0x0000081e -_080FB956: - bl FlagGet - lsls r0, 24 - movs r1, 0x3 - cmp r0, 0 - beq _080FB964 - movs r1, 0x2 -_080FB964: - adds r0, r1, 0 - b _080FB9A2 - .align 2, 0 -_080FB968: .4byte 0x0000081e -_080FB96C: - ldr r0, _080FB984 @ =0x00000848 - bl FlagGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - asrs r0, 31 - movs r1, 0x4 - ands r0, r1 - b _080FB9A2 - .align 2, 0 -_080FB984: .4byte 0x00000848 -_080FB988: - ldr r0, _080FB99C @ =0x00000849 - bl FlagGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - b _080FB9A2 - .align 2, 0 -_080FB99C: .4byte 0x00000849 -_080FB9A0: - movs r0, 0x1 -_080FB9A2: - pop {r1} - bx r1 - thumb_func_end sub_80FB758 - - thumb_func_start GetRegionMapSectionAt_ -GetRegionMapSectionAt_: @ 80FB9A8 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - bl GetRegionMapSectionAt - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end GetRegionMapSectionAt_ - - thumb_func_start sub_80FB9C0 -sub_80FB9C0: @ 80FB9C0 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r0, _080FB9E8 @ =gUnknown_083E7684 - ldrh r1, [r0] - adds r4, r0, 0 - cmp r1, 0x58 - beq _080FB9FC - adds r5, r4, 0 - adds r6, r4, 0x2 -_080FB9D6: - lsls r1, r2, 2 - adds r0, r1, r5 - ldrh r0, [r0] - cmp r0, r3 - bne _080FB9EC - adds r0, r1, r6 - ldrh r0, [r0] - b _080FB9FE - .align 2, 0 -_080FB9E8: .4byte gUnknown_083E7684 -_080FB9EC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r0, r2, 2 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0x58 - bne _080FB9D6 -_080FB9FC: - adds r0, r3, 0 -_080FB9FE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FB9C0 - - thumb_func_start sub_80FBA04 -sub_80FBA04: @ 80FBA04 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl sub_80FB9C0 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_80FBA04 - - thumb_func_start sub_80FBA18 -sub_80FBA18: @ 80FBA18 - push {r4-r6,lr} - ldr r0, _080FBA2C @ =gUnknown_020388CC - ldr r1, [r0] - ldrh r0, [r1, 0x14] - cmp r0, 0x58 - bne _080FBA30 - movs r0, 0 - strb r0, [r1, 0x17] - b _080FBA96 - .align 2, 0 -_080FBA2C: .4byte gUnknown_020388CC -_080FBA30: - adds r0, r1, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0 - bne _080FBA40 - adds r0, r1, 0 - adds r0, 0x54 - b _080FBA44 -_080FBA40: - adds r0, r1, 0 - adds r0, 0x64 -_080FBA44: - ldrh r4, [r0] - adds r0, 0x2 - ldrh r5, [r0] - movs r6, 0 - b _080FBA70 -_080FBA4E: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetRegionMapSectionAt - ldr r1, _080FBA8C @ =gUnknown_020388CC - ldr r1, [r1] - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1, 0x14] - cmp r0, r1 - bne _080FBA70 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_080FBA70: - cmp r4, 0x1 - bhi _080FBA4E - adds r0, r5, 0 - bl sub_80FBAA0 - lsls r0, 24 - cmp r0, 0 - beq _080FBA90 - subs r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - movs r4, 0x1D - b _080FBA70 - .align 2, 0 -_080FBA8C: .4byte gUnknown_020388CC -_080FBA90: - ldr r0, _080FBA9C @ =gUnknown_020388CC - ldr r0, [r0] - strb r6, [r0, 0x17] -_080FBA96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FBA9C: .4byte gUnknown_020388CC - thumb_func_end sub_80FBA18 - - thumb_func_start sub_80FBAA0 -sub_80FBAA0: @ 80FBAA0 - push {r4,r5,lr} - lsls r0, 16 - ldr r1, _080FBAB4 @ =0xffff0000 - adds r0, r1 - lsrs r5, r0, 16 - ldr r0, _080FBAB8 @ =0x0000ffff - cmp r5, r0 - bne _080FBAC0 - b _080FBAE2 - .align 2, 0 -_080FBAB4: .4byte 0xffff0000 -_080FBAB8: .4byte 0x0000ffff -_080FBABC: - movs r0, 0x1 - b _080FBAE4 -_080FBAC0: - movs r4, 0x1 -_080FBAC2: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetRegionMapSectionAt - ldr r1, _080FBAEC @ =gUnknown_020388CC - ldr r1, [r1] - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1, 0x14] - cmp r0, r1 - beq _080FBABC - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1C - bls _080FBAC2 -_080FBAE2: - movs r0, 0 -_080FBAE4: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080FBAEC: .4byte gUnknown_020388CC - thumb_func_end sub_80FBAA0 - - thumb_func_start sub_80FBAF0 -sub_80FBAF0: @ 80FBAF0 - push {r4,lr} - adds r2, r0, 0 - ldr r0, _080FBB34 @ =gUnknown_020388CC - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x7A - movs r0, 0 - ldrsb r0, [r3, r0] - cmp r0, 0 - beq _080FBB2E - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - ldrh r4, [r2, 0x20] - adds r0, r4 - strh r0, [r2, 0x20] - adds r0, r1, 0 - adds r0, 0x7C - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - ldrh r1, [r2, 0x22] - adds r0, r1 - strh r0, [r2, 0x22] - ldrb r0, [r3] - subs r0, 0x1 - strb r0, [r3] -_080FBB2E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBB34: .4byte gUnknown_020388CC - thumb_func_end sub_80FBAF0 - - thumb_func_start nullsub_66 -nullsub_66: @ 80FBB38 - bx lr - thumb_func_end nullsub_66 - - thumb_func_start sub_80FBB3C -sub_80FBB3C: @ 80FBB3C - push {r4-r7,lr} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r1, _080FBBAC @ =gUnknown_083E76E8 - ldr r2, [r1, 0x4] - ldr r1, [r1] - str r1, [sp, 0x20] - str r2, [sp, 0x24] - mov r2, sp - ldr r1, _080FBBB0 @ =gSpriteTemplate_83E76F0 - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - lsrs r3, r0, 16 - add r2, sp, 0x18 - ldrh r1, [r2, 0x4] - orrs r1, r0 - str r1, [r2, 0x4] - mov r0, sp - strh r3, [r0] - ldr r0, _080FBBB4 @ =gUnknown_020388CC - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x58 - strh r3, [r0] - ldr r5, _080FBBB8 @ =0xffff0000 - add r1, sp, 0x20 - ldr r0, [r1, 0x4] - ands r0, r5 - orrs r0, r6 - str r0, [r1, 0x4] - mov r0, sp - strh r6, [r0, 0x2] - adds r3, r4, 0 - adds r0, r3, 0 - adds r0, 0x5A - strh r6, [r0] - adds r0, 0x1E - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0 - bne _080FBBC0 - movs r1, 0xC0 - lsls r1, 1 - adds r0, r3, r1 - str r0, [sp, 0x18] - ldr r0, [r2, 0x4] - ands r0, r5 - subs r1, 0x80 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r0, _080FBBBC @ =sub_80FBAF0 - b _080FBBD6 - .align 2, 0 -_080FBBAC: .4byte gUnknown_083E76E8 -_080FBBB0: .4byte gSpriteTemplate_83E76F0 -_080FBBB4: .4byte gUnknown_020388CC -_080FBBB8: .4byte 0xffff0000 -_080FBBBC: .4byte sub_80FBAF0 -_080FBBC0: - movs r3, 0xA0 - lsls r3, 2 - adds r0, r4, r3 - str r0, [sp, 0x18] - ldr r0, [r2, 0x4] - ands r0, r5 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - str r0, [r2, 0x4] - ldr r0, _080FBC38 @ =nullsub_66 -_080FBBD6: - str r0, [sp, 0x14] - adds r0, r2, 0 - bl LoadSpriteSheet - adds r0, r7, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0x38 - movs r2, 0x48 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080FBC90 - ldr r4, _080FBC3C @ =gUnknown_020388CC - ldr r2, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080FBC40 @ =gSprites - adds r3, r0, r1 - str r3, [r2, 0x1C] - adds r2, 0x78 - ldrb r0, [r2] - cmp r0, 0x1 - bne _080FBC44 - ldrb r1, [r3, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r3, 0x3] - ldr r2, [r4] - ldr r1, [r2, 0x1C] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x1C] - ldrh r0, [r1, 0x22] - subs r0, 0x8 - strh r0, [r1, 0x22] - ldr r0, [r2, 0x1C] - movs r1, 0x1 - bl StartSpriteAnim - b _080FBC6C - .align 2, 0 -_080FBC38: .4byte nullsub_66 -_080FBC3C: .4byte gUnknown_020388CC -_080FBC40: .4byte gSprites -_080FBC44: - ldrb r1, [r3, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3, 0x3] - ldr r1, [r4] - ldr r2, [r1, 0x1C] - adds r0, r1, 0 - adds r0, 0x54 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r2, 0x20] - ldr r2, [r1, 0x1C] - adds r1, 0x56 - ldrh r0, [r1] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r2, 0x22] -_080FBC6C: - ldr r4, _080FBC98 @ =gUnknown_020388CC - ldr r0, [r4] - ldr r1, [r0, 0x1C] - movs r0, 0x2 - strh r0, [r1, 0x30] - adds r0, r6, 0 - bl IndexOfSpritePaletteTag - ldr r1, [r4] - ldr r2, [r1, 0x1C] - lsls r0, 24 - lsrs r0, 20 - ldr r4, _080FBC9C @ =0x00000101 - adds r0, r4 - strh r0, [r2, 0x32] - ldr r1, [r1, 0x1C] - movs r0, 0x1 - strh r0, [r1, 0x34] -_080FBC90: - add sp, 0x28 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FBC98: .4byte gUnknown_020388CC -_080FBC9C: .4byte 0x00000101 - thumb_func_end sub_80FBB3C - - thumb_func_start sub_80FBCA0 -sub_80FBCA0: @ 80FBCA0 - push {r4,lr} - ldr r4, _080FBCCC @ =gUnknown_020388CC - ldr r0, [r4] - ldr r0, [r0, 0x1C] - cmp r0, 0 - beq _080FBCC4 - bl DestroySprite - ldr r0, [r4] - adds r0, 0x58 - ldrh r0, [r0] - bl FreeSpriteTilesByTag - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - bl FreeSpritePaletteByTag -_080FBCC4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FBCCC: .4byte gUnknown_020388CC - thumb_func_end sub_80FBCA0 - - thumb_func_start unref_sub_80FBCD0 -unref_sub_80FBCD0: @ 80FBCD0 - ldr r0, _080FBCDC @ =gUnknown_020388CC - ldr r0, [r0] - ldr r1, [r0, 0x1C] - movs r0, 0x1 - strh r0, [r1, 0x34] - bx lr - .align 2, 0 -_080FBCDC: .4byte gUnknown_020388CC - thumb_func_end unref_sub_80FBCD0 - - thumb_func_start unref_sub_80FBCE0 -unref_sub_80FBCE0: @ 80FBCE0 - ldr r0, _080FBCEC @ =gUnknown_020388CC - ldr r0, [r0] - ldr r1, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x34] - bx lr - .align 2, 0 -_080FBCEC: .4byte gUnknown_020388CC - thumb_func_end unref_sub_80FBCE0 - - thumb_func_start sub_80FBCF0 -sub_80FBCF0: @ 80FBCF0 - push {r4,r5,lr} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _080FBD98 @ =gRegionMapBrendanIconTiles - str r2, [sp, 0x18] - movs r2, 0x80 - add r5, sp, 0x18 - lsrs r3, r0, 16 - orrs r0, r2 - str r0, [r5, 0x4] - ldr r0, _080FBD9C @ =gRegionMapBrendanIconPalette - str r0, [sp, 0x20] - ldr r2, _080FBDA0 @ =0xffff0000 - add r4, sp, 0x20 - ldr r0, [r4, 0x4] - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - movs r2, 0 - strh r3, [r0] - strh r1, [r0, 0x2] - ldr r0, _080FBDA4 @ =gOamData_083E7708 - str r0, [sp, 0x4] - ldr r0, _080FBDA8 @ =gSpriteAnimTable_083E7718 - str r0, [sp, 0x8] - str r2, [sp, 0xC] - ldr r0, _080FBDAC @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x10] - ldr r0, _080FBDB0 @ =SpriteCallbackDummy - str r0, [sp, 0x14] - ldr r0, _080FBDB4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0x1 - bne _080FBD42 - ldr r0, _080FBDB8 @ =gRegionMapMayIconTiles - str r0, [sp, 0x18] - ldr r0, _080FBDBC @ =gRegionMapMayIconPalette - str r0, [sp, 0x20] -_080FBD42: - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080FBDC0 @ =gUnknown_020388CC - ldr r2, [r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080FBDC4 @ =gSprites - adds r1, r0 - str r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0 - bne _080FBDCC - adds r0, r2, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x22] - ldr r1, [r2, 0x20] - ldr r0, _080FBDC8 @ =sub_80FBF34 - b _080FBDEA - .align 2, 0 -_080FBD98: .4byte gRegionMapBrendanIconTiles -_080FBD9C: .4byte gRegionMapBrendanIconPalette -_080FBDA0: .4byte 0xffff0000 -_080FBDA4: .4byte gOamData_083E7708 -_080FBDA8: .4byte gSpriteAnimTable_083E7718 -_080FBDAC: .4byte gDummySpriteAffineAnimTable -_080FBDB0: .4byte SpriteCallbackDummy -_080FBDB4: .4byte gSaveBlock2 -_080FBDB8: .4byte gRegionMapMayIconTiles -_080FBDBC: .4byte gRegionMapMayIconPalette -_080FBDC0: .4byte gUnknown_020388CC -_080FBDC4: .4byte gSprites -_080FBDC8: .4byte sub_80FBF34 -_080FBDCC: - adds r0, r2, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x30 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x20] - adds r0, r2, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x42 - strh r0, [r1, 0x22] - ldr r1, [r2, 0x20] - ldr r0, _080FBDF4 @ =sub_80FBEA4 -_080FBDEA: - str r0, [r1, 0x1C] - add sp, 0x28 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FBDF4: .4byte sub_80FBEA4 - thumb_func_end sub_80FBCF0 - - thumb_func_start sub_80FBDF8 -sub_80FBDF8: @ 80FBDF8 - push {lr} - ldr r3, _080FBE1C @ =gUnknown_020388CC - ldr r0, [r3] - ldr r2, [r0, 0x20] - cmp r2, 0 - beq _080FBE16 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, [r3] - ldr r1, [r0, 0x20] - ldr r0, _080FBE20 @ =SpriteCallbackDummy - str r0, [r1, 0x1C] -_080FBE16: - pop {r0} - bx r0 - .align 2, 0 -_080FBE1C: .4byte gUnknown_020388CC -_080FBE20: .4byte SpriteCallbackDummy - thumb_func_end sub_80FBDF8 - - thumb_func_start sub_80FBE24 -sub_80FBE24: @ 80FBE24 - push {lr} - ldr r0, _080FBE5C @ =gUnknown_020388CC - ldr r3, [r0] - ldr r1, [r3, 0x20] - cmp r1, 0 - beq _080FBE9A - adds r0, r3, 0 - adds r0, 0x78 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080FBE64 - adds r0, r3, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x30 - strh r0, [r1, 0x20] - ldr r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 4 - subs r0, 0x42 - strh r0, [r1, 0x22] - ldr r1, [r3, 0x20] - ldr r0, _080FBE60 @ =sub_80FBEA4 - b _080FBE8C - .align 2, 0 -_080FBE5C: .4byte gUnknown_020388CC -_080FBE60: .4byte sub_80FBEA4 -_080FBE64: - adds r0, r3, 0 - adds r0, 0x74 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - movs r2, 0 - strh r0, [r1, 0x20] - ldr r1, [r3, 0x20] - adds r0, r3, 0 - adds r0, 0x76 - ldrh r0, [r0] - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x22] - ldr r0, [r3, 0x20] - strh r2, [r0, 0x24] - ldr r0, [r3, 0x20] - strh r2, [r0, 0x26] - ldr r1, [r3, 0x20] - ldr r0, _080FBEA0 @ =sub_80FBF34 -_080FBE8C: - str r0, [r1, 0x1C] - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_080FBE9A: - pop {r0} - bx r0 - .align 2, 0 -_080FBEA0: .4byte sub_80FBF34 - thumb_func_end sub_80FBE24 - - thumb_func_start sub_80FBEA4 -sub_80FBEA4: @ 80FBEA4 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080FBF08 @ =gUnknown_020388CC - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x5C - movs r4, 0 - ldrsh r2, [r0, r4] - lsls r2, 1 - negs r2, r2 - strh r2, [r3, 0x24] - adds r1, 0x5E - movs r4, 0 - ldrsh r0, [r1, r4] - lsls r0, 1 - negs r0, r0 - strh r0, [r3, 0x26] - ldrh r1, [r3, 0x22] - adds r1, r0 - adds r0, r3, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - strh r0, [r3, 0x2E] - ldrh r1, [r3, 0x20] - adds r1, r2 - adds r2, r3, 0 - adds r2, 0x28 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - adds r2, r1 - strh r2, [r3, 0x30] - adds r0, 0x8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xB0 - bhi _080FBF04 - lsls r0, r2, 16 - asrs r2, r0, 16 - movs r0, 0x8 - negs r0, r0 - cmp r2, r0 - blt _080FBF04 - cmp r2, 0xF8 - ble _080FBF0C -_080FBF04: - movs r0, 0 - b _080FBF0E - .align 2, 0 -_080FBF08: .4byte gUnknown_020388CC -_080FBF0C: - movs r0, 0x1 -_080FBF0E: - strh r0, [r3, 0x32] - movs r1, 0x32 - ldrsh r0, [r3, r1] - cmp r0, 0x1 - bne _080FBF20 - adds r0, r3, 0 - bl sub_80FBF40 - b _080FBF2C -_080FBF20: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080FBF2C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FBEA4 - - thumb_func_start sub_80FBF34 -sub_80FBF34: @ 80FBF34 - push {lr} - bl sub_80FBF40 - pop {r0} - bx r0 - thumb_func_end sub_80FBF34 - - thumb_func_start sub_80FBF40 -sub_80FBF40: @ 80FBF40 - push {lr} - adds r2, r0, 0 - ldr r0, _080FBF80 @ =gUnknown_020388CC - ldr r0, [r0] - adds r0, 0x7E - ldrb r0, [r0] - cmp r0, 0 - beq _080FBF84 - ldrh r0, [r2, 0x3C] - adds r0, 0x1 - strh r0, [r2, 0x3C] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080FBF90 - movs r0, 0 - strh r0, [r2, 0x3C] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080FBF90 - .align 2, 0 -_080FBF80: .4byte gUnknown_020388CC -_080FBF84: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080FBF90: - pop {r0} - bx r0 - thumb_func_end sub_80FBF40 - - thumb_func_start sub_80FBF94 -sub_80FBF94: @ 80FBF94 - push {lr} - ldr r0, _080FBFB0 @ =gUnknown_020388CC - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x7F - ldrb r0, [r0] - cmp r0, 0 - beq _080FBFAA - adds r1, 0x7E - movs r0, 0x1 - strb r0, [r1] -_080FBFAA: - pop {r0} - bx r0 - .align 2, 0 -_080FBFB0: .4byte gUnknown_020388CC - thumb_func_end sub_80FBF94 - - thumb_func_start sub_80FBFB4 -sub_80FBFB4: @ 80FBFB4 - push {lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - cmp r1, 0x56 - bne _080FBFCA - bl GetSecretBaseMapName - b _080FBFF2 -_080FBFCA: - cmp r1, 0x57 - bhi _080FBFE4 - ldr r0, _080FBFE0 @ =gRegionMapLocations - lsls r1, 3 - adds r0, 0x4 - adds r1, r0 - ldr r1, [r1] - adds r0, r3, 0 - bl StringCopy - b _080FBFF2 - .align 2, 0 -_080FBFE0: .4byte gRegionMapLocations -_080FBFE4: - cmp r2, 0 - bne _080FBFEA - movs r2, 0x12 -_080FBFEA: - adds r0, r3, 0 - movs r1, 0 - bl StringFill -_080FBFF2: - pop {r1} - bx r1 - thumb_func_end sub_80FBFB4 - - thumb_func_start CopyMapName -CopyMapName: @ 80FBFF8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x56 - beq _080FC014 - cmp r1, 0x57 - bne _080FC020 - ldr r1, _080FC010 @ =gOtherText_Ferry - bl StringCopy - b _080FC026 - .align 2, 0 -_080FC010: .4byte gOtherText_Ferry -_080FC014: - ldr r1, _080FC01C @ =gOtherText_SecretBase - bl StringCopy - b _080FC026 - .align 2, 0 -_080FC01C: .4byte gOtherText_SecretBase -_080FC020: - movs r2, 0 - bl sub_80FBFB4 -_080FC026: - pop {r1} - bx r1 - thumb_func_end CopyMapName - - thumb_func_start CopyLocationName -CopyLocationName: @ 80FC02C - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0x42 - beq _080FC03C - bl CopyMapName - b _080FC042 -_080FC03C: - ldr r1, _080FC048 @ =gOtherText_Hideout - bl StringCopy -_080FC042: - pop {r1} - bx r1 - .align 2, 0 -_080FC048: .4byte gOtherText_Hideout - thumb_func_end CopyLocationName - - thumb_func_start sub_80FC04C -sub_80FC04C: @ 80FC04C - push {r4,r5,lr} - ldr r5, [sp, 0xC] - lsls r0, 16 - ldr r4, _080FC070 @ =gRegionMapLocations - lsrs r0, 13 - adds r0, r4 - ldrb r4, [r0] - strh r4, [r1] - ldrb r1, [r0, 0x1] - strh r1, [r2] - ldrb r1, [r0, 0x2] - strh r1, [r3] - ldrb r0, [r0, 0x3] - strh r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC070: .4byte gRegionMapLocations - thumb_func_end sub_80FC04C - - thumb_func_start sub_80FC074 -sub_80FC074: @ 80FC074 - push {r4,lr} - ldr r0, _080FC090 @ =gMain - ldr r1, _080FC094 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x9 - bls _080FC084 - b _080FC1F2 -_080FC084: - lsls r0, 2 - ldr r1, _080FC098 @ =_080FC09C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC090: .4byte gMain -_080FC094: .4byte 0x0000043c -_080FC098: .4byte _080FC09C - .align 2, 0 -_080FC09C: - .4byte _080FC0C4 - .4byte _080FC104 - .4byte _080FC110 - .4byte _080FC120 - .4byte _080FC15C - .4byte _080FC170 - .4byte _080FC184 - .4byte _080FC1A4 - .4byte _080FC1AA - .4byte _080FC1C4 -_080FC0C4: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0x10 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl ResetPaletteFade - bl ResetSpriteData - bl FreeSpriteTileRanges - bl FreeAllSpritePalettes - b _080FC1E6 -_080FC104: - ldr r0, _080FC10C @ =gWindowConfig_81E7224 - bl SetUpWindowConfig - b _080FC1E6 - .align 2, 0 -_080FC10C: .4byte gWindowConfig_81E7224 -_080FC110: - ldr r0, _080FC11C @ =gWindowConfig_81E7224 - bl InitMenuWindow - bl MenuZeroFillScreen - b _080FC1E6 - .align 2, 0 -_080FC11C: .4byte gWindowConfig_81E7224 -_080FC120: - ldr r4, _080FC158 @ =0x02000008 - adds r0, r4, 0 - movs r1, 0 - bl sub_80FA8EC - movs r0, 0 - movs r1, 0 - bl sub_80FBB3C - movs r0, 0x1 - movs r1, 0x1 - bl sub_80FBCF0 - adds r1, r4, 0 - subs r1, 0x8 - ldrh r0, [r1, 0x1C] - strh r0, [r1, 0x6] - movs r2, 0xA4 - lsls r2, 4 - adds r4, r2 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0xC - bl StringFill - bl sub_80FC254 - b _080FC1E6 - .align 2, 0 -_080FC158: .4byte 0x02000008 -_080FC15C: - ldr r0, _080FC168 @ =gUnknown_083E773C - ldr r1, _080FC16C @ =0x0600c000 - bl LZ77UnCompVram - b _080FC1E6 - .align 2, 0 -_080FC168: .4byte gUnknown_083E773C -_080FC16C: .4byte 0x0600c000 -_080FC170: - ldr r0, _080FC17C @ =gUnknown_083E7774 - ldr r1, _080FC180 @ =0x0600f000 - bl LZ77UnCompVram - b _080FC1E6 - .align 2, 0 -_080FC17C: .4byte gUnknown_083E7774 -_080FC180: .4byte 0x0600f000 -_080FC184: - ldr r0, _080FC19C @ =gUnknown_083E771C - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080FC1A0 @ =gOtherText_FlyToWhere - movs r1, 0x1 - movs r2, 0x90 - movs r3, 0x1 - bl MenuPrint_PixelCoords - b _080FC1E6 - .align 2, 0 -_080FC19C: .4byte gUnknown_083E771C -_080FC1A0: .4byte gOtherText_FlyToWhere -_080FC1A4: - bl sub_80FC31C - b _080FC1E6 -_080FC1AA: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _080FC1C0 @ =sub_80FC214 - bl SetVBlankCallback - b _080FC1E6 - .align 2, 0 -_080FC1C0: .4byte sub_80FC214 -_080FC1C4: - ldr r1, _080FC1F8 @ =REG_BLDCNT - movs r0, 0 - strh r0, [r1] - subs r1, 0x46 - ldr r2, _080FC1FC @ =0x00001e0d - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - ldr r2, _080FC200 @ =0x00001741 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080FC204 @ =sub_80FC5B4 - bl sub_80FC244 - ldr r0, _080FC208 @ =sub_80FC228 - bl SetMainCallback2 -_080FC1E6: - ldr r1, _080FC20C @ =gMain - ldr r0, _080FC210 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080FC1F2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC1F8: .4byte REG_BLDCNT -_080FC1FC: .4byte 0x00001e0d -_080FC200: .4byte 0x00001741 -_080FC204: .4byte sub_80FC5B4 -_080FC208: .4byte sub_80FC228 -_080FC20C: .4byte gMain -_080FC210: .4byte 0x0000043c - thumb_func_end sub_80FC074 - - thumb_func_start sub_80FC214 -sub_80FC214: @ 80FC214 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80FC214 - - thumb_func_start sub_80FC228 -sub_80FC228: @ 80FC228 - push {lr} - ldr r0, _080FC240 @ =0x02000000 - ldr r0, [r0] - bl _call_via_r0 - bl AnimateSprites - bl BuildOamBuffer - pop {r0} - bx r0 - .align 2, 0 -_080FC240: .4byte 0x02000000 - thumb_func_end sub_80FC228 - - thumb_func_start sub_80FC244 -sub_80FC244: @ 80FC244 - ldr r1, _080FC250 @ =0x02000000 - str r0, [r1] - movs r0, 0 - strh r0, [r1, 0x4] - bx lr - .align 2, 0 -_080FC250: .4byte 0x02000000 - thumb_func_end sub_80FC244 - - thumb_func_start sub_80FC254 -sub_80FC254: @ 80FC254 - push {r4,r5,lr} - ldr r4, _080FC2AC @ =0x02000000 - ldrb r0, [r4, 0x1E] - cmp r0, 0x2 - beq _080FC262 - cmp r0, 0x4 - bne _080FC2EC -_080FC262: - movs r1, 0 - ldr r2, _080FC2B0 @ =gUnknown_083E79C0 - adds r5, r4, 0 -_080FC268: - lsls r0, r1, 3 - adds r4, r0, r2 - ldrh r0, [r5, 0x1C] - ldrh r3, [r4, 0x4] - cmp r0, r3 - bne _080FC2B4 - ldrh r0, [r4, 0x6] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC2BE - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r5, 0 - adds r0, 0x8 - movs r1, 0x11 - movs r2, 0xF - bl MenuPrint - ldrb r0, [r5, 0x1F] - ldr r1, [r4] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1D - movs r2, 0x11 - bl MenuPrint_RightAligned - b _080FC310 - .align 2, 0 -_080FC2AC: .4byte 0x02000000 -_080FC2B0: .4byte gUnknown_083E79C0 -_080FC2B4: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080FC268 -_080FC2BE: - movs r0, 0 - cmp r0, 0 - bne _080FC310 - movs r0, 0x10 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _080FC2E8 @ =0x02000008 - movs r1, 0x11 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0xF - bl MenuZeroFillWindowRect - b _080FC310 - .align 2, 0 -_080FC2E8: .4byte 0x02000008 -_080FC2EC: - movs r0, 0x10 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r1, _080FC318 @ =0x00000a48 - adds r0, r4, r1 - movs r1, 0x11 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x10 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0xF - bl MenuZeroFillWindowRect -_080FC310: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FC318: .4byte 0x00000a48 - thumb_func_end sub_80FC254 - - thumb_func_start sub_80FC31C -sub_80FC31C: @ 80FC31C - push {r4,lr} - sub sp, 0x8 - ldr r0, _080FC360 @ =gUnknown_083E784C - ldr r4, _080FC364 @ =0x02000888 - adds r1, r4, 0 - bl LZ77UnCompWram - str r4, [sp] - ldr r1, _080FC368 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xE0 - lsls r1, 1 - orrs r0, r1 - ldr r1, _080FC36C @ =0x0000ffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 10 - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - ldr r0, _080FC370 @ =gUnknown_083E79CC - bl LoadSpritePalette - bl sub_80FC374 - bl sub_80FC484 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC360: .4byte gUnknown_083E784C -_080FC364: .4byte 0x02000888 -_080FC368: .4byte 0xffff0000 -_080FC36C: .4byte 0x0000ffff -_080FC370: .4byte gUnknown_083E79CC - thumb_func_end sub_80FC31C - - thumb_func_start sub_80FC374 -sub_80FC374: @ 80FC374 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r0, _080FC3D4 @ =0x0000080f - str r0, [sp, 0xC] - movs r1, 0 - mov r9, r1 - mov r2, sp - adds r2, 0x6 - str r2, [sp, 0x14] - mov r3, sp - adds r3, 0xA - str r3, [sp, 0x18] - mov r0, sp - adds r0, 0x8 - str r0, [sp, 0x10] - add r1, sp, 0x4 - mov r10, r1 -_080FC39E: - ldr r2, [sp, 0x18] - str r2, [sp] - mov r0, r9 - add r1, sp, 0x4 - mov r2, sp - adds r2, 0x6 - ldr r3, [sp, 0x10] - bl sub_80FC04C - mov r3, r10 - ldrh r0, [r3] - adds r0, 0x1 - lsls r0, 3 - adds r0, 0x4 - strh r0, [r3] - mov r1, sp - ldrh r0, [r1, 0x6] - adds r0, 0x2 - lsls r0, 3 - adds r0, 0x4 - strh r0, [r1, 0x6] - ldr r2, [sp, 0x10] - ldrh r0, [r2] - cmp r0, 0x2 - bne _080FC3D8 - movs r7, 0x1 - b _080FC3E4 - .align 2, 0 -_080FC3D4: .4byte 0x0000080f -_080FC3D8: - ldr r3, [sp, 0x18] - ldrh r0, [r3] - movs r7, 0 - cmp r0, 0x2 - bne _080FC3E4 - movs r7, 0x2 -_080FC3E4: - mov r0, r10 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, [sp, 0x14] - movs r0, 0 - ldrsh r2, [r3, r0] - ldr r0, _080FC430 @ =gSpriteTemplate_83E7A38 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _080FC458 - ldr r1, _080FC434 @ =gSprites - mov r8, r1 - lsls r4, r5, 4 - adds r0, r4, r5 - lsls r6, r0, 2 - adds r2, r6, r1 - lsls r3, r7, 6 - ldrb r1, [r2, 0x1] - movs r0, 0x3F - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0x1] - ldr r0, [sp, 0xC] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC43C - mov r0, r8 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _080FC438 @ =sub_80FC55C - str r1, [r0] - b _080FC442 - .align 2, 0 -_080FC430: .4byte gSpriteTemplate_83E7A38 -_080FC434: .4byte gSprites -_080FC438: .4byte sub_80FC55C -_080FC43C: - adds r0, r7, 0x3 - lsls r0, 16 - lsrs r7, r0, 16 -_080FC442: - adds r4, r5 - lsls r4, 2 - ldr r0, _080FC480 @ =gSprites - adds r4, r0 - lsls r1, r7, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - mov r2, r9 - strh r2, [r4, 0x2E] -_080FC458: - ldr r0, [sp, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r0, r9 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0xF - bls _080FC39E - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC480: .4byte gSprites - thumb_func_end sub_80FC374 - - thumb_func_start sub_80FC484 -sub_80FC484: @ 80FC484 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r8, r0 - ldr r6, _080FC54C @ =gUnknown_083E79D4 - ldrh r0, [r6, 0x2] - cmp r0, 0x58 - beq _080FC53C - mov r5, sp - adds r5, 0x6 - add r7, sp, 0x4 - ldr r1, _080FC550 @ =gSprites - mov r9, r1 - movs r0, 0x1C - add r0, r9 - mov r10, r0 -_080FC4AC: - mov r1, r8 - lsls r4, r1, 2 - adds r0, r4, r6 - ldrh r0, [r0] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080FC524 - adds r0, r6, 0x2 - adds r0, r4, r0 - ldrh r6, [r0] - mov r0, sp - adds r0, 0xA - str r0, [sp] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - add r3, sp, 0x8 - bl sub_80FC04C - ldrh r0, [r7] - adds r0, 0x1 - lsls r0, 3 - strh r0, [r7] - ldrh r0, [r5] - adds r0, 0x2 - lsls r0, 3 - strh r0, [r5] - movs r0, 0 - ldrsh r1, [r7, r0] - movs r0, 0 - ldrsh r2, [r5, r0] - ldr r0, _080FC554 @ =gSpriteTemplate_83E7A38 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080FC524 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - mov r1, r9 - adds r4, r2, r1 - ldrb r1, [r4, 0x3] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x3] - add r2, r10 - ldr r0, _080FC558 @ =sub_80FC55C - str r0, [r2] - adds r0, r4, 0 - movs r1, 0x6 - bl StartSpriteAnim - strh r6, [r4, 0x2E] -_080FC524: - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r6, _080FC54C @ =gUnknown_083E79D4 - lsls r0, 2 - adds r1, r6, 0x2 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x58 - bne _080FC4AC -_080FC53C: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FC54C: .4byte gUnknown_083E79D4 -_080FC550: .4byte gSprites -_080FC554: .4byte gSpriteTemplate_83E7A38 -_080FC558: .4byte sub_80FC55C - thumb_func_end sub_80FC484 - - thumb_func_start sub_80FC55C -sub_80FC55C: @ 80FC55C - push {lr} - adds r2, r0, 0 - ldr r0, _080FC59C @ =0x02000000 - ldrh r1, [r0, 0x1C] - movs r3, 0x2E - ldrsh r0, [r2, r3] - cmp r1, r0 - bne _080FC5A0 - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080FC5AE - movs r0, 0 - strh r0, [r2, 0x30] - adds r3, r2, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080FC5AE - .align 2, 0 -_080FC59C: .4byte 0x02000000 -_080FC5A0: - movs r0, 0x10 - strh r0, [r2, 0x30] - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x15 - ands r0, r1 - strb r0, [r2] -_080FC5AE: - pop {r0} - bx r0 - thumb_func_end sub_80FC55C - - thumb_func_start sub_80FC5B4 -sub_80FC5B4: @ 80FC5B4 - push {r4,lr} - sub sp, 0x4 - ldr r4, _080FC5C8 @ =0x02000000 - ldrh r1, [r4, 0x4] - cmp r1, 0 - beq _080FC5CC - cmp r1, 0x1 - beq _080FC5E4 - b _080FC5F4 - .align 2, 0 -_080FC5C8: .4byte 0x02000000 -_080FC5CC: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _080FC5F4 -_080FC5E4: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080FC5F4 - ldr r0, _080FC5FC @ =sub_80FC600 - bl sub_80FC244 -_080FC5F4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC5FC: .4byte sub_80FC600 - thumb_func_end sub_80FC5B4 - - thumb_func_start sub_80FC600 -sub_80FC600: @ 80FC600 - push {r4,lr} - ldr r0, _080FC620 @ =0x02000000 - ldrh r0, [r0, 0x4] - cmp r0, 0 - bne _080FC68A - bl sub_80FAB60 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bhi _080FC68A - lsls r0, 2 - ldr r1, _080FC624 @ =_080FC628 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FC620: .4byte 0x02000000 -_080FC624: .4byte _080FC628 - .align 2, 0 -_080FC628: - .4byte _080FC68A - .4byte _080FC68A - .4byte _080FC68A - .4byte _080FC640 - .4byte _080FC646 - .4byte _080FC674 -_080FC640: - bl sub_80FC254 - b _080FC68A -_080FC646: - ldr r4, _080FC668 @ =0x02000000 - ldrb r0, [r4, 0x1E] - cmp r0, 0x2 - beq _080FC652 - cmp r0, 0x4 - bne _080FC68A -_080FC652: - movs r0, 0x5 - bl m4aSongNumStart - ldr r1, _080FC66C @ =0x00000a6e - adds r0, r4, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _080FC670 @ =sub_80FC69C - bl sub_80FC244 - b _080FC68A - .align 2, 0 -_080FC668: .4byte 0x02000000 -_080FC66C: .4byte 0x00000a6e -_080FC670: .4byte sub_80FC69C -_080FC674: - movs r0, 0x5 - bl m4aSongNumStart - ldr r0, _080FC690 @ =0x02000000 - ldr r1, _080FC694 @ =0x00000a6e - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080FC698 @ =sub_80FC69C - bl sub_80FC244 -_080FC68A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC690: .4byte 0x02000000 -_080FC694: .4byte 0x00000a6e -_080FC698: .4byte sub_80FC69C - thumb_func_end sub_80FC600 - - thumb_func_start sub_80FC69C -sub_80FC69C: @ 80FC69C - push {r4,lr} - sub sp, 0x4 - ldr r4, _080FC6B0 @ =0x02000000 - ldrh r1, [r4, 0x4] - cmp r1, 0 - beq _080FC6B4 - cmp r1, 0x1 - beq _080FC6CC - b _080FC792 - .align 2, 0 -_080FC6B0: .4byte 0x02000000 -_080FC6B4: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - b _080FC792 -_080FC6CC: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080FC792 - bl sub_80FAB10 - ldr r1, _080FC6F4 @ =0x00000a6e - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FC78C - ldrh r0, [r4, 0x1C] - cmp r0, 0xF - beq _080FC724 - cmp r0, 0xF - bgt _080FC6F8 - cmp r0, 0 - beq _080FC710 - b _080FC748 - .align 2, 0 -_080FC6F4: .4byte 0x00000a6e -_080FC6F8: - cmp r0, 0x3A - beq _080FC708 - cmp r0, 0x49 - bne _080FC748 - movs r0, 0x16 - bl sub_8053538 - b _080FC786 -_080FC708: - movs r0, 0x15 - bl sub_8053538 - b _080FC786 -_080FC710: - ldr r0, _080FC720 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - movs r1, 0xD - cmp r0, 0 - bne _080FC73A - movs r1, 0xC - b _080FC73A - .align 2, 0 -_080FC720: .4byte gSaveBlock2 -_080FC724: - ldr r0, _080FC744 @ =0x00000854 - bl FlagGet - lsls r0, 24 - movs r1, 0xB - cmp r0, 0 - beq _080FC73A - ldrb r0, [r4, 0x1F] - cmp r0, 0 - bne _080FC73A - movs r1, 0x14 -_080FC73A: - adds r0, r1, 0 - bl sub_8053538 - b _080FC786 - .align 2, 0 -_080FC744: .4byte 0x00000854 -_080FC748: - ldr r3, _080FC764 @ =gUnknown_083E7920 - ldr r0, _080FC768 @ =0x02000000 - ldrh r1, [r0, 0x1C] - lsls r0, r1, 1 - adds r2, r0, r1 - adds r0, r3, 0x2 - adds r1, r2, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080FC76C - bl sub_8053538 - b _080FC786 - .align 2, 0 -_080FC764: .4byte gUnknown_083E7920 -_080FC768: .4byte 0x02000000 -_080FC76C: - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - bl warp1_set_2 -_080FC786: - bl sub_80865BC - b _080FC792 -_080FC78C: - ldr r0, _080FC79C @ =sub_808AD58 - bl SetMainCallback2 -_080FC792: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FC79C: .4byte sub_808AD58 - thumb_func_end sub_80FC69C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/unknown_task.s b/asm/unknown_task.s deleted file mode 100644 index 39f1497ef..000000000 --- a/asm/unknown_task.s +++ /dev/null @@ -1,645 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start remove_some_task -remove_some_task: @ 8089578 - push {r4,lr} - ldr r4, _080895A8 @ =gUnknown_03004DC0 - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _080895AC @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080895B0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080895B4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x18] - cmp r0, 0xFF - beq _080895A2 - bl DestroyTask - movs r0, 0xFF - strb r0, [r4, 0x18] -_080895A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080895A8: .4byte gUnknown_03004DC0 -_080895AC: .4byte 0x040000b0 -_080895B0: .4byte 0x0000c5ff -_080895B4: .4byte 0x00007fff - thumb_func_end remove_some_task - - thumb_func_start dp12_8087EA4 -dp12_8087EA4: @ 80895B8 - push {r4,lr} - sub sp, 0x4 - mov r0, sp - movs r4, 0 - strh r4, [r0] - ldr r1, _080895EC @ =gUnknown_03004DE0 - ldr r2, _080895F0 @ =0x01000780 - bl CpuSet - ldr r0, _080895F4 @ =gUnknown_03004DC0 - movs r1, 0 - str r1, [r0] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - str r1, [r0, 0xC] - strb r4, [r0, 0x14] - strb r4, [r0, 0x15] - strb r4, [r0, 0x16] - strb r4, [r0, 0x17] - movs r1, 0xFF - strb r1, [r0, 0x18] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080895EC: .4byte gUnknown_03004DE0 -_080895F0: .4byte 0x01000780 -_080895F4: .4byte gUnknown_03004DC0 - thumb_func_end dp12_8087EA4 - - thumb_func_start sub_80895F8 -sub_80895F8: @ 80895F8 - push {lr} - sub sp, 0xC - str r0, [sp] - str r1, [sp, 0x4] - str r2, [sp, 0x8] - ldr r0, _0808961C @ =0xa2600001 - cmp r1, r0 - bne _0808962C - ldr r0, _08089620 @ =gUnknown_03004DC0 - ldr r1, _08089624 @ =gUnknown_03004DE2 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08089628 @ =sub_80896F4 - b _0808963C - .align 2, 0 -_0808961C: .4byte 0xa2600001 -_08089620: .4byte gUnknown_03004DC0 -_08089624: .4byte gUnknown_03004DE2 -_08089628: .4byte sub_80896F4 -_0808962C: - ldr r0, _0808965C @ =gUnknown_03004DC0 - ldr r1, _08089660 @ =gUnknown_03004DE4 - str r1, [r0] - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - str r1, [r0, 0x4] - ldr r1, _08089664 @ =sub_8089714 -_0808963C: - str r1, [r0, 0x10] - adds r1, r0, 0 - ldr r0, [sp, 0x4] - str r0, [r1, 0xC] - ldr r0, [sp] - str r0, [r1, 0x8] - mov r0, sp - ldrb r0, [r0, 0x8] - strb r0, [r1, 0x15] - mov r0, sp - ldrb r0, [r0, 0x9] - strb r0, [r1, 0x16] - strb r0, [r1, 0x17] - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_0808965C: .4byte gUnknown_03004DC0 -_08089660: .4byte gUnknown_03004DE4 -_08089664: .4byte sub_8089714 - thumb_func_end sub_80895F8 - - thumb_func_start sub_8089668 -sub_8089668: @ 8089668 - push {r4,lr} - ldr r4, _08089698 @ =gUnknown_03004DC0 - ldrb r0, [r4, 0x15] - cmp r0, 0 - beq _080896E2 - cmp r0, 0x3 - bne _080896AC - movs r0, 0 - strb r0, [r4, 0x15] - ldr r1, _0808969C @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080896A0 @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080896A4 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldr r1, _080896A8 @ =gUnknown_0202FFA4 - movs r0, 0x1 - strb r0, [r1] - b _080896E2 - .align 2, 0 -_08089698: .4byte gUnknown_03004DC0 -_0808969C: .4byte 0x040000b0 -_080896A0: .4byte 0x0000c5ff -_080896A4: .4byte 0x00007fff -_080896A8: .4byte gUnknown_0202FFA4 -_080896AC: - ldr r1, _080896E8 @ =0x040000b0 - ldrh r2, [r1, 0xA] - ldr r0, _080896EC @ =0x0000c5ff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r2, [r1, 0xA] - ldr r0, _080896F0 @ =0x00007fff - ands r0, r2 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xA] - ldrb r0, [r4, 0x14] - lsls r0, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - ldr r0, [r4, 0x8] - str r0, [r1, 0x4] - ldr r0, [r4, 0xC] - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, [r4, 0x10] - bl _call_via_r0 - ldrb r0, [r4, 0x14] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4, 0x14] -_080896E2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080896E8: .4byte 0x040000b0 -_080896EC: .4byte 0x0000c5ff -_080896F0: .4byte 0x00007fff - thumb_func_end sub_8089668 - - thumb_func_start sub_80896F4 -sub_80896F4: @ 80896F4 - ldr r0, _0808970C @ =gUnknown_03004DC0 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _08089710 @ =gUnknown_03004DE0 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - bx lr - .align 2, 0 -_0808970C: .4byte gUnknown_03004DC0 -_08089710: .4byte gUnknown_03004DE0 - thumb_func_end sub_80896F4 - - thumb_func_start sub_8089714 -sub_8089714: @ 8089714 - ldr r0, _0808972C @ =gUnknown_03004DC0 - ldr r2, [r0, 0x8] - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _08089730 @ =gUnknown_03004DE0 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - bx lr - .align 2, 0 -_0808972C: .4byte gUnknown_03004DC0 -_08089730: .4byte gUnknown_03004DE0 - thumb_func_end sub_8089714 - - thumb_func_start task00_for_dp12 -task00_for_dp12: @ 8089734 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r6, 0 - ldr r0, _0808975C @ =gUnknown_0202FFA4 - ldrb r0, [r0] - cmp r0, 0 - beq _08089764 - mov r0, r12 - bl DestroyTask - ldr r1, _08089760 @ =gUnknown_03004DC0 - movs r0, 0xFF - strb r0, [r1, 0x18] - b _080898E4 - .align 2, 0 -_0808975C: .4byte gUnknown_0202FFA4 -_08089760: .4byte gUnknown_03004DC0 -_08089764: - ldr r1, _08089790 @ =gTasks - mov r0, r12 - lsls r2, r0, 2 - adds r0, r2, r0 - lsls r0, 3 - adds r3, r0, r1 - movs r4, 0x16 - ldrsh r0, [r3, r4] - mov r10, r1 - mov r9, r2 - cmp r0, 0 - beq _08089810 - movs r1, 0x14 - ldrsh r0, [r3, r1] - cmp r0, 0xE - bhi _08089810 - lsls r0, 2 - ldr r1, _08089794 @ =_08089798 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08089790: .4byte gTasks -_08089794: .4byte _08089798 - .align 2, 0 -_08089798: - .4byte _080897D4 - .4byte _08089810 - .4byte _080897DC - .4byte _08089810 - .4byte _080897E4 - .4byte _08089810 - .4byte _080897EC - .4byte _08089810 - .4byte _080897F4 - .4byte _08089810 - .4byte _080897FC - .4byte _08089810 - .4byte _08089804 - .4byte _08089810 - .4byte _0808980C -_080897D4: - ldr r0, _080897D8 @ =gUnknown_030042A4 - b _0808980E - .align 2, 0 -_080897D8: .4byte gUnknown_030042A4 -_080897DC: - ldr r0, _080897E0 @ =gUnknown_030042A0 - b _0808980E - .align 2, 0 -_080897E0: .4byte gUnknown_030042A0 -_080897E4: - ldr r0, _080897E8 @ =gUnknown_030042C0 - b _0808980E - .align 2, 0 -_080897E8: .4byte gUnknown_030042C0 -_080897EC: - ldr r0, _080897F0 @ =gUnknown_030041B4 - b _0808980E - .align 2, 0 -_080897F0: .4byte gUnknown_030041B4 -_080897F4: - ldr r0, _080897F8 @ =gUnknown_03004288 - b _0808980E - .align 2, 0 -_080897F8: .4byte gUnknown_03004288 -_080897FC: - ldr r0, _08089800 @ =gUnknown_03004280 - b _0808980E - .align 2, 0 -_08089800: .4byte gUnknown_03004280 -_08089804: - ldr r0, _08089808 @ =gUnknown_030041B0 - b _0808980E - .align 2, 0 -_08089808: .4byte gUnknown_030041B0 -_0808980C: - ldr r0, _08089870 @ =gUnknown_030041B8 -_0808980E: - ldrh r6, [r0] -_08089810: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r2, r10 - adds r1, r0, r2 - ldrh r2, [r1, 0x10] - movs r3, 0x10 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0808987C - subs r0, r2, 0x1 - strh r0, [r1, 0x10] - movs r4, 0xE - ldrsh r0, [r1, r4] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080898E4 - ldr r5, _08089874 @ =gUnknown_03004DE0 - ldr r0, _08089878 @ =gUnknown_03004DC0 - mov r8, r0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 -_0808984A: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _0808984A - b _080898E4 - .align 2, 0 -_08089870: .4byte gUnknown_030041B8 -_08089874: .4byte gUnknown_03004DE0 -_08089878: .4byte gUnknown_03004DC0 -_0808987C: - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x10] - movs r2, 0xE - ldrsh r0, [r1, r2] - movs r3, 0xA0 - lsls r3, 1 - adds r2, r0, r3 - movs r4, 0x8 - ldrsh r3, [r1, r4] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r3, r0 - bge _080898C4 - ldr r5, _080898F4 @ =gUnknown_03004DE0 - adds r7, r1, 0 - lsls r0, r2, 1 - adds r4, r0, r5 - ldr r0, _080898F8 @ =gUnknown_03004DC0 - mov r8, r0 -_080898A2: - lsls r2, r3, 1 - mov r0, r8 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - adds r2, r5 - ldrh r0, [r4] - adds r0, r6 - strh r0, [r2] - adds r4, 0x2 - adds r3, 0x1 - movs r1, 0xA - ldrsh r0, [r7, r1] - cmp r3, r0 - blt _080898A2 -_080898C4: - mov r0, r9 - add r0, r12 - lsls r0, 3 - mov r3, r10 - adds r2, r0, r3 - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - asrs r0, 16 - movs r4, 0xC - ldrsh r1, [r2, r4] - cmp r0, r1 - bne _080898E4 - movs r0, 0 - strh r0, [r2, 0xE] -_080898E4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080898F4: .4byte gUnknown_03004DE0 -_080898F8: .4byte gUnknown_03004DC0 - thumb_func_end task00_for_dp12 - - thumb_func_start sub_80898FC -sub_80898FC: @ 80898FC - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0 - movs r2, 0 - ldr r0, _08089940 @ =gSineTable - mov r12, r0 -_08089910: - lsls r0, r1, 1 - adds r3, r0, r6 - lsls r0, r2, 1 - add r0, r12 - movs r7, 0 - ldrsh r0, [r0, r7] - muls r0, r4 - cmp r0, 0 - bge _08089924 - adds r0, 0xFF -_08089924: - asrs r0, 8 - strh r0, [r3] - adds r0, r2, r5 - lsls r0, 24 - lsrs r2, r0, 24 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0xFF - bls _08089910 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08089940: .4byte gSineTable - thumb_func_end sub_80898FC - - thumb_func_start sub_8089944 -sub_8089944: @ 8089944 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - adds r5, r0, 0 - str r1, [sp, 0x10] - ldr r0, [sp, 0x40] - mov r8, r0 - ldr r1, [sp, 0x44] - mov r9, r1 - ldr r0, [sp, 0x48] - mov r10, r0 - lsls r5, 24 - lsrs r5, 24 - ldr r1, [sp, 0x10] - lsls r1, 24 - str r1, [sp, 0x14] - lsrs r0, r1, 24 - str r0, [sp, 0xC] - lsls r1, r2, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r2, r3, 24 - lsrs r2, 24 - str r2, [sp, 0x1C] - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r3, r9 - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - bl dp12_8087EA4 - ldr r0, _08089A50 @ =REG_BG0HOFS - add r0, r9 - str r0, [sp] - ldr r0, _08089A54 @ =0xa2600001 - str r0, [sp, 0x4] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x8] - mov r0, sp - movs r1, 0 - strb r1, [r0, 0x9] - ldr r0, [sp] - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - bl sub_80895F8 - ldr r0, _08089A58 @ =task00_for_dp12 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _08089A5C @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - strh r5, [r4, 0x8] - mov r3, sp - ldrh r3, [r3, 0xC] - strh r3, [r4, 0xA] - movs r0, 0x80 - lsls r0, 1 - ldr r1, [sp, 0x18] - bl __divsi3 - strh r0, [r4, 0xC] - movs r0, 0 - strh r0, [r4, 0xE] - mov r1, r8 - strh r1, [r4, 0x10] - strh r1, [r4, 0x12] - mov r3, r9 - strh r3, [r4, 0x14] - mov r0, r10 - strh r0, [r4, 0x16] - ldr r0, _08089A60 @ =gUnknown_03004DC0 - strb r7, [r0, 0x18] - ldr r0, _08089A64 @ =gUnknown_0202FFA4 - movs r1, 0 - strb r1, [r0] - ldr r4, _08089A68 @ =gUnknown_03005060 - ldr r3, [sp, 0xC] - subs r6, r3, r5 - lsls r3, r6, 24 - lsrs r3, 24 - adds r0, r4, 0 - ldr r1, [sp, 0x18] - ldr r2, [sp, 0x1C] - bl sub_80898FC - ldr r0, [sp, 0xC] - cmp r5, r0 - bge _08089A3E - ldr r1, _08089A6C @ =0xfffffd80 - adds r2, r4, r1 - lsls r1, r5, 1 - movs r3, 0xF0 - lsls r3, 3 - adds r0, r1, r3 - adds r3, r0, r2 - adds r1, r2 - adds r2, r4, 0 - adds r5, r6, 0 -_08089A2A: - ldrh r0, [r2] - strh r0, [r1] - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - adds r1, 0x2 - subs r5, 0x1 - cmp r5, 0 - bne _08089A2A -_08089A3E: - adds r0, r7, 0 - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08089A50: .4byte REG_BG0HOFS -_08089A54: .4byte 0xa2600001 -_08089A58: .4byte task00_for_dp12 -_08089A5C: .4byte gTasks -_08089A60: .4byte gUnknown_03004DC0 -_08089A64: .4byte gUnknown_0202FFA4 -_08089A68: .4byte gUnknown_03005060 -_08089A6C: .4byte 0xfffffd80 - thumb_func_end sub_8089944 - - .align 2, 0 @ Don't pad with nop. diff --git a/data-de/region_map_locations.inc b/data-de/region_map_locations.inc deleted file mode 100644 index 1f4863206..000000000 --- a/data-de/region_map_locations.inc +++ /dev/null @@ -1,327 +0,0 @@ -gMapName_LittlerootTown: @ 83E6FF4 - .string "WURZELHEIM$" - -gMapName_OldaleTown: @ 83E7006 - .string "ROSALTSTADT$" - -gMapName_DewfordTown: @ 83E7014 - .string "FAUSTAUHAVEN$" - -gMapName_LavaridgeTown: @ 83E7023 - .string "BAD LAVASTADT$" - -gMapName_FallarborTown: @ 83E7034 - .string "LAUBWECHSEL{NAME_END}FELD$" - -gMapName_VerdanturfTown: @ 83E7045 - .string "WIESENFLUR$" - -gMapName_PacifidlogTown: @ 83E7057 - .string "FLOSSBRUNN$" - -gMapName_PetalburgCity: @ 83E7069 - .string "BLÜTENBURG{NAME_END} CITY$" - -gMapName_SlateportCity: @ 83E707A - .string "GRAPHITPORT{NAME_END} CITY$" - -gMapName_MauvilleCity: @ 83E708B - .string "MALVENFROH{NAME_END} CITY$" - -gMapName_RustboroCity: @ 83E709B - .string "METAROST{NAME_END} CITY$" - -gMapName_FortreeCity: @ 83E70AB - .string "BAUMHAUSEN{NAME_END} CITY$" - -gMapName_LilycoveCity: @ 83E70BA - .string "SEEGRASULB{NAME_END} CITY$" - -gMapName_MossdeepCity: @ 83E70CA - .string "MOOSBACH{NAME_END} CITY$" - -gMapName_SootopolisCity: @ 83E70DA - .string "XENEROVILLE$" - -gMapName_EverGrandeCity: @ 83E70EC - .string "PRACHTPOLIS{NAME_END} CITY$" - -gMapName_Route101: @ 83E70FF - .string "ROUTE 101$" - -gMapName_Route102: @ 83E7109 - .string "ROUTE 102$" - -gMapName_Route103: @ 83E7113 - .string "ROUTE 103$" - -gMapName_Route104: @ 83E711D - .string "ROUTE 104$" - -gMapName_Route105: @ 83E7127 - .string "ROUTE 105$" - -gMapName_Route106: @ 83E7131 - .string "ROUTE 106$" - -gMapName_Route107: @ 83E713B - .string "ROUTE 107$" - -gMapName_Route108: @ 83E7145 - .string "ROUTE 108$" - -gMapName_Route109: @ 83E714F - .string "ROUTE 109$" - -gMapName_Route110: @ 83E7159 - .string "ROUTE 110$" - -gMapName_Route111: @ 83E7163 - .string "ROUTE 111$" - -gMapName_Route112: @ 83E716D - .string "ROUTE 112$" - -gMapName_Route113: @ 83E7177 - .string "ROUTE 113$" - -gMapName_Route114: @ 83E7181 - .string "ROUTE 114$" - -gMapName_Route115: @ 83E718B - .string "ROUTE 115$" - -gMapName_Route116: @ 83E7195 - .string "ROUTE 116$" - -gMapName_Route117: @ 83E719F - .string "ROUTE 117$" - -gMapName_Route118: @ 83E71A9 - .string "ROUTE 118$" - -gMapName_Route119: @ 83E71B3 - .string "ROUTE 119$" - -gMapName_Route120: @ 83E71BD - .string "ROUTE 120$" - -gMapName_Route121: @ 83E71C7 - .string "ROUTE 121$" - -gMapName_Route122: @ 83E71D1 - .string "ROUTE 122$" - -gMapName_Route123: @ 83E71DB - .string "ROUTE 123$" - -gMapName_Route124: @ 83E71E5 - .string "ROUTE 124$" - -gMapName_Route125: @ 83E71EF - .string "ROUTE 125$" - -gMapName_Route126: @ 83E71F9 - .string "ROUTE 126$" - -gMapName_Route127: @ 83E7203 - .string "ROUTE 127$" - -gMapName_Route128: @ 83E720D - .string "ROUTE 128$" - -gMapName_Route129: @ 83E7217 - .string "ROUTE 129$" - -gMapName_Route130: @ 83E7221 - .string "ROUTE 130$" - -gMapName_Route131: @ 83E722B - .string "ROUTE 131$" - -gMapName_Route132: @ 83E7235 - .string "ROUTE 132$" - -gMapName_Route133: @ 83E723F - .string "ROUTE 133$" - -gMapName_Route134: @ 83E7249 - .string "ROUTE 134$" - -gMapName_Underwater: @ 83E7253 - .string "UNTERWASSER$" - -gMapName_GraniteCave: @ 83E725E - .string "GRANITHÖHLE$" - -gMapName_MtChimney: @ 83E726B - .string "SCHLOTBERG$" - -gMapName_SafariZone: @ 83E7277 - .string "SAFARI-ZONE$" - -gMapName_BattleTower: @ 83E7283 - .string "DUELLTURM$" - -gMapName_PetalburgWoods: @ 83E7290 - .string "BLÜTENBURGWALD$" - -gMapName_RusturfTunnel: @ 83E72A0 - .string "METAFLURTUNNEL$" - -gMapName_AbandonedShip: @ 83E72AF - .string "SCHIFFSWRACK$" - -gMapName_NewMauville: @ 83E72BE - .string "NEU MALVENFROH$" - -gMapName_MeteorFalls: @ 83E72CB - .string "METEORFÄLLE$" - -gMapName_MtPyre: @ 83E72D8 - .string "PYROBERG$" - -gMapName_EvilTeamHideout: @ 83E72E1 - .string "{EVIL_TEAM}s VERSTECK$" - -gMapName_ShoalCave: @ 83E72EC - .string "KÜSTENHÖHLE$" - -gMapName_SeafloorCavern: @ 83E72F7 - .string "TIEFSEEHÖHLE$" - -gMapName_VictoryRoad: @ 83E7307 - .string "SIEGESSTRASSE$" - -gMapName_MirageIsland: @ 83E7314 - .string "WUNDEREILAND$" - -gMapName_CaveOfOrigin: @ 83E7322 - .string "URZEITHÖHLE$" - -gMapName_SouthernIsland: @ 83E7331 - .string "INSEL IM SÜDEN$" - -gMapName_FieryPath: @ 83E7341 - .string "FEURIGER PFAD$" - -gMapName_JaggedPass: @ 83E734C - .string "STEILPASS$" - -gMapName_SealedChamber: @ 83E7358 - .string "SIEGELKAMMER$" - -gMapName_ScorchedSlab: @ 83E7367 - .string "SONNENGROTTE$" - -gMapName_IslandCave: @ 83E7375 - .string "INSELHÖHLE$" - -gMapName_DesertRuins: @ 83E7381 - .string "WÜSTENRUINE$" - -gMapName_AncientTomb: @ 83E738E - .string "GRABMAL$" - -gMapName_InsideOfTruck: @ 83E739B - .string "IM MÖBELWAGEN$" - -gMapName_SkyPillar: @ 83E73AB - .string "HIMMELTURM$" - -gMapName_SecretBase: @ 83E73B6 - .string "GEHEIMBASIS$" - -gMapName_None: @ 83E73C2 - .string "$" - - .align 2 -gRegionMapLocations:: @ 83E73C4 - region_map_location 4, 11, 1, 1, LittlerootTown - region_map_location 4, 9, 1, 1, OldaleTown - region_map_location 2, 14, 1, 1, DewfordTown - region_map_location 5, 3, 1, 1, LavaridgeTown - region_map_location 3, 0, 1, 1, FallarborTown - region_map_location 4, 6, 1, 1, VerdanturfTown - region_map_location 17, 10, 1, 1, PacifidlogTown - region_map_location 1, 9, 1, 1, PetalburgCity - region_map_location 8, 10, 1, 2, SlateportCity - region_map_location 8, 6, 2, 1, MauvilleCity - region_map_location 0, 5, 1, 2, RustboroCity - region_map_location 12, 0, 1, 1, FortreeCity - region_map_location 18, 3, 2, 1, LilycoveCity - region_map_location 24, 5, 2, 1, MossdeepCity - region_map_location 21, 7, 1, 1, SootopolisCity - region_map_location 27, 8, 1, 2, EverGrandeCity - region_map_location 4, 10, 1, 1, Route101 - region_map_location 2, 9, 2, 1, Route102 - region_map_location 4, 8, 4, 1, Route103 - region_map_location 0, 7, 1, 3, Route104 - region_map_location 0, 10, 1, 3, Route105 - region_map_location 0, 13, 2, 1, Route106 - region_map_location 3, 14, 3, 1, Route107 - region_map_location 6, 14, 2, 1, Route108 - region_map_location 8, 12, 1, 3, Route109 - region_map_location 8, 7, 1, 3, Route110 - region_map_location 8, 0, 1, 6, Route111 - region_map_location 6, 3, 2, 1, Route112 - region_map_location 4, 0, 4, 1, Route113 - region_map_location 1, 0, 2, 3, Route114 - region_map_location 0, 2, 1, 3, Route115 - region_map_location 1, 5, 4, 1, Route116 - region_map_location 5, 6, 3, 1, Route117 - region_map_location 10, 6, 2, 1, Route118 - region_map_location 11, 0, 1, 6, Route119 - region_map_location 13, 0, 1, 4, Route120 - region_map_location 14, 3, 4, 1, Route121 - region_map_location 16, 4, 1, 2, Route122 - region_map_location 12, 6, 5, 1, Route123 - region_map_location 20, 3, 4, 3, Route124 - region_map_location 24, 3, 2, 2, Route125 - region_map_location 20, 6, 3, 3, Route126 - region_map_location 23, 6, 3, 3, Route127 - region_map_location 23, 9, 4, 1, Route128 - region_map_location 24, 10, 2, 1, Route129 - region_map_location 21, 10, 3, 1, Route130 - region_map_location 18, 10, 3, 1, Route131 - region_map_location 15, 10, 2, 1, Route132 - region_map_location 12, 10, 3, 1, Route133 - region_map_location 9, 10, 3, 1, Route134 - region_map_location 20, 3, 4, 3, Underwater - region_map_location 20, 6, 3, 3, Underwater - region_map_location 23, 6, 3, 3, Underwater - region_map_location 23, 9, 4, 1, Underwater - region_map_location 21, 7, 1, 1, Underwater - region_map_location 1, 13, 1, 1, GraniteCave - region_map_location 6, 2, 1, 1, MtChimney - region_map_location 16, 2, 1, 1, SafariZone - region_map_location 22, 12, 1, 1, BattleTower - region_map_location 0, 8, 1, 1, PetalburgWoods - region_map_location 2, 5, 1, 1, RusturfTunnel - region_map_location 6, 14, 1, 1, AbandonedShip - region_map_location 8, 7, 1, 1, NewMauville - region_map_location 0, 3, 1, 1, MeteorFalls - region_map_location 1, 2, 1, 1, MeteorFalls - region_map_location 16, 4, 1, 1, MtPyre - region_map_location 19, 3, 1, 1, EvilTeamHideout - region_map_location 24, 4, 1, 1, ShoalCave - region_map_location 24, 9, 1, 1, SeafloorCavern - region_map_location 24, 9, 1, 1, Underwater - region_map_location 27, 9, 1, 1, VictoryRoad - region_map_location 17, 10, 1, 1, MirageIsland - region_map_location 21, 7, 1, 1, CaveOfOrigin - region_map_location 12, 14, 1, 1, SouthernIsland - region_map_location 6, 3, 1, 1, FieryPath - region_map_location 7, 3, 1, 1, FieryPath - region_map_location 6, 3, 1, 1, JaggedPass - region_map_location 7, 2, 1, 1, JaggedPass - region_map_location 11, 10, 1, 1, SealedChamber - region_map_location 11, 10, 1, 1, Underwater - region_map_location 13, 0, 1, 1, ScorchedSlab - region_map_location 0, 10, 1, 1, IslandCave - region_map_location 8, 3, 1, 1, DesertRuins - region_map_location 13, 2, 1, 1, AncientTomb - region_map_location 0, 0, 1, 1, InsideOfTruck - region_map_location 19, 10, 1, 1, SkyPillar - region_map_location 0, 0, 1, 1, SecretBase - region_map_location 0, 0, 1, 1, None diff --git a/data/record_mixing.s b/data/record_mixing.s deleted file mode 100644 index 8b46e1ed3..000000000 --- a/data/record_mixing.s +++ /dev/null @@ -1,68 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -recordMixingSecretBases:: @ 83D026C - @ gSaveBlock1.secretBases - .4byte gSaveBlock1 + 0x1A08 - - .align 2 -recordMixingTvShows:: @ 83D0270 - @ gSaveBlock1.tvShows - .4byte gSaveBlock1 + 0x2738 - - .align 2 -gUnknown_083D0274:: @ 83D0274 - .4byte gSaveBlock1 + 0x2ABC - - .align 2 -gUnknown_083D0278:: @ 83D0278 - .4byte gSaveBlock1 + 0x2D94 - - .align 2 -recordMixingEasyChatPairs:: @ 83D027C - @ gSaveBlock1.easyChatPairs - .4byte gSaveBlock1 + 0x2DD4 - - .align 2 -gUnknown_083D0280:: @ 83D0280 - .4byte gUnknown_02038738 - - .align 2 -gUnknown_083D0284:: @ 83D0284 - .4byte gSaveBlock2+0xA8 - -gUnknown_083D0288:: @ 83D0288 - .byte 1, 0 - -gUnknown_083D028A:: @ 83D028A - .byte 1, 2, 0 - .byte 2, 0, 1 - -gUnknown_083D0290:: @ 83D0290 - .byte 1, 0, 3, 2 - .byte 3, 0, 1, 2 - .byte 2, 0, 3, 1 - .byte 1, 3, 0, 2 - .byte 2, 3, 0, 1 - .byte 3, 2, 0, 1 - .byte 1, 2, 3, 0 - .byte 2, 3, 1, 0 - .byte 3, 2, 1, 0 - -gUnknown_083D02B4:: @ 83D02B4 - .byte 0, 1 - .byte 1, 2 - .byte 2, 0 - -gUnknown_083D02BA:: @ 83D02BA - .byte 0, 1 - .byte 2, 3 - - .byte 0, 2 - .byte 1, 3 - - .byte 0, 3 - .byte 2, 1 diff --git a/data/region_map.s b/data/region_map.s deleted file mode 100644 index d4d13f194..000000000 --- a/data/region_map.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gPokenavCursor_Pal:: - .incbin "graphics/pokenav/cursor.gbapal" - - .align 2 -gUnknown_083E5AF0:: @ 83E5AF0 - .incbin "graphics/pokenav/cursor_small.4bpp.lz" - - .align 2 -gUnknown_083E5B34:: @ 83E5B34 - .incbin "graphics/pokenav/cursor_large.4bpp.lz" - - .align 2 -gRegionMapBrendanIconPalette:: @ 83E5C20 - .incbin "graphics/pokenav/brendan_icon.gbapal" - - .align 2 -gRegionMapBrendanIconTiles:: @ 83E5C40 - .incbin "graphics/pokenav/brendan_icon.4bpp" - - .align 2 -gRegionMapMayIconPalette:: @ 83E5CC0 - .incbin "graphics/pokenav/may_icon.gbapal" - - .align 2 -gRegionMapMayIconTiles:: @ 83E5CE0 - .incbin "graphics/pokenav/may_icon.4bpp" - - .align 2 -gUnknown_083E5D60:: @ 83E5D60 - .incbin "graphics/pokenav/region_map.gbapal", 0xE0, 0x40 - - .align 2 -gUnknown_083E5DA0:: @ 83E5DA0 - .incbin "graphics/pokenav/region_map.8bpp.lz" - - .align 2 -gUnknown_083E6B04:: @ 83E6B04 - .incbin "graphics/pokenav/region_map_map.bin.lz" - -@ 83E6E50 - .include "data/region_map_sections.inc" - -@ 83E6FF4 - .include "data/region_map_locations.inc" - -gUnknown_083E7684:: @ 83E7684 - .2byte 50, 39 - .2byte 51, 41 - .2byte 52, 42 - .2byte 53, 43 - .2byte 54, 14 - .2byte 69, 43 - .2byte 66, 12 - .2byte 79, 49 - .2byte 59, 19 - .2byte 76, 27 - .2byte 65, 37 - .2byte 85, 46 - .2byte 88, 88 - - .align 2 -gOamData_83E76B8:: @ 83E76B8 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83E76C0:: @ 83E76C0 - obj_image_anim_frame 0, 20 - obj_image_anim_frame 4, 20 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83E76CC:: @ 83E76CC - obj_image_anim_frame 0, 10 - obj_image_anim_frame 16, 10 - obj_image_anim_frame 32, 10 - obj_image_anim_frame 16, 10 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83E76E0:: @ 83E76E0 - .4byte gSpriteAnim_83E76C0 - .4byte gSpriteAnim_83E76CC - - .align 2 -gUnknown_083E76E8:: @ 83E76E8 - obj_pal gPokenavCursor_Pal, 0x0000 - - .align 2 -gSpriteTemplate_83E76F0:: @ 83E76F0 - spr_template 0, 0, gOamData_83E76B8, gSpriteAnimTable_83E76E0, NULL, gDummySpriteAffineAnimTable, sub_80FBAF0 - - .align 2 -gOamData_083E7708:: @ 83E7708 - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83E7710: @ 83E7710 - obj_image_anim_frame 0, 5 - obj_image_anim_end - -gSpriteAnimTable_083E7718:: @ 83E7718 ANIMCMD - .4byte gSpriteAnim_83E7710 - -gUnknown_083E771C:: @ 83E771C - .incbin "graphics/pokenav/map_frame.gbapal" - -gUnknown_083E773C:: @ 83E773C - .incbin "graphics/pokenav/map_frame.4bpp.lz" - -gUnknown_083E7774:: @ 83E7774 - .incbin "graphics/pokenav/map_frame.bin.lz" - - .align 2 -gPokenavMapMisc_Pal:: - .incbin "graphics/pokenav/map_misc.gbapal" - -gUnknown_083E784C:: @ 83E784C - .incbin "graphics/pokenav/map_misc.4bpp.lz" - -gUnknown_083E7920:: @ 83E7920 - .byte 0, 9, 1 - .byte 0, 10, 14 - .byte 0, 11, 15 - .byte 0, 12, 16 - .byte 0, 13, 17 - .byte 0, 14, 18 - .byte 0, 15, 19 - .byte 0, 0, 3 - .byte 0, 1, 4 - .byte 0, 2, 5 - .byte 0, 3, 6 - .byte 0, 4, 7 - .byte 0, 5, 8 - .byte 0, 6, 9 - .byte 0, 7, 10 - .byte 0, 8, 11 - .byte 0, 16, 0 - .byte 0, 17, 0 - .byte 0, 18, 0 - .byte 0, 19, 0 - .byte 0, 20, 0 - .byte 0, 21, 0 - .byte 0, 22, 0 - .byte 0, 23, 0 - .byte 0, 24, 0 - .byte 0, 25, 0 - .byte 0, 26, 0 - .byte 0, 27, 0 - .byte 0, 28, 0 - .byte 0, 29, 0 - .byte 0, 30, 0 - .byte 0, 31, 0 - .byte 0, 32, 0 - .byte 0, 33, 0 - .byte 0, 34, 0 - .byte 0, 35, 0 - .byte 0, 36, 0 - .byte 0, 37, 0 - .byte 0, 38, 0 - .byte 0, 39, 0 - .byte 0, 40, 0 - .byte 0, 41, 0 - .byte 0, 42, 0 - .byte 0, 43, 0 - .byte 0, 44, 0 - .byte 0, 45, 0 - .byte 0, 46, 0 - .byte 0, 47, 0 - .byte 0, 48, 0 - .byte 0, 49, 0 - - .align 2 -Unknown_3E79B8: @ 83E79B8 - .4byte OtherText_PokeLeague - .4byte OtherText_PokeCenter - - .align 2 -gUnknown_083E79C0:: @ 83E79C0 - .4byte Unknown_3E79B8 - .2byte 0xF - .2byte 0x854 - -@ XXX: what is this? - .align 2 - .4byte 0x2000000 - - .align 2 -gUnknown_083E79CC:: @ 83E79CC - obj_pal gPokenavMapMisc_Pal, 0x0002 - - .align 2 -gUnknown_083E79D4:: @ 83E79D4 - .2byte 2120, 58 - .2byte 65535, 88 - - .align 2 -gOamData_83E79DC:: @ 83E79DC - .2byte 0x0000 - .2byte 0x0000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83E79E4:: @ 83E79E4 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79EC:: @ 83E79EC - obj_image_anim_frame 1, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79F4:: @ 83E79F4 - obj_image_anim_frame 3, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E79FC:: @ 83E79FC - obj_image_anim_frame 5, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A04:: @ 83E7A04 - obj_image_anim_frame 6, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A0C:: @ 83E7A0C - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_83E7A14:: @ 83E7A14 - obj_image_anim_frame 10, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83E7A1C:: @ 83E7A1C - .4byte gSpriteAnim_83E79E4 - .4byte gSpriteAnim_83E79EC - .4byte gSpriteAnim_83E79F4 - .4byte gSpriteAnim_83E79FC - .4byte gSpriteAnim_83E7A04 - .4byte gSpriteAnim_83E7A0C - .4byte gSpriteAnim_83E7A14 - - .align 2 -gSpriteTemplate_83E7A38:: @ 83E7A38 - spr_template 2, 2, gOamData_83E79DC, gSpriteAnimTable_83E7A1C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/data/region_map_locations.inc b/data/region_map_locations.inc deleted file mode 100644 index 389b5aa0c..000000000 --- a/data/region_map_locations.inc +++ /dev/null @@ -1,327 +0,0 @@ -gMapName_LittlerootTown: @ 83E6FF4 - .string "LITTLEROOT{NAME_END} TOWN$" - -gMapName_OldaleTown: @ 83E7006 - .string "OLDALE{NAME_END} TOWN$" - -gMapName_DewfordTown: @ 83E7014 - .string "DEWFORD{NAME_END} TOWN$" - -gMapName_LavaridgeTown: @ 83E7023 - .string "LAVARIDGE{NAME_END} TOWN$" - -gMapName_FallarborTown: @ 83E7034 - .string "FALLARBOR{NAME_END} TOWN$" - -gMapName_VerdanturfTown: @ 83E7045 - .string "VERDANTURF{NAME_END} TOWN$" - -gMapName_PacifidlogTown: @ 83E7057 - .string "PACIFIDLOG{NAME_END} TOWN$" - -gMapName_PetalburgCity: @ 83E7069 - .string "PETALBURG{NAME_END} CITY$" - -gMapName_SlateportCity: @ 83E707A - .string "SLATEPORT{NAME_END} CITY$" - -gMapName_MauvilleCity: @ 83E708B - .string "MAUVILLE{NAME_END} CITY$" - -gMapName_RustboroCity: @ 83E709B - .string "RUSTBORO{NAME_END} CITY$" - -gMapName_FortreeCity: @ 83E70AB - .string "FORTREE{NAME_END} CITY$" - -gMapName_LilycoveCity: @ 83E70BA - .string "LILYCOVE{NAME_END} CITY$" - -gMapName_MossdeepCity: @ 83E70CA - .string "MOSSDEEP{NAME_END} CITY$" - -gMapName_SootopolisCity: @ 83E70DA - .string "SOOTOPOLIS{NAME_END} CITY$" - -gMapName_EverGrandeCity: @ 83E70EC - .string "EVER GRANDE{NAME_END} CITY$" - -gMapName_Route101: @ 83E70FF - .string "ROUTE 101$" - -gMapName_Route102: @ 83E7109 - .string "ROUTE 102$" - -gMapName_Route103: @ 83E7113 - .string "ROUTE 103$" - -gMapName_Route104: @ 83E711D - .string "ROUTE 104$" - -gMapName_Route105: @ 83E7127 - .string "ROUTE 105$" - -gMapName_Route106: @ 83E7131 - .string "ROUTE 106$" - -gMapName_Route107: @ 83E713B - .string "ROUTE 107$" - -gMapName_Route108: @ 83E7145 - .string "ROUTE 108$" - -gMapName_Route109: @ 83E714F - .string "ROUTE 109$" - -gMapName_Route110: @ 83E7159 - .string "ROUTE 110$" - -gMapName_Route111: @ 83E7163 - .string "ROUTE 111$" - -gMapName_Route112: @ 83E716D - .string "ROUTE 112$" - -gMapName_Route113: @ 83E7177 - .string "ROUTE 113$" - -gMapName_Route114: @ 83E7181 - .string "ROUTE 114$" - -gMapName_Route115: @ 83E718B - .string "ROUTE 115$" - -gMapName_Route116: @ 83E7195 - .string "ROUTE 116$" - -gMapName_Route117: @ 83E719F - .string "ROUTE 117$" - -gMapName_Route118: @ 83E71A9 - .string "ROUTE 118$" - -gMapName_Route119: @ 83E71B3 - .string "ROUTE 119$" - -gMapName_Route120: @ 83E71BD - .string "ROUTE 120$" - -gMapName_Route121: @ 83E71C7 - .string "ROUTE 121$" - -gMapName_Route122: @ 83E71D1 - .string "ROUTE 122$" - -gMapName_Route123: @ 83E71DB - .string "ROUTE 123$" - -gMapName_Route124: @ 83E71E5 - .string "ROUTE 124$" - -gMapName_Route125: @ 83E71EF - .string "ROUTE 125$" - -gMapName_Route126: @ 83E71F9 - .string "ROUTE 126$" - -gMapName_Route127: @ 83E7203 - .string "ROUTE 127$" - -gMapName_Route128: @ 83E720D - .string "ROUTE 128$" - -gMapName_Route129: @ 83E7217 - .string "ROUTE 129$" - -gMapName_Route130: @ 83E7221 - .string "ROUTE 130$" - -gMapName_Route131: @ 83E722B - .string "ROUTE 131$" - -gMapName_Route132: @ 83E7235 - .string "ROUTE 132$" - -gMapName_Route133: @ 83E723F - .string "ROUTE 133$" - -gMapName_Route134: @ 83E7249 - .string "ROUTE 134$" - -gMapName_Underwater: @ 83E7253 - .string "UNDERWATER$" - -gMapName_GraniteCave: @ 83E725E - .string "GRANITE CAVE$" - -gMapName_MtChimney: @ 83E726B - .string "MT. CHIMNEY$" - -gMapName_SafariZone: @ 83E7277 - .string "SAFARI ZONE$" - -gMapName_BattleTower: @ 83E7283 - .string "BATTLE TOWER$" - -gMapName_PetalburgWoods: @ 83E7290 - .string "PETALBURG WOODS$" - -gMapName_RusturfTunnel: @ 83E72A0 - .string "RUSTURF TUNNEL$" - -gMapName_AbandonedShip: @ 83E72AF - .string "ABANDONED SHIP$" - -gMapName_NewMauville: @ 83E72BE - .string "NEW MAUVILLE$" - -gMapName_MeteorFalls: @ 83E72CB - .string "METEOR FALLS$" - -gMapName_MtPyre: @ 83E72D8 - .string "MT. PYRE$" - -gMapName_EvilTeamHideout: @ 83E72E1 - .string "{EVIL_TEAM} HIDEOUT$" - -gMapName_ShoalCave: @ 83E72EC - .string "SHOAL CAVE$" - -gMapName_SeafloorCavern: @ 83E72F7 - .string "SEAFLOOR CAVERN$" - -gMapName_VictoryRoad: @ 83E7307 - .string "VICTORY ROAD$" - -gMapName_MirageIsland: @ 83E7314 - .string "MIRAGE ISLAND$" - -gMapName_CaveOfOrigin: @ 83E7322 - .string "CAVE OF ORIGIN$" - -gMapName_SouthernIsland: @ 83E7331 - .string "SOUTHERN ISLAND$" - -gMapName_FieryPath: @ 83E7341 - .string "FIERY PATH$" - -gMapName_JaggedPass: @ 83E734C - .string "JAGGED PASS$" - -gMapName_SealedChamber: @ 83E7358 - .string "SEALED CHAMBER$" - -gMapName_ScorchedSlab: @ 83E7367 - .string "SCORCHED SLAB$" - -gMapName_IslandCave: @ 83E7375 - .string "ISLAND CAVE$" - -gMapName_DesertRuins: @ 83E7381 - .string "DESERT RUINS$" - -gMapName_AncientTomb: @ 83E738E - .string "ANCIENT TOMB$" - -gMapName_InsideOfTruck: @ 83E739B - .string "INSIDE OF TRUCK$" - -gMapName_SkyPillar: @ 83E73AB - .string "SKY PILLAR$" - -gMapName_SecretBase: @ 83E73B6 - .string "SECRET BASE$" - -gMapName_None: @ 83E73C2 - .string "$" - - .align 2 -gRegionMapLocations:: @ 83E73C4 - region_map_location 4, 11, 1, 1, LittlerootTown - region_map_location 4, 9, 1, 1, OldaleTown - region_map_location 2, 14, 1, 1, DewfordTown - region_map_location 5, 3, 1, 1, LavaridgeTown - region_map_location 3, 0, 1, 1, FallarborTown - region_map_location 4, 6, 1, 1, VerdanturfTown - region_map_location 17, 10, 1, 1, PacifidlogTown - region_map_location 1, 9, 1, 1, PetalburgCity - region_map_location 8, 10, 1, 2, SlateportCity - region_map_location 8, 6, 2, 1, MauvilleCity - region_map_location 0, 5, 1, 2, RustboroCity - region_map_location 12, 0, 1, 1, FortreeCity - region_map_location 18, 3, 2, 1, LilycoveCity - region_map_location 24, 5, 2, 1, MossdeepCity - region_map_location 21, 7, 1, 1, SootopolisCity - region_map_location 27, 8, 1, 2, EverGrandeCity - region_map_location 4, 10, 1, 1, Route101 - region_map_location 2, 9, 2, 1, Route102 - region_map_location 4, 8, 4, 1, Route103 - region_map_location 0, 7, 1, 3, Route104 - region_map_location 0, 10, 1, 3, Route105 - region_map_location 0, 13, 2, 1, Route106 - region_map_location 3, 14, 3, 1, Route107 - region_map_location 6, 14, 2, 1, Route108 - region_map_location 8, 12, 1, 3, Route109 - region_map_location 8, 7, 1, 3, Route110 - region_map_location 8, 0, 1, 6, Route111 - region_map_location 6, 3, 2, 1, Route112 - region_map_location 4, 0, 4, 1, Route113 - region_map_location 1, 0, 2, 3, Route114 - region_map_location 0, 2, 1, 3, Route115 - region_map_location 1, 5, 4, 1, Route116 - region_map_location 5, 6, 3, 1, Route117 - region_map_location 10, 6, 2, 1, Route118 - region_map_location 11, 0, 1, 6, Route119 - region_map_location 13, 0, 1, 4, Route120 - region_map_location 14, 3, 4, 1, Route121 - region_map_location 16, 4, 1, 2, Route122 - region_map_location 12, 6, 5, 1, Route123 - region_map_location 20, 3, 4, 3, Route124 - region_map_location 24, 3, 2, 2, Route125 - region_map_location 20, 6, 3, 3, Route126 - region_map_location 23, 6, 3, 3, Route127 - region_map_location 23, 9, 4, 1, Route128 - region_map_location 24, 10, 2, 1, Route129 - region_map_location 21, 10, 3, 1, Route130 - region_map_location 18, 10, 3, 1, Route131 - region_map_location 15, 10, 2, 1, Route132 - region_map_location 12, 10, 3, 1, Route133 - region_map_location 9, 10, 3, 1, Route134 - region_map_location 20, 3, 4, 3, Underwater - region_map_location 20, 6, 3, 3, Underwater - region_map_location 23, 6, 3, 3, Underwater - region_map_location 23, 9, 4, 1, Underwater - region_map_location 21, 7, 1, 1, Underwater - region_map_location 1, 13, 1, 1, GraniteCave - region_map_location 6, 2, 1, 1, MtChimney - region_map_location 16, 2, 1, 1, SafariZone - region_map_location 22, 12, 1, 1, BattleTower - region_map_location 0, 8, 1, 1, PetalburgWoods - region_map_location 2, 5, 1, 1, RusturfTunnel - region_map_location 6, 14, 1, 1, AbandonedShip - region_map_location 8, 7, 1, 1, NewMauville - region_map_location 0, 3, 1, 1, MeteorFalls - region_map_location 1, 2, 1, 1, MeteorFalls - region_map_location 16, 4, 1, 1, MtPyre - region_map_location 19, 3, 1, 1, EvilTeamHideout - region_map_location 24, 4, 1, 1, ShoalCave - region_map_location 24, 9, 1, 1, SeafloorCavern - region_map_location 24, 9, 1, 1, Underwater - region_map_location 27, 9, 1, 1, VictoryRoad - region_map_location 17, 10, 1, 1, MirageIsland - region_map_location 21, 7, 1, 1, CaveOfOrigin - region_map_location 12, 14, 1, 1, SouthernIsland - region_map_location 6, 3, 1, 1, FieryPath - region_map_location 7, 3, 1, 1, FieryPath - region_map_location 6, 3, 1, 1, JaggedPass - region_map_location 7, 2, 1, 1, JaggedPass - region_map_location 11, 10, 1, 1, SealedChamber - region_map_location 11, 10, 1, 1, Underwater - region_map_location 13, 0, 1, 1, ScorchedSlab - region_map_location 0, 10, 1, 1, IslandCave - region_map_location 8, 3, 1, 1, DesertRuins - region_map_location 13, 2, 1, 1, AncientTomb - region_map_location 0, 0, 1, 1, InsideOfTruck - region_map_location 19, 10, 1, 1, SkyPillar - region_map_location 0, 0, 1, 1, SecretBase - region_map_location 0, 0, 1, 1, None diff --git a/data/region_map_sections.inc b/data/region_map_sections.inc deleted file mode 100644 index 6336eac0e..000000000 --- a/data/region_map_sections.inc +++ /dev/null @@ -1,16 +0,0 @@ -gRegionMapSections:: @ 83E6E50 - .byte 0x58,0x1D,0x1D,0x04,0x1C,0x1C,0x1C,0x1C,0x1A,0x58,0x58,0x22,0x0B,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x58,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x1E,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x39,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x1E,0x58,0x58,0x58,0x58,0x03,0x1B,0x1B,0x1A,0x58,0x58,0x22,0x58,0x23,0x24,0x24,0x24,0x24,0x0C,0x0C,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58 - .byte 0x1E,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58 - .byte 0x0A,0x1F,0x1F,0x1F,0x1F,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x0D,0x0D,0x58,0x58 - .byte 0x0A,0x58,0x58,0x58,0x05,0x20,0x20,0x20,0x09,0x09,0x21,0x21,0x26,0x26,0x26,0x26,0x26,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x58 - .byte 0x13,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x0E,0x29,0x2A,0x2A,0x2A,0x58,0x58 - .byte 0x13,0x58,0x58,0x58,0x12,0x12,0x12,0x12,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x0F - .byte 0x13,0x07,0x11,0x11,0x01,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x2B,0x2B,0x2B,0x2B,0x0F - .byte 0x14,0x58,0x58,0x58,0x10,0x58,0x58,0x58,0x08,0x31,0x31,0x31,0x30,0x30,0x30,0x2F,0x2F,0x06,0x2E,0x2E,0x2E,0x2D,0x2D,0x2D,0x2C,0x2C,0x58,0x58 - .byte 0x14,0x58,0x58,0x58,0x00,0x58,0x58,0x58,0x08,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x14,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x3A,0x58,0x58,0x58,0x58,0x58 - .byte 0x15,0x15,0x15,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 - .byte 0x58,0x58,0x02,0x16,0x16,0x16,0x17,0x17,0x18,0x58,0x58,0x58,0x49,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58 diff --git a/data/rom_8080874.s b/data/rom_8080874.s deleted file mode 100644 index 220ec5f96..000000000 --- a/data/rom_8080874.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_0839ACDC:: @ 839ACDC - .2byte 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 - - .align 2 -gUnknown_0839ACE8:: @ 839ACE8 - .4byte 4 - - .align 2 -gUnknown_0839ACEC:: @ 839ACEC - .4byte REG_WIN0H - .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1 - .4byte 1 diff --git a/data/trainer_card.s b/data/trainer_card.s deleted file mode 100644 index 75e0041dd..000000000 --- a/data/trainer_card.s +++ /dev/null @@ -1,62 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gBadgesTiles:: @ 83B5AB8 - .incbin "graphics/trainer_card/badges.4bpp" - -@ XXX: what is this? - .align 2 - .4byte 0x2000000 - - .align 2 -gUnknown_083B5EBC:: @ 83B5EBC - .4byte sub_8093864 - .4byte sub_80938A8 - .4byte sub_80938CC - .4byte sub_8093918 - .4byte sub_8093938 - .4byte sub_8093954 - .4byte sub_8093980 - - .align 2 -gUnknown_083B5ED8:: @ 83B5ED8 - .4byte sub_8093AA0 - .4byte sub_8093AF0 - .4byte sub_8093C0C - .4byte sub_8093C38 - .4byte sub_8093D50 - - .align 2 -gUnknown_083B5EEC:: @ 83B5EEC - .4byte gUnknown_08E8CAC0 - .4byte gUnknown_08E8D4C0 - -gUnknown_083B5EF4:: @ 83B5EF4 - .string " : $" - - .align 2 -gUnknown_083B5EF8:: @ 83B5EF8 - .4byte gMenuTrainerCard0Star_Pal - .4byte gMenuTrainerCard1Star_Pal - .4byte gMenuTrainerCard2Star_Pal - .4byte gMenuTrainerCard3Star_Pal - .4byte gMenuTrainerCard4Star_Pal - -gUnknown_083B5F0C:: @ 83B5F0C - .incbin "graphics/trainer_card/83B5F0C.gbapal" - - .align 2 -gBadgesPalette:: @ 83B5F2C - .incbin "graphics/trainer_card/badges.gbapal" - -gUnknown_083B5F4C:: @ 83B5F4C - .incbin "graphics/trainer_card/83B5F4C.gbapal" - -gUnknown_083B5F6C:: @ 83B5F6C - .incbin "graphics/trainer_card/83B5F6C.gbapal" - -gUnknown_083B5F8C:: @ 83B5F8C - .incbin "graphics/trainer_card/83B5F8C_map.bin" diff --git a/graphics/pokenav/map_misc.pal b/graphics/pokenav/fly_target_icons.pal index c0f2cc4e9..c0f2cc4e9 100644 --- a/graphics/pokenav/map_misc.pal +++ b/graphics/pokenav/fly_target_icons.pal diff --git a/graphics/pokenav/map_misc.png b/graphics/pokenav/fly_target_icons.png Binary files differindex 7a997afc5..7a997afc5 100644 --- a/graphics/pokenav/map_misc.png +++ b/graphics/pokenav/fly_target_icons.png diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal index 4fca67ade..78ffc009a 100644 --- a/graphics/pokenav/region_map.pal +++ b/graphics/pokenav/region_map.pal @@ -1,118 +1,6 @@ JASC-PAL 0100 -256 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +32 0 0 0 156 213 255 164 180 255 @@ -145,115 +33,3 @@ JASC-PAL 0 0 0 0 0 0 0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/include/battle_records.h b/include/battle_records.h index f0c1a101b..ac6c3cbdb 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -2,7 +2,8 @@ #define GUARD_BATTLE_RECORDS_H void InitLinkBattleRecords(void); -void PrintLinkBattleWinsLossesDraws(void *); -void PrintLinkBattleRecord(void *, u8); +void UpdateLinkBattleRecords(int id); +void ShowLinkBattleRecords(void); +void ShowBattleTowerRecords(void); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/field_effect.h b/include/field_effect.h index cd84652b1..5edca21dc 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -109,6 +109,8 @@ void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); void SpriteCB_HallOfFameMonitor(struct Sprite *); +void sub_80865BC(void); + void PokecenterHealEffect_0(struct Task *); void PokecenterHealEffect_1(struct Task *); void PokecenterHealEffect_2(struct Task *); diff --git a/include/flags.h b/include/flags.h index 0e408a833..a60de6ea0 100644 --- a/include/flags.h +++ b/include/flags.h @@ -22,6 +22,24 @@ #define BADGE07_GET 0x80D #define BADGE08_GET 0x80E +// cities and towns +#define FLAG_VISITED_LITTLEROOT_TOWN 0x80F +#define FLAG_VISITED_OLDALE_TOWN 0x810 +#define FLAG_VISITED_DEWFORD_TOWN 0x811 +#define FLAG_VISITED_LAVARIDGE_TOWN 0x812 +#define FLAG_VISITED_FALLARBOR_TOWN 0x813 +#define FLAG_VISITED_VERDANTURF_TOWN 0x814 +#define FLAG_VISITED_PACIFIDLOG_TOWN 0x815 +#define FLAG_VISITED_PETALBURG_CITY 0x816 +#define FLAG_VISITED_SLATEPORT_CITY 0x817 +#define FLAG_VISITED_MAUVILLE_CITY 0x818 +#define FLAG_VISITED_RUSTBORO_CITY 0x819 +#define FLAG_VISITED_FORTREE_CITY 0x81A +#define FLAG_VISITED_LILYCOVE_CITY 0x81B +#define FLAG_VISITED_MOSSDEEP_CITY 0x81C +#define FLAG_VISITED_SOOTOPOLIS_CITY 0x81D +#define FLAG_VISITED_EVER_GRANDE_CITY 0x81E + #define SYS_USE_FLASH 0x828 #define SYS_USE_STRENGTH 0x829 #define SYS_WEATHER_CTRL 0x82A @@ -42,6 +60,9 @@ #define SYS_SHOAL_TIDE 0x83A #define SYS_RIBBON_GET 0x83B +#define FLAG_UNLOCK_BATTLE_TOWER 0x848 +#define FLAG_UNLOCK_SOUTHERN_ISLAND 0x849 + #define SYS_PC_LANETTE 0x84B #define SYS_EXDATA_ENABLE 0x84C #define SYS_ENC_UP_ITEM 0x84D @@ -50,6 +71,9 @@ #define SYS_BRAILLE_STRENGTH 0x850 #define SYS_BRAILLE_WAIT 0x851 #define SYS_BRAILLE_FLY 0x852 +#define SYS_HAS_EON_TICKET 0x853 + +#define SYS_POKEMON_LEAGUE_FLY 0x854 #define SYS_TV_LATI 0x85D diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 7589de029..4029132e8 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -166,7 +166,7 @@ struct MapHeader /* 0x0C */ struct MapConnections *connections; /* 0x10 */ u16 music; /* 0x12 */ u16 mapDataId; - /* 0x14 */ u8 name; + /* 0x14 */ u8 regionMapSectionId; /* 0x15 */ u8 cave; /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; diff --git a/include/global.h b/include/global.h index c29797638..73f73093d 100644 --- a/include/global.h +++ b/include/global.h @@ -536,7 +536,9 @@ struct GabbyAndTyData struct RecordMixing_UnknownStructSub { - u8 data[0x38]; + u32 unk0; + u8 data[0x34]; + //u8 data[0x38]; }; struct RecordMixing_UnknownStruct @@ -546,6 +548,15 @@ struct RecordMixing_UnknownStruct u16 unk74[0x2]; }; +struct LinkBattleRecord +{ + u8 name[8]; + u16 trainerId; + u16 wins; + u16 losses; + u16 draws; +}; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -624,7 +635,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x30AC*/ u8 filler_30B4[0x2]; /*0x30B6*/ u8 filler_30B6; /*0x30B7*/ u8 filler_30B7[1]; - /*0x30B8*/ u8 linkBattleRecords[5][16]; + /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5]; /*0x3108*/ u8 filler_3108[8]; /*0x3110*/ u8 giftRibbons[7]; /*0x3117*/ u8 filler_311B[0x2D]; @@ -666,16 +677,16 @@ struct SaveBlock2_Sub /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0]; /*0x04AC, 0x0554*/ u8 var_4AC; /*0x04AD, 0x0555*/ u8 var_4AD; - /*0x04AE, 0x0556*/ u8 var_4AE; - /*0x04AF, 0x0557*/ u8 var_4AF; + /*0x04AE, 0x0556*/ u8 var_4AE[2]; /*0x04B0, 0x0558*/ u16 var_4B0; /*0x04B2, 0x055A*/ u16 var_4B2; /*0x04B4, 0x055C*/ u16 var_4B4; /*0x04B6, 0x055E*/ u16 var_4B6; - /*0x04B8, 0x0560*/ u8 filler_4B8[0x10]; + /*0x04B8, 0x0560*/ u16 recordWinStreak[2]; + /*0x04BC, 0x0564*/ u8 filler_4BC[0xC]; /*0x04C8, 0x0570*/ u16 var_4C8; /*0x04CA, 0x0572*/ u16 var_4CA; - /*0x04CC, 0x0574*/ u8 filler_4CC[4]; + /*0x04CC, 0x0574*/ u16 winStreak[2]; /*0x04D0, 0x0578*/ u8 var_4D0; /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; }; diff --git a/include/graphics.h b/include/graphics.h index fb9781147..fa6a85513 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2549,4 +2549,15 @@ extern const u8 gBerryPalette_Enigma[]; extern const u8 gUnknown_08E96EC8[]; +extern const u8 gMenuTrainerCard_Gfx[]; +extern const u16 gMenuTrainerCard0Star_Pal[]; +extern const u16 gMenuTrainerCard1Star_Pal[]; +extern const u16 gMenuTrainerCard2Star_Pal[]; +extern const u16 gMenuTrainerCard3Star_Pal[]; +extern const u16 gMenuTrainerCard4Star_Pal[]; +extern const u8 gUnknown_08E8CAC0[]; +extern const u8 gUnknown_08E8CFC0[]; +extern const u8 gUnknown_08E8D4C0[]; +extern const u8 gUnknown_08E8D9C0[]; + #endif // GUARD_GRAPHICS_H diff --git a/include/menu.h b/include/menu.h index 9b48ab79b..e1bb4f1e4 100644 --- a/include/menu.h +++ b/include/menu.h @@ -38,7 +38,7 @@ void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8); void MenuZeroFillScreen(void); void MenuDrawTextWindow(u8, u8, u8, u8); void sub_8071F40(const u8 *); -void sub_8071F60(u8, u8, u8, u8); +void sub_8071F60(u8, u8, u8); u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); void MenuDisplayMessageBox(void); @@ -67,7 +67,7 @@ u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32); -void MenuPrint_RightAligned(u8 *, u8, u8); +void MenuPrint_RightAligned(const u8 *, u8, u8); void sub_8072B80(const u8 *, u8, u8, const u8 *); void sub_8072BD8(const u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index d22dbb708..fc43a44c6 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -6,6 +6,7 @@ void sub_808A004(); void sub_808AB90(void); void sub_808AB90(void); // unknown args void sub_808AB90(void); +void sub_808AD58(void); void sub_808B020(void); void sub_808B0C0(u8); void sub_808B508(u8); diff --git a/include/record_mixing.h b/include/record_mixing.h index 103f5ad64..ca60b04a7 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -14,8 +14,8 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId); void sub_80B99B4(u8 taskId); void Task_RecordMixing_ReceivePacket(u8 taskId); void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId); -void *LoadPtrFromTaskData(u16 *ptr); -void StorePtrInTaskData(void *ptr, u16 *data); +void *LoadPtrFromTaskData(u16 *); +void StorePtrInTaskData(void *, u16 *); u8 GetMultiplayerId_(void); u16 *GetPlayerRecvBuffer(u8 player); void sub_80B9A78(void); @@ -23,12 +23,12 @@ void sub_80B9A88(u8 *a); void sub_80B9B1C(u8 *a, size_t size, u8 index); void sub_80B9B70(u8 *a, size_t size, u8 index); u8 sub_80B9BBC(u16 *a); -void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8); +void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e); u8 sub_80B9C4C(u8 *a); // ASM -void sub_80B9C6C(struct RecordMixing_UnknownStruct *, u32, u8, void *); -void sub_80B9F3C(void *, u8); +void sub_80B9C6C(u8 *, u32, u8, void *); +void sub_80B9F3C(u16 *, u8); void sub_80BA00C(u8); #endif // GUARD_RECORD_MIXING_H diff --git a/include/region_map.h b/include/region_map.h index 6dfa4dcf0..3d970fa0a 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -1,13 +1,72 @@ #ifndef GUARD_REGION_MAP_H #define GUARD_REGION_MAP_H -void sub_80FA8EC(u32, u8); -void sub_80FAB10(void); +struct RegionMap +{ + u8 mapSecName[0x14]; + u16 mapSecId; + u8 unk16; + u8 everGrandeCityArea; + u8 (*inputCallback)(void); + struct Sprite *cursorSprite; + struct Sprite *playerIconSprite; + s32 bg2x; + s32 bg2y; + u32 unk2C; // + u32 unk30; // Map rotation parameters + u32 unk34; // Likely a scrapped feature + u32 unk38; // + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; + s32 unk4C; + s32 unk50; + u16 cursorPosX; + u16 cursorPosY; + u16 cursorTileTag; + u16 cursorPaletteTag; + s16 scrollX; + s16 scrollY; + s16 unk60; + s16 unk62; + u16 unk64; + u16 unk66; + u16 unk68; + u16 unk6A; + u16 unk6C; + u16 unk6E; + u16 playerIconTileTag; + u16 playerIconPaletteTag; + u16 unk74; + u16 unk76; + bool8 zoomed; + u8 initStep; + s8 unk7A; + s8 cursorDeltaX; + s8 cursorDeltaY; + bool8 needUpdateVideoRegs; + bool8 blinkPlayerIcon; + bool8 playerIsInCave; + /*0x080*/ u8 filler80[0x100]; + /*0x180*/ u8 cursorSmallImage[0x100]; + /*0x280*/ u8 cursorLargeImage[0x600]; +}; + +void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed); +void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed); +bool8 sub_80FA940(void); +void FreeRegionMapIconResources(void); u8 sub_80FAB60(void); -void sub_80FBB3C(u16, u16); -void sub_80FBCF0(u32, u8); -void sub_80FBFB4(u8 *str, u16 region, u8); -void CopyMapName(); -u8 *CopyLocationName(u8 *dest, u8 location); +void sub_80FAEC4(void); +u8 sub_80FAFC0(void); +void UpdateRegionMapVideoRegs(void); +void sub_80FB2A4(s16, s16); +u16 sub_80FBA04(u16 mapSecId); +void CreateRegionMapCursor(u16, u16); +void CreateRegionMapPlayerIcon(u16, u16); +const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length); +const u8 *CopyMapName(u8 *dest, u16 b); +const u8 *CopyLocationName(u8 *dest, u16 b); #endif // GUARD_REGION_MAP_H diff --git a/include/rom4.h b/include/rom4.h index 803a38162..fabd25302 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -55,7 +55,7 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -// sub_8053538 +void sub_8053538(u8); void sub_8053570(void); void sub_8053588(u8); void sub_80535C4(s16 a1, s16 a2); @@ -100,8 +100,8 @@ void sub_8053F84(void); void sub_8053FB0(u16); // is_warp1_light_level_8_or_9 // sub_8053FF8 -// sub_8054034 -// sub_8054044 +bool8 sub_8054034(void); +void sub_8054044(void); // sub_8054050 void sub_80540D0(s16 *, u16 *); void sub_8054164(void); diff --git a/include/save.h b/include/save.h index 3feaa1f3d..6c47c6f60 100644 --- a/include/save.h +++ b/include/save.h @@ -74,7 +74,7 @@ bool8 sub_8125DA8(void); u8 sub_8125DDC(void); u8 sub_8125E04(void); u8 sub_8125E2C(void); -u8 sub_8125E6C(void); +bool8 sub_8125E6C(void); u8 sub_8125EC8(u8 a1); bool8 unref_sub_8125F4C(struct UnkSaveSection *a1); u8 unref_sub_8125FA0(void); diff --git a/include/secret_base.h b/include/secret_base.h index 3ea75ce27..bb747bb02 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -7,6 +7,7 @@ u8 sub_80BBB24(void); void sub_80BBCCC(u8); void sub_80BC038(); u8 sub_80BC050(); +u8 *GetSecretBaseMapName(u8 *); void sub_80BC300(); const u8 sub_80BCCA4(u8); u8 *sub_80BCCE8(void); diff --git a/include/trainer_card.h b/include/trainer_card.h index bd0c808dd..b9d3ca081 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -33,20 +33,6 @@ void sub_8093130(u8, void (*)(void)); void sub_8093390(struct TrainerCard *); u8 sub_80934C4(u8 id); -// gUnknown_083B5EBC:: @ 83B5EBC -bool8 sub_8093864(); -bool8 sub_80938A8(); -bool8 sub_80938CC(); -bool8 sub_8093918(); -bool8 sub_8093938(); -bool8 sub_8093954(); -bool8 sub_8093980(); - -// gUnknown_083B5ED8:: @ 83B5ED8 -bool8 sub_8093AA0(); -bool8 sub_8093AF0(); -bool8 sub_8093C0C(struct TrainerCard *trainerCard); -bool8 sub_8093C38(); -bool8 sub_8093D50(void); +extern struct TrainerCard gTrainerCards[4]; #endif // GUARD_TRAINER_CARD_H diff --git a/include/vars.h b/include/vars.h index e08f344d4..efbb462a4 100644 --- a/include/vars.h +++ b/include/vars.h @@ -1,6 +1,7 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x4000 0x4000 #define VAR_0x4001 0x4001 #define VAR_0x4002 0x4002 #define VAR_0x4003 0x4003 diff --git a/ld_script.txt b/ld_script.txt index ddc08c49d..96edbd0e3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { asm/field_weather.o(.text); src/field_fadetransition.o(.text); asm/field_fadetransition.o(.text); - asm/field_screen_effect.o(.text); + src/field_screen_effect.o(.text); src/battle_setup.o(.text); asm/cable_club.o(.text); src/cable_club.o(.text); @@ -137,7 +137,7 @@ SECTIONS { src/trainer_see.o(.text); src/wild_encounter.o(.text); src/field_effect.o(.text); - asm/unknown_task.o(.text); + src/unknown_task.o(.text); asm/pokemon_menu.o(.text); src/option_menu.o(.text); src/pokedex.o(.text); @@ -168,7 +168,6 @@ SECTIONS { src/money.o(.text); asm/contest_effect.o(.text); src/record_mixing.o(.text); - asm/record_mixing.o(.text); src/sound_check_menu.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); @@ -199,7 +198,7 @@ SECTIONS { src/script_pokemon_util_80F99CC.o(.text); src/dewford_trend.o(.text); src/heal_location.o(.text); - asm/region_map.o(.text); + src/region_map.o(.text); asm/cute_sketch.o(.text); src/decoration.o(.text); asm/slot_machine.o(.text); @@ -219,9 +218,7 @@ SECTIONS { src/birch_pc.o(.text); src/hof_pc.o(.text); src/field_specials.o(.text); - asm/battle_records.o(.text); src/battle_records.o(.text); - asm/battle_records.o(.text_8110494); asm/pokedex_area_screen.o(.text); asm/evolution_scene.o(.text); asm/roulette.o(.text); @@ -380,7 +377,7 @@ SECTIONS { data/battle_anim_807B69C.o(.rodata); src/title_screen.o(.rodata); data/field_weather.o(.rodata); - data/rom_8080874.o(.rodata); + src/field_screen_effect.o(.rodata); src/battle_setup.o(.rodata); data/cable_club.o(.rodata); data/mori_debug_menu.o(.rodata); @@ -392,7 +389,6 @@ SECTIONS { src/option_menu.o(.rodata); src/pokedex.o(.rodata); src/trainer_card.o(.rodata); - data/trainer_card.o(.rodata); src/battle_party_menu.o(.rodata); data/pokemon_storage_system.o(.rodata); data/pokemon_icon.o(.rodata); @@ -410,7 +406,8 @@ SECTIONS { data/naming_screen.o(.rodata); data/money.o(.rodata); data/contest_effect.o(.rodata); - data/record_mixing.o(.rodata); + src/record_mixing.o(.data); + src/record_mixing.o(.rodata); src/sound_check_menu.o(.rodata); data/secret_base.o(.rodata); data/tv.o(.rodata); @@ -430,7 +427,7 @@ SECTIONS { data/mail.o(.rodata); src/menu_helpers.o(.rodata); src/heal_location.o(.rodata); - data/region_map.o(.rodata); + src/region_map.o(.rodata); data/cute_sketch.o(.rodata); src/decoration.o(.rodata); data/slot_machine.o(.rodata); diff --git a/src/battle_records.c b/src/battle_records.c index cf86787f0..61dc09792 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -1,7 +1,244 @@ #include "global.h" #include "battle_records.h" +#include "game_stat.h" +#include "link.h" #include "menu.h" +#include "rom4.h" +#include "string_util.h" #include "strings2.h" +#include "trainer_card.h" + +extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; +extern u8 gBattleOutcome; + +static void InitLinkBattleRecord(struct LinkBattleRecord *record) +{ + CpuFill16(0, record, sizeof(struct LinkBattleRecord)); + record->name[0] = 0xFF; + record->trainerId = 0; + record->wins = 0; + record->losses = 0; + record->draws = 0; +} + +static void InitLinkBattleRecords_(struct LinkBattleRecord *records) +{ + int i; + for (i = 0; i < 5; i++) + { + InitLinkBattleRecord(records + i); + } + SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); +} + +static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record) +{ + return record->wins + record->losses + record->draws; +} + +static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId) +{ + int i; + + for (i = 0; i < 5; i++) + { + memcpy(gStringVar1, records[i].name, 7); + gStringVar1[7] = EOS; + if (!StringCompareWithoutExtCtrlCodes(gStringVar1, name) && records[i].trainerId == trainerId) + return i; + } + + return 5; +} + +static void SortLinkBattleRecords(struct LinkBattleRecord *records) +{ + int i, j; + + for (i = 4; i > 0; i--) + { + for (j = i - 1; j >= 0; j--) + { + int totalBattlesI = GetLinkBattleRecordTotalBattles(records + i); + int totalBattlesJ = GetLinkBattleRecordTotalBattles(records + j); + + if (totalBattlesI > totalBattlesJ) + { + struct LinkBattleRecord temp = *(records + i); + *(records + i) = *(records + j); + *(records + j) = temp; + } + } + } +} + +static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, int battleOutcome) +{ + switch (battleOutcome) + { + case 1: + record->wins++; + if (record->wins > 9999) + record->wins = 9999; + break; + case 2: + record->losses++; + if (record->losses > 9999) + record->losses = 9999; + break; + case 3: + record->draws++; + if (record->draws > 9999) + record->draws = 9999; + break; + } +} + +static void UpdateLinkBattleGameStats(int battleOutcome) +{ + u8 stat; + + switch (battleOutcome) + { + case 1: + stat = GAME_STAT_LINK_BATTLE_WINS; + break; + case 2: + stat = GAME_STAT_LINK_BATTLE_LOSSES; + break; + case 3: + stat = GAME_STAT_LINK_BATTLE_DRAWS; + break; + default: + return; + } + + if (GetGameStat(stat) < 9999) + IncrementGameStat(stat); +} + +static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language) +{ + int index; + UpdateLinkBattleGameStats(battleOutcome); + SortLinkBattleRecords(records); + index = FindLinkBattleRecord(records, name, trainerId); + if (index == 5) + { + index = 4; + InitLinkBattleRecord(records + index); + if (language == LANGUAGE_JAPANESE) + { + records[index].name[0] = EXT_CTRL_CODE_BEGIN; + records[index].name[1] = 0x15; + StringCopyN(records[index].name + 2, name, 5); + } + else + { + StringCopyN(records[index].name, name, 7); + } + + // needed block to match + { + struct LinkBattleRecord *record = records + index; + record->trainerId = trainerId; + } + } + UpdateLinkBattleRecord(records + index, battleOutcome); + SortLinkBattleRecords(records); +} + +void InitLinkBattleRecords(void) +{ + InitLinkBattleRecords_(gSaveBlock1.linkBattleRecords); +} + +static void IncTrainerCardWins(int id) +{ + u16 *wins = &gTrainerCards[id].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +static void IncTrainerCardLosses(int id) +{ + u16 *losses = &gTrainerCards[id].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +static void UpdateTrainerCardWinsLosses(int id) +{ + switch (gBattleOutcome) + { + case 1: + IncTrainerCardWins(id ^ 1); + IncTrainerCardLosses(id); + break; + case 2: + IncTrainerCardLosses(id ^ 1); + IncTrainerCardWins(id); + break; + } +} + +void UpdateLinkBattleRecords(int id) +{ + UpdateTrainerCardWinsLosses(id); + UpdateLinkBattleRecords_( + gSaveBlock1.linkBattleRecords, + gTrainerCards[id].playerName, + gTrainerCards[id].trainerId, + gBattleOutcome, + gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language); +} + +static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) +{ + ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4); + ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4); + ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gOtherText_WinRecord, 3, 3); +} + +static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) +{ + if (!record->wins && !record->losses && !record->draws) + { + u8 buffer[16]; + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x14; + buffer[2] = 6; + buffer[3] = EXT_CTRL_CODE_BEGIN; + buffer[4] = 0x11; + buffer[5] = 1; + StringCopy(buffer + 6, gOtherText_SevenDashes); + MenuPrint(buffer, 3, y); + StringCopy(buffer + 6, gOtherText_FourDashes); + MenuPrint(buffer, 11, y); + MenuPrint(buffer, 17, y); + MenuPrint(buffer, 23, y); + } + else + { + StringFillWithTerminator(gStringVar1, 8); + StringCopyN(gStringVar1, record->name, 7); + MenuPrint(gStringVar1, 3, y); + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; + gStringVar1[1] = 0x14; + gStringVar1[2] = 6; + ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 11, y); + ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 17, y); + ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); + MenuPrint(gStringVar1, 23, y); + } +} void ShowLinkBattleRecords(void) { s32 i; @@ -12,11 +249,86 @@ void ShowLinkBattleRecords(void) { #if ENGLISH MenuPrint(gOtherText_WinLoseDraw, 12, 6); #elif GERMAN - MenuPrint_PixelCoords((u8 *) gOtherText_WinLoseDraw, 88, 48, 1); + MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); #endif for (i = 0; i < 5; i++) { - PrintLinkBattleRecord(gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2); + PrintLinkBattleRecord(&gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2); + } +} + +static bool32 sub_8110494(u8 level) +{ + struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8; + + switch (sb2sub->var_4AE[level]) + { + case 0: + return FALSE; + case 1: + return FALSE; + case 2: + return TRUE; + case 4: + return FALSE; + case 3: + return TRUE; + case 5: + return FALSE; + case 6: + return TRUE; + default: + return FALSE; + } +} + +static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) +{ + MenuPrint(str, left, top); + if (streak > 9999) + streak = 9999; + sub_8072C14(gStringVar1, streak, 24, 1); + MenuPrint(gOtherText_WinStreak, left + 7, top); +} + +static void PrintRecordWinStreak(u8 level, u8 left, u8 top) +{ + struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8; + u16 winStreak = sb2sub->recordWinStreak[level]; + PrintWinStreak(gOtherText_Record, winStreak, left, top); +} + +static u16 GetLastWinStreak(u8 level) +{ + u16 result = gSaveBlock2.filler_A8.winStreak[level]; + if (result > 9999) + result = 9999; + return result; +} + +static void PrintLastWinStreak(u8 level, u8 left, u8 top) +{ + u16 winStreak = GetLastWinStreak(level); + if (sub_8110494(level) == TRUE) + PrintWinStreak(gOtherText_Current, winStreak, left, top); + else + PrintWinStreak(gOtherText_Prev, winStreak, left, top); +} + +void ShowBattleTowerRecords(void) +{ + u16 i; + MenuDrawTextWindow(3, 1, 27, 17); + sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8); + MenuPrint(gOtherText_Lv50, 5, 6); + MenuPrint(gOtherText_Lv100, 5, 12); + for (i = 5; i < 26; i++) + { + sub_8071F60(CHAR_HYPHEN, i, 10); } + PrintLastWinStreak(0, 10, 6); + PrintRecordWinStreak(0, 10, 8); + PrintLastWinStreak(1, 10, 12); + PrintRecordWinStreak(1, 10, 14); } diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h new file mode 100644 index 000000000..ca33ef37a --- /dev/null +++ b/src/data/region_map_layout.h @@ -0,0 +1,42 @@ +// Abbreviated definitions to make the map layout more visual +#define R(routeNum) MAPSEC_ROUTE_##routeNum +#define LITT_T MAPSEC_LITTLEROOT_TOWN +#define OLDA_T MAPSEC_OLDALE_TOWN +#define DEWF_T MAPSEC_DEWFORD_TOWN +#define LAVA_T MAPSEC_LAVARIDGE_TOWN +#define FALL_T MAPSEC_FALLARBOR_TOWN +#define VERD_T MAPSEC_VERDANTURF_TOWN +#define PACI_T MAPSEC_PACIFIDLOG_TOWN +#define PETA_C MAPSEC_PETALBURG_CITY +#define SLAT_C MAPSEC_SLATEPORT_CITY +#define MAUV_C MAPSEC_MAUVILLE_CITY +#define RUST_C MAPSEC_RUSTBORO_CITY +#define FORT_C MAPSEC_FORTREE_CITY +#define LILY_C MAPSEC_LILYCOVE_CITY +#define MOSS_C MAPSEC_MOSSDEEP_CITY +#define SOOT_C MAPSEC_SOOTOPOLIS_CITY +#define EVER_C MAPSEC_EVER_GRANDE_CITY +#define MTCHIM MAPSEC_MT_CHIMNEY +#define SAFARI MAPSEC_SAFARI_ZONE +#define BTLTWR MAPSEC_BATTLE_TOWER +#define S_ISLD MAPSEC_SOUTHERN_ISLAND +#define ______ MAPSEC_NONE + +static const u8 sRegionMapLayout[] = +{ + ______, R(114), R(114), FALL_T, R(113), R(113), R(113), R(113), R(111), ______, ______, R(119), FORT_C, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + ______, R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(115), R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, SAFARI, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(115), ______, ______, ______, ______, LAVA_T, R(112), R(112), R(111), ______, ______, R(119), ______, R(120), R(121), R(121), R(121), R(121), LILY_C, LILY_C, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______, + R(115), ______, ______, ______, ______, ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______, + RUST_C, R(116), R(116), R(116), R(116), ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), MOSS_C, MOSS_C, ______, ______, + RUST_C, ______, ______, ______, VERD_T, R(117), R(117), R(117), MAUV_C, MAUV_C, R(118), R(118), R(123), R(123), R(123), R(123), R(123), ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, ______, + R(104), ______, ______, ______, ______, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), SOOT_C, R(126), R(127), R(127), R(127), ______, ______, + R(104), ______, ______, ______, R(103), R(103), R(103), R(103), R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, EVER_C, + R(104), PETA_C, R(102), R(102), OLDA_T, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(128), R(128), R(128), R(128), EVER_C, + R(105), ______, ______, ______, R(101), ______, ______, ______, SLAT_C, R(134), R(134), R(134), R(133), R(133), R(133), R(132), R(132), PACI_T, R(131), R(131), R(131), R(130), R(130), R(130), R(129), R(129), ______, ______, + R(105), ______, ______, ______, LITT_T, ______, ______, ______, SLAT_C, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + R(105), ______, ______, ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, BTLTWR, ______, ______, ______, ______, ______, + R(106), R(106), R(106), ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, + ______, ______, DEWF_T, R(107), R(107), R(107), R(108), R(108), R(109), ______, ______, ______, S_ISLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, +}; diff --git a/src/data/region_map_names_de.h b/src/data/region_map_names_de.h new file mode 100644 index 000000000..10f53c8ba --- /dev/null +++ b/src/data/region_map_names_de.h @@ -0,0 +1,79 @@ +const u8 gMapName_LittlerootTown[] = _("WURZELHEIM"); +const u8 gMapName_OldaleTown[] = _("ROSALTSTADT"); +const u8 gMapName_DewfordTown[] = _("FAUSTAUHAVEN"); +const u8 gMapName_LavaridgeTown[] = _("BAD LAVASTADT"); +const u8 gMapName_FallarborTown[] = _("LAUBWECHSEL{NAME_END}FELD"); +const u8 gMapName_VerdanturfTown[] = _("WIESENFLUR"); +const u8 gMapName_PacifidlogTown[] = _("FLOSSBRUNN"); +const u8 gMapName_PetalburgCity[] = _("BLÜTENBURG{NAME_END} CITY"); +const u8 gMapName_SlateportCity[] = _("GRAPHITPORT{NAME_END} CITY"); +const u8 gMapName_MauvilleCity[] = _("MALVENFROH{NAME_END} CITY"); +const u8 gMapName_RustboroCity[] = _("METAROST{NAME_END} CITY"); +const u8 gMapName_FortreeCity[] = _("BAUMHAUSEN{NAME_END} CITY"); +const u8 gMapName_LilycoveCity[] = _("SEEGRASULB{NAME_END} CITY"); +const u8 gMapName_MossdeepCity[] = _("MOOSBACH{NAME_END} CITY"); +const u8 gMapName_SootopolisCity[] = _("XENEROVILLE"); +const u8 gMapName_EverGrandeCity[] = _("PRACHTPOLIS{NAME_END} CITY"); +const u8 gMapName_Route101[] = _("ROUTE 101"); +const u8 gMapName_Route102[] = _("ROUTE 102"); +const u8 gMapName_Route103[] = _("ROUTE 103"); +const u8 gMapName_Route104[] = _("ROUTE 104"); +const u8 gMapName_Route105[] = _("ROUTE 105"); +const u8 gMapName_Route106[] = _("ROUTE 106"); +const u8 gMapName_Route107[] = _("ROUTE 107"); +const u8 gMapName_Route108[] = _("ROUTE 108"); +const u8 gMapName_Route109[] = _("ROUTE 109"); +const u8 gMapName_Route110[] = _("ROUTE 110"); +const u8 gMapName_Route111[] = _("ROUTE 111"); +const u8 gMapName_Route112[] = _("ROUTE 112"); +const u8 gMapName_Route113[] = _("ROUTE 113"); +const u8 gMapName_Route114[] = _("ROUTE 114"); +const u8 gMapName_Route115[] = _("ROUTE 115"); +const u8 gMapName_Route116[] = _("ROUTE 116"); +const u8 gMapName_Route117[] = _("ROUTE 117"); +const u8 gMapName_Route118[] = _("ROUTE 118"); +const u8 gMapName_Route119[] = _("ROUTE 119"); +const u8 gMapName_Route120[] = _("ROUTE 120"); +const u8 gMapName_Route121[] = _("ROUTE 121"); +const u8 gMapName_Route122[] = _("ROUTE 122"); +const u8 gMapName_Route123[] = _("ROUTE 123"); +const u8 gMapName_Route124[] = _("ROUTE 124"); +const u8 gMapName_Route125[] = _("ROUTE 125"); +const u8 gMapName_Route126[] = _("ROUTE 126"); +const u8 gMapName_Route127[] = _("ROUTE 127"); +const u8 gMapName_Route128[] = _("ROUTE 128"); +const u8 gMapName_Route129[] = _("ROUTE 129"); +const u8 gMapName_Route130[] = _("ROUTE 130"); +const u8 gMapName_Route131[] = _("ROUTE 131"); +const u8 gMapName_Route132[] = _("ROUTE 132"); +const u8 gMapName_Route133[] = _("ROUTE 133"); +const u8 gMapName_Route134[] = _("ROUTE 134"); +const u8 gMapName_Underwater[] = _("UNTERWASSER"); +const u8 gMapName_GraniteCave[] = _("GRANITHÖHLE"); +const u8 gMapName_MtChimney[] = _("SCHLOTBERG"); +const u8 gMapName_SafariZone[] = _("SAFARI-ZONE"); +const u8 gMapName_BattleTower[] = _("DUELLTURM"); +const u8 gMapName_PetalburgWoods[] = _("BLÜTENBURGWALD"); +const u8 gMapName_RusturfTunnel[] = _("METAFLURTUNNEL"); +const u8 gMapName_AbandonedShip[] = _("SCHIFFSWRACK"); +const u8 gMapName_NewMauville[] = _("NEU MALVENFROH"); +const u8 gMapName_MeteorFalls[] = _("METEORFÄLLE"); +const u8 gMapName_MtPyre[] = _("PYROBERG"); +const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM}s VERSTECK"); +const u8 gMapName_ShoalCave[] = _("KÜSTENHÖHLE"); +const u8 gMapName_SeafloorCavern[] = _("TIEFSEEHÖHLE"); +const u8 gMapName_VictoryRoad[] = _("SIEGESSTRASSE"); +const u8 gMapName_MirageIsland[] = _("WUNDEREILAND"); +const u8 gMapName_CaveOfOrigin[] = _("URZEITHÖHLE"); +const u8 gMapName_SouthernIsland[] = _("INSEL IM SÜDEN"); +const u8 gMapName_FieryPath[] = _("FEURIGER PFAD"); +const u8 gMapName_JaggedPass[] = _("STEILPASS"); +const u8 gMapName_SealedChamber[] = _("SIEGELKAMMER"); +const u8 gMapName_ScorchedSlab[] = _("SONNENGROTTE"); +const u8 gMapName_IslandCave[] = _("INSELHÖHLE"); +const u8 gMapName_DesertRuins[] = _("WÜSTENRUINE"); +const u8 gMapName_AncientTomb[] = _("GRABMAL"); +const u8 gMapName_InsideOfTruck[] = _("IM MÖBELWAGEN"); +const u8 gMapName_SkyPillar[] = _("HIMMELTURM"); +const u8 gMapName_SecretBase[] = _("GEHEIMBASIS"); +const u8 gMapName_None[] = _(""); diff --git a/src/data/region_map_names_en.h b/src/data/region_map_names_en.h new file mode 100644 index 000000000..9dde3d71a --- /dev/null +++ b/src/data/region_map_names_en.h @@ -0,0 +1,79 @@ +const u8 gMapName_LittlerootTown[] = _("LITTLEROOT{NAME_END} TOWN"); +const u8 gMapName_OldaleTown[] = _("OLDALE{NAME_END} TOWN"); +const u8 gMapName_DewfordTown[] = _("DEWFORD{NAME_END} TOWN"); +const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE{NAME_END} TOWN"); +const u8 gMapName_FallarborTown[] = _("FALLARBOR{NAME_END} TOWN"); +const u8 gMapName_VerdanturfTown[] = _("VERDANTURF{NAME_END} TOWN"); +const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG{NAME_END} TOWN"); +const u8 gMapName_PetalburgCity[] = _("PETALBURG{NAME_END} CITY"); +const u8 gMapName_SlateportCity[] = _("SLATEPORT{NAME_END} CITY"); +const u8 gMapName_MauvilleCity[] = _("MAUVILLE{NAME_END} CITY"); +const u8 gMapName_RustboroCity[] = _("RUSTBORO{NAME_END} CITY"); +const u8 gMapName_FortreeCity[] = _("FORTREE{NAME_END} CITY"); +const u8 gMapName_LilycoveCity[] = _("LILYCOVE{NAME_END} CITY"); +const u8 gMapName_MossdeepCity[] = _("MOSSDEEP{NAME_END} CITY"); +const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS{NAME_END} CITY"); +const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE{NAME_END} CITY"); +const u8 gMapName_Route101[] = _("ROUTE 101"); +const u8 gMapName_Route102[] = _("ROUTE 102"); +const u8 gMapName_Route103[] = _("ROUTE 103"); +const u8 gMapName_Route104[] = _("ROUTE 104"); +const u8 gMapName_Route105[] = _("ROUTE 105"); +const u8 gMapName_Route106[] = _("ROUTE 106"); +const u8 gMapName_Route107[] = _("ROUTE 107"); +const u8 gMapName_Route108[] = _("ROUTE 108"); +const u8 gMapName_Route109[] = _("ROUTE 109"); +const u8 gMapName_Route110[] = _("ROUTE 110"); +const u8 gMapName_Route111[] = _("ROUTE 111"); +const u8 gMapName_Route112[] = _("ROUTE 112"); +const u8 gMapName_Route113[] = _("ROUTE 113"); +const u8 gMapName_Route114[] = _("ROUTE 114"); +const u8 gMapName_Route115[] = _("ROUTE 115"); +const u8 gMapName_Route116[] = _("ROUTE 116"); +const u8 gMapName_Route117[] = _("ROUTE 117"); +const u8 gMapName_Route118[] = _("ROUTE 118"); +const u8 gMapName_Route119[] = _("ROUTE 119"); +const u8 gMapName_Route120[] = _("ROUTE 120"); +const u8 gMapName_Route121[] = _("ROUTE 121"); +const u8 gMapName_Route122[] = _("ROUTE 122"); +const u8 gMapName_Route123[] = _("ROUTE 123"); +const u8 gMapName_Route124[] = _("ROUTE 124"); +const u8 gMapName_Route125[] = _("ROUTE 125"); +const u8 gMapName_Route126[] = _("ROUTE 126"); +const u8 gMapName_Route127[] = _("ROUTE 127"); +const u8 gMapName_Route128[] = _("ROUTE 128"); +const u8 gMapName_Route129[] = _("ROUTE 129"); +const u8 gMapName_Route130[] = _("ROUTE 130"); +const u8 gMapName_Route131[] = _("ROUTE 131"); +const u8 gMapName_Route132[] = _("ROUTE 132"); +const u8 gMapName_Route133[] = _("ROUTE 133"); +const u8 gMapName_Route134[] = _("ROUTE 134"); +const u8 gMapName_Underwater[] = _("UNDERWATER"); +const u8 gMapName_GraniteCave[] = _("GRANITE CAVE"); +const u8 gMapName_MtChimney[] = _("MT. CHIMNEY"); +const u8 gMapName_SafariZone[] = _("SAFARI ZONE"); +const u8 gMapName_BattleTower[] = _("BATTLE TOWER"); +const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS"); +const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL"); +const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP"); +const u8 gMapName_NewMauville[] = _("NEW MAUVILLE"); +const u8 gMapName_MeteorFalls[] = _("METEOR FALLS"); +const u8 gMapName_MtPyre[] = _("MT. PYRE"); +const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM} HIDEOUT"); +const u8 gMapName_ShoalCave[] = _("SHOAL CAVE"); +const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN"); +const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD"); +const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND"); +const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN"); +const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND"); +const u8 gMapName_FieryPath[] = _("FIERY PATH"); +const u8 gMapName_JaggedPass[] = _("JAGGED PASS"); +const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER"); +const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB"); +const u8 gMapName_IslandCave[] = _("ISLAND CAVE"); +const u8 gMapName_DesertRuins[] = _("DESERT RUINS"); +const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB"); +const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK"); +const u8 gMapName_SkyPillar[] = _("SKY PILLAR"); +const u8 gMapName_SecretBase[] = _("SECRET BASE"); +const u8 gMapName_None[] = _(""); diff --git a/src/field_region_map.c b/src/field_region_map.c index 58b0e37bc..7cb22e5df 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -19,11 +19,13 @@ struct UnkStruct { MainCallback callback; u8 filler[4]; + // This should be RegionMap, but I can't do that because it overlaps unk888. struct RegionMapStruct unk8; u16 unk888; }; -extern struct UnkStruct unk_2000000; +extern u8 ewram[]; +#define unk_2000000 (*(struct UnkStruct *)(ewram)) void FieldInitRegionMap(MainCallback callback) { @@ -46,9 +48,10 @@ void CB2_FieldInitRegionMap(void) REG_BG3VOFS = 0; ResetSpriteData(); FreeAllSpritePalettes(); - sub_80FA8EC((u32)&unk_2000000.unk8, 0); - sub_80FBCF0(0, 0); - sub_80FBB3C(1, 1); + // TODO: remove this cast + InitRegionMap((void *)&unk_2000000.unk8, 0); + CreateRegionMapPlayerIcon(0, 0); + CreateRegionMapCursor(1, 1); SetUpWindowConfig(&gWindowConfig_81E709C); InitMenuWindow(&gWindowConfig_81E709C); MenuZeroFillScreen(); @@ -107,7 +110,7 @@ void sub_813EFDC(void) case 4: if (!gPaletteFade.active) { - sub_80FAB10(); + FreeRegionMapIconResources(); SetMainCallback2(unk_2000000.callback); } break; diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c new file mode 100644 index 000000000..c6bd8cb77 --- /dev/null +++ b/src/field_screen_effect.c @@ -0,0 +1,339 @@ +#include "global.h" +#include "field_camera.h" +#include "menu.h" +#include "palette.h" +#include "rom4.h" +#include "script.h" +#include "task.h" +#include "text.h" +#include "unknown_task.h" + +struct UnknownStruct1 +{ + u8 filler0[0x14]; + u8 unk14; + u8 filler15[0xB]; +}; +extern struct UnknownStruct1 gUnknown_03004DC0; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; + +const s32 gUnknown_0839ACE8 = 4; + +const static u32 gUnknown_0839ACEC[3] = +{ + REG_ADDR_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1 +}; + +static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4) +{ + if (a2 <= 0xA0) + { + if (a3 < 0) + a3 = 0; + if (a3 > 255) + a3 = 255; + if (a4 < 0) + a4 = 0; + if (a4 > 255) + a4 = 255; + dest[a2] = (a3 << 8) | a4; + } +} + +static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4) +{ + s32 v1 = a4; + s32 v2 = a4; + s32 v3 = 0; + while (v1 >= v3) + { + sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1); + sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1); + sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3); + sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3); + v2 -= (v3 * 2) - 1; + v3++; + if (v2 < 0) + { + v2 += 2 * (v1 - 1); + v1--; + } + } +} + +static void sub_8081424(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + data[0] = 1; + break; + case 1: + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + data[0] = 0; + data[3] += data[5]; + if (data[3] > data[4]) + { + if (data[6] == 1) + { + remove_some_task(); + data[0] = 2; + } + else + { + DestroyTask(taskId); + } + } + break; + case 2: + dp12_8087EA4(); + DestroyTask(taskId); + break; + } +} + +static void sub_80814E8(u8 taskId) +{ + if (!FuncIsActiveTask(sub_8081424)) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +static void sub_8081510(void) +{ + if (!FuncIsActiveTask(sub_80814E8)) + CreateTask(sub_80814E8, 80); +} + +static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6) +{ + u8 taskId = CreateTask(sub_8081424, 80); + s16 *data = gTasks[taskId].data; + + data[3] = a3; + data[4] = a4; + data[1] = a1; + data[2] = a2; + data[6] = a5; + + if (a3 < a4) + data[5] = a6; + else + data[5] = -a6; + + return taskId; +} + +void sub_8081594(u8 a1) +{ + u8 index = sav1_get_flash_used_on_map(); + u8 value = 0; + if (!a1) + value = 1; + sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1); + sub_8081510(); + ScriptContext2_Enable(); +} + +void sub_80815E0(u8 a1) +{ + if (a1) + { + sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]); + CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + } +} + +static void sub_808161C(u8 a1) +{ + int i; + u16 color[1]; + + if (!a1) + color[0] = 0x1F; + else + color[0] = 0x7C00; + + for (i = 0; i < 16; i++) + { + LoadPalette(color, 0xF0 + i, 2); + } +} + +static bool8 sub_8081658(u16 a1) +{ + u8 lo = REG_BLDALPHA & 0xFF; + u8 hi = REG_BLDALPHA >> 8; + + if (a1) + { + if (lo) + { + lo--; + } + } + else + { + if (hi < 0x10) + { + hi++; + } + } + + REG_BLDALPHA = (hi << 8) | lo; + + if (lo == 0 && hi == 0x10) + { + return TRUE; + } + + return FALSE; +} + +static void sub_80816A8(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[6] = REG_DISPCNT; + data[7] = REG_BLDCNT; + data[8] = REG_BLDALPHA; + data[9] = REG_WININ; + data[10] = REG_WINOUT; + REG_DISPCNT &= 0xBFFF; + REG_BLDCNT |= gUnknown_081E29E8[0]; + REG_BLDALPHA = 1804; + REG_WININ = 63; + REG_WINOUT = 30; + sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1); + CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + data[0] = 1; + break; + case 1: + MenuFillWindowRectWithBlankTile(0, 0, 29, 19); + sub_808161C(data[1]); + sub_8081534(data[2], data[3], 1, 160, 1, 2); + data[0] = 2; + break; + case 2: + if (!FuncIsActiveTask(sub_8081424)) + { + EnableBothScriptContexts(); + data[0] = 3; + } + break; + case 3: + InstallCameraPanAheadCallback(); + SetCameraPanningCallback(NULL); + data[5] = 0; + data[4] = 4; + data[0] = 4; + break; + case 4: + data[4]--; + if (!data[4]) + { + s32 panning; + data[4] = 4; + data[5] ^= 1; + if (data[5]) + panning = 4; + else + panning = -4; + SetCameraPanning(0, panning); + } + break; + case 6: + InstallCameraPanAheadCallback(); + data[4] = 8; + data[0] = 7; + break; + case 7: + data[4]--; + if (!data[4]) + { + data[4] = 8; + data[5] ^= 1; + if (sub_8081658(data[5]) == TRUE) + data[0] = 5; + } + break; + case 5: + MenuZeroFillWindowRect(0, 0, 29, 19); + LoadFontDefaultPalette(&gWindowConfig_81E6CE4); + REG_WIN0H = 255; + REG_DISPCNT = data[6]; + REG_BLDCNT = data[7]; + REG_BLDALPHA = data[8]; + REG_WININ = data[9]; + REG_WINOUT = data[10]; + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +void sub_80818A4(void) +{ + u8 taskId = CreateTask(sub_80816A8, 80); + s16 *data = gTasks[taskId].data; + + if (gScriptResult == 0) + { + data[1] = 0; + data[2] = 104; + } + else if (gScriptResult == 1) + { + data[1] = 1; + data[2] = 104; + } + else if (gScriptResult == 2) + { + data[1] = 0; + data[2] = 120; + } + else + { + data[1] = 1; + data[2] = 120; + } + + data[3] = 80; +} + +void sub_80818FC(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80816A8); + gTasks[taskId].data[0] = 6; +} + +static void task50_0807F0C8(u8); + +void sub_8081924(void) +{ + sub_8054044(); + CreateTask(task50_0807F0C8, 80); +} + +static void task50_0807F0C8(u8 taskId) +{ + if (sub_8054034() == TRUE) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} diff --git a/src/field_specials.c b/src/field_specials.c index 2b505bbfe..71de04f55 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1761,7 +1761,7 @@ u8 GetPokeblockNameByMonNature(void) void GetSecretBaseNearbyMapName(void) { - sub_80FBFB4(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); + GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0); } u16 sub_810F404(void) diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 303cc3d07..01105d0db 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -101,7 +101,7 @@ void DrawMapNamePopup(void) u8 name[20]; MenuLoadTextWindowGraphics_OverrideFrameType(0); - sub_80FBFB4(name, gMapHeader.name, 0); + GetMapSectionName(name, gMapHeader.regionMapSectionId, 0); MenuDrawTextWindow(0, 0, 13, 3); sub_8072BD8(name, 1, 1, 0x60); } diff --git a/src/menu.c b/src/menu.c index d532fc602..ef458124b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -180,7 +180,7 @@ void sub_8071F40(const u8 *str) MenuPrint(str, 3, 15); } -void sub_8071F60(u8 a1, u8 a2, u8 a3, u8 a4) +void sub_8071F60(u8 a1, u8 a2, u8 a3) { sub_8003490(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3); } @@ -710,7 +710,7 @@ _08072B3E:\n\ } #endif -void MenuPrint_RightAligned(u8 *str, u8 left, u8 top) +void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top) { sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } diff --git a/src/pokemon_1.c b/src/pokemon_1.c index c55105ef3..231fc33ed 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -249,29 +249,30 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread) { s32 i; - register u32 temp asm("r4"); s32 statCount = 0; u16 evAmount; - register u32 mask1 asm("r1"); - u8 mask2; + u8 temp; CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0); + temp = evSpread; - mask1 = 1; - for (i = 5; i >= 0; i--) + + for (i = 0; i < 6; i++) { - if (temp & mask1) + if (temp & 1) statCount++; temp >>= 1; } evAmount = 510 / statCount; - mask2 = 1; + + temp = 1; + for (i = 0; i < 6; i++) { - if (evSpread & mask2) + if (evSpread & temp) SetMonData(mon, MON_DATA_HP_EV + i, (u8 *)&evAmount); - mask2 <<= 1; + temp <<= 1; } CalculateMonStats(mon); @@ -443,23 +444,21 @@ void CalculateMonStats(struct Pokemon *mon) if (species == SPECIES_SHEDINJA) { if (currentHP != 0 || oldMaxHP == 0) - { currentHP = 1; - goto set_hp; - } + else + return; } else { - if (currentHP != 0 || oldMaxHP == 0) - { - if (currentHP != 0) - currentHP += newMaxHP - oldMaxHP; - else if (oldMaxHP == 0) - currentHP = newMaxHP; - set_hp: - SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); - } + if (currentHP == 0 && oldMaxHP == 0) + currentHP = newMaxHP; + else if (currentHP != 0) + currentHP += newMaxHP - oldMaxHP; + else + return; } + + SetMonData(mon, MON_DATA_HP, (u8 *)¤tHP); } void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest) diff --git a/src/record_mixing.c b/src/record_mixing.c index e1a72cf2e..a8daa9220 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -6,11 +6,16 @@ #include "dewford_trend.h" #include "event_data.h" #include "fldeff_80C5CD4.h" +#include "item.h" +#include "items.h" +#include "load_save.h" #include "link.h" #include "mauville_old_man.h" #include "menu.h" #include "mystery_event_script.h" +#include "rng.h" #include "rom4.h" +#include "save.h" #include "script.h" #include "secret_base.h" #include "songs.h" @@ -20,25 +25,25 @@ #include "task.h" #include "tv.h" +extern u8 ewram[]; +#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000)) +#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000)) -extern void *recordMixingSecretBases; -extern void *recordMixingTvShows; -extern void *gUnknown_083D0274; -extern void *gUnknown_083D0278; -extern void *recordMixingEasyChatPairs; -extern void *gUnknown_083D0284; -extern u8 gUnknown_083D0288[2]; -extern u8 gUnknown_083D028A[2][3]; -extern u8 gUnknown_083D0290[9][4]; - -extern struct RecordMixing_UnknownStruct gUnknown_02038738; //Don't know what type this points to -extern struct RecordMixing_UnknownStruct *gUnknown_083D0280; +extern struct RecordMixing_UnknownStruct gUnknown_02038738; extern u16 gSpecialVar_0x8005; extern u32 gUnknown_03005D2C; extern u8 gUnknown_03000718; extern u8 gUnknown_0300071C[]; extern bool8 gReceivedRemoteLinkPlayers; +void *recordMixingSecretBases = &gSaveBlock1.secretBases; +void *recordMixingTvShows = &gSaveBlock1.tvShows; +void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC; +void *gUnknown_083D0278 = &gSaveBlock1.oldMan; +void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; +struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738; +void *gUnknown_083D0284 = &gSaveBlock2.filler_A8; + #define BUFFER_CHUNK_SIZE 200 void sub_80B929C(void) @@ -46,7 +51,8 @@ void sub_80B929C(void) sub_8083A84(Task_RecordMixing_Main); } -struct PlayerRecords { +struct PlayerRecords +{ struct SecretBaseRecord secretBases[20]; TVShow tvShows[25]; u8 filler1004[0x40]; @@ -57,9 +63,6 @@ struct PlayerRecords { u16 filler11C8[0x34]; }; -extern struct PlayerRecords unk_2008000; -extern struct PlayerRecords unk_2018000; - void RecordMixing_PrepareExchangePacket(void) { sub_80BC300(); @@ -67,14 +70,14 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases)); memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows)); - memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40); - memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40); - memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28); + memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004)); + memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044)); + memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs)); gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0]; gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1]; sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738); memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct)); - memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); + memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124)); if (GetMultiplayerId() == 0) unk_2018000.filler11C8[0] = sub_8126338(); @@ -86,71 +89,77 @@ void RecordMixing_ReceiveExchangePacket(u32 a) sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a); sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); - //UB: Too many arguments for function "sub_80FA4E4" sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); - sub_80B9C6C(&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows); + sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows); sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a); sub_80B9F3C(unk_2008000.filler11C8, a); } +#define tCounter data[0] + void Task_RecordMixing_SoundEffect(u8 taskId) { - gTasks[taskId].data[0]++; - if (gTasks[taskId].data[0] == 50) + gTasks[taskId].tCounter++; + if (gTasks[taskId].tCounter == 50) { PlaySE(SE_W213); - gTasks[taskId].data[0] = 0; + gTasks[taskId].tCounter = 0; } } -#define TD_STATE 0 +#undef tCounter + + +#define tState data[0] +#define tSndEffTaskId data[15] + void Task_RecordMixing_Main(u8 taskId) { - s16 *taskData = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - switch (taskData[TD_STATE]) + switch (tState) { case 0: // init sub_8007270(gSpecialVar_0x8005); - VarSet(0x4000, 1); + VarSet(VAR_0x4000, 1); gUnknown_03000718 = 0; RecordMixing_PrepareExchangePacket(); CreateRecordMixingSprite(); - taskData[TD_STATE] = 1; - taskData[10] = CreateTask(sub_80B95F0, 0x50); - taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51); + tState = 1; + data[10] = CreateTask(sub_80B95F0, 0x50); + tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 0x51); break; case 1: // wait for sub_80B95F0 - if (!gTasks[taskData[10]].isActive) + if (!gTasks[data[10]].isActive) { - taskData[TD_STATE] = 2; + tState = 2; FlagSet(SYS_MIX_RECORD); DestroyRecordMixingSprite(); - DestroyTask(taskData[15]); + DestroyTask(tSndEffTaskId); } break; case 2: - taskData[10] = CreateTask(sub_80BA00C, 10); - taskData[TD_STATE] = 3; + data[10] = CreateTask(sub_80BA00C, 10); + tState = 3; PlaySE(SE_W226); break; case 3: // wait for sub_80BA00C - if (!gTasks[taskData[10]].isActive) + if (!gTasks[data[10]].isActive) { - taskData[TD_STATE] = 4; - taskData[10] = sub_8083664(); + tState = 4; + data[10] = sub_8083664(); sub_80720B0(); MenuPrint(gOtherText_MixingComplete, 2, 15); - taskData[8] = 0; + data[8] = 0; } break; case 4: // wait 60 frames - taskData[8]++; - if (taskData[8] > 60) - taskData[TD_STATE] = 5; + data[8]++; + if (data[8] > 60) + tState = 5; break; case 5: - if (!gTasks[taskData[10]].isActive) + if (!gTasks[data[10]].isActive) { sub_8055588(); MenuZeroFillScreen(); @@ -165,14 +174,14 @@ void sub_80B95F0(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[TD_STATE]) + switch (task->tState) { case 0: sub_80B9A78(); MenuDisplayMessageBox(); MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); task->data[8] = 0x708; - task->data[TD_STATE] = 400; + task->tState = 400; ClearLinkCallback_2(); break; case 100: // wait 20 frames @@ -180,48 +189,48 @@ void sub_80B95F0(u8 taskId) if (task->data[12] > 20) { task->data[12] = 0; - task->data[TD_STATE] = 101; + task->tState = 101; } break; case 101: - { - u8 players = GetLinkPlayerCount_2(); - - if (IsLinkMaster() == 1) { - if (players == sub_800820C()) + u8 players = GetLinkPlayerCount_2(); + + if (IsLinkMaster() == 1) { - PlaySE(0x15); - task->data[TD_STATE] = 201; - task->data[12] = 0; + if (players == sub_800820C()) + { + PlaySE(SE_PIN); + task->tState = 201; + task->data[12] = 0; + } + } + else + { + PlaySE(SE_BOO); + task->tState = 301; } - } - else - { - PlaySE(0x16); - task->data[TD_STATE] = 301; } break; - } case 201: if (sub_800820C() == GetLinkPlayerCount_2()) { if (++task->data[12] > GetLinkPlayerCount_2() * 30) { sub_8007F4C(); - task->data[TD_STATE] = 1; + task->tState = 1; } } break; case 301: if (sub_800820C() == GetLinkPlayerCount_2()) - task->data[TD_STATE] = 1; + task->tState = 1; break; case 400: // wait 20 frames task->data[12]++; if (task->data[12] > 20) { - task->data[TD_STATE] = 1; + task->tState = 1; task->data[12] = 0; } break; @@ -229,31 +238,30 @@ void sub_80B95F0(u8 taskId) if (gReceivedRemoteLinkPlayers) { ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2); - task->data[TD_STATE] = 5; + task->tState = 5; } break; case 2: - { - u8 subTaskId; - - task->data[6] = GetLinkPlayerCount_2(); - task->data[TD_STATE] = 0; - task->data[5] = GetMultiplayerId_(); - task->func = Task_RecordMixing_SendPacket; - StorePtrInTaskData(&unk_2018000, &task->data[2]); - subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50); - task->data[10] = subTaskId; - gTasks[subTaskId].data[0] = taskId; - //StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]); - StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]); + { + u8 subTaskId; + + task->data[6] = GetLinkPlayerCount_2(); + task->tState = 0; + task->data[5] = GetMultiplayerId_(); + task->func = Task_RecordMixing_SendPacket; + StorePtrInTaskData(&unk_2018000, &task->data[2]); + subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50); + task->data[10] = subTaskId; + gTasks[subTaskId].data[0] = taskId; + StorePtrInTaskData((u8 *)&unk_2008000, &gTasks[subTaskId].data[5]); + } break; - } case 5: // wait 60 frames task->data[10]++; if (task->data[10] > 60) { task->data[10] = 0; - task->data[TD_STATE] = 2; + task->tState = 2; } break; } @@ -264,29 +272,29 @@ void Task_RecordMixing_SendPacket(u8 taskId) struct Task *task = &gTasks[taskId]; // does this send the data 24 times? - switch (task->data[TD_STATE]) + switch (task->tState) { case 0: //Copy record data to send buffer - { - void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; + { + void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; - memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); - task->data[TD_STATE]++; + memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); + task->tState++; + } break; - } case 1: if (GetMultiplayerId() == 0) sub_8007E9C(1); - task->data[TD_STATE]++; + task->tState++; break; case 2: break; case 3: task->data[4]++; if ((u16)task->data[4] == 24) - task->data[TD_STATE]++; + task->tState++; else - task->data[TD_STATE] = 0; + task->tState = 0; break; case 4: if (!gTasks[task->data[10]].isActive) @@ -325,7 +333,6 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId) } gTasks[task->data[0]].data[0]++; } - //_080B998A if (handledPlayers == GetLinkPlayerCount()) DestroyTask(taskId); } @@ -353,15 +360,15 @@ void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId) gUnknown_03000718 = 1; } -void *LoadPtrFromTaskData(u16 *ptr) +void *LoadPtrFromTaskData(u16 *taskData) { - return (void *)(*ptr | *(ptr + 1) << 16); + return (void *)(taskData[0] | (taskData[1] << 16)); } -void StorePtrInTaskData(void *ptr, u16 *data) +void StorePtrInTaskData(void *ptr, u16 *taskData) { - *data = (u32)ptr; - *(data + 1) = (u32)ptr >> 16; + taskData[0] = (u32)ptr; + taskData[1] = (u32)ptr >> 16; } u8 GetMultiplayerId_(void) @@ -379,6 +386,27 @@ void sub_80B9A78(void) gUnknown_03005D2C = sizeof(struct PlayerRecords); } +const u8 gUnknown_083D0288[2] = {1, 0}; + +const u8 gUnknown_083D028A[2][3] = +{ + {1, 2, 0}, + {2, 0, 1}, +}; + +const u8 gUnknown_083D0290[9][4] = +{ + {1, 0, 3, 2}, + {3, 0, 1, 2}, + {2, 0, 3, 1}, + {1, 3, 0, 2}, + {2, 3, 0, 1}, + {3, 2, 0, 1}, + {1, 2, 3, 0}, + {2, 3, 1, 0}, + {3, 2, 1, 0}, +}; + void sub_80B9A88(u8 *a) { u32 i; @@ -430,101 +458,627 @@ u8 sub_80B9BBC(u16 *a) return a[16]; } -#undef NONMATCHING -#ifdef NONMATCHING +void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e) +{ + struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]); + struct RecordMixing_UnknownStructSub *src = r6 + c[d][1]; + struct RecordMixing_UnknownStructSub sp0 = *src; + struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]); -void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e) + r6 += c[d][1]; + *r6 = *(r8 + c[e][1]); + + r8 += c[e][1]; + *r8 = sp0; +} + +u8 sub_80B9C4C(u8 *a) { - struct RecordMixing_UnknownStructSub *offA; - struct RecordMixing_UnknownStructSub *offB; - struct RecordMixing_UnknownStructSub v0; - v0 = (offA = ((struct RecordMixing_UnknownStruct *)(b * c[d][0] + (u32)&a))->data)[c[d][1]]; - offA[c[d][1]] = (offB = ((struct RecordMixing_UnknownStruct *)(b * c[e][0] + (u32)&a))->data)[c[e][1]]; - offB[c[e][1]] = v0; - //ToDo: Figure out what this strange stack usage is + int i; + u8 r2 = 0; + + for (i = 0; i < 0x100; i++) + r2 += a[i]; + return r2; } +const u8 gUnknown_083D02B4[][2] = +{ + {0, 1}, + {1, 2}, + {2, 0}, +}; + +const u8 gUnknown_083D02BA[3][4] = +{ + {0, 1, 2, 3}, + {0, 2, 1, 3}, + {0, 3, 2, 1}, +}; + +#ifdef NONMATCHING +void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) +{ + u8 r8; + u8 sp4[4]; + u8 sp8[4]; + void *spC[4]; + u8 sp1C[4][2]; + u8 sp24[4][2]; + u8 sp3C; + u16 sp40 = Random(); + u16 i; // r3 + u16 r7; + u8 r1; + struct RecordMixing_UnknownStruct *r6; + + //asm("":::"r8"); + SeedRng(gLinkPlayers[0].trainerId); + r8 = GetLinkPlayerCount(); + for (i = 0; i < 4; i++) + { + sp4[i] = 0xFF; + sp8[i] = 0; + sp1C[i][0] = 0; + sp1C[i][1] = 0; + } + sp3C = 0; + for (i = 0; i < r8; i++) + { + r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + if (r6->unk70 != 0) + { + for (r7 = 0; r7 < r6->unk70; r7++) + { + if (r6->unk74[r7] == 0) + sp1C[i][r7] = 1; + } + } + //_080B9D3C + } + //_080B9D46 + for (r7 = 0, i = 0; i < r8; i++) + { + r6 = (struct RecordMixing_UnknownStruct *)(a + b * i); + if (sp1C[i][0] == 1 || sp1C[i][1] == 1) + sp3C++; + if (sp1C[i][0] == 1 && sp1C[i][1] == 0) + { + sp24[r7][0] = i; + sp24[r7][1] = 0; + r7++; + } + else if (sp1C[i][0] == 0 && sp1C[i][1] == 1) + { + sp24[r7][0] = i; + sp24[r7][1] = 0; + r7++; + } + //else if (sp1C[i][0] == 1 + 1 && sp1C[i][1] + 1 == 1 + 1) + else if (sp1C[i][0] == 1 && sp1C[i][1] == 1) + { + u8 r4, r1; + + sp24[r7][0] = i; + r4 = sub_80B9BBC((u16 *)&r6->data[0]); + r1 = sub_80B9BBC((u16 *)&r6->data[1]); + + asm(""); + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + /* + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + */ + + /* + if (r4 == 0 && r1 != 0) + sp24[r7][1] = 1; + else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0)) + //sp24[r7][1] = ((Random() << 16) >> 16) % 2; + sp24[r7][1] = Random() % 2; + else + sp24[r7][1] = 0; + */ + //_080B9E2C: + r7++; + } + } + //_080B9E3E + for (i = 0; i < 4; i++) + { + r6 = (struct RecordMixing_UnknownStruct *)a + b * c; + spC[i] = r6; + } + r1 = sub_80B9C4C(d) % 3; + switch (sp3C) + { + case 2: + sub_80B9BC4(a, b, (u8 *)sp24, 0, 1); + break; + case 3: + { + u8 var1 = gUnknown_083D02B4[r1][0]; + u8 var2 = gUnknown_083D02B4[r1][1]; + sub_80B9BC4(a, b, (u8 *)sp24, var1, var2); + } + break; + case 4: + { + u8 *r6 = (u8 *)sp24; + u8 var1 = gUnknown_083D02BA[r1][0]; + u8 var2 = gUnknown_083D02BA[r1][1]; + sub_80B9BC4(a, b, r6, var1, var2); + } + { + u8 *r6 = (u8 *)sp24; + u8 var1 = gUnknown_083D02BA[r1][2]; + u8 var2 = gUnknown_083D02BA[r1][3]; + sub_80B9BC4(a, b, r6, var1, var2); + } + break; + } + //_080B9EF0 + //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38); + //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38); + r6 = (struct RecordMixing_UnknownStruct *)(a + b * c); + gSaveBlock1.filler_303C.data[0] = r6->data[0]; + gSaveBlock1.filler_303C.data[1] = r6->data[1]; + //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38); + //memcpy(&gSaveBlock1.filler_303C.data[1], &r6->data[1], 0x38); + SeedRng(sp40); +} #else __attribute__((naked)) -void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e) +void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r10\n\ - mov r5, r9\n\ - mov r4, r8\n\ - push {r4-r6}\n\ - sub sp, 0x38\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x58\n\ + str r0, [sp, 0x2C]\n\ + str r1, [sp, 0x30]\n\ + str r3, [sp, 0x38]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x34]\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + str r0, [sp, 0x40]\n\ + ldr r0, _080B9DA8 @ =gLinkPlayers\n\ + ldrh r0, [r0, 0x4]\n\ + bl SeedRng\n\ + bl GetLinkPlayerCount\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ mov r8, r0\n\ + movs r3, 0\n\ + add r0, sp, 0x1C\n\ + mov r9, r0\n\ + movs r1, 0x1D\n\ + add r1, sp\n\ mov r10, r1\n\ - mov r9, r2\n\ - adds r4, r3, 0\n\ - ldr r5, [sp, 0x54]\n\ - lsls r4, 24\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - lsrs r4, 23\n\ - add r4, r9\n\ - ldrb r0, [r4]\n\ - mov r6, r10\n\ - muls r6, r0\n\ - add r6, r8\n\ - ldrb r0, [r4, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ - adds r1, r6, r1\n\ - mov r0, sp\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - lsls r5, 1\n\ - add r5, r9\n\ - ldrb r0, [r5]\n\ - mov r1, r10\n\ - muls r1, r0\n\ + mov r2, sp\n\ + adds r2, 0xC\n\ + str r2, [sp, 0x4C]\n\ + movs r7, 0xFF\n\ + add r4, sp, 0x8\n\ + movs r2, 0\n\ + mov r6, r9\n\ + mov r5, r10\n\ +_080B9CBC:\n\ + mov r1, sp\n\ + adds r1, r3\n\ + adds r1, 0x4\n\ + ldrb r0, [r1]\n\ + orrs r0, r7\n\ + strb r0, [r1]\n\ + adds r0, r4, r3\n\ + strb r2, [r0]\n\ + lsls r1, r3, 1\n\ + adds r0, r6, r1\n\ + strb r2, [r0]\n\ + adds r1, r5, r1\n\ + strb r2, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x3\n\ + bls _080B9CBC\n\ + movs r4, 0\n\ + str r4, [sp, 0x3C]\n\ + movs r3, 0\n\ + mov r1, r8\n\ + lsls r0, r1, 16\n\ + lsrs r1, r0, 16\n\ + str r0, [sp, 0x50]\n\ + ldr r4, [sp, 0x30]\n\ + ldr r0, [sp, 0x34]\n\ + adds r2, r4, 0\n\ + muls r2, r0\n\ + str r2, [sp, 0x48]\n\ + ldr r2, [sp, 0x3C]\n\ + cmp r2, r1\n\ + bcs _080B9D46\n\ + mov r8, r1\n\ +_080B9D00:\n\ + ldr r4, [sp, 0x30]\n\ + adds r0, r4, 0\n\ + muls r0, r3\n\ + ldr r1, [sp, 0x2C]\n\ + adds r6, r1, r0\n\ + ldr r0, [r6, 0x70]\n\ + cmp r0, 0\n\ + beq _080B9D3C\n\ + movs r7, 0\n\ + cmp r7, r0\n\ + bcs _080B9D3C\n\ + adds r4, r6, 0\n\ + adds r4, 0x74\n\ + mov r2, r9\n\ + lsls r1, r3, 1\n\ + movs r5, 0x1\n\ +_080B9D20:\n\ + lsls r0, r7, 1\n\ + adds r0, r4, r0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + bne _080B9D30\n\ + adds r0, r7, r1\n\ + adds r0, r2, r0\n\ + strb r5, [r0]\n\ +_080B9D30:\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + ldr r0, [r6, 0x70]\n\ + cmp r7, r0\n\ + bcc _080B9D20\n\ +_080B9D3C:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, r8\n\ + bcc _080B9D00\n\ +_080B9D46:\n\ + movs r7, 0\n\ + movs r3, 0\n\ + ldr r2, [sp, 0x50]\n\ + cmp r2, 0\n\ + beq _080B9E3E\n\ + mov r4, sp\n\ + adds r4, 0x24\n\ + str r4, [sp, 0x44]\n\ + movs r0, 0x25\n\ + add r0, sp\n\ + mov r8, r0\n\ +_080B9D5C:\n\ + ldr r1, [sp, 0x30]\n\ adds r0, r1, 0\n\ - add r8, r0\n\ - ldrb r1, [r4, 0x1]\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - lsls r0, 3\n\ - adds r6, r0\n\ - ldrb r0, [r5, 0x1]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 3\n\ + muls r0, r3\n\ + ldr r2, [sp, 0x2C]\n\ + adds r6, r2, r0\n\ + lsls r1, r3, 1\n\ + mov r4, r9\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + beq _080B9D7C\n\ + mov r2, r10\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9D86\n\ +_080B9D7C:\n\ + ldr r0, [sp, 0x3C]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp, 0x3C]\n\ +_080B9D86:\n\ + mov r4, r9\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9DAC\n\ + mov r2, r10\n\ + adds r0, r2, r1\n\ + ldrb r2, [r0]\n\ + cmp r2, 0\n\ + bne _080B9DAC\n\ +_080B9D9A:\n\ + lsls r1, r7, 1\n\ + ldr r4, [sp, 0x44]\n\ + adds r0, r4, r1\n\ + strb r3, [r0]\n\ add r1, r8\n\ + strb r2, [r1]\n\ + b _080B9E2C\n\ + .align 2, 0\n\ +_080B9DA8: .4byte gLinkPlayers\n\ +_080B9DAC:\n\ + mov r2, r9\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080B9DC0\n\ + mov r4, r10\n\ + adds r0, r4, r1\n\ + ldrb r2, [r0]\n\ + cmp r2, 0x1\n\ + beq _080B9D9A\n\ +_080B9DC0:\n\ + mov r2, r9\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9E32\n\ + mov r4, r10\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + bne _080B9E32\n\ + lsls r5, r7, 1\n\ + ldr r1, [sp, 0x44]\n\ + adds r0, r1, r5\n\ + strb r3, [r0]\n\ adds r0, r6, 0\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r0, r1, 3\n\ + str r3, [sp, 0x54]\n\ + bl sub_80B9BBC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r0, r6, 0\n\ + adds r0, 0x38\n\ + bl sub_80B9BBC\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldr r3, [sp, 0x54]\n\ + cmp r4, 0\n\ + bne _080B9E0A\n\ + cmp r1, 0\n\ + beq _080B9E0E\n\ + mov r2, r8\n\ + adds r1, r2, r5\n\ + movs r0, 0x1\n\ + strb r0, [r1]\n\ + b _080B9E2C\n\ +_080B9E0A:\n\ + cmp r1, 0\n\ + beq _080B9E26\n\ +_080B9E0E:\n\ + str r3, [sp, 0x54]\n\ + bl Random\n\ + mov r4, r8\n\ + adds r2, r4, r5\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + strb r0, [r2]\n\ + ldr r3, [sp, 0x54]\n\ + b _080B9E2C\n\ +_080B9E26:\n\ + mov r2, r8\n\ + adds r0, r2, r5\n\ + strb r1, [r0]\n\ +_080B9E2C:\n\ + adds r0, r7, 0x1\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ +_080B9E32:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldr r4, [sp, 0x50]\n\ + cmp r0, r4\n\ + bcc _080B9D5C\n\ +_080B9E3E:\n\ + movs r3, 0\n\ + ldr r1, [sp, 0x48]\n\ + lsls r0, r1, 4\n\ subs r0, r1\n\ lsls r0, 3\n\ - add r8, r0\n\ - mov r0, r8\n\ - mov r1, sp\n\ + ldr r2, [sp, 0x2C]\n\ + adds r6, r2, r0\n\ + ldr r1, [sp, 0x4C]\n\ +_080B9E4E:\n\ + lsls r0, r3, 2\n\ + adds r0, r1, r0\n\ + str r6, [r0]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x3\n\ + bls _080B9E4E\n\ + ldr r0, [sp, 0x38]\n\ + bl sub_80B9C4C\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + movs r1, 0x3\n\ + bl __umodsi3\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldr r4, [sp, 0x3C]\n\ + cmp r4, 0x3\n\ + beq _080B9E9C\n\ + cmp r4, 0x3\n\ + bgt _080B9E82\n\ + cmp r4, 0x2\n\ + beq _080B9E8A\n\ + b _080B9EF0\n\ +_080B9E82:\n\ + ldr r0, [sp, 0x3C]\n\ + cmp r0, 0x4\n\ + beq _080B9EBC\n\ + b _080B9EF0\n\ +_080B9E8A:\n\ + add r2, sp, 0x24\n\ + movs r0, 0x1\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + movs r3, 0\n\ + bl sub_80B9BC4\n\ + b _080B9EF0\n\ +_080B9E9C:\n\ + ldr r0, _080B9EB8 @ =gUnknown_083D02B4\n\ + lsls r1, 1\n\ + adds r2, r1, r0\n\ + ldrb r3, [r2]\n\ + adds r0, 0x1\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + add r2, sp, 0x24\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + bl sub_80B9BC4\n\ + b _080B9EF0\n\ + .align 2, 0\n\ +_080B9EB8: .4byte gUnknown_083D02B4\n\ +_080B9EBC:\n\ + add r6, sp, 0x24\n\ + ldr r4, _080B9F2C @ =gUnknown_083D02BA\n\ + lsls r5, r1, 2\n\ + adds r0, r5, r4\n\ + ldrb r3, [r0]\n\ + adds r0, r4, 0x1\n\ + adds r0, r5, r0\n\ + ldrb r0, [r0]\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + adds r2, r6, 0\n\ + bl sub_80B9BC4\n\ + adds r0, r4, 0x2\n\ + adds r0, r5, r0\n\ + ldrb r3, [r0]\n\ + adds r4, 0x3\n\ + adds r5, r4\n\ + ldrb r0, [r5]\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x2C]\n\ + ldr r1, [sp, 0x30]\n\ + adds r2, r6, 0\n\ + bl sub_80B9BC4\n\ +_080B9EF0:\n\ + ldr r1, [sp, 0x2C]\n\ + ldr r2, [sp, 0x48]\n\ + adds r6, r1, r2\n\ + ldr r4, _080B9F30 @ =gSaveBlock1\n\ + ldr r1, _080B9F34 @ =0x0000303c\n\ + adds r0, r4, r1\n\ + adds r1, r6, 0\n\ movs r2, 0x38\n\ bl memcpy\n\ - add sp, 0x38\n\ + ldr r2, _080B9F38 @ =0x00003074\n\ + adds r4, r2\n\ + adds r1, r6, 0\n\ + adds r1, 0x38\n\ + adds r0, r4, 0\n\ + movs r2, 0x38\n\ + bl memcpy\n\ + ldr r0, [sp, 0x40]\n\ + bl SeedRng\n\ + add sp, 0x58\n\ pop {r3-r5}\n\ mov r8, r3\n\ mov r9, r4\n\ mov r10, r5\n\ - pop {r4-r6}\n\ + pop {r4-r7}\n\ pop {r0}\n\ bx r0\n\ + .align 2, 0\n\ +_080B9F2C: .4byte gUnknown_083D02BA\n\ +_080B9F30: .4byte gSaveBlock1\n\ +_080B9F34: .4byte 0x0000303c\n\ +_080B9F38: .4byte 0x00003074\n\ .syntax divided\n"); } #endif -u8 sub_80B9C4C(u8 *a) +void sub_80B9F3C(u16 *a, u8 b) { - int i; - u8 r2 = 0; - - for (i = 0; i < 0x100; i++) - r2 += a[i]; - return r2; + if (b != 0 && *a != 0) + { + if (GetPocketByItemId(*a) == 5) + { + if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1)) + { + VarSet(VAR_0x4001, *a); + StringCopy(gStringVar1, gLinkPlayers[0].name); + if (*a == ITEM_EON_TICKET) + FlagSet(SYS_HAS_EON_TICKET); + } + else + { + VarSet(VAR_0x4001, ITEM_NONE); + } + } + else + { + if (AddBagItem(*a, 1) == TRUE) + { + VarSet(VAR_0x4001, *a); + StringCopy(gStringVar1, gLinkPlayers[0].name); + } + else + { + VarSet(VAR_0x4001, ITEM_NONE); + } + } + } } +void sub_80BA00C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[0]++; + break; + case 1: + task->data[0]++; + break; + case 2: + SetSecretBase2Field_9_AndHideBG(); + sub_8125E2C(); + task->data[0]++; + break; + case 3: + if (sub_8125E6C() != 0) + { + ClearSecretBase2Field_9_2(); + task->data[0]++; + task->data[1] = 0; + } + break; + case 4: + task->data[1]++; + if (task->data[1] > 10) + { + sub_800832C(); + task->data[0]++; + } + break; + case 5: + if (!gReceivedRemoteLinkPlayers) + DestroyTask(taskId); + break; + } +} diff --git a/src/region_map.c b/src/region_map.c new file mode 100644 index 000000000..097417357 --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,1847 @@ +#include "global.h" +#include "event_data.h" +#include "field_effect.h" +#include "field_specials.h" +#include "m4a.h" +#include "main.h" +#include "map_constants.h" +#include "menu.h" +#include "palette.h" +#include "pokemon_menu.h" +#include "region_map.h" +#include "rom4.h" +#include "secret_base.h" +#include "songs.h" +#include "sprite.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "trig.h" + +// Map Section IDs +#define MAPSEC_LITTLEROOT_TOWN 0 +#define MAPSEC_OLDALE_TOWN 1 +#define MAPSEC_DEWFORD_TOWN 2 +#define MAPSEC_LAVARIDGE_TOWN 3 +#define MAPSEC_FALLARBOR_TOWN 4 +#define MAPSEC_VERDANTURF_TOWN 5 +#define MAPSEC_PACIFIDLOG_TOWN 6 +#define MAPSEC_PETALBURG_CITY 7 +#define MAPSEC_SLATEPORT_CITY 8 +#define MAPSEC_MAUVILLE_CITY 9 +#define MAPSEC_RUSTBORO_CITY 10 +#define MAPSEC_FORTREE_CITY 11 +#define MAPSEC_LILYCOVE_CITY 12 +#define MAPSEC_MOSSDEEP_CITY 13 +#define MAPSEC_SOOTOPOLIS_CITY 14 +#define MAPSEC_EVER_GRANDE_CITY 15 +#define MAPSEC_ROUTE_101 0x10 +#define MAPSEC_ROUTE_102 0x11 +#define MAPSEC_ROUTE_103 0x12 +#define MAPSEC_ROUTE_104 0x13 +#define MAPSEC_ROUTE_105 0x14 +#define MAPSEC_ROUTE_106 0x15 +#define MAPSEC_ROUTE_107 0x16 +#define MAPSEC_ROUTE_108 0x17 +#define MAPSEC_ROUTE_109 0x18 +#define MAPSEC_ROUTE_110 0x19 +#define MAPSEC_ROUTE_111 0x1A +#define MAPSEC_ROUTE_112 0x1B +#define MAPSEC_ROUTE_113 0x1C +#define MAPSEC_ROUTE_114 0x1D +#define MAPSEC_ROUTE_115 0x1E +#define MAPSEC_ROUTE_116 0x1F +#define MAPSEC_ROUTE_117 0x20 +#define MAPSEC_ROUTE_118 0x21 +#define MAPSEC_ROUTE_119 0x22 +#define MAPSEC_ROUTE_120 0x23 +#define MAPSEC_ROUTE_121 0x24 +#define MAPSEC_ROUTE_122 0x25 +#define MAPSEC_ROUTE_123 0x26 +#define MAPSEC_ROUTE_124 0x27 +#define MAPSEC_ROUTE_125 0x28 +#define MAPSEC_ROUTE_126 0x29 +#define MAPSEC_ROUTE_127 0x2A +#define MAPSEC_ROUTE_128 0x2B +#define MAPSEC_ROUTE_129 0x2C +#define MAPSEC_ROUTE_130 0x2D +#define MAPSEC_ROUTE_131 0x2E +#define MAPSEC_ROUTE_132 0x2F +#define MAPSEC_ROUTE_133 0x30 +#define MAPSEC_ROUTE_134 0x31 +#define MAPSEC_UNDERWATER1 0x32 +#define MAPSEC_UNDERWATER2 0x33 +#define MAPSEC_UNDERWATER3 0x34 +#define MAPSEC_UNDERWATER4 0x35 +#define MAPSEC_UNDERWATER5 0x36 +#define MAPSEC_GRANITE_CAVE 0x37 +#define MAPSEC_MT_CHIMNEY 0x38 +#define MAPSEC_SAFARI_ZONE 0x39 +#define MAPSEC_BATTLE_TOWER 0x3A +#define MAPSEC_PETALBURG_WOODS 0x3B +#define MAPSEC_RUSTURF_TUNNEL 0x3C +#define MAPSEC_ABANDONED_SHIP 0x3D +#define MAPSEC_NEW_MAUVILLE 0x3E +#define MAPSEC_METEOR_FALLS_1 0x3F +#define MAPSEC_METEOR_FALLS_2 0x40 +#define MAPSEC_MT_PYRE 0x41 +#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42 +#define MAPSEC_SHOAL_CAVE 0x43 +#define MAPSEC_SEAFLOOR_CAVERN 0x44 +#define MAPSEC_UNDERWATER6 0x45 +#define MAPSEC_VICTORY_ROAD 0x46 +#define MAPSEC_MIRAGE_ISLAND 0x47 +#define MAPSEC_CAVE_OF_ORIGIN 0x48 +#define MAPSEC_SOUTHERN_ISLAND 0x49 +#define MAPSEC_FIERY_PATH_1 0x4A +#define MAPSEC_FIERY_PATH_2 0x4B +#define MAPSEC_JAGGED_PASS_1 0x4C +#define MAPSEC_JAGGED_PASS_2 0x4D +#define MAPSEC_SEALED_CHAMBER 0x4E +#define MAPSEC_UNDERWATER7 0x4F +#define MAPSEC_SCORCHED_SLAB 0x50 +#define MAPSEC_ISLAND_CAVE 0x51 +#define MAPSEC_DESERT_RUINS 0x52 +#define MAPSEC_ANCIENT_TOMB 0x53 +#define MAPSEC_INSIDE_OF_TRUCK 0x54 +#define MAPSEC_SKY_PILLAR 0x55 +#define MAPSEC_SECRET_BASE 0x56 +#define MAPSEC_UNK_0x57 0x57 +#define MAPSEC_NONE 0x58 + +#define MAP_WIDTH 28 +#define MAP_HEIGHT 15 +#define MAPCURSOR_X_MIN 1 +#define MAPCURSOR_Y_MIN 2 +#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1) +#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1) + +// Input events +enum +{ + INPUT_EVENT_NONE, + INPUT_EVENT_DPAD, + INPUT_EVENT_2, + INPUT_EVENT_3, + INPUT_EVENT_A_BUTTON, + INPUT_EVENT_B_BUTTON, +}; + +extern struct RegionMap *gRegionMap; + +static const u16 sRegionMapCursor_Pal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal"); +static const u8 sRegionMapCursorSmall_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz"); +static const u8 sRegionMapCursorLarge_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz"); +static const u16 sRegionMapBrendanIcon_Pal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal"); +static const u8 sRegionMapBrendanIcon_Image[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp"); +static const u16 sRegionMapMayIcon_Pal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); +static const u8 sRegionMapMayIcon_Image[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); +static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal"); +static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); +static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); + +#include "data/region_map_layout.h" + +#if ENGLISH +#include "data/region_map_names_en.h" +#elif GERMAN +#include "data/region_map_names_de.h" +#endif + +struct RegionMapLocation +{ + u8 x, y; + u8 width, height; + const u8 *regionMapSectionId; +}; + +const struct RegionMapLocation gRegionMapLocations[] = +{ + { 4, 11, 1, 1, gMapName_LittlerootTown}, + { 4, 9, 1, 1, gMapName_OldaleTown}, + { 2, 14, 1, 1, gMapName_DewfordTown}, + { 5, 3, 1, 1, gMapName_LavaridgeTown}, + { 3, 0, 1, 1, gMapName_FallarborTown}, + { 4, 6, 1, 1, gMapName_VerdanturfTown}, + {17, 10, 1, 1, gMapName_PacifidlogTown}, + { 1, 9, 1, 1, gMapName_PetalburgCity}, + { 8, 10, 1, 2, gMapName_SlateportCity}, + { 8, 6, 2, 1, gMapName_MauvilleCity}, + { 0, 5, 1, 2, gMapName_RustboroCity}, + {12, 0, 1, 1, gMapName_FortreeCity}, + {18, 3, 2, 1, gMapName_LilycoveCity}, + {24, 5, 2, 1, gMapName_MossdeepCity}, + {21, 7, 1, 1, gMapName_SootopolisCity}, + {27, 8, 1, 2, gMapName_EverGrandeCity}, + { 4, 10, 1, 1, gMapName_Route101}, + { 2, 9, 2, 1, gMapName_Route102}, + { 4, 8, 4, 1, gMapName_Route103}, + { 0, 7, 1, 3, gMapName_Route104}, + { 0, 10, 1, 3, gMapName_Route105}, + { 0, 13, 2, 1, gMapName_Route106}, + { 3, 14, 3, 1, gMapName_Route107}, + { 6, 14, 2, 1, gMapName_Route108}, + { 8, 12, 1, 3, gMapName_Route109}, + { 8, 7, 1, 3, gMapName_Route110}, + { 8, 0, 1, 6, gMapName_Route111}, + { 6, 3, 2, 1, gMapName_Route112}, + { 4, 0, 4, 1, gMapName_Route113}, + { 1, 0, 2, 3, gMapName_Route114}, + { 0, 2, 1, 3, gMapName_Route115}, + { 1, 5, 4, 1, gMapName_Route116}, + { 5, 6, 3, 1, gMapName_Route117}, + {10, 6, 2, 1, gMapName_Route118}, + {11, 0, 1, 6, gMapName_Route119}, + {13, 0, 1, 4, gMapName_Route120}, + {14, 3, 4, 1, gMapName_Route121}, + {16, 4, 1, 2, gMapName_Route122}, + {12, 6, 5, 1, gMapName_Route123}, + {20, 3, 4, 3, gMapName_Route124}, + {24, 3, 2, 2, gMapName_Route125}, + {20, 6, 3, 3, gMapName_Route126}, + {23, 6, 3, 3, gMapName_Route127}, + {23, 9, 4, 1, gMapName_Route128}, + {24, 10, 2, 1, gMapName_Route129}, + {21, 10, 3, 1, gMapName_Route130}, + {18, 10, 3, 1, gMapName_Route131}, + {15, 10, 2, 1, gMapName_Route132}, + {12, 10, 3, 1, gMapName_Route133}, + { 9, 10, 3, 1, gMapName_Route134}, + {20, 3, 4, 3, gMapName_Underwater}, + {20, 6, 3, 3, gMapName_Underwater}, + {23, 6, 3, 3, gMapName_Underwater}, + {23, 9, 4, 1, gMapName_Underwater}, + {21, 7, 1, 1, gMapName_Underwater}, + { 1, 13, 1, 1, gMapName_GraniteCave}, + { 6, 2, 1, 1, gMapName_MtChimney}, + {16, 2, 1, 1, gMapName_SafariZone}, + {22, 12, 1, 1, gMapName_BattleTower}, + { 0, 8, 1, 1, gMapName_PetalburgWoods}, + { 2, 5, 1, 1, gMapName_RusturfTunnel}, + { 6, 14, 1, 1, gMapName_AbandonedShip}, + { 8, 7, 1, 1, gMapName_NewMauville}, + { 0, 3, 1, 1, gMapName_MeteorFalls}, + { 1, 2, 1, 1, gMapName_MeteorFalls}, + {16, 4, 1, 1, gMapName_MtPyre}, + {19, 3, 1, 1, gMapName_EvilTeamHideout}, + {24, 4, 1, 1, gMapName_ShoalCave}, + {24, 9, 1, 1, gMapName_SeafloorCavern}, + {24, 9, 1, 1, gMapName_Underwater}, + {27, 9, 1, 1, gMapName_VictoryRoad}, + {17, 10, 1, 1, gMapName_MirageIsland}, + {21, 7, 1, 1, gMapName_CaveOfOrigin}, + {12, 14, 1, 1, gMapName_SouthernIsland}, + { 6, 3, 1, 1, gMapName_FieryPath}, + { 7, 3, 1, 1, gMapName_FieryPath}, + { 6, 3, 1, 1, gMapName_JaggedPass}, + { 7, 2, 1, 1, gMapName_JaggedPass}, + {11, 10, 1, 1, gMapName_SealedChamber}, + {11, 10, 1, 1, gMapName_Underwater}, + {13, 0, 1, 1, gMapName_ScorchedSlab}, + {0, 10, 1, 1, gMapName_IslandCave}, + { 8, 3, 1, 1, gMapName_DesertRuins}, + {13, 2, 1, 1, gMapName_AncientTomb}, + { 0, 0, 1, 1, gMapName_InsideOfTruck}, + {19, 10, 1, 1, gMapName_SkyPillar}, + { 0, 0, 1, 1, gMapName_SecretBase}, + { 0, 0, 1, 1, gMapName_None}, +}; + +static const u16 gUnknown_083E7684[][2] = +{ + {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124}, + {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126}, + {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127}, + {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128}, + {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY}, + {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128}, + {MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY}, + {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134}, + {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104}, + {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112}, + {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122}, + {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131}, + {MAPSEC_NONE, MAPSEC_NONE}, +}; + +static u8 sub_80FAB78(void); +static u8 _swiopen(void); +static u8 sub_80FAD04(void); +static u8 sub_80FADE4(void); +static void CalcZoomScrollParams(s16, s16, s16, s16, u16, u16, u8); +static void sub_80FB238(s16, s16); +void UpdateRegionMapVideoRegs(void); +static u16 GetRegionMapSectionAt(u16, u16); +static void InitializeCursorPosition(void); +static void sub_80FB600(void); +static u16 sub_80FB758(u16); +static u16 sub_80FB9C0(u16); +static void sub_80FBA18(void); +static bool8 sub_80FBAA0(u16); +void CreateRegionMapCursor(u16, u16); +static void sub_80FBCA0(void); +static void sub_80FBDF8(void); +static void sub_80FBE24(void); +static void SpriteCB_PlayerIconZoomedOut(struct Sprite *); +static void UpdateIconBlink(struct Sprite *); +static void SpriteCB_PlayerIconZoomedIn(struct Sprite *); +const u8 *GetMapSectionName(u8 *, u16, u16); +static void VBlankCB_FlyRegionMap(void); +static void CB2_FlyRegionMap(void); +static void sub_80FC244(void (*func)(void)); +static void PrintFlyTargetName(void); +static void CreateFlyTargetGraphics(void); +static void CreateCityTownFlyTargetIcons(void); +static void CreateSpecialAreaFlyTargetIcons(void); +static void SpriteCB_FlyTargetIcons(struct Sprite *); +static void sub_80FC5B4(void); +static void sub_80FC600(void); +static void sub_80FC69C(void); + +void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) +{ + sub_80FA904(regionMap, zoomed); + while (sub_80FA940()) + ; +} + +void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed) +{ + gRegionMap = regionMap; + gRegionMap->initStep = 0; + gRegionMap->zoomed = zoomed; + gRegionMap->inputCallback = (zoomed == 0) ? sub_80FAB78 : sub_80FAD04; +} + +bool8 sub_80FA940(void) +{ + switch (gRegionMap->initStep) + { + case 0: + LZ77UnCompVram(sRegionMapBkgnd_ImageLZ, (void *)(VRAM + 0x8000)); + break; + case 1: + LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (void *)(VRAM + 0xE000)); + break; + case 2: + LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60); // Why isn't this the right size? + break; + case 3: + LZ77UnCompWram(sRegionMapCursorSmall_ImageLZ, gRegionMap->cursorSmallImage); + break; + case 4: + LZ77UnCompWram(sRegionMapCursorLarge_ImageLZ, gRegionMap->cursorLargeImage); + break; + case 5: + InitializeCursorPosition(); + gRegionMap->unk74 = gRegionMap->cursorPosX; + gRegionMap->unk76 = gRegionMap->cursorPosY; + gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId); + gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId); + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + break; + case 6: + if (gRegionMap->zoomed == FALSE) + { + CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0); + } + else + { + gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 52; + gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 68; + gRegionMap->unk64 = gRegionMap->cursorPosX; + gRegionMap->unk66 = gRegionMap->cursorPosY; + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0); + } + break; + case 7: + sub_80FBA18(); + UpdateRegionMapVideoRegs(); + gRegionMap->cursorSprite = NULL; + gRegionMap->playerIconSprite = NULL; + gRegionMap->unk7A = 0; + gRegionMap->blinkPlayerIcon = FALSE; + REG_BG2CNT = 0xBC8A; + gRegionMap->initStep++; + default: + return FALSE; + } + gRegionMap->initStep++; + return TRUE; +} + +void FreeRegionMapIconResources(void) +{ + if (gRegionMap->cursorSprite != NULL) + { + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + } + if (gRegionMap->playerIconSprite != NULL) + { + DestroySprite(gRegionMap->playerIconSprite); + FreeSpriteTilesByTag(gRegionMap->playerIconTileTag); + FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag); + } +} + +u8 sub_80FAB60(void) +{ + return gRegionMap->inputCallback(); +} + +static u8 sub_80FAB78(void) +{ + u8 event = INPUT_EVENT_NONE; + + gRegionMap->cursorDeltaX = 0; + gRegionMap->cursorDeltaY = 0; + if ((gMain.heldKeys & DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN) + { + gRegionMap->cursorDeltaY = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX) + { + gRegionMap->cursorDeltaY = 1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN) + { + gRegionMap->cursorDeltaX = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX) + { + gRegionMap->cursorDeltaX = 1; + event = INPUT_EVENT_DPAD; + } + + if (gMain.newKeys & A_BUTTON) + event = INPUT_EVENT_A_BUTTON; + else if (gMain.newKeys & B_BUTTON) + event = INPUT_EVENT_B_BUTTON; + + if (event == INPUT_EVENT_DPAD) + { + gRegionMap->unk7A = 4; + gRegionMap->inputCallback = _swiopen; + } + return event; +} + +static u8 _swiopen(void) +{ + u16 mapSecId; + + if (gRegionMap->unk7A != 0) + return INPUT_EVENT_2; + + if (gRegionMap->cursorDeltaX > 0) + gRegionMap->cursorPosX++; + + if (gRegionMap->cursorDeltaX < 0) + gRegionMap->cursorPosX--; + + if (gRegionMap->cursorDeltaY > 0) + gRegionMap->cursorPosY++; + + if (gRegionMap->cursorDeltaY < 0) + gRegionMap->cursorPosY--; + + mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->unk16 = sub_80FB758(mapSecId); + if (mapSecId != gRegionMap->mapSecId) + { + gRegionMap->mapSecId = mapSecId; + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + } + sub_80FBA18(); + gRegionMap->inputCallback = sub_80FAB78; + return INPUT_EVENT_3; +} + +static u8 sub_80FAD04(void) +{ + u8 event = INPUT_EVENT_NONE; + + gRegionMap->unk6A = 0; + gRegionMap->unk68 = 0; + if ((gMain.heldKeys & DPAD_UP) && gRegionMap->scrollY > -52) + { + gRegionMap->unk68 = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->scrollY < 60) + { + gRegionMap->unk68 = 1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->scrollX > -44) + { + gRegionMap->unk6A = -1; + event = INPUT_EVENT_DPAD; + } + if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->scrollX < 172) + { + gRegionMap->unk6A = 1; + event = INPUT_EVENT_DPAD; + } + + if (gMain.newKeys & A_BUTTON) + event = INPUT_EVENT_A_BUTTON; + if (gMain.newKeys & B_BUTTON) + event = INPUT_EVENT_B_BUTTON; + + if (event == INPUT_EVENT_DPAD) + { + gRegionMap->inputCallback = sub_80FADE4; + gRegionMap->unk6C = 0; + } + return event; +} + +static u8 sub_80FADE4(void) +{ + gRegionMap->scrollY += gRegionMap->unk68; + gRegionMap->scrollX += gRegionMap->unk6A; + sub_80FB238(gRegionMap->scrollX, gRegionMap->scrollY); + gRegionMap->unk6C++; + if (gRegionMap->unk6C == 8) + { + u16 r3 = (gRegionMap->scrollX + 44) / 8 + 1; + u16 r1 = (gRegionMap->scrollY + 52) / 8 + 2; + + if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66) + { + u16 mapSecId; + + gRegionMap->unk64 = r3; + gRegionMap->unk66 = r1; + mapSecId = GetRegionMapSectionAt(r3, r1); + gRegionMap->unk16 = sub_80FB758(mapSecId); + if (mapSecId != gRegionMap->mapSecId) + { + gRegionMap->mapSecId = mapSecId; + GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + } + sub_80FBA18(); + } + gRegionMap->unk6C = 0; + gRegionMap->inputCallback = sub_80FAD04; + return INPUT_EVENT_3; + } + return INPUT_EVENT_2; +} + +void sub_80FAEC4(void) +{ + if (gRegionMap->zoomed == FALSE) + { + gRegionMap->scrollY = 0; + gRegionMap->scrollX = 0; + gRegionMap->unk40 = 0; + gRegionMap->unk3C = 0; + gRegionMap->unk60 = gRegionMap->cursorPosX * 8 - 52; + gRegionMap->unk62 = gRegionMap->cursorPosY * 8 - 68; + gRegionMap->unk44 = (gRegionMap->unk60 << 8) / 16; + gRegionMap->unk48 = (gRegionMap->unk62 << 8) / 16; + gRegionMap->unk64 = gRegionMap->cursorPosX; + gRegionMap->unk66 = gRegionMap->cursorPosY; + gRegionMap->unk4C = (256 << 8); + gRegionMap->unk50 = -0x800; + } + else + { + gRegionMap->unk3C = gRegionMap->scrollX * 256; + gRegionMap->unk40 = gRegionMap->scrollY * 256; + gRegionMap->unk60 = 0; + gRegionMap->unk62 = 0; + gRegionMap->unk44 = -(gRegionMap->unk3C / 16); + gRegionMap->unk48 = -(gRegionMap->unk40 / 16); + gRegionMap->cursorPosX = gRegionMap->unk64; + gRegionMap->cursorPosY = gRegionMap->unk66; + gRegionMap->unk4C = (128 << 8); + gRegionMap->unk50 = 0x800; + } + gRegionMap->unk6E = 0; + sub_80FBCA0(); + sub_80FBDF8(); +} + +u8 sub_80FAFC0(void) +{ + u8 r4; + + if (gRegionMap->unk6E >= 16) + return 0; + gRegionMap->unk6E++; + if (gRegionMap->unk6E == 16) + { + gRegionMap->unk44 = 0; + gRegionMap->unk48 = 0; + gRegionMap->scrollX = gRegionMap->unk60; + gRegionMap->scrollY = gRegionMap->unk62; + gRegionMap->unk4C = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8); + gRegionMap->zoomed = !gRegionMap->zoomed; + gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? sub_80FAB78 : sub_80FAD04; + CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag); + sub_80FBE24(); + r4 = 0; + } + else + { + gRegionMap->unk3C += gRegionMap->unk44; + gRegionMap->unk40 += gRegionMap->unk48; + gRegionMap->scrollX = gRegionMap->unk3C >> 8; + gRegionMap->scrollY = gRegionMap->unk40 >> 8; + gRegionMap->unk4C += gRegionMap->unk50; + if ((gRegionMap->unk44 < 0 && gRegionMap->scrollX < gRegionMap->unk60) + || (gRegionMap->unk44 > 0 && gRegionMap->scrollX > gRegionMap->unk60)) + { + gRegionMap->scrollX = gRegionMap->unk60; + gRegionMap->unk44 = 0; + } + if ((gRegionMap->unk48 < 0 && gRegionMap->scrollY < gRegionMap->unk62) + || (gRegionMap->unk48 > 0 && gRegionMap->scrollY > gRegionMap->unk62)) + { + gRegionMap->scrollY = gRegionMap->unk62; + gRegionMap->unk48 = 0; + } + if (gRegionMap->zoomed == FALSE) + { + if (gRegionMap->unk4C < (128 << 8)) + { + gRegionMap->unk4C = (128 << 8); + gRegionMap->unk50 = 0; + } + } + else + { + if (gRegionMap->unk4C > (256 << 8)) + { + gRegionMap->unk4C = (256 << 8); + gRegionMap->unk50 = 0; + } + } + r4 = 1; + } + CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk4C >> 8, gRegionMap->unk4C >> 8, 0); + return r4; +} + +static void CalcZoomScrollParams(s16 a, s16 b, s16 c, s16 d, u16 e, u16 f, u8 rotation) +{ + s32 var1; + s32 var2; + s32 var3; + s32 var4; + + gRegionMap->unk2C = e * gSineTable[rotation + 64] >> 8; + gRegionMap->unk30 = e * -gSineTable[rotation] >> 8; + gRegionMap->unk34 = f * gSineTable[rotation] >> 8; + gRegionMap->unk38 = f * gSineTable[rotation + 64] >> 8; + + var1 = (a << 8) + (c << 8); + var2 = d * gRegionMap->unk34 + gRegionMap->unk2C * c; + gRegionMap->bg2x = var1 - var2; + + var3 = (b << 8) + (d << 8); + var4 = gRegionMap->unk38 * d + gRegionMap->unk30 * c; + gRegionMap->bg2y = var3 - var4; + + gRegionMap->needUpdateVideoRegs = TRUE; +} + +static void sub_80FB238(s16 x, s16 y) +{ + gRegionMap->bg2x = (0x1C << 8) + (x << 8); + gRegionMap->bg2y = (0x24 << 8) + (y << 8); + gRegionMap->needUpdateVideoRegs = TRUE; +} + +void UpdateRegionMapVideoRegs(void) +{ + if (gRegionMap->needUpdateVideoRegs) + { + REG_BG2PA = gRegionMap->unk2C; + REG_BG2PB = gRegionMap->unk34; + REG_BG2PC = gRegionMap->unk30; + REG_BG2PD = gRegionMap->unk38; + REG_BG2X = gRegionMap->bg2x; + REG_BG2Y = gRegionMap->bg2y; + gRegionMap->needUpdateVideoRegs = FALSE; + } +} + +void sub_80FB2A4(s16 a, s16 b) +{ + CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0); + UpdateRegionMapVideoRegs(); + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->pos2.x = -a; + gRegionMap->playerIconSprite->pos2.y = -b; + } +} + +static u16 GetRegionMapSectionAt(u16 x, u16 y) +{ + if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX) + return MAPSEC_NONE; + y -= MAPCURSOR_Y_MIN; + x -= MAPCURSOR_X_MIN; + return sRegionMapLayout[x + y * 28]; +} + +static void InitializeCursorPosition(void) +{ + struct MapHeader *mapHeader; + u16 mapWidth; + u16 mapHeight; + u16 x; + u16 y; + u16 r1; + u16 r9; + + if (gSaveBlock1.location.mapGroup == 25 + && (gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR + || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK + || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_ROOMS)) + { + sub_80FB600(); + return; + } + + switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1) + { + default: + case 0: + case 1: + case 2: + case 4: + case 5: + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->playerIsInCave = FALSE; + mapWidth = gMapHeader.mapData->width; + mapHeight = gMapHeader.mapData->height; + x = gSaveBlock1.pos.x; + y = gSaveBlock1.pos.y; + if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6) + gRegionMap->playerIsInCave = TRUE; + break; + case 3: + case 6: + mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1.warp4.x; + y = gSaveBlock1.warp4.y; + break; + case 8: + mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->playerIsInCave = TRUE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = gSaveBlock1.warp2.x; + y = gSaveBlock1.warp2.y; + break; + case 7: + { + struct WarpData *r4; + + gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) + { + r4 = &gSaveBlock1.warp4; + mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + } + else + { + r4 = &gSaveBlock1.warp2; + mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum); + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + } + gRegionMap->playerIsInCave = FALSE; + mapWidth = mapHeader->mapData->width; + mapHeight = mapHeader->mapData->height; + x = r4->x; + y = r4->y; + } + break; + } + + r9 = x; + + r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width; + if (r1 == 0) + r1 = 1; + x /= r1; + if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) + x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + + r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height; + if (r1 == 0) + r1 = 1; + y /= r1; + if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) + y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + + switch (gRegionMap->mapSecId) + { + case MAPSEC_ROUTE_114: + if (y != 0) + x = 0; + break; + case MAPSEC_ROUTE_126: + case MAPSEC_UNDERWATER2: + x = 0; + if (gSaveBlock1.pos.x > 32) + x = 1; + if (gSaveBlock1.pos.x > 0x33) + x++; + y = 0; + if (gSaveBlock1.pos.y > 0x25) + y = 1; + if (gSaveBlock1.pos.y > 0x38) + y++; + break; + case MAPSEC_ROUTE_121: + x = 0; + if (r9 > 14) + x = 1; + if (r9 > 0x1C) + x++; + if (r9 > 0x36) + x++; + break; + } + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} + +static void sub_80FB600(void) +{ + u16 y = 0; + u16 x = 0; + u8 mapGroup; + u8 mapNum; + s16 sp2; + s16 sp4; + + switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4)) + { + case 1: + gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + break; + case 2: + gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + break; + case 3: + gRegionMap->mapSecId = MAPSEC_ROUTE_124; + break; + case 4: + gRegionMap->mapSecId = MAPSEC_ROUTE_131; + break; + default: + case 0: + { + struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + u16 r1; + + gRegionMap->mapSecId = mapHeader->regionMapSectionId; + r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width; + if (r1 == 0) + r1 = 1; + x = sp2 / r1; + if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) + x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + + r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height; + if (r1 == 0) + r1 = 1; + y = sp4 / r1; + if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) + y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + } + break; + } + gRegionMap->playerIsInCave = FALSE; + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; +} + +static u16 sub_80FB758(u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_NONE: + return 0; + case MAPSEC_LITTLEROOT_TOWN: + return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3; + case MAPSEC_OLDALE_TOWN: + return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3; + case MAPSEC_DEWFORD_TOWN: + return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3; + case MAPSEC_LAVARIDGE_TOWN: + return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3; + case MAPSEC_FALLARBOR_TOWN: + return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3; + case MAPSEC_VERDANTURF_TOWN: + return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3; + case MAPSEC_PACIFIDLOG_TOWN: + return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3; + case MAPSEC_PETALBURG_CITY: + return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3; + case MAPSEC_SLATEPORT_CITY: + return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3; + case MAPSEC_MAUVILLE_CITY: + return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3; + case MAPSEC_RUSTBORO_CITY: + return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3; + case MAPSEC_FORTREE_CITY: + return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3; + case MAPSEC_LILYCOVE_CITY: + return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3; + case MAPSEC_MOSSDEEP_CITY: + return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3; + case MAPSEC_SOOTOPOLIS_CITY: + return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3; + case MAPSEC_EVER_GRANDE_CITY: + return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3; + + case MAPSEC_BATTLE_TOWER: + return FlagGet(FLAG_UNLOCK_BATTLE_TOWER) ? 4 : 0; + case MAPSEC_SOUTHERN_ISLAND: + return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0; + default: + return 1; + } +} + +u16 GetRegionMapSectionAt_(u16 x, u16 y) +{ + return GetRegionMapSectionAt(x, y); +} + +static u16 sub_80FB9C0(u16 mapSecId) +{ + u16 i; + + for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++) + { + if (gUnknown_083E7684[i][0] == mapSecId) + return gUnknown_083E7684[i][1]; + } + return mapSecId; +} + +u16 sub_80FBA04(u16 mapSecId) +{ + return sub_80FB9C0(mapSecId); +} + +static void sub_80FBA18(void) +{ + u16 x; + u16 y; + u16 i; + + if (gRegionMap->mapSecId == MAPSEC_NONE) + { + gRegionMap->everGrandeCityArea = 0; + return; + } + + if (gRegionMap->zoomed == FALSE) + { + x = gRegionMap->cursorPosX; + y = gRegionMap->cursorPosY; + } + else + { + x = gRegionMap->unk64; + y = gRegionMap->unk66; + } + + i = 0; + while (1) + { + if (x <= 1) + { + if (sub_80FBAA0(y)) + { + y--; + x = 0x1D; + } + else + { + break; + } + } + else + { + x--; + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + i++; + } + } + + gRegionMap->everGrandeCityArea = i; +} + +static bool8 sub_80FBAA0(u16 a) +{ + u16 x; + u16 y; + + y = a - 1; + if (y == 0xFFFF) + return FALSE; + + for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) + { + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + return TRUE; + } + return FALSE; +} + +static const struct OamData sCursorOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sCursorAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(4, 20), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sCursorAnimSeq1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_FRAME(32, 10), + ANIMCMD_FRAME(16, 10), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sCursorAnimTable[] = +{ + sCursorAnimSeq0, + sCursorAnimSeq1, +}; + +static void SpriteCB_Cursor(struct Sprite *sprite) +{ + if (gRegionMap->unk7A != 0) + { + sprite->pos1.x += gRegionMap->cursorDeltaX * 2; + sprite->pos1.y += gRegionMap->cursorDeltaY * 2; + gRegionMap->unk7A--; + } +} + +static void nullsub_66(struct Sprite *sprite) +{ +} + +void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette = + { + .data = sRegionMapCursor_Pal, + }; + struct SpriteTemplate spriteTemplate = + { + .oam = &sCursorOamData, + .anims = sCursorAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_Cursor, + }; + + spriteSheet.tag = tileTag; + spriteTemplate.tileTag = tileTag; + gRegionMap->cursorTileTag = tileTag; + + spritePalette.tag = paletteTag; + spriteTemplate.paletteTag = paletteTag; + gRegionMap->cursorPaletteTag = paletteTag; + + if (gRegionMap->zoomed == FALSE) + { + spriteSheet.data = gRegionMap->cursorSmallImage; + spriteSheet.size = 0x100; + spriteTemplate.callback = SpriteCB_Cursor; + } + else + { + spriteSheet.data = gRegionMap->cursorLargeImage; + spriteSheet.size = 0x600; + spriteTemplate.callback = nullsub_66; + } + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&spriteTemplate, 0x38, 0x48, 0); + if (spriteId != 64) + { + gRegionMap->cursorSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->cursorSprite->oam.size = 2; + gRegionMap->cursorSprite->pos1.x -= 8; + gRegionMap->cursorSprite->pos1.y -= 8; + StartSpriteAnim(gRegionMap->cursorSprite, 1); + } + else + { + gRegionMap->cursorSprite->oam.size = 1; + gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4; + gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4; + } + gRegionMap->cursorSprite->data1 = 2; + gRegionMap->cursorSprite->data2 = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101; + gRegionMap->cursorSprite->data3 = 1; + } +} + +static void sub_80FBCA0(void) +{ + if (gRegionMap->cursorSprite != NULL) + { + DestroySprite(gRegionMap->cursorSprite); + FreeSpriteTilesByTag(gRegionMap->cursorTileTag); + FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag); + } +} + +void unref_sub_80FBCD0(void) +{ + gRegionMap->cursorSprite->data3 = 1; +} + +void unref_sub_80FBCE0(void) +{ + gRegionMap->cursorSprite->data3 = 0; +} + +static const struct OamData sPlayerIconOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sPlayerIconAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sPlayerIconAnimTable[] = +{ + sPlayerIconAnimSeq0, +}; + +void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag) +{ + u8 spriteId; + struct SpriteSheet playerIconSpriteSheet = + { + .data = sRegionMapBrendanIcon_Image, + .size = 128, + .tag = tileTag, + }; + struct SpritePalette playerIconSpritePalette = + { + .data = sRegionMapBrendanIcon_Pal, + .tag = paletteTag, + }; + struct SpriteTemplate playerIconSpriteTemplate = + { + .tileTag = tileTag, + .paletteTag = paletteTag, + .oam = &sPlayerIconOamData, + .anims = sPlayerIconAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }; + + if (gSaveBlock2.playerGender == FEMALE) + { + playerIconSpriteSheet.data = sRegionMapMayIcon_Image; + playerIconSpritePalette.data = sRegionMapMayIcon_Pal; + } + LoadSpriteSheet(&playerIconSpriteSheet); + LoadSpritePalette(&playerIconSpritePalette); + spriteId = CreateSprite(&playerIconSpriteTemplate, 0, 0, 1); + gRegionMap->playerIconSprite = &gSprites[spriteId]; + if (gRegionMap->zoomed == FALSE) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn; + } +} + +static void sub_80FBDF8(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + gRegionMap->playerIconSprite->invisible = TRUE; + gRegionMap->playerIconSprite->callback = SpriteCallbackDummy; + } +} + +static void sub_80FBE24(void) +{ + if (gRegionMap->playerIconSprite != NULL) + { + if (gRegionMap->zoomed == TRUE) + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn; + gRegionMap->playerIconSprite->invisible = FALSE; + } + else + { + gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4; + gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4; + gRegionMap->playerIconSprite->pos2.x = 0; + gRegionMap->playerIconSprite->pos2.y = 0; + gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut; + gRegionMap->playerIconSprite->invisible = FALSE; + } + } +} + +static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite) +{ + sprite->pos2.x = -(gRegionMap->scrollX * 2); + sprite->pos2.y = -(gRegionMap->scrollY * 2); + sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + + // Determine if sprite is on screen + if (sprite->data0 < -8 || sprite->data0 > 0xA8 || sprite->data1 < -8 || sprite->data1 > 0xF8) + sprite->data2 = FALSE; + else + sprite->data2 = TRUE; + + if (sprite->data2 == TRUE) + UpdateIconBlink(sprite); + else + sprite->invisible = TRUE; +} + +static void SpriteCB_PlayerIconZoomedOut(struct Sprite *sprite) +{ + UpdateIconBlink(sprite); +} + +static void UpdateIconBlink(struct Sprite *sprite) +{ + if (gRegionMap->blinkPlayerIcon) + { + // Toggle visibility every 16 frames + sprite->data7++; + if (sprite->data7 > 16) + { + sprite->data7 = 0; + sprite->invisible = !sprite->invisible; + } + } + else + { + sprite->invisible = FALSE; + } +} + +void sub_80FBF94(void) +{ + if (gRegionMap->playerIsInCave) + gRegionMap->blinkPlayerIcon = TRUE; +} + +const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length) +{ + if (mapSecId == MAPSEC_SECRET_BASE) + return GetSecretBaseMapName(dest); + if (mapSecId < MAPSEC_NONE) + return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId); + if (length == 0) + length = 18; + return StringFill(dest, CHAR_SPACE, length); +} + +const u8 *CopyMapName(u8 *dest, u16 mapSecId) +{ + switch (mapSecId) + { + case MAPSEC_UNK_0x57: + return StringCopy(dest, gOtherText_Ferry); + case MAPSEC_SECRET_BASE: + return StringCopy(dest, gOtherText_SecretBase); + default: + return GetMapSectionName(dest, mapSecId, 0); + } +} + +const u8 *CopyLocationName(u8 *dest, u16 mapSecId) +{ + if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT) + return StringCopy(dest, gOtherText_Hideout); + else + return CopyMapName(dest, mapSecId); +} + +static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height) +{ + *x = gRegionMapLocations[mapSecId].x; + *y = gRegionMapLocations[mapSecId].y; + *width = gRegionMapLocations[mapSecId].width; + *height = gRegionMapLocations[mapSecId].height; +} + +struct UnknownStruct3 +{ + void (*unk0)(void); + u16 unk4; + u16 unk6; + struct RegionMap regionMap; +}; + +extern u8 ewram[]; +#define ewram0 (*(struct UnknownStruct3 *)(ewram + 0)) +#define ewram888 (ewram + 0x888) +#define ewramA6E (ewram[0xA6E]) +#define ewramBlankMapName (ewram + 0xA48) + +static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal"); +static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz"); +static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz"); +static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal"); +static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz"); + +static const u8 sUnknown_083E7920[][3] = +{ + {0, 9, 1}, + {0, 10, 14}, + {0, 11, 15}, + {0, 12, 16}, + {0, 13, 17}, + {0, 14, 18}, + {0, 15, 19}, + {0, 0, 3}, + {0, 1, 4}, + {0, 2, 5}, + {0, 3, 6}, + {0, 4, 7}, + {0, 5, 8}, + {0, 6, 9}, + {0, 7, 10}, + {0, 8, 11}, + {0, 16, 0}, + {0, 17, 0}, + {0, 18, 0}, + {0, 19, 0}, + {0, 20, 0}, + {0, 21, 0}, + {0, 22, 0}, + {0, 23, 0}, + {0, 24, 0}, + {0, 25, 0}, + {0, 26, 0}, + {0, 27, 0}, + {0, 28, 0}, + {0, 29, 0}, + {0, 30, 0}, + {0, 31, 0}, + {0, 32, 0}, + {0, 33, 0}, + {0, 34, 0}, + {0, 35, 0}, + {0, 36, 0}, + {0, 37, 0}, + {0, 38, 0}, + {0, 39, 0}, + {0, 40, 0}, + {0, 41, 0}, + {0, 42, 0}, + {0, 43, 0}, + {0, 44, 0}, + {0, 45, 0}, + {0, 46, 0}, + {0, 47, 0}, + {0, 48, 0}, + {0, 49, 0}, +}; + +struct UnknownStruct4 +{ + const u8 *const *unk0; + u16 mapSecId; + u16 flag; +}; + +static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter}; + +static const struct UnknownStruct4 sUnknown_083E79C0[1] = +{ + {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, SYS_POKEMON_LEAGUE_FLY}, +}; + +// XXX: what is this? +static u8 *const ewram_ = ewram; + +static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; + +// Fly targets that are not cities or towns +static const u16 sSpecialFlyAreas[][2] = +{ + // flag, mapSecId + {0x848, MAPSEC_BATTLE_TOWER}, + {0xFFFF, MAPSEC_NONE}, +}; + +static const struct OamData sFlyTargetOamData = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sFlyTargetAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq2[] = +{ + ANIMCMD_FRAME(3, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq3[] = +{ + ANIMCMD_FRAME(5, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq4[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq5[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sFlyTargetAnimSeq6[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sFlyTargetAnimTable[] = +{ + sFlyTargetAnimSeq0, + sFlyTargetAnimSeq1, + sFlyTargetAnimSeq2, + sFlyTargetAnimSeq3, + sFlyTargetAnimSeq4, + sFlyTargetAnimSeq5, + sFlyTargetAnimSeq6, +}; + +static const struct SpriteTemplate gFlyTargetSpriteTemplate = +{ + .tileTag = 2, + .paletteTag = 2, + .oam = &sFlyTargetOamData, + .anims = sFlyTargetAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +void CB2_InitFlyRegionMap(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7224); + break; + case 2: + InitMenuWindow(&gWindowConfig_81E7224); + MenuZeroFillScreen(); + break; + case 3: + InitRegionMap(&ewram0.regionMap, 0); + CreateRegionMapCursor(0, 0); + CreateRegionMapPlayerIcon(1, 1); + ewram0.unk6 = ewram0.regionMap.mapSecId; + StringFill(ewramBlankMapName, CHAR_SPACE, 12); + PrintFlyTargetName(); + break; + case 4: + LZ77UnCompVram(sFlyRegionMapFrame_ImageLZ, (void *)(VRAM + 0xC000)); + break; + case 5: + LZ77UnCompVram(sFlyRegionMapFrame_TilemapLZ, (void *)(VRAM + 0xF000)); + break; + case 6: + LoadPalette(sFlyRegionMapFrame_Pal, 16, 32); + MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); + break; + case 7: + CreateFlyTargetGraphics(); + break; + case 8: + BlendPalettes(0xFFFFFFFF, 16, 0); + SetVBlankCallback(VBlankCB_FlyRegionMap); + break; + case 9: + REG_BLDCNT = 0; + REG_BG1CNT = 0x1E0D; + REG_DISPCNT = 0x1741; + sub_80FC244(sub_80FC5B4); + SetMainCallback2(CB2_FlyRegionMap); + break; + default: + return; + } + gMain.state++; +} + +static void VBlankCB_FlyRegionMap(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_FlyRegionMap(void) +{ + ewram0.unk0(); + AnimateSprites(); + BuildOamBuffer(); +} + +static void sub_80FC244(void (*func)(void)) +{ + ewram0.unk0 = func; + ewram0.unk4 = 0; +} + +static void PrintFlyTargetName(void) +{ + if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + { + u16 i = 0; + int zero; + + for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) + { + const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i]; + + if (ewram0.regionMap.mapSecId == r4->mapSecId) + { + if (FlagGet(r4->flag)) + { + MenuDrawTextWindow(16, 14, 29, 19); + MenuPrint(ewram0.regionMap.mapSecName, 17, 15); + MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17); + return; + } + break; + } + } + // This check is always true, but somehow the compiler still performed it. + asm("mov %0, #0\n":"=r"(zero)); // zero = 0 + if (zero == 0) + { + MenuDrawTextWindow(16, 16, 29, 19); + MenuPrint(ewram0.regionMap.mapSecName, 17, 17); + MenuZeroFillWindowRect(16, 14, 29, 15); + } + } + else + { + MenuDrawTextWindow(16, 16, 29, 19); + MenuPrint(ewramBlankMapName, 17, 17); + MenuZeroFillWindowRect(16, 14, 29, 15); + } +} + +static void CreateFlyTargetGraphics(void) +{ + struct SpriteSheet spriteSheet; + + LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888); + spriteSheet.data = ewram888; + spriteSheet.size = 0x1C0; + spriteSheet.tag = 2; + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&sFlyTargetIconSpritePalette); + CreateCityTownFlyTargetIcons(); + CreateSpecialAreaFlyTargetIcons(); +} + +// Draws a light overlay on cities and towns that the player can fly to +static void CreateCityTownFlyTargetIcons(void) +{ + u16 canFlyFlag = 0x80F; + u16 i; + + for (i = 0; i < 16; i++) + { + u16 x; + u16 y; + u16 width; + u16 height; + u16 r7; + u8 spriteId; + + GetRegionMapLocationPosition(i, &x, &y, &width, &height); + x = (x + 1) * 8 + 4; + y = (y + 2) * 8 + 4; + if (width == 2) + r7 = 1; + else if (height == 2) + r7 = 2; + else + r7 = 0; + spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10); + if (spriteId != 64) + { + gSprites[spriteId].oam.shape = r7; + if (FlagGet(canFlyFlag)) + gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; + else + r7 += 3; + StartSpriteAnim(&gSprites[spriteId], r7); + gSprites[spriteId].data0 = i; + } + canFlyFlag++; + } +} + +// Draws a red box on other fly targets +// The Battle Tower is the only one of these +static void CreateSpecialAreaFlyTargetIcons(void) +{ + u16 i; + + for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++) + { + u16 x; + u16 y; + u16 width; + u16 height; + + if (FlagGet(sSpecialFlyAreas[i][0])) + { + u16 mapSecId = sSpecialFlyAreas[i][1]; + u8 spriteId; + + GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height); + x = (x + 1) * 8; + y = (y + 2) * 8; + spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10); + if (spriteId != 64) + { + gSprites[spriteId].oam.size = 1; + gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data0 = mapSecId; + } + } + } +} + +static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) +{ + // Blink if our mapSecId is the one selected on the map + if (ewram0.regionMap.mapSecId == sprite->data0) + { + // Toggle visibility every 16 frames + sprite->data1++; + if (sprite->data1 > 16) + { + sprite->data1 = 0; + sprite->invisible = !sprite->invisible; + } + } + else + { + sprite->data1 = 16; + sprite->invisible = FALSE; + } +} + +static void sub_80FC5B4(void) +{ + switch (ewram0.unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + ewram0.unk4++; + break; + case 1: + if (UpdatePaletteFade() != 0) + break; + sub_80FC244(sub_80FC600); + break; + } +} + +static void sub_80FC600(void) +{ + if (ewram0.unk4 == 0) + { + switch (sub_80FAB60()) + { + case INPUT_EVENT_NONE: + case INPUT_EVENT_DPAD: + case INPUT_EVENT_2: + break; + case INPUT_EVENT_3: + PrintFlyTargetName(); + break; + case INPUT_EVENT_A_BUTTON: + if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + { + m4aSongNumStart(SE_SELECT); + ewramA6E = 1; + sub_80FC244(sub_80FC69C); + } + break; + case INPUT_EVENT_B_BUTTON: + m4aSongNumStart(SE_SELECT); + ewramA6E = 0; + sub_80FC244(sub_80FC69C); + break; + } + } +} + +static void sub_80FC69C(void) +{ + switch (ewram0.unk4) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + ewram0.unk4++; + break; + case 1: + if (UpdatePaletteFade() != 0) + break; + FreeRegionMapIconResources(); + if (ewramA6E != 0) + { + switch (ewram0.regionMap.mapSecId) + { + case MAPSEC_SOUTHERN_ISLAND: + sub_8053538(22); + break; + case MAPSEC_BATTLE_TOWER: + sub_8053538(21); + break; + case MAPSEC_LITTLEROOT_TOWN: + sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); + break; + case MAPSEC_EVER_GRANDE_CITY: + sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11); + break; + default: + if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0) + sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]); + else + warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1); + break; + } + sub_80865BC(); + } + else + { + SetMainCallback2(sub_808AD58); + } + break; + } +} diff --git a/src/rom4.c b/src/rom4.c index bfc8e0e44..b2e30e292 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -993,12 +993,12 @@ bool8 is_light_level_8_or_9(u8 a1) u8 unref_sub_8054260(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->name; + return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId; } u8 sav1_map_get_name(void) { - return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->name; + return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId; } u8 sav1_map_get_battletype(void) diff --git a/src/save.c b/src/save.c index 570210fb0..46094746a 100644 --- a/src/save.c +++ b/src/save.c @@ -672,9 +672,9 @@ u8 sub_8125E2C(void) return 0; } -u8 sub_8125E6C(void) +bool8 sub_8125E6C(void) { - u8 retVal = 0; + u8 retVal = FALSE; u16 val = ++gUnknown_03005EB4; if (val <= 4) { @@ -684,7 +684,7 @@ u8 sub_8125E6C(void) else { sub_81257F0(val, gSaveSectionLocations); - retVal = 1; + retVal = TRUE; } if (gDamagedSaveSectors) DoSaveFailedScreen(1); diff --git a/src/save_menu_util.c b/src/save_menu_util.c index b2dd662d6..a2d17bd36 100644 --- a/src/save_menu_util.c +++ b/src/save_menu_util.c @@ -70,7 +70,7 @@ void PrintSaveMapName(s16 x, s16 y) { char name[32]; - CopyMapName(name, gMapHeader.name); + CopyMapName(name, gMapHeader.regionMapSectionId); MenuPrint(name, x, y); } diff --git a/src/secret_base.c b/src/secret_base.c index d88d2c66a..4e8331f5c 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -205,7 +205,7 @@ void sub_80BB8CC(void) memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; - VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); } void sub_80BB970(struct MapEvents *events) diff --git a/src/trainer_card.c b/src/trainer_card.c index 876a3b426..f7afd9cec 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -3,6 +3,7 @@ #include "easy_chat.h" #include "event_data.h" #include "field_effect.h" +#include "graphics.h" #include "link.h" #include "main.h" #include "menu.h" @@ -54,22 +55,55 @@ extern struct TrainerCard gTrainerCards[4]; struct UnknownStruct1 { - u8 filler0[0x780]; + u16 filler0[0x3C0]; u16 unk780[160]; }; extern struct UnknownStruct1 gUnknown_03004DE0; -extern u8 gUnknown_083B5EF4[]; -extern u16 *gUnknown_083B5EF8[5]; -extern u16 gUnknown_083B5F0C[]; -extern u16 gBadgesPalette[]; -extern u16 gUnknown_083B5F4C[]; +extern const u8 gBadgesTiles[]; +extern const u16 gUnknown_083B5F0C[]; +extern const u16 gBadgesPalette[]; +extern const u16 gUnknown_083B5F4C[]; +extern const u16 gUnknown_083B5F6C[]; +extern const u16 gUnknown_083B5F8C[][4]; + +const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); +// XXX: what is this? +u8 *const ewram_ = ewram; + +bool8 sub_8093864(struct Task *); +bool8 sub_80938A8(struct Task *); +bool8 sub_80938CC(struct Task *); +bool8 sub_8093918(struct Task *); +bool8 sub_8093938(struct Task *); +bool8 sub_8093954(struct Task *); +bool8 sub_8093980(struct Task *); + +bool8 (*const gUnknown_083B5EBC[])(struct Task *) = +{ + sub_8093864, + sub_80938A8, + sub_80938CC, + sub_8093918, + sub_8093938, + sub_8093954, + sub_8093980, +}; -extern u16 gUnknown_08E8CFC0[]; -extern u16 gUnknown_08E8D9C0[]; +bool8 sub_8093AA0(struct Task *); +bool8 sub_8093AF0(struct Task *); +bool8 sub_8093C0C(struct Task *); +bool8 sub_8093C38(struct Task *); +bool8 sub_8093D50(struct Task *); -extern bool8 (*const gUnknown_083B5EBC[])(struct Task *); -extern bool8 (*const gUnknown_083B5ED8[])(struct Task *); +bool8 (*const gUnknown_083B5ED8[])(struct Task *) = +{ + sub_8093AA0, + sub_8093AF0, + sub_8093C0C, + sub_8093C38, + sub_8093D50, +}; // FIXME: Other signature than on save_menu_util.h void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon); @@ -171,38 +205,35 @@ static void sub_8093174(void) case 0: sub_8093534(); sub_8093688(); - gMain.state += 1; + gMain.state++; break; case 1: sub_8093598(); - gMain.state += 1; + gMain.state++; break; case 2: sub_80935EC(); - gMain.state += 1; + gMain.state++; break; case 3: sub_8093610(); sub_80937A4(); - gMain.state += 1; + gMain.state++; break; case 4: sub_80937BC(); - gMain.state += 1; + gMain.state++; case 5: - if (MultistepInitMenuWindowContinue() == FALSE) - { - return; - } - gMain.state += 1; + if (MultistepInitMenuWindowContinue()) + gMain.state++; break; case 6: sub_80937F0(); - gMain.state += 1; + gMain.state++; break; case 7: sub_80937D8(); - gMain.state += 1; + gMain.state++; break; case 8: nullsub_15(); @@ -376,22 +407,22 @@ static u8 sub_80934F4(struct TrainerCard *trainerCard) if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0) { - value += 1; + value++; } if (trainerCard->var_3) { - value += 1; + value++; } if (trainerCard->battleTowerLosses > 49) { - value += 1; + value++; } if (trainerCard->var_4) { - value += 1; + value++; } return value; @@ -470,21 +501,14 @@ static void sub_8093688(void) u8 i; sub_8093324(); - - ewram0.var_0 = FALSE; - ewram0.var_3 = FALSE; + ewram0.var_0 = 0; + ewram0.var_3 = 0; ewram0.var_4 = FALSE; - ewram0.var_2 = ewram0.var_64.stars; - - ewram0.var_5 = FALSE; - ewram0.var_6 = FALSE; - + ewram0.var_5 = 0; + ewram0.var_6 = 0; for (i = 0; i < 4; i++) - { sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]); - } - sub_80936D4(); } @@ -497,61 +521,43 @@ void sub_80936D4(void) ewram0.var_b = 0; ewram0.var_c = 0; ewram0.var_d = 0; - memset(ewram0.var_e, 0, sizeof(ewram0.var_e)); if (ewram0.var_64.hasPokedex) - { - ewram0.var_7 += 1; - } + ewram0.var_7++; - if (ewram0.var_64.firstHallOfFameA != 0 || ewram0.var_64.firstHallOfFameB != 0 || - ewram0.var_64.firstHallOfFameC != 0) - { - ewram0.var_8 += 1; - } + if (ewram0.var_64.firstHallOfFameA != 0 + || ewram0.var_64.firstHallOfFameB != 0 + || ewram0.var_64.firstHallOfFameC != 0) + ewram0.var_8++; if (ewram0.var_64.linkBattleWins != 0 || ewram0.var_64.linkBattleLosses != 0) - { - ewram0.var_9 += 1; - } + ewram0.var_9++; if (ewram0.var_64.battleTowerWins != 0 || ewram0.var_64.battleTowerLosses != 0) - { - ewram0.var_a += 1; - } + ewram0.var_a++; if (ewram0.var_64.contestsWithFriends != 0) - { - ewram0.var_b += 1; - } + ewram0.var_b++; if (ewram0.var_64.pokeblocksWithFriends != 0) - { - ewram0.var_c += 1; - } + ewram0.var_c++; if (ewram0.var_64.pokemonTrades != 0) - { - ewram0.var_d += 1; - } + ewram0.var_d++; if (!ewram0.var_1) { u32 badgeFlag; - int i; + int i = 0; - i = 0; badgeFlag = BADGE01_GET; while (1) { if (FlagGet(badgeFlag)) - { - ewram0.var_e[i] += 1; - } - - badgeFlag += 1; - i += 1; + ewram0.var_e[i]++; + badgeFlag++; + i++; if (badgeFlag > BADGE08_GET) { break; @@ -616,14 +622,14 @@ bool8 sub_8093864(struct Task *task) ewram0.var_6 = gSaveBlock2.playTimeVBlanks; sub_80939A4(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } bool8 sub_80938A8(struct Task *task) { if (!gPaletteFade.active) - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } @@ -639,16 +645,14 @@ bool8 sub_80938CC(struct Task *task) if (ewram0.var_3 != 0) { ewram0.var_0 = 5; - return TRUE; } else { ewram0.var_3 ^= 1; ewram0.var_0 = 3; - return TRUE; } + return TRUE; } - return FALSE; } @@ -656,19 +660,14 @@ bool8 sub_8093918(struct Task *task) { sub_8093A28(); PlaySE(SE_CARD); - - ewram0.var_0 += 1; - + ewram0.var_0++; return FALSE; } bool8 sub_8093938(struct Task *task) { if (sub_8093A48()) - { ewram0.var_0 = 2; - } - return FALSE; } @@ -676,17 +675,14 @@ bool8 sub_8093954(struct Task *task) { sub_80939C0(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0.var_0 += 1; + ewram0.var_0++; return FALSE; } bool8 sub_8093980(struct Task *task) { if (!gPaletteFade.active) - { SetMainCallback2((MainCallback)ewram0.var_60); - } - return FALSE; } @@ -698,28 +694,22 @@ static void sub_80939A4(void) static void sub_80939C0(void) { - u8 taskId; - - taskId = FindTaskIdByFunc(sub_80939DC); + u8 taskId = FindTaskIdByFunc(sub_80939DC); if (taskId != 0xFF) - { DestroyTask(taskId); - } } static void sub_80939DC(u8 taskId) { u8 buffer[32]; - struct Task *task; - task = &gTasks[taskId]; + struct Task *task = &gTasks[taskId]; if (ewram0.var_5 != task->data[TD_1]) { task->data[TD_1] = ewram0.var_5; task->data[TD_0] ^= TRUE; } - TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); MenuPrint(buffer, 10, 12); } @@ -750,18 +740,66 @@ bool8 sub_8093AA0(struct Task *task) { s32 i; - ewram0.var_4 = 0; + ewram0.var_4 = FALSE; dp12_8087EA4(); for (i = 0; i < ARRAY_COUNT(gUnknown_03004DE0.unk780); i++) gUnknown_03004DE0.unk780[i] = -4; SetHBlankCallback(sub_8093D7C); - ewram0.var_4 = 1; + ewram0.var_4 = TRUE; task->data[0]++; return FALSE; } +/* +bool8 sub_8093AF0(struct Task *task) +{ + u32 r7; + u16 r9; + u32 r6; + u32 r5; + u32 r4; + u32 r10; + u32 sp0; + s16 i; + + ewram0.var_4 = 0; + task->data[1] += 3; + if (task->data[1] > 79) + task->data[1] = 79; + + r7 = task->data[1]; + r9 = 160 - r7; + r4 = r9 - r7; + r6 = -r7 << 16; + r5 = (160 << 16) / r4; + r5 -= 1 << 16; + r10 = r5 * r4 + r6; + sp0 = r5 / r4; + r5 *= 2; + + for (i = 0; i < r7; i++) + { + gUnknown_03004DE0.filler0[i] = -4 - (u32)i; + } + //_08093B74 + for (; i < r9; i++) + { + u16 var = r6 >> 16; + r6 += r5; + r5 -= sp0; + gUnknown_03004DE0.filler0[i] = -4 + var; + } + for (; i < 160; i++) + gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16); + ewram0.var_4 = 1; + if (task->data[1] > 0x4A) + task->data[0]++; + return FALSE; +} +*/ + __attribute__((naked)) -bool8 sub_8093AF0() +bool8 sub_8093AF0(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -912,23 +950,18 @@ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093C0C(struct TrainerCard *trainerCard) +bool8 sub_8093C0C(struct Task *task) { sub_80939C0(); sub_8093DAC(); - if (!ewram0.var_3) - { sub_80939A4(); - } - - trainerCard->firstHallOfFameB += 1; - + task->data[0]++; return TRUE; } __attribute__((naked)) -bool8 sub_8093C38() +bool8 sub_8093C38(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1077,59 +1110,33 @@ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093D50(void) +bool8 sub_8093D50(struct Task *task) { u8 taskId; ewram0.var_4 = FALSE; SetHBlankCallback(NULL); sub_8093E04(); - taskId = FindTaskIdByFunc(sub_8093A68); DestroyTask(taskId); - return FALSE; } -__attribute__((naked)) void sub_8093D7C(void) { - asm(".syntax unified\n\ - ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\ - ldr r0, _08093DA4 @ =REG_VCOUNT\n\ - ldrh r2, [r0]\n\ - movs r0, 0xFF\n\ - ands r0, r2\n\ - lsls r0, 1\n\ - movs r2, 0xF0\n\ - lsls r2, 3\n\ - adds r1, r2\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldr r0, _08093DA8 @ =REG_BG0VOFS\n\ - strh r1, [r0]\n\ - adds r0, 0x4\n\ - strh r1, [r0]\n\ - adds r0, 0x4\n\ - strh r1, [r0]\n\ - bx lr\n\ - .align 2, 0\n\ -_08093DA0: .4byte gUnknown_03004DE0\n\ -_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\ -_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\ - .syntax divided\n"); + u16 bgVOffset = gUnknown_03004DE0.unk780[REG_VCOUNT & 0xFF]; + + REG_BG0VOFS = bgVOffset; + REG_BG1VOFS = bgVOffset; + REG_BG2VOFS = bgVOffset; } static void sub_8093DAC(void) { if (ewram0.var_3) - { sub_8093DEC(); - } else - { sub_8093DC8(); - } } static void sub_8093DC8(void) @@ -1151,99 +1158,55 @@ static void sub_8093DEC(void) sub_8094188(); } -__attribute__((naked)) -static void sub_8093E04() +static void sub_8093E04(void) { - asm(".syntax unified\n\ - ldr r0, _08093E20 @ =REG_BG0VOFS\n\ - ldr r2, _08093E24 @ =0x0000fffc\n\ - adds r1, r2, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - movs r2, 0\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r2, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - bx lr\n\ - .align 2, 0\n\ -_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\ -_08093E24: .4byte 0x0000fffc\n\ - .syntax divided\n"); + REG_BG0VOFS = -4; + REG_BG1HOFS = 0; + REG_BG1VOFS = -4; + REG_BG2HOFS = 0; + REG_BG2VOFS = -4; } -__attribute__((naked)) static void sub_8093E28(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - bl sub_8093EA0\n\ - ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\ - movs r1, 0xE0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\ - movs r4, 0xC0\n\ - lsls r4, 19\n\ - movs r5, 0xA4\n\ - lsls r5, 5\n\ - ldr r1, _08093E8C @ =0x040000d4\n\ - ldr r6, _08093E90 @ =0x80000800\n\ - movs r2, 0x80\n\ - lsls r2, 5\n\ - movs r7, 0x80\n\ - lsls r7, 24\n\ -_08093E4E:\n\ - str r3, [r1]\n\ - str r4, [r1, 0x4]\n\ - str r6, [r1, 0x8]\n\ - ldr r0, [r1, 0x8]\n\ - adds r3, r2\n\ - adds r4, r2\n\ - subs r5, r2\n\ - cmp r5, r2\n\ - bhi _08093E4E\n\ - str r3, [r1]\n\ - str r4, [r1, 0x4]\n\ - lsrs r0, r5, 1\n\ - orrs r0, r7\n\ - str r0, [r1, 0x8]\n\ - ldr r0, [r1, 0x8]\n\ - ldr r1, _08093E94 @ =gBadgesTiles\n\ - ldr r2, _08093E98 @ =0x06001480\n\ - ldr r0, _08093E8C @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _08093E9C @ =0x80000200\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093E84: .4byte gUnknown_083B5F6C\n\ -_08093E88: .4byte gMenuTrainerCard_Gfx\n\ -_08093E8C: .4byte 0x040000d4\n\ -_08093E90: .4byte 0x80000800\n\ -_08093E94: .4byte gBadgesTiles\n\ -_08093E98: .4byte 0x06001480\n\ -_08093E9C: .4byte 0x80000200\n\ - .syntax divided\n"); + const u8 *src; + u8 *dst; + u32 size; + + sub_8093EA0(); + LoadPalette(gUnknown_083B5F6C, 0xE0, 32); + src = gMenuTrainerCard_Gfx; + dst = (void *)VRAM; + size = 0x1480; + while (1) + { + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + } + { + const void *src = gBadgesTiles; + void *dst = (void *)(VRAM + 0x1480); + + DmaCopy16(3, src, dst, 0x400); + } } +extern const u16 *const gUnknown_083B5EF8[]; + void sub_8093EA0(void) { LoadPalette(gUnknown_083B5EF8[ewram0.var_2], 0, 48 * 2); LoadPalette(gBadgesPalette, 48, 16 * 2); LoadPalette(gUnknown_083B5F4C, 64, 16 * 2); - if (ewram0.var_64.gender != MALE) - { LoadPalette(gUnknown_083B5F0C, 16, 16 * 2); - } } static void sub_8093EF8(void) @@ -1251,36 +1214,32 @@ static void sub_8093EF8(void) LoadTrainerGfx_TrainerCard(ewram0.var_64.gender, 80, (void *)(VRAM + 0x1880)); } -__attribute__((naked)) static void sub_8093F14(void) { - asm(".syntax unified\n\ - push {lr}\n\ - sub sp, 0x8\n\ - ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\ - ldr r1, [r0, 0x4]\n\ - ldr r0, [r0]\n\ - str r0, [sp]\n\ - str r1, [sp, 0x4]\n\ - ldr r0, _08093F40 @ =0x02000000\n\ - ldrb r0, [r0, 0x1]\n\ - lsls r0, 2\n\ - add r0, sp\n\ - ldr r0, [r0]\n\ - ldr r1, _08093F44 @ =0x06004800\n\ - movs r2, 0xA0\n\ - lsls r2, 1\n\ - bl CpuFastSet\n\ - add sp, 0x8\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093F3C: .4byte gUnknown_083B5EEC\n\ -_08093F40: .4byte 0x02000000\n\ -_08093F44: .4byte 0x06004800\n\ - .syntax divided\n"); + const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0}; + + CpuFastSet(arr[ewram0.var_1], (void *)(VRAM + 0x4800), 0x140); } +// I don't really know where to put the data. It's in such a weird order. + +const u8 gUnknown_083B5EF4[] = _(" : "); + +const u16 *const gUnknown_083B5EF8[] = +{ + gMenuTrainerCard0Star_Pal, + gMenuTrainerCard1Star_Pal, + gMenuTrainerCard2Star_Pal, + gMenuTrainerCard3Star_Pal, + gMenuTrainerCard4Star_Pal, +}; + +const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal"); +const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); +const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal"); +const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal"); +const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); + static void sub_8093F48(void) { CpuFastSet(gUnknown_08E8CFC0, (void *)(VRAM + 0x4800), 320); @@ -1291,266 +1250,79 @@ static void sub_8093F64(void) CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320); } -__attribute__((naked)) static void sub_8093F80(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - movs r5, 0xC4\n\ - ldr r7, _08093FCC @ =0x06004000\n\ - movs r1, 0x5\n\ - movs r0, 0xA0\n\ - lsls r0, 7\n\ - adds r6, r0, 0\n\ -_08093F8E:\n\ - movs r0, 0x13\n\ - lsls r3, r1, 16\n\ - asrs r4, r3, 11\n\ -_08093F94:\n\ - lsls r2, r0, 16\n\ - asrs r2, 16\n\ - adds r1, r4, r2\n\ - lsls r1, 1\n\ - adds r1, r7\n\ - adds r0, r5, 0\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ - adds r2, 0x1\n\ - lsls r2, 16\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsrs r0, r2, 16\n\ - asrs r2, 16\n\ - cmp r2, 0x1A\n\ - ble _08093F94\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r3, r1\n\ - lsrs r1, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xC\n\ - ble _08093F8E\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08093FCC: .4byte 0x06004000\n\ - .syntax divided\n"); + u16 r5 = 0xC4; + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i; + s16 j; + + for (i = 5; i < 13; i++) + { + for (j = 19; j < 27; j++, r5++) + ptr[i * 32 + j] = r5 | 0x5000; + } } -__attribute__((naked)) static void sub_8093FD0(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r4, _0809402C @ =0x06004000\n\ - movs r2, 0xF\n\ - ldr r0, _08094030 @ =0x02000000\n\ - ldrb r0, [r0, 0x2]\n\ - adds r0, 0xF\n\ - cmp r2, r0\n\ - bge _08094002\n\ - movs r6, 0xC0\n\ - lsls r6, 1\n\ - ldr r1, _08094034 @ =0x0000408f\n\ - adds r5, r1, 0\n\ - adds r3, r0, 0\n\ -_08093FEA:\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - lsls r0, r1, 1\n\ - adds r0, r4\n\ - adds r0, r6\n\ - strh r5, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 16\n\ - lsrs r2, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, r3\n\ - blt _08093FEA\n\ -_08094002:\n\ - lsls r1, r2, 16\n\ - asrs r0, r1, 16\n\ - cmp r0, 0x12\n\ - bgt _08094024\n\ - movs r3, 0xC0\n\ - lsls r3, 1\n\ - movs r2, 0\n\ -_08094010:\n\ - asrs r0, r1, 16\n\ - lsls r1, r0, 1\n\ - adds r1, r4\n\ - adds r1, r3\n\ - strh r2, [r1]\n\ - adds r0, 0x1\n\ - lsls r1, r0, 16\n\ - asrs r0, r1, 16\n\ - cmp r0, 0x12\n\ - ble _08094010\n\ -_08094024:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0809402C: .4byte 0x06004000\n\ -_08094030: .4byte 0x02000000\n\ -_08094034: .4byte 0x0000408f\n\ - .syntax divided\n"); + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i = 15; + s16 var = 15 + ewram0.var_2; + + while (i < var) + { + ptr[6 * 32 + i] = 0x408F; + i++; + } + while (i < 0x13) + { + ptr[6 * 32 + i] = 0; + i++; + } } -__attribute__((naked)) static void sub_8094038(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - ldr r1, _080940D0 @ =0x02000000\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _080940C2\n\ - ldr r0, _080940D4 @ =0x06004000\n\ - mov r9, r0\n\ - movs r0, 0\n\ - movs r2, 0x4\n\ - adds r1, 0xE\n\ - mov r8, r1\n\ - ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\ - movs r1, 0xC0\n\ - lsls r1, 6\n\ - adds r6, r1, 0\n\ - adds r1, r7, 0x6\n\ - mov r12, r1\n\ -_08094060:\n\ - lsls r0, 16\n\ - asrs r4, r0, 16\n\ - mov r1, r8\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - lsls r5, r2, 16\n\ - cmp r0, 0\n\ - beq _080940AE\n\ - asrs r1, r5, 15\n\ - add r1, r9\n\ - movs r2, 0xF0\n\ - lsls r2, 2\n\ - adds r3, r1, r2\n\ - lsls r2, r4, 3\n\ - adds r0, r2, r7\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - ldr r0, _080940DC @ =0x000003c2\n\ - adds r3, r1, r0\n\ - adds r0, r7, 0x2\n\ - adds r0, r2, r0\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - movs r0, 0x80\n\ - lsls r0, 3\n\ - adds r3, r1, r0\n\ - adds r0, r7, 0x4\n\ - adds r0, r2, r0\n\ - ldrh r0, [r0]\n\ - orrs r0, r6\n\ - strh r0, [r3]\n\ - ldr r0, _080940E0 @ =0x00000402\n\ - adds r1, r0\n\ - add r2, r12\n\ - ldrh r0, [r2]\n\ - orrs r0, r6\n\ - strh r0, [r1]\n\ -_080940AE:\n\ - adds r1, r4, 0x1\n\ - lsls r1, 16\n\ - movs r2, 0xC0\n\ - lsls r2, 10\n\ - adds r0, r5, r2\n\ - lsrs r2, r0, 16\n\ - lsrs r0, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x7\n\ - ble _08094060\n\ -_080940C2:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080940D0: .4byte 0x02000000\n\ -_080940D4: .4byte 0x06004000\n\ -_080940D8: .4byte gUnknown_083B5F8C\n\ -_080940DC: .4byte 0x000003c2\n\ -_080940E0: .4byte 0x00000402\n\ - .syntax divided\n"); + if (ewram0.var_1 == 0) + { + u16 *ptr = (u16 *)(VRAM + 0x4000); + s16 i; + s16 r2; + + for (i = 0, r2 = 4; i < 8; i++, r2 += 3) + { + if (ewram0.var_e[i] != 0) + { + ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000; + ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000; + ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000; + ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000; + } + } + } } -__attribute__((naked)) -static void sub_80940E4() +static void sub_80940E4(void) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - movs r2, 0\n\ - ldr r1, _08094108 @ =0x06004000\n\ - movs r4, 0\n\ - ldr r3, _0809410C @ =0x000003ff\n\ -_080940EE:\n\ - strh r4, [r1]\n\ - lsls r0, r2, 16\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r0, r2\n\ - adds r1, 0x2\n\ - lsrs r2, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, r3\n\ - ble _080940EE\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08094108: .4byte 0x06004000\n\ -_0809410C: .4byte 0x000003ff\n\ - .syntax divided\n"); + s16 i; + u16 *ptr; + + for (i = 0, ptr = (u16 *)(VRAM + 0x4000); i < 0x400; i++, ptr++) + *ptr = 0; } -__attribute__((naked)) -static void sub_8094110() +static void sub_8094110(void) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r6, _0809413C @ =0x06004800\n\ - movs r2, 0x3\n\ - movs r5, 0xA0\n\ - lsls r5, 2\n\ - movs r3, 0x1\n\ - movs r4, 0xB0\n\ - lsls r4, 2\n\ -_08094120:\n\ - lsls r0, r2, 1\n\ - adds r0, r6\n\ - adds r1, r0, r5\n\ - strh r3, [r1]\n\ - adds r0, r4\n\ - strh r3, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x10\n\ - bls _08094120\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0809413C: .4byte 0x06004800\n\ - .syntax divided\n"); -} + u16 *ptr = (u16 *)(VRAM + 0x4800); + u16 i; + for (i = 3; i < 17; i++) + { + ptr[10 * 32 + i] = 1; + ptr[11 * 32 + i] = 1; + } +} static void sub_8094140(void) { @@ -1609,11 +1381,12 @@ static void TrainerCard_Front_PrintPokedexCount(void) if (ewram0.var_7 == FALSE) { sub_8094110(); - return; } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); - MenuPrint_RightAligned(buffer, 16, 10); + else + { + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); + MenuPrint_RightAligned(buffer, 16, 10); + } } static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) @@ -1624,13 +1397,11 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) playTimeHours = gSaveBlock2.playTimeHours; playTimeMinutes = gSaveBlock2.playTimeMinutes; - if (ewram0.var_1 != 0) { playTimeHours = ewram0.var_64.playTimeHours; playTimeMinutes = ewram0.var_64.playTimeMinutes; } - FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon); sub_8072C74(arg1, buffer, 48, 1); } @@ -1639,24 +1410,22 @@ static void sub_809429C(void) { u8 *str; - if (ewram0.var_1 == FALSE) + if (ewram0.var_1 != 0) { - return; + str = gStringVar1; + str = StringCopy(str, ewram0.var_20[0]); + str[0] = 00; + str++; + str = StringCopy(str, ewram0.var_20[1]); + MenuPrint(gStringVar1, 2, 14); + + str = gStringVar1; + str = StringCopy(str, ewram0.var_20[2]); + str[0] = 00; + str++; + str = StringCopy(str, ewram0.var_20[3]); + MenuPrint(gStringVar1, 2, 16); } - - str = gStringVar1; - str = StringCopy(str, ewram0.var_20[0]); - str[0] = 00; - str++; - str = StringCopy(str, ewram0.var_20[1]); - MenuPrint(gStringVar1, 2, 14); - - str = gStringVar1; - str = StringCopy(str, ewram0.var_20[2]); - str[0] = 00; - str++; - str = StringCopy(str, ewram0.var_20[3]); - MenuPrint(gStringVar1, 2, 16); } static void TrainerCard_Back_PrintName(void) @@ -1678,152 +1447,115 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { - if (ewram0.var_8 == FALSE) - { - return; - } - - MenuPrint(gOtherText_FirstHOF, 3, 5); + if (ewram0.var_8 != 0) + MenuPrint(gOtherText_FirstHOF, 3, 5); } static void TrainerCard_Back_PrintHallOfFameTime(void) { u8 *str; - if (ewram0.var_8 == FALSE) + if (ewram0.var_8 != 0) { - return; + str = gStringVar1; + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = StringCopy(str, gUnknown_083B5EF4); + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); + str = StringCopy(str, gUnknown_083B5EF4); + str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); + MenuPrint_RightAligned(gStringVar1, 28, 5); } - - str = gStringVar1; - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); - str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); - str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); - - MenuPrint_RightAligned(gStringVar1, 28, 5); } static void TrainerCard_Back_PrintLinkBattlesLabel(void) { - if (ewram0.var_9 == FALSE) - { - return; - } - - MenuPrint(gOtherText_LinkCableBattles, 3, 7); + if (ewram0.var_9 != 0) + MenuPrint(gOtherText_LinkCableBattles, 3, 7); } static void TrainerCard_Back_PrintLinkBattles(void) { u8 buffer[16]; - if (ewram0.var_9 == FALSE) + if (ewram0.var_9 != 0) { - return; - } + ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins); + MenuPrint_RightAligned(buffer, 22, 7); - ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins); - MenuPrint_RightAligned(buffer, 22, 7); - - ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses); - MenuPrint_RightAligned(buffer, 28, 7); + ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses); + MenuPrint_RightAligned(buffer, 28, 7); + } } static void TrainerCard_Back_PrintBattleTower_Label(void) { - if (ewram0.var_a == FALSE) - { - return; - } - - MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); + if (ewram0.var_a != 0) + MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); } static void TrainerCard_Back_PrintBattleTower(void) { u8 buffer[16]; - if (ewram0.var_a == FALSE) + if (ewram0.var_a != 0) { - return; - } + sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1); + MenuPrint_PixelCoords(buffer, 112, 120, 0); - sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1); - MenuPrint_PixelCoords(buffer, 112, 120, 0); - - sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1); - MenuPrint_PixelCoords(buffer, 149, 120, 0); + sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1); + MenuPrint_PixelCoords(buffer, 149, 120, 0); + } } static void TrainerCard_Back_PrintLinkContests_Label(void) { - if (ewram0.var_b == FALSE) - { - return; - } - - MenuPrint(gOtherText_ContestRecord, 3, 13); + if (ewram0.var_b != 0) + MenuPrint(gOtherText_ContestRecord, 3, 13); } static void TrainerCard_Back_PrintLinkContests(void) { u8 buffer[8]; - if (ewram0.var_b == FALSE) + if (ewram0.var_b != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); + MenuPrint_RightAligned(buffer, 28, 13); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); - MenuPrint_RightAligned(buffer, 28, 13); } static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { - if (ewram0.var_c == FALSE) - { - return; - } - - MenuPrint(gOtherText_MixingRecord, 3, 11); + if (ewram0.var_c != 0) + MenuPrint(gOtherText_MixingRecord, 3, 11); } static void TrainerCard_Back_PrintLinkPokeblocks(void) { u8 buffer[8]; - if (ewram0.var_c == FALSE) + if (ewram0.var_c != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); + MenuPrint_RightAligned(buffer, 28, 11); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); - MenuPrint_RightAligned(buffer, 28, 11); } static void TrainerCard_Back_PrintPokemonTrades_Label(void) { - if (ewram0.var_d == FALSE) - { - return; - } - - MenuPrint(gOtherText_TradeRecord, 3, 9); + if (ewram0.var_d != 0) + MenuPrint(gOtherText_TradeRecord, 3, 9); } static void TrainerCard_Back_PrintPokemonTrades(void) { u8 buffer[8]; - if (ewram0.var_d == FALSE) + if (ewram0.var_d != 0) { - return; + ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + MenuPrint_RightAligned(buffer, 28, 9); } - - ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); - MenuPrint_RightAligned(buffer, 28, 9); } void unref_sub_8094588(u16 left, u16 top) @@ -1831,9 +1563,6 @@ void unref_sub_8094588(u16 left, u16 top) const u8 *text = gOtherText_Boy; if (gSaveBlock2.playerGender == FEMALE) - { text = gOtherText_Girl; - } - - MenuPrint(text, (u8)left, (u8)top); + MenuPrint(text, left, top); } @@ -365,7 +365,7 @@ void sub_80BDC14(void) gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; gSaveBlock1.gabbyAndTyData.valA_4 = 1; - gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name; + gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId; IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); } @@ -556,7 +556,7 @@ void sub_80BE028(void) worldOfMasters->var02++; worldOfMasters->var04 = gBattleResults.caughtPoke; worldOfMasters->var08 = gBattleResults.poke1Species; - worldOfMasters->var0a = gMapHeader.name; + worldOfMasters->var0a = gMapHeader.regionMapSectionId; } void sub_80BE074(void) @@ -585,7 +585,7 @@ void sub_80BE074(void) pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies; pokemonTodayFailed->var10 = total; pokemonTodayFailed->var11 = gBattleOutcome; - pokemonTodayFailed->var12 = gMapHeader.name; + pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId; StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName); sub_80BE138((TVShow *)pokemonTodayFailed); pokemonTodayFailed->language = GAME_LANGUAGE; @@ -710,7 +710,7 @@ void sub_80BE3BC(void) smartShopper->var00 = TVSHOW_SMART_SHOPPER; smartShopper->var01 = rval; - smartShopper->shopLocation = gMapHeader.name; + smartShopper->shopLocation = gMapHeader.regionMapSectionId; for (i=0; i<3; i++) { smartShopper->itemIds[i] = gUnknown_02038724[i].item_id; @@ -2720,7 +2720,7 @@ void DoTVShowTodaysSmartShopper(void) { case 0: TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language); - sub_80FBFB4(gStringVar2, smartShopper->shopLocation, 0); + GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0); if (smartShopper->itemAmounts[0] >= 0xff) gUnknown_020387E8 = 11; else @@ -2978,7 +2978,7 @@ void DoTVShowPokemonTodayFailedCapture(void) break; case 1: TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language); - sub_80FBFB4(gStringVar2, pokemonTodayFailed->var12, 0); + GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0); StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]); if (pokemonTodayFailed->var11 == 1) gUnknown_020387E8 = 3; @@ -3133,7 +3133,7 @@ void DoTVShowPokemonNewsMassOutbreak(void) { struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak; - sub_80FBFB4(gStringVar1, massOutbreak->locationMapNum, 0); + GetMapSectionName(gStringVar1, massOutbreak->locationMapNum, 0); StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]); TVShowDone(); StartMassOutbreak(); @@ -3149,7 +3149,7 @@ void DoTVShowInSearchOfTrainers(void) switch (state) { case 0: - sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); if (gSaveBlock1.gabbyAndTyData.battleNum > 1) gUnknown_020387E8 = 1; else @@ -3246,7 +3246,7 @@ void DoTVShowTheWorldOfMasters(void) case 2: TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName, worldOfMasters->language); - sub_80FBFB4(gStringVar2, worldOfMasters->var0a, 0); + GetMapSectionName(gStringVar2, worldOfMasters->var0a, 0); StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]); TVShowDone(); break; diff --git a/src/unknown_debug_menu.c b/src/unknown_debug_menu.c index 6a8bad0d4..a81625f2a 100644 --- a/src/unknown_debug_menu.c +++ b/src/unknown_debug_menu.c @@ -41,8 +41,8 @@ static u8 sub_814A464(void) u8 sub_814A4B8(void) { - gSaveBlock2.filler_A8.var_4AE = 3; - gSaveBlock2.filler_A8.var_4AF = 3; + gSaveBlock2.filler_A8.var_4AE[0] = 3; + gSaveBlock2.filler_A8.var_4AE[1] = 3; gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1; gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1; gSaveBlock2.filler_A8.var_4B0 = 1; diff --git a/src/unknown_task.c b/src/unknown_task.c new file mode 100644 index 000000000..81b89ef92 --- /dev/null +++ b/src/unknown_task.c @@ -0,0 +1,255 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" + +struct UnknownStruct1 +{ + void *src[2]; + void *dest; + u32 unkC; + void (*unk10)(void); + u8 srcBank; + u8 unk15; + u8 unk16; + u8 unk17; + u8 taskId; + u8 filler19[0x7]; +}; + +struct UnknownStruct2 +{ + void *dest; + u32 control; + u8 unk8; + u8 unk9; +}; + +static void sub_80896F4(void); +static void sub_8089714(void); + +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; + +extern u8 gUnknown_0202FFA4; + +extern struct UnknownStruct1 gUnknown_03004DC0; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void) +{ + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + if (gUnknown_03004DC0.taskId != 0xFF) + { + DestroyTask(gUnknown_03004DC0.taskId); + gUnknown_03004DC0.taskId = 0xFF; + } +} + +void dp12_8087EA4(void) +{ + CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); + gUnknown_03004DC0.src[0] = 0; + gUnknown_03004DC0.src[1] = 0; + gUnknown_03004DC0.dest = 0; + gUnknown_03004DC0.unkC = 0; + gUnknown_03004DC0.srcBank = 0; + gUnknown_03004DC0.unk15 = 0; + gUnknown_03004DC0.unk16 = 0; + gUnknown_03004DC0.unk17 = 0; + gUnknown_03004DC0.taskId = 0xFF; +} + +void sub_80895F8(struct UnknownStruct2 unk) +{ + if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; + gUnknown_03004DC0.unk10 = sub_80896F4; + } + else + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; + gUnknown_03004DC0.unk10 = sub_8089714; + } + + gUnknown_03004DC0.unkC = unk.control; + gUnknown_03004DC0.dest = unk.dest; + gUnknown_03004DC0.unk15 = unk.unk8; + gUnknown_03004DC0.unk16 = unk.unk9; + gUnknown_03004DC0.unk17 = unk.unk9; +} + +void sub_8089668(void) +{ + if (gUnknown_03004DC0.unk15) + { + if (gUnknown_03004DC0.unk15 == 3) + { + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + gUnknown_0202FFA4 = 1; + } + else + { + DmaStop(0); + DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); + gUnknown_03004DC0.unk10(); + gUnknown_03004DC0.srcBank ^= 1; + } + } +} + +static void sub_80896F4(void) +{ + u16 *dest = (u16 *)gUnknown_03004DC0.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void sub_8089714(void) +{ + u32 *dest = (u32 *)gUnknown_03004DC0.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void task00_for_dp12(u8 taskId) +{ + int value = 0; + + if (gUnknown_0202FFA4) + { + DestroyTask(taskId); + gUnknown_03004DC0.taskId = 0xFF; + } + else + { + if (gTasks[taskId].data[7]) + { + switch (gTasks[taskId].data[6]) + { + case 0x0: + value = gUnknown_030042A4; + break; + case 0x2: + value = gUnknown_030042A0; + break; + case 0x4: + value = gUnknown_030042C0; + break; + case 0x6: + value = gUnknown_030041B4; + break; + case 0x8: + value = gUnknown_03004288; + break; + case 0xA: + value = gUnknown_03004280; + break; + case 0xC: + value = gUnknown_030041B0; + break; + case 0xE: + value = gUnknown_030041B8; + break; + } + } + if (gTasks[taskId].data[4]) + { + int i; + int offset; + gTasks[taskId].data[4]--; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + } + else + { + int i; + int offset; + gTasks[taskId].data[4] = gTasks[taskId].data[5]; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[3] = 0; + } + } + } +} + +static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +{ + u16 i = 0; + u8 offset = 0; + + while (i < 0x100) + { + a1[i] = (gSineTable[offset] * a3) / 256; + offset += a2; + i++; + } +} + +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ + int i; + int offset; + struct UnknownStruct2 unk; + u8 taskId; + + dp12_8087EA4(); + + unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); + unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.unk8 = 1; + unk.unk9 = 0; + + sub_80895F8(unk); + + taskId = CreateTask(task00_for_dp12, 0); + + gTasks[taskId].data[0] = a1; + gTasks[taskId].data[1] = a2; + gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = a5; + gTasks[taskId].data[5] = a5; + gTasks[taskId].data[6] = a6; + gTasks[taskId].data[7] = a7; + + gUnknown_03004DC0.taskId = taskId; + gUnknown_0202FFA4 = 0; + + sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + + offset = 320; + + for (i = a1; i < a2; i++) + { + gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; + gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + offset++; + } + + return taskId; +} diff --git a/sym_ewram.txt b/sym_ewram.txt index c5745a199..b44263a1e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -755,7 +755,7 @@ gUnknown_020388BC: @ 20388BC .include "src/menu_helpers.o" .align 2 -gUnknown_020388CC: @ 20388CC +gRegionMap: @ 20388CC .space 0x4 gUnknown_020388D0: @ 20388D0 |