diff options
author | drifloony <drifloony@users.noreply.github.com> | 2017-07-21 15:34:05 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-21 15:34:05 -0700 |
commit | 8ed167339c52b32e5149077e9e2c91f981268af9 (patch) | |
tree | 765873e0da27644ad94fcf0eee9a8f76f95e96c6 | |
parent | 95d3a7848ca07ad7035d1a717b489c4ea303a3ba (diff) | |
parent | 68e47a6fa0b56451223c22dc9a759534c988db5b (diff) |
Merge branch 'master' into mon_markings
142 files changed, 6390 insertions, 12380 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/fldeff_flash.s b/asm/fldeff_flash.s deleted file mode 100644 index dcd485d9f..000000000 --- a/asm/fldeff_flash.s +++ /dev/null @@ -1,753 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start SetUpFieldMove_Flash -SetUpFieldMove_Flash: @ 810CBB4 - push {lr} - ldr r0, _0810CBDC @ =gMapHeader - ldrb r0, [r0, 0x15] - cmp r0, 0x1 - bne _0810CBF4 - ldr r0, _0810CBE0 @ =0x00000828 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0810CBF4 - ldr r1, _0810CBE4 @ =gFieldCallback - ldr r0, _0810CBE8 @ =sub_808AB90 - str r0, [r1] - ldr r1, _0810CBEC @ =gUnknown_03005CE4 - ldr r0, _0810CBF0 @ =sub_810CBFC - str r0, [r1] - movs r0, 0x1 - b _0810CBF6 - .align 2, 0 -_0810CBDC: .4byte gMapHeader -_0810CBE0: .4byte 0x00000828 -_0810CBE4: .4byte gFieldCallback -_0810CBE8: .4byte sub_808AB90 -_0810CBEC: .4byte gUnknown_03005CE4 -_0810CBF0: .4byte sub_810CBFC -_0810CBF4: - movs r0, 0 -_0810CBF6: - pop {r1} - bx r1 - thumb_func_end SetUpFieldMove_Flash - - thumb_func_start sub_810CBFC -sub_810CBFC: @ 810CBFC - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810CC24 @ =gUnknown_0202FF84 - ldr r1, _0810CC28 @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - str r1, [r2] - ldr r2, _0810CC2C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, _0810CC30 @ =sub_810CC34 - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - pop {r0} - bx r0 - .align 2, 0 -_0810CC24: .4byte gUnknown_0202FF84 -_0810CC28: .4byte gLastFieldPokeMenuOpened -_0810CC2C: .4byte gTasks -_0810CC30: .4byte sub_810CC34 - thumb_func_end sub_810CBFC - - thumb_func_start sub_810CC34 -sub_810CC34: @ 810CC34 - push {lr} - movs r0, 0xCF - bl PlaySE - ldr r0, _0810CC4C @ =0x00000828 - bl FlagSet - ldr r0, _0810CC50 @ =gUnknown_081B694A - bl ScriptContext1_SetupScript - pop {r0} - bx r0 - .align 2, 0 -_0810CC4C: .4byte 0x00000828 -_0810CC50: .4byte gUnknown_081B694A - thumb_func_end sub_810CC34 - - thumb_func_start sub_810CC54 -sub_810CC54: @ 810CC54 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_810CC54 - - thumb_func_start sub_810CC6C -sub_810CC6C: @ 810CC6C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_810CC6C - - thumb_func_start sub_810CC80 -sub_810CC80: @ 810CC80 - push {r4,lr} - sub sp, 0x8 - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0xC - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x10 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - mov r0, sp - strh r1, [r0] - ldr r1, _0810CD34 @ =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0810CD38 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r4, 0 - str r4, [sp, 0x4] - add r0, sp, 0x4 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _0810CD3C @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r0, sp - strh r4, [r0] - str r0, [r1] - ldr r0, _0810CD40 @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _0810CD44 @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - bl ResetTasks - bl ResetSpriteData - ldr r3, _0810CD48 @ =0x04000208 - ldrh r2, [r3] - strh r4, [r3] - ldr r4, _0810CD4C @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r0, _0810CD50 @ =sub_810CC6C - bl SetVBlankCallback - ldr r0, _0810CD54 @ =sub_810CC54 - bl SetMainCallback2 - bl sub_810CD5C - lsls r0, 24 - cmp r0, 0 - bne _0810CD2A - ldr r0, _0810CD58 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0810CD2A: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810CD34: .4byte 0x040000d4 -_0810CD38: .4byte 0x8100c000 -_0810CD3C: .4byte 0x85000100 -_0810CD40: .4byte 0x05000002 -_0810CD44: .4byte 0x810001ff -_0810CD48: .4byte 0x04000208 -_0810CD4C: .4byte 0x04000200 -_0810CD50: .4byte sub_810CC6C -_0810CD54: .4byte sub_810CC54 -_0810CD58: .4byte gMain - thumb_func_end sub_810CC80 - - thumb_func_start sub_810CD5C -sub_810CD5C: @ 810CD5C - push {r4-r7,lr} - bl get_map_light_from_warp0 - lsls r0, 24 - lsrs r6, r0, 24 - bl sav1_map_get_light_level - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r4, _0810CD9C @ =gUnknown_083F7FC4 - ldrb r0, [r4] - cmp r0, 0 - beq _0810CDB0 - adds r7, r4, 0 - adds r0, r4, 0x4 - mov r12, r0 -_0810CD7E: - lsls r2, r3, 3 - adds r1, r2, r7 - ldrb r0, [r1] - cmp r0, r6 - bne _0810CDA0 - ldrb r0, [r1, 0x1] - cmp r0, r5 - bne _0810CDA0 - mov r1, r12 - adds r0, r2, r1 - ldr r0, [r0] - bl _call_via_r0 - movs r0, 0x1 - b _0810CDB2 - .align 2, 0 -_0810CD9C: .4byte gUnknown_083F7FC4 -_0810CDA0: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0810CD7E -_0810CDB0: - movs r0, 0 -_0810CDB2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_810CD5C - - thumb_func_start sub_810CDB8 -sub_810CDB8: @ 810CDB8 - push {r4-r6,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r0, 24 - lsrs r4, r1, 24 - movs r3, 0 - ldr r1, _0810CDE4 @ =gUnknown_083F7FC4 - ldrb r0, [r1] - cmp r0, 0 - beq _0810CDF8 - adds r6, r1, 0 -_0810CDCE: - lsls r0, r3, 3 - adds r2, r0, r6 - ldrb r0, [r2] - cmp r0, r5 - bne _0810CDE8 - ldrb r0, [r2, 0x1] - cmp r0, r4 - bne _0810CDE8 - ldrb r0, [r2, 0x2] - b _0810CDFA - .align 2, 0 -_0810CDE4: .4byte gUnknown_083F7FC4 -_0810CDE8: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0810CDCE -_0810CDF8: - movs r0, 0 -_0810CDFA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_810CDB8 - - thumb_func_start fade_type_for_given_maplight_pair -fade_type_for_given_maplight_pair: @ 810CE00 - push {r4-r6,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r5, r0, 24 - lsrs r4, r1, 24 - movs r3, 0 - ldr r1, _0810CE2C @ =gUnknown_083F7FC4 - ldrb r0, [r1] - cmp r0, 0 - beq _0810CE40 - adds r6, r1, 0 -_0810CE16: - lsls r0, r3, 3 - adds r2, r0, r6 - ldrb r0, [r2] - cmp r0, r5 - bne _0810CE30 - ldrb r0, [r2, 0x1] - cmp r0, r4 - bne _0810CE30 - ldrb r0, [r2, 0x3] - b _0810CE42 - .align 2, 0 -_0810CE2C: .4byte gUnknown_083F7FC4 -_0810CE30: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0810CE16 -_0810CE40: - movs r0, 0 -_0810CE42: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end fade_type_for_given_maplight_pair - - thumb_func_start sub_810CE48 -sub_810CE48: @ 810CE48 - push {lr} - ldr r0, _0810CE58 @ =sub_810CE5C - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0810CE58: .4byte sub_810CE5C - thumb_func_end sub_810CE48 - - thumb_func_start sub_810CE5C -sub_810CE5C: @ 810CE5C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810CE70 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0810CE74 @ =sub_810CE78 - str r0, [r1] - bx lr - .align 2, 0 -_0810CE70: .4byte gTasks -_0810CE74: .4byte sub_810CE78 - thumb_func_end sub_810CE5C - - thumb_func_start sub_810CE78 -sub_810CE78: @ 810CE78 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r6, 0x80 - lsls r6, 19 - movs r5, 0 - strh r5, [r6] - ldr r0, _0810CEE8 @ =gCaveTransitionTiles - ldr r1, _0810CEEC @ =0x0600c000 - bl LZ77UnCompVram - ldr r0, _0810CEF0 @ =gCaveTransitionTilemap - ldr r1, _0810CEF4 @ =0x0600f800 - bl LZ77UnCompVram - ldr r0, _0810CEF8 @ =gCaveTransitionPalette_White - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0810CEFC @ =gUnknown_083F809C - movs r1, 0xE0 - movs r2, 0x10 - bl LoadPalette - ldr r1, _0810CF00 @ =REG_BLDCNT - ldr r2, _0810CF04 @ =0x00003e41 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0810CF08 @ =REG_BLDALPHA - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r1, 0x48 - ldr r2, _0810CF0C @ =0x00001f0c - adds r0, r2, 0 - strh r0, [r1] - movs r1, 0x8A - lsls r1, 5 - adds r0, r1, 0 - strh r0, [r6] - ldr r1, _0810CF10 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810CF14 @ =sub_810CF18 - str r1, [r0] - movs r2, 0 - movs r1, 0x10 - strh r1, [r0, 0x8] - strh r2, [r0, 0xA] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810CEE8: .4byte gCaveTransitionTiles -_0810CEEC: .4byte 0x0600c000 -_0810CEF0: .4byte gCaveTransitionTilemap -_0810CEF4: .4byte 0x0600f800 -_0810CEF8: .4byte gCaveTransitionPalette_White -_0810CEFC: .4byte gUnknown_083F809C -_0810CF00: .4byte REG_BLDCNT -_0810CF04: .4byte 0x00003e41 -_0810CF08: .4byte REG_BLDALPHA -_0810CF0C: .4byte 0x00001f0c -_0810CF10: .4byte gTasks -_0810CF14: .4byte sub_810CF18 - thumb_func_end sub_810CE78 - - thumb_func_start sub_810CF18 -sub_810CF18: @ 810CF18 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810CF44 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r2, [r3, 0xA] - movs r1, 0x80 - lsls r1, 5 - adds r0, r2, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0810CF48 @ =REG_BLDALPHA - strh r0, [r1] - cmp r2, 0x10 - bhi _0810CF4C - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - b _0810CF54 - .align 2, 0 -_0810CF44: .4byte gTasks -_0810CF48: .4byte REG_BLDALPHA -_0810CF4C: - movs r0, 0 - strh r0, [r3, 0xC] - ldr r0, _0810CF58 @ =sub_810CF5C - str r0, [r3] -_0810CF54: - pop {r0} - bx r0 - .align 2, 0 -_0810CF58: .4byte sub_810CF5C - thumb_func_end sub_810CF18 - - thumb_func_start sub_810CF5C -sub_810CF5C: @ 810CF5C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810CF94 @ =REG_BLDALPHA - ldr r3, _0810CF98 @ =0x00001010 - adds r1, r3, 0 - strh r1, [r2] - ldr r2, _0810CF9C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r1, [r4, 0xC] - cmp r1, 0x7 - bhi _0810CFA4 - adds r0, r1, 0x1 - strh r0, [r4, 0xC] - lsls r1, 1 - ldr r0, _0810CFA0 @ =gUnknown_083F809C - adds r0, r1, r0 - movs r2, 0x10 - subs r2, r1 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0xE0 - bl LoadPalette - b _0810CFB6 - .align 2, 0 -_0810CF94: .4byte REG_BLDALPHA -_0810CF98: .4byte 0x00001010 -_0810CF9C: .4byte gTasks -_0810CFA0: .4byte gUnknown_083F809C -_0810CFA4: - ldr r0, _0810CFBC @ =gCaveTransitionPalette_White - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0810CFC0 @ =sub_810CFC4 - str r0, [r4] - movs r0, 0x8 - strh r0, [r4, 0xC] -_0810CFB6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810CFBC: .4byte gCaveTransitionPalette_White -_0810CFC0: .4byte sub_810CFC4 - thumb_func_end sub_810CF5C - - thumb_func_start sub_810CFC4 -sub_810CFC4: @ 810CFC4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810CFE4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0810CFE8 - subs r0, r2, 0x1 - strh r0, [r1, 0xC] - b _0810CFF0 - .align 2, 0 -_0810CFE4: .4byte gTasks -_0810CFE8: - ldr r0, _0810CFF4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0810CFF0: - pop {r0} - bx r0 - .align 2, 0 -_0810CFF4: .4byte gMain - thumb_func_end sub_810CFC4 - - thumb_func_start sub_810CFF8 -sub_810CFF8: @ 810CFF8 - push {lr} - ldr r0, _0810D008 @ =sub_810D00C - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0810D008: .4byte sub_810D00C - thumb_func_end sub_810CFF8 - - thumb_func_start sub_810D00C -sub_810D00C: @ 810D00C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810D020 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0810D024 @ =sub_810D028 - str r0, [r1] - bx lr - .align 2, 0 -_0810D020: .4byte gTasks -_0810D024: .4byte sub_810D028 - thumb_func_end sub_810D00C - - thumb_func_start sub_810D028 -sub_810D028: @ 810D028 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r6, 0x80 - lsls r6, 19 - movs r4, 0 - strh r4, [r6] - ldr r0, _0810D098 @ =gCaveTransitionTiles - ldr r1, _0810D09C @ =0x0600c000 - bl LZ77UnCompVram - ldr r0, _0810D0A0 @ =gCaveTransitionTilemap - ldr r1, _0810D0A4 @ =0x0600f800 - bl LZ77UnCompVram - ldr r0, _0810D0A8 @ =REG_BLDCNT - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r1, _0810D0AC @ =REG_BG0CNT - ldr r2, _0810D0B0 @ =0x00001f0c - adds r0, r2, 0 - strh r0, [r1] - movs r1, 0x8A - lsls r1, 5 - adds r0, r1, 0 - strh r0, [r6] - ldr r0, _0810D0B4 @ =gCaveTransitionPalette_White - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0810D0B8 @ =gCaveTransitionPalette_Black - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _0810D0BC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810D0C0 @ =sub_810D0C4 - str r1, [r0] - movs r2, 0 - movs r1, 0x10 - strh r1, [r0, 0x8] - strh r2, [r0, 0xA] - strh r2, [r0, 0xC] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810D098: .4byte gCaveTransitionTiles -_0810D09C: .4byte 0x0600c000 -_0810D0A0: .4byte gCaveTransitionTilemap -_0810D0A4: .4byte 0x0600f800 -_0810D0A8: .4byte REG_BLDCNT -_0810D0AC: .4byte REG_BG0CNT -_0810D0B0: .4byte 0x00001f0c -_0810D0B4: .4byte gCaveTransitionPalette_White -_0810D0B8: .4byte gCaveTransitionPalette_Black -_0810D0BC: .4byte gTasks -_0810D0C0: .4byte sub_810D0C4 - thumb_func_end sub_810D028 - - thumb_func_start sub_810D0C4 -sub_810D0C4: @ 810D0C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810D0F8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r1, [r3, 0xC] - cmp r1, 0xF - bhi _0810D100 - adds r2, r1, 0x1 - adds r0, r2, 0x1 - strh r0, [r3, 0xC] - movs r0, 0xF - subs r0, r1 - lsls r0, 1 - ldr r1, _0810D0FC @ =gUnknown_083F808C - adds r0, r1 - lsls r2, 17 - lsrs r2, 16 - movs r1, 0xE0 - bl LoadPalette - b _0810D114 - .align 2, 0 -_0810D0F8: .4byte gTasks -_0810D0FC: .4byte gUnknown_083F808C -_0810D100: - ldr r1, _0810D118 @ =REG_BLDALPHA - ldr r2, _0810D11C @ =0x00001010 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0810D120 @ =0x00003e41 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0810D124 @ =sub_810D128 - str r0, [r3] -_0810D114: - pop {r0} - bx r0 - .align 2, 0 -_0810D118: .4byte REG_BLDALPHA -_0810D11C: .4byte 0x00001010 -_0810D120: .4byte 0x00003e41 -_0810D124: .4byte sub_810D128 - thumb_func_end sub_810D0C4 - - thumb_func_start sub_810D128 -sub_810D128: @ 810D128 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810D158 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r0, [r3, 0xA] - movs r1, 0x10 - subs r1, r0 - lsls r1, 16 - movs r2, 0x80 - lsls r2, 21 - adds r0, r1, r2 - lsrs r0, 16 - ldr r2, _0810D15C @ =REG_BLDALPHA - strh r0, [r2] - cmp r1, 0 - beq _0810D160 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - b _0810D172 - .align 2, 0 -_0810D158: .4byte gTasks -_0810D15C: .4byte REG_BLDALPHA -_0810D160: - ldr r0, _0810D178 @ =gCaveTransitionPalette_Black - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0810D17C @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0810D172: - pop {r0} - bx r0 - .align 2, 0 -_0810D178: .4byte gCaveTransitionPalette_Black -_0810D17C: .4byte gMain - thumb_func_end sub_810D128 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/m4a_1.s b/asm/m4a_1.s index ffe2ca885..849cf5c2d 100644 --- a/asm/m4a_1.s +++ b/asm/m4a_1.s @@ -4,6 +4,8 @@ .syntax unified + .lcomm gUnknown_030007B8, 0x770 + .text thumb_func_start umul3232H32 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_icon.s b/asm/pokemon_icon.s deleted file mode 100644 index 5aa8b5901..000000000 --- a/asm/pokemon_icon.s +++ /dev/null @@ -1,788 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_809D26C -unref_sub_809D26C: @ 809D26C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - adds r6, r3, 0 - ldr r3, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, sp - ldr r4, _0809D2E0 @ =gOamData_83BC5E8 - str r4, [sp] - ldr r5, _0809D2E4 @ =gMonIconTable - lsls r4, r0, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp, 0x4] - ldr r4, _0809D2E8 @ =gSpriteAnimTable_83BC62C - str r4, [sp, 0x8] - ldr r4, _0809D2EC @ =gSpriteAffineAnimTable_83BC660 - str r4, [sp, 0xC] - str r1, [sp, 0x10] - ldr r1, _0809D2F0 @ =gMonIconPaletteIndices - adds r0, r1 - ldr r4, _0809D2F4 @ =0x0000dac0 - adds r1, r4, 0 - ldrb r0, [r0] - adds r1, r0 - mov r0, r8 - strh r1, [r0, 0x14] - lsls r2, 16 - asrs r2, 16 - lsls r6, 16 - asrs r6, 16 - mov r0, sp - adds r1, r2, 0 - adds r2, r6, 0 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D2F8 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D2E0: .4byte gOamData_83BC5E8 -_0809D2E4: .4byte gMonIconTable -_0809D2E8: .4byte gSpriteAnimTable_83BC62C -_0809D2EC: .4byte gSpriteAffineAnimTable_83BC660 -_0809D2F0: .4byte gMonIconPaletteIndices -_0809D2F4: .4byte 0x0000dac0 -_0809D2F8: .4byte gSprites - thumb_func_end unref_sub_809D26C - - thumb_func_start CreateMonIcon -CreateMonIcon: @ 809D2FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [sp, 0x48] - ldr r1, [sp, 0x4C] - lsls r4, 16 - lsrs r4, 16 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 16 - lsrs r6, r3, 16 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0809D38C @ =gOamData_83BC5E8 - str r0, [sp, 0x18] - adds r0, r4, 0 - bl GetMonIconPtr - str r0, [sp, 0x1C] - ldr r0, _0809D390 @ =gSpriteAnimTable_83BC62C - str r0, [sp, 0x20] - ldr r0, _0809D394 @ =gSpriteAffineAnimTable_83BC660 - str r0, [sp, 0x24] - str r5, [sp, 0x28] - ldr r0, _0809D398 @ =gMonIconPaletteIndices - adds r0, r4, r0 - ldr r1, _0809D39C @ =0x0000dac0 - adds r5, r1, 0 - ldrb r0, [r0] - adds r1, r5, r0 - add r0, sp, 0x2C - strh r1, [r0] - add r1, sp, 0x18 - mov r0, sp - movs r2, 0x18 - bl memcpy - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _0809D35A - mov r0, sp - strh r5, [r0, 0x14] -_0809D35A: - lsls r1, r7, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r2, 16 - mov r0, sp - mov r3, r8 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D3A0 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809D38C: .4byte gOamData_83BC5E8 -_0809D390: .4byte gSpriteAnimTable_83BC62C -_0809D394: .4byte gSpriteAffineAnimTable_83BC660 -_0809D398: .4byte gMonIconPaletteIndices -_0809D39C: .4byte 0x0000dac0 -_0809D3A0: .4byte gSprites - thumb_func_end CreateMonIcon - - thumb_func_start sub_809D3A4 -sub_809D3A4: @ 809D3A4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x18 - adds r6, r3, 0 - ldr r3, [sp, 0x2C] - lsls r0, 16 - lsrs r0, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, sp - ldr r4, _0809D418 @ =gOamData_83BC5E8 - str r4, [sp] - ldr r5, _0809D41C @ =gMonIconTable - lsls r4, r0, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp, 0x4] - ldr r4, _0809D420 @ =gSpriteAnimTable_83BC62C - str r4, [sp, 0x8] - ldr r4, _0809D424 @ =gSpriteAffineAnimTable_83BC660 - str r4, [sp, 0xC] - str r1, [sp, 0x10] - ldr r1, _0809D428 @ =gMonIconPaletteIndices - adds r0, r1 - ldr r4, _0809D42C @ =0x0000dac0 - adds r1, r4, 0 - ldrb r0, [r0] - adds r1, r0 - mov r0, r8 - strh r1, [r0, 0x14] - lsls r2, 16 - asrs r2, 16 - lsls r6, 16 - asrs r6, 16 - mov r0, sp - adds r1, r2, 0 - adds r2, r6, 0 - bl CreateMonIconSprite - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _0809D430 @ =gSprites - adds r0, r1 - bl UpdateMonIconFrame - adds r0, r4, 0 - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D418: .4byte gOamData_83BC5E8 -_0809D41C: .4byte gMonIconTable -_0809D420: .4byte gSpriteAnimTable_83BC62C -_0809D424: .4byte gSpriteAffineAnimTable_83BC660 -_0809D428: .4byte gMonIconPaletteIndices -_0809D42C: .4byte 0x0000dac0 -_0809D430: .4byte gSprites - thumb_func_end sub_809D3A4 - - thumb_func_start mon_icon_convert_unown_species_id -mon_icon_convert_unown_species_id: @ 809D434 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, SPECIES_UNOWN - bne _0809D45E - adds r0, r1, 0 - bl GetUnownLetterByPersonality - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0809D450 - movs r0, SPECIES_UNOWN - b _0809D45A -_0809D450: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_0809D45A: - adds r1, r0, 0 - b _0809D46C -_0809D45E: - movs r0, 0xCE - lsls r0, 1 - adds r1, r2, 0 - cmp r1, r0 - bls _0809D46C - movs r1, 0x82 - lsls r1, 1 -_0809D46C: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end mon_icon_convert_unown_species_id - - thumb_func_start GetUnownLetterByPersonality -GetUnownLetterByPersonality: @ 809D474 - push {lr} - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end GetUnownLetterByPersonality - - thumb_func_start sub_809D4A8 -sub_809D4A8: @ 809D4A8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - mov r1, sp - bl MailSpeciesToSpecies - lsls r0, 16 - lsrs r0, 16 - cmp r0, SPECIES_UNOWN - bne _0809D4DE - mov r0, sp - ldrh r0, [r0] - cmp r0, 0 - bne _0809D4CE - mov r1, sp - adds r0, SPECIES_UNOWN - b _0809D4D6 -_0809D4CE: - mov r1, sp - movs r2, 0xCE - lsls r2, 1 - adds r0, r2 -_0809D4D6: - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - b _0809D4EA -_0809D4DE: - adds r0, r4, 0 - movs r1, 0 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - lsrs r0, 16 -_0809D4EA: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809D4A8 - - thumb_func_start GetMonIconPtr -GetMonIconPtr: @ 809D4F4 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl mon_icon_convert_unown_species_id - lsls r0, 16 - ldr r1, _0809D50C @ =gMonIconTable - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - pop {r1} - bx r1 - .align 2, 0 -_0809D50C: .4byte gMonIconTable - thumb_func_end GetMonIconPtr - - thumb_func_start sub_809D510 -sub_809D510: @ 809D510 - push {lr} - bl sub_809D7E8 - pop {r0} - bx r0 - thumb_func_end sub_809D510 - - thumb_func_start sub_809D51C -sub_809D51C: @ 809D51C - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0809D53C @ =gMonIconPaletteTable -_0809D522: - lsls r0, r4, 3 - adds r0, r5 - bl LoadSpritePalette - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0809D522 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809D53C: .4byte gMonIconPaletteTable - thumb_func_end sub_809D51C - - thumb_func_start unref_sub_809D540 -unref_sub_809D540: @ 809D540 - push {r4,lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _0809D552 - movs r1, 0x82 - lsls r1, 1 -_0809D552: - ldr r0, _0809D578 @ =gMonIconPaletteIndices - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _0809D57C @ =gMonIconPaletteTable - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809D572 - adds r0, r4, 0 - bl LoadSpritePalette -_0809D572: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809D578: .4byte gMonIconPaletteIndices -_0809D57C: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D540 - - thumb_func_start sub_809D580 -sub_809D580: @ 809D580 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809D5AC @ =gMonIconPaletteIndices - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0809D5B0 @ =gMonIconPaletteTable - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x4] - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0809D5A6 - adds r0, r4, 0 - bl LoadSpritePalette -_0809D5A6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809D5AC: .4byte gMonIconPaletteIndices -_0809D5B0: .4byte gMonIconPaletteTable - thumb_func_end sub_809D580 - - thumb_func_start unref_sub_809D5B4 -unref_sub_809D5B4: @ 809D5B4 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0809D5D4 @ =gMonIconPaletteTable -_0809D5BA: - lsls r0, r4, 3 - adds r0, r5 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0809D5BA - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809D5D4: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D5B4 - - thumb_func_start unref_sub_809D5D8 -unref_sub_809D5D8: @ 809D5D8 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bls _0809D5EA - movs r1, 0x82 - lsls r1, 1 -_0809D5EA: - ldr r0, _0809D600 @ =gMonIconPaletteIndices - adds r0, r1, r0 - ldrb r0, [r0] - ldr r1, _0809D604 @ =gMonIconPaletteTable - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0809D600: .4byte gMonIconPaletteIndices -_0809D604: .4byte gMonIconPaletteTable - thumb_func_end unref_sub_809D5D8 - - thumb_func_start sub_809D608 -sub_809D608: @ 809D608 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809D624 @ =gMonIconPaletteIndices - adds r0, r1 - ldrb r0, [r0] - ldr r1, _0809D628 @ =gMonIconPaletteTable - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_0809D624: .4byte gMonIconPaletteIndices -_0809D628: .4byte gMonIconPaletteTable - thumb_func_end sub_809D608 - - thumb_func_start sub_809D62C -sub_809D62C: @ 809D62C - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end sub_809D62C - - thumb_func_start UpdateMonIconFrame -UpdateMonIconFrame: @ 809D638 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - movs r7, 0 - adds r6, r4, 0 - adds r6, 0x2C - ldrb r2, [r6] - movs r0, 0x3F - mov r9, r0 - ands r0, r2 - cmp r0, 0 - bne _0809D6EC - movs r1, 0x2A - adds r1, r4 - mov r8, r1 - ldrb r1, [r1] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - adds r5, r4, 0 - adds r5, 0x2B - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - movs r1, 0 - ldrsh r3, [r0, r1] - movs r0, 0x2 - negs r0, r0 - cmp r3, r0 - beq _0809D682 - adds r0, 0x1 - cmp r3, r0 - bne _0809D686 - b _0809D700 -_0809D682: - strb r7, [r5] - b _0809D700 -_0809D686: - ldr r2, _0809D6E4 @ =gSpriteImageSizes - ldrb r1, [r4, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r4, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - adds r1, r2, 0 - muls r1, r3 - ldr r0, [r4, 0xC] - adds r0, r1 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 17 - ldr r3, _0809D6E8 @ =0x06010000 - adds r1, r3 - bl RequestSpriteCopy - mov r0, r8 - ldrb r1, [r0] - ldr r0, [r4, 0x8] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r5] - ldr r1, [r1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r0, 10 - lsrs r0, 26 - mov r1, r9 - ands r1, r0 - ldrb r2, [r6] - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r7, [r5] - b _0809D700 - .align 2, 0 -_0809D6E4: .4byte gSpriteImageSizes -_0809D6E8: .4byte 0x06010000 -_0809D6EC: - lsls r0, r2, 26 - lsrs r0, 26 - subs r0, 0x1 - movs r1, 0x3F - ands r0, r1 - movs r1, 0x40 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r6] -_0809D700: - adds r0, r7, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end UpdateMonIconFrame - - thumb_func_start CreateMonIconSprite -CreateMonIconSprite: @ 809D710 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x38 - mov r9, r0 - adds r4, r1, 0 - adds r5, r2, 0 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - str r0, [sp, 0x30] - ldr r2, _0809D7D8 @ =gSpriteImageSizes - mov r0, r9 - ldr r6, [r0] - ldrb r1, [r6, 0x3] - lsrs r1, 6 - lsls r1, 1 - ldrb r0, [r6, 0x1] - lsrs r0, 6 - lsls r0, 3 - adds r1, r0 - adds r1, r2 - ldrh r2, [r1] - ldr r1, _0809D7DC @ =0xffff0000 - add r3, sp, 0x30 - ldr r0, [r3, 0x4] - ands r0, r1 - orrs r0, r2 - str r0, [r3, 0x4] - add r1, sp, 0x18 - ldr r0, _0809D7E0 @ =0x0000ffff - strh r0, [r1] - mov r0, r9 - ldrh r2, [r0, 0x14] - mov r0, sp - adds r0, 0x1A - strh r2, [r0] - str r6, [sp, 0x1C] - mov r2, r9 - ldr r0, [r2, 0x8] - str r0, [sp, 0x20] - str r3, [sp, 0x24] - ldr r0, [r2, 0xC] - str r0, [sp, 0x28] - ldr r0, [r2, 0x10] - str r0, [sp, 0x2C] - mov r0, sp - movs r2, 0x18 - bl memcpy - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - mov r0, sp - adds r1, r4, 0 - adds r2, r5, 0 - mov r3, r8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r6, _0809D7E4 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r4, r3, r6 - adds r5, r4, 0 - adds r5, 0x2C - ldrb r1, [r5] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r5] - adds r4, 0x3F - ldrb r2, [r4] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r4] - adds r6, 0xC - adds r3, r6 - mov r2, r9 - ldr r1, [r2, 0x4] - str r1, [r3] - add sp, 0x38 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809D7D8: .4byte gSpriteImageSizes -_0809D7DC: .4byte 0xffff0000 -_0809D7E0: .4byte 0x0000ffff -_0809D7E4: .4byte gSprites - thumb_func_end CreateMonIconSprite - - thumb_func_start sub_809D7E8 -sub_809D7E8: @ 809D7E8 - push {lr} - sub sp, 0x8 - movs r1, 0 - str r1, [sp] - ldr r3, _0809D81C @ =gSpriteImageSizes - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r2, 1 - ldrb r1, [r0, 0x1] - lsrs r1, 6 - lsls r1, 3 - adds r2, r1 - adds r2, r3 - ldrh r3, [r2] - ldr r2, _0809D820 @ =0xffff0000 - ldr r1, [sp, 0x4] - ands r1, r2 - orrs r1, r3 - str r1, [sp, 0x4] - mov r1, sp - str r1, [r0, 0xC] - bl DestroySprite - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809D81C: .4byte gSpriteImageSizes -_0809D820: .4byte 0xffff0000 - thumb_func_end sub_809D7E8 - - thumb_func_start sub_809D824 -sub_809D824: @ 809D824 - mov r12, r0 - adds r0, 0x2A - movs r3, 0 - strb r1, [r0] - mov r2, r12 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x40 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r0, r12 - adds r0, 0x2B - strb r3, [r0] - bx lr - thumb_func_end sub_809D824 - - .align 2, 0 @ Don't pad with nop. 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/common_syms/battle_anim.txt b/common_syms/battle_anim.txt new file mode 100644 index 000000000..a93ac9b5d --- /dev/null +++ b/common_syms/battle_anim.txt @@ -0,0 +1,3 @@ +gSoundAnimFramesToWait +gBattleAnimArgs +gAnimSpriteIndexArray diff --git a/common_syms/contest_painting.txt b/common_syms/contest_painting.txt new file mode 100644 index 000000000..2e8490348 --- /dev/null +++ b/common_syms/contest_painting.txt @@ -0,0 +1,5 @@ +gUnknown_03005E10 +gUnknown_03005E20 +gUnknown_03005E40 +gUnknown_03005E8C +gUnknown_03005E90 diff --git a/common_syms/field_camera.txt b/common_syms/field_camera.txt new file mode 100644 index 000000000..7aad967f8 --- /dev/null +++ b/common_syms/field_camera.txt @@ -0,0 +1,3 @@ +gUnknown_03004880 +gUnknown_03004898 +gUnknown_0300489C diff --git a/common_syms/field_control_avatar.txt b/common_syms/field_control_avatar.txt new file mode 100644 index 000000000..040a9e6c1 --- /dev/null +++ b/common_syms/field_control_avatar.txt @@ -0,0 +1 @@ +gSelectedMapObject diff --git a/common_syms/field_map_obj.txt b/common_syms/field_map_obj.txt new file mode 100644 index 000000000..32d8b1915 --- /dev/null +++ b/common_syms/field_map_obj.txt @@ -0,0 +1 @@ +gMapObjects diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt new file mode 100644 index 000000000..7819b3b40 --- /dev/null +++ b/common_syms/fieldmap.txt @@ -0,0 +1 @@ +gUnknown_03004870 diff --git a/common_syms/intro.txt b/common_syms/intro.txt new file mode 100644 index 000000000..d069b1014 --- /dev/null +++ b/common_syms/intro.txt @@ -0,0 +1,2 @@ +gIntroFrameCounter +gMultibootProgramStruct diff --git a/common_syms/mori_debug_menu.txt b/common_syms/mori_debug_menu.txt new file mode 100644 index 000000000..77ab5531c --- /dev/null +++ b/common_syms/mori_debug_menu.txt @@ -0,0 +1 @@ +gUnknown_03004DA0 diff --git a/common_syms/pokedex.txt b/common_syms/pokedex.txt new file mode 100644 index 000000000..18b14f3ed --- /dev/null +++ b/common_syms/pokedex.txt @@ -0,0 +1,2 @@ +gUnknown_03005CE8 +gUnknown_03005CEC diff --git a/common_syms/pokemon_1.txt b/common_syms/pokemon_1.txt new file mode 100644 index 000000000..c588d53a7 --- /dev/null +++ b/common_syms/pokemon_1.txt @@ -0,0 +1,4 @@ +gPlayerPartyCount +gPlayerParty +gEnemyPartyCount +gEnemyParty diff --git a/common_syms/record_mixing.txt b/common_syms/record_mixing.txt new file mode 100644 index 000000000..a6f4f8df3 --- /dev/null +++ b/common_syms/record_mixing.txt @@ -0,0 +1 @@ +gUnknown_03005D2C diff --git a/common_syms/rom3.txt b/common_syms/rom3.txt new file mode 100644 index 000000000..06a965ff6 --- /dev/null +++ b/common_syms/rom3.txt @@ -0,0 +1 @@ +gBattleBuffersTransferData diff --git a/common_syms/rom4.txt b/common_syms/rom4.txt new file mode 100644 index 000000000..ecdb190b2 --- /dev/null +++ b/common_syms/rom4.txt @@ -0,0 +1,4 @@ +word_3004858 +gFieldCallback +gUnknown_03004860 +gFieldLinkPlayerCount diff --git a/common_syms/save.txt b/common_syms/save.txt new file mode 100644 index 000000000..d09a52bcf --- /dev/null +++ b/common_syms/save.txt @@ -0,0 +1,9 @@ +gLastWrittenSector +gLastSaveCounter +gLastKnownGoodSector +gDamagedSaveSectors +gSaveCounter +gFastSaveSection +gUnknown_03005EB4 +gSaveFileStatus +gGameContinueCallback diff --git a/common_syms/sound.txt b/common_syms/sound.txt new file mode 100644 index 000000000..0f6f2fc75 --- /dev/null +++ b/common_syms/sound.txt @@ -0,0 +1 @@ +gDisableMusic diff --git a/common_syms/sound_check_menu.txt b/common_syms/sound_check_menu.txt new file mode 100644 index 000000000..ba350ad8e --- /dev/null +++ b/common_syms/sound_check_menu.txt @@ -0,0 +1 @@ +gUnknown_03005D30 diff --git a/common_syms/start_menu.txt b/common_syms/start_menu.txt new file mode 100644 index 000000000..bc0c247d1 --- /dev/null +++ b/common_syms/start_menu.txt @@ -0,0 +1 @@ +gCallback_03004AE8 diff --git a/common_syms/tv.txt b/common_syms/tv.txt new file mode 100644 index 000000000..829139f8f --- /dev/null +++ b/common_syms/tv.txt @@ -0,0 +1 @@ +gUnknown_03005D38 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/graphics/pokemon/icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc deleted file mode 100644 index f37ec2a7a..000000000 --- a/data/graphics/pokemon/icon_palette_indices.inc +++ /dev/null @@ -1,442 +0,0 @@ - .align 2 -gMonIconPaletteIndices:: @ 83BC400 - .byte 0 @ ?????????? - .byte 1 @ Bulbasaur - .byte 1 @ Ivysaur - .byte 1 @ Venusaur - .byte 0 @ Charmander - .byte 0 @ Charmeleon - .byte 0 @ Charizard - .byte 0 @ Squirtle - .byte 2 @ Wartortle - .byte 2 @ Blastoise - .byte 1 @ Caterpie - .byte 1 @ Metapod - .byte 0 @ Butterfree - .byte 1 @ Weedle - .byte 2 @ Kakuna - .byte 2 @ Beedrill - .byte 0 @ Pidgey - .byte 0 @ Pidgeotto - .byte 0 @ Pidgeot - .byte 2 @ Rattata - .byte 1 @ Raticate - .byte 0 @ Spearow - .byte 0 @ Fearow - .byte 2 @ Ekans - .byte 2 @ Arbok - .byte 2 @ Pikachu - .byte 0 @ Raichu - .byte 2 @ Sandshrew - .byte 2 @ Sandslash - .byte 2 @ Nidoran♀ - .byte 2 @ Nidorina - .byte 2 @ Nidoqueen - .byte 2 @ Nidoran♂ - .byte 2 @ Nidorino - .byte 2 @ Nidoking - .byte 0 @ Clefairy - .byte 0 @ Clefable - .byte 2 @ Vulpix - .byte 1 @ Ninetales - .byte 0 @ Jigglypuff - .byte 0 @ Wigglytuff - .byte 2 @ Zubat - .byte 2 @ Golbat - .byte 1 @ Oddish - .byte 0 @ Gloom - .byte 0 @ Vileplume - .byte 0 @ Paras - .byte 0 @ Parasect - .byte 0 @ Venonat - .byte 2 @ Venomoth - .byte 2 @ Diglett - .byte 2 @ Dugtrio - .byte 1 @ Meowth - .byte 1 @ Persian - .byte 1 @ Psyduck - .byte 2 @ Golduck - .byte 1 @ Mankey - .byte 2 @ Primeape - .byte 0 @ Growlithe - .byte 0 @ Arcanine - .byte 0 @ Poliwag - .byte 0 @ Poliwhirl - .byte 0 @ Poliwrath - .byte 2 @ Abra - .byte 2 @ Kadabra - .byte 2 @ Alakazam - .byte 0 @ Machop - .byte 2 @ Machoke - .byte 0 @ Machamp - .byte 1 @ Bellsprout - .byte 1 @ Weepinbell - .byte 1 @ Victreebel - .byte 2 @ Tentacool - .byte 2 @ Tentacruel - .byte 1 @ Geodude - .byte 1 @ Graveler - .byte 1 @ Golem - .byte 0 @ Ponyta - .byte 0 @ Rapidash - .byte 0 @ Slowpoke - .byte 0 @ Slowbro - .byte 0 @ Magnemite - .byte 0 @ Magneton - .byte 1 @ Farfetch'd - .byte 2 @ Doduo - .byte 2 @ Dodrio - .byte 2 @ Seel - .byte 2 @ Dewgong - .byte 2 @ Grimer - .byte 2 @ Muk - .byte 2 @ Shellder - .byte 2 @ Cloyster - .byte 2 @ Gastly - .byte 2 @ Haunter - .byte 2 @ Gengar - .byte 2 @ Onix - .byte 2 @ Drowzee - .byte 1 @ Hypno - .byte 2 @ Krabby - .byte 2 @ Kingler - .byte 0 @ Voltorb - .byte 0 @ Electrode - .byte 0 @ Exeggcute - .byte 1 @ Exeggutor - .byte 1 @ Cubone - .byte 1 @ Marowak - .byte 2 @ Hitmonlee - .byte 2 @ Hitmonchan - .byte 1 @ Lickitung - .byte 2 @ Koffing - .byte 2 @ Weezing - .byte 1 @ Rhyhorn - .byte 1 @ Rhydon - .byte 0 @ Chansey - .byte 0 @ Tangela - .byte 1 @ Kangaskhan - .byte 0 @ Horsea - .byte 0 @ Seadra - .byte 0 @ Goldeen - .byte 0 @ Seaking - .byte 2 @ Staryu - .byte 2 @ Starmie - .byte 0 @ Mr. mime - .byte 1 @ Scyther - .byte 2 @ Jynx - .byte 1 @ Electabuzz - .byte 0 @ Magmar - .byte 2 @ Pinsir - .byte 2 @ Tauros - .byte 0 @ Magikarp - .byte 0 @ Gyarados - .byte 2 @ Lapras - .byte 2 @ Ditto - .byte 2 @ Eevee - .byte 0 @ Vaporeon - .byte 0 @ Jolteon - .byte 0 @ Flareon - .byte 0 @ Porygon - .byte 0 @ Omanyte - .byte 0 @ Omastar - .byte 2 @ Kabuto - .byte 2 @ Kabutops - .byte 0 @ Aerodactyl - .byte 1 @ Snorlax - .byte 0 @ Articuno - .byte 0 @ Zapdos - .byte 0 @ Moltres - .byte 0 @ Dratini - .byte 0 @ Dragonair - .byte 2 @ Dragonite - .byte 2 @ Mewtwo - .byte 0 @ Mew - .byte 1 @ Chikorita - .byte 1 @ Bayleef - .byte 1 @ Meganium - .byte 1 @ Cyndaquil - .byte 1 @ Quilava - .byte 1 @ Typhlosion - .byte 2 @ Totodile - .byte 2 @ Croconaw - .byte 2 @ Feraligatr - .byte 2 @ Sentret - .byte 2 @ Furret - .byte 2 @ Hoothoot - .byte 2 @ Noctowl - .byte 0 @ Ledyba - .byte 0 @ Ledian - .byte 1 @ Spinarak - .byte 0 @ Ariados - .byte 2 @ Crobat - .byte 2 @ Chinchou - .byte 0 @ Lanturn - .byte 0 @ Pichu - .byte 0 @ Cleffa - .byte 1 @ Igglybuff - .byte 2 @ Togepi - .byte 2 @ Togetic - .byte 0 @ Natu - .byte 0 @ Xatu - .byte 2 @ Mareep - .byte 0 @ Flaaffy - .byte 0 @ Ampharos - .byte 1 @ Bellossom - .byte 2 @ Marill - .byte 2 @ Azumarill - .byte 1 @ Sudowoodo - .byte 1 @ Politoed - .byte 1 @ Hoppip - .byte 1 @ Skiploom - .byte 2 @ Jumpluff - .byte 2 @ Aipom - .byte 1 @ Sunkern - .byte 1 @ Sunflora - .byte 1 @ Yanma - .byte 0 @ Wooper - .byte 0 @ Quagsire - .byte 2 @ Espeon - .byte 2 @ Umbreon - .byte 2 @ Murkrow - .byte 0 @ Slowking - .byte 0 @ Misdreavus - .byte 0 @ Unown A - .byte 0 @ Wobbuffet - .byte 1 @ Girafarig - .byte 0 @ Pineco - .byte 2 @ Forretress - .byte 2 @ Dunsparce - .byte 2 @ Gligar - .byte 0 @ Steelix - .byte 0 @ Snubbull - .byte 2 @ Granbull - .byte 0 @ Qwilfish - .byte 0 @ Scizor - .byte 1 @ Shuckle - .byte 2 @ Heracross - .byte 0 @ Sneasel - .byte 0 @ Teddiursa - .byte 2 @ Ursaring - .byte 0 @ Slugma - .byte 0 @ Magcargo - .byte 2 @ Swinub - .byte 2 @ Piloswine - .byte 0 @ Corsola - .byte 0 @ Remoraid - .byte 0 @ Octillery - .byte 0 @ Delibird - .byte 2 @ Mantine - .byte 0 @ Skarmory - .byte 0 @ Houndour - .byte 0 @ Houndoom - .byte 0 @ Kingdra - .byte 0 @ Phanpy - .byte 0 @ Donphan - .byte 0 @ Porygon2 - .byte 2 @ Stantler - .byte 1 @ Smeargle - .byte 2 @ Tyrogue - .byte 2 @ Hitmontop - .byte 1 @ Smoochum - .byte 1 @ Elekid - .byte 1 @ Magby - .byte 1 @ Miltank - .byte 1 @ Blissey - .byte 0 @ Raikou - .byte 2 @ Entei - .byte 0 @ Suicune - .byte 1 @ Larvitar - .byte 0 @ Pupitar - .byte 1 @ Tyranitar - .byte 0 @ Lugia - .byte 1 @ Ho-Oh - .byte 1 @ Celebi - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 0 @ ? - .byte 1 @ Treecko - .byte 0 @ Grovyle - .byte 1 @ Sceptile - .byte 0 @ Torchic - .byte 0 @ Combusken - .byte 0 @ Blaziken - .byte 0 @ Mudkip - .byte 0 @ Marshtomp - .byte 0 @ Swampert - .byte 2 @ Poochyena - .byte 2 @ Mightyena - .byte 2 @ Zigzagoon - .byte 2 @ Linoone - .byte 0 @ Wurmple - .byte 2 @ Silcoon - .byte 0 @ Beautifly - .byte 2 @ Cascoon - .byte 1 @ Dustox - .byte 1 @ Lotad - .byte 1 @ Lombre - .byte 1 @ Ludicolo - .byte 1 @ Seedot - .byte 1 @ Nuzleaf - .byte 0 @ Shiftry - .byte 1 @ Nincada - .byte 1 @ Ninjask - .byte 1 @ Shedinja - .byte 2 @ Taillow - .byte 2 @ Swellow - .byte 1 @ Shroomish - .byte 1 @ Breloom - .byte 1 @ Spinda - .byte 0 @ Wingull - .byte 0 @ Pelipper - .byte 2 @ Surskit - .byte 0 @ Masquerain - .byte 2 @ Wailmer - .byte 0 @ Wailord - .byte 0 @ Skitty - .byte 2 @ Delcatty - .byte 1 @ Kecleon - .byte 1 @ Baltoy - .byte 0 @ Claydol - .byte 0 @ Nosepass - .byte 1 @ Torkoal - .byte 2 @ Sableye - .byte 0 @ Barboach - .byte 0 @ Whiscash - .byte 0 @ Luvdisc - .byte 0 @ Corphish - .byte 0 @ Crawdaunt - .byte 2 @ Feebas - .byte 0 @ Milotic - .byte 0 @ Carvanha - .byte 0 @ Sharpedo - .byte 1 @ Trapinch - .byte 1 @ Vibrava - .byte 1 @ Flygon - .byte 2 @ Makuhita - .byte 1 @ Hariyama - .byte 1 @ Electrike - .byte 0 @ Manectric - .byte 1 @ Numel - .byte 0 @ Camerupt - .byte 2 @ Spheal - .byte 2 @ Sealeo - .byte 0 @ Walrein - .byte 1 @ Cacnea - .byte 1 @ Cacturne - .byte 2 @ Snorunt - .byte 0 @ Glalie - .byte 1 @ Lunatone - .byte 0 @ Solrock - .byte 2 @ Azurill - .byte 0 @ Spoink - .byte 2 @ Grumpig - .byte 0 @ Plusle - .byte 0 @ Minun - .byte 2 @ Mawile - .byte 0 @ Meditite - .byte 0 @ Medicham - .byte 0 @ Swablu - .byte 0 @ Altaria - .byte 0 @ Wynaut - .byte 0 @ Duskull - .byte 0 @ Dusclops - .byte 0 @ Roselia - .byte 2 @ Slakoth - .byte 2 @ Vigoroth - .byte 1 @ Slaking - .byte 1 @ Gulpin - .byte 2 @ Swalot - .byte 1 @ Tropius - .byte 0 @ Whismur - .byte 2 @ Loudred - .byte 2 @ Exploud - .byte 0 @ Clamperl - .byte 0 @ Huntail - .byte 0 @ Gorebyss - .byte 0 @ Absol - .byte 0 @ Shuppet - .byte 0 @ Banette - .byte 2 @ Seviper - .byte 0 @ Zangoose - .byte 1 @ Relicanth - .byte 2 @ Aron - .byte 2 @ Lairon - .byte 2 @ Aggron - .byte 0 @ Castform - .byte 0 @ Volbeat - .byte 2 @ Illumise - .byte 2 @ Lileep - .byte 0 @ Cradily - .byte 0 @ Anorith - .byte 0 @ Armaldo - .byte 1 @ Ralts - .byte 1 @ Kirlia - .byte 1 @ Gardevoir - .byte 2 @ Bagon - .byte 2 @ Shelgon - .byte 0 @ Salamence - .byte 0 @ Beldum - .byte 0 @ Metang - .byte 0 @ Metagross - .byte 2 @ Regirock - .byte 2 @ Regice - .byte 2 @ Registeel - .byte 2 @ Kyogre - .byte 0 @ Groudon - .byte 1 @ Rayquaza - .byte 0 @ Latias - .byte 2 @ Latios - .byte 0 @ Jirachi - .byte 0 @ Deoxys - .byte 0 @ Chimecho - .byte 1 @ Egg - .byte 0 @ Unown B - .byte 0 @ Unown C - .byte 0 @ Unown D - .byte 0 @ Unown E - .byte 0 @ Unown F - .byte 0 @ Unown G - .byte 0 @ Unown H - .byte 0 @ Unown I - .byte 0 @ Unown J - .byte 0 @ Unown K - .byte 0 @ Unown L - .byte 0 @ Unown M - .byte 0 @ Unown N - .byte 0 @ Unown O - .byte 0 @ Unown P - .byte 0 @ Unown Q - .byte 0 @ Unown R - .byte 0 @ Unown S - .byte 0 @ Unown T - .byte 0 @ Unown U - .byte 0 @ Unown V - .byte 0 @ Unown W - .byte 0 @ Unown X - .byte 0 @ Unown Y - .byte 0 @ Unown Z - .byte 0 @ Unown Exclamation Mark - .byte 0 @ Unown Question Mark diff --git a/data/graphics/pokemon/icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc deleted file mode 100644 index d9da61ab2..000000000 --- a/data/graphics/pokemon/icon_palette_table.inc +++ /dev/null @@ -1,11 +0,0 @@ - .align 2 -gMonIconPaletteTable:: @ 83BC5B8 - obj_pal gMonIconPalettes + 0 * 32, 56000 - obj_pal gMonIconPalettes + 1 * 32, 56001 - obj_pal gMonIconPalettes + 2 * 32, 56002 - -@ These palettes are actually part of the title screen BG palette and are not -@ used for Pokémon icons. - obj_pal gMonIconPalettes + 3 * 32, 56003 - obj_pal gMonIconPalettes + 4 * 32, 56004 - obj_pal gMonIconPalettes + 5 * 32, 56005 diff --git a/data/graphics/pokemon/icon_table.inc b/data/graphics/pokemon/icon_table.inc deleted file mode 100644 index eeb064208..000000000 --- a/data/graphics/pokemon/icon_table.inc +++ /dev/null @@ -1,442 +0,0 @@ - .align 2 -gMonIconTable:: @ 83BBD20 - .4byte gMonIcon_Bulbasaur - .4byte gMonIcon_Bulbasaur - .4byte gMonIcon_Ivysaur - .4byte gMonIcon_Venusaur - .4byte gMonIcon_Charmander - .4byte gMonIcon_Charmeleon - .4byte gMonIcon_Charizard - .4byte gMonIcon_Squirtle - .4byte gMonIcon_Wartortle - .4byte gMonIcon_Blastoise - .4byte gMonIcon_Caterpie - .4byte gMonIcon_Metapod - .4byte gMonIcon_Butterfree - .4byte gMonIcon_Weedle - .4byte gMonIcon_Kakuna - .4byte gMonIcon_Beedrill - .4byte gMonIcon_Pidgey - .4byte gMonIcon_Pidgeotto - .4byte gMonIcon_Pidgeot - .4byte gMonIcon_Rattata - .4byte gMonIcon_Raticate - .4byte gMonIcon_Spearow - .4byte gMonIcon_Fearow - .4byte gMonIcon_Ekans - .4byte gMonIcon_Arbok - .4byte gMonIcon_Pikachu - .4byte gMonIcon_Raichu - .4byte gMonIcon_Sandshrew - .4byte gMonIcon_Sandslash - .4byte gMonIcon_NidoranF - .4byte gMonIcon_Nidorina - .4byte gMonIcon_Nidoqueen - .4byte gMonIcon_NidoranM - .4byte gMonIcon_Nidorino - .4byte gMonIcon_Nidoking - .4byte gMonIcon_Clefairy - .4byte gMonIcon_Clefable - .4byte gMonIcon_Vulpix - .4byte gMonIcon_Ninetales - .4byte gMonIcon_Jigglypuff - .4byte gMonIcon_Wigglytuff - .4byte gMonIcon_Zubat - .4byte gMonIcon_Golbat - .4byte gMonIcon_Oddish - .4byte gMonIcon_Gloom - .4byte gMonIcon_Vileplume - .4byte gMonIcon_Paras - .4byte gMonIcon_Parasect - .4byte gMonIcon_Venonat - .4byte gMonIcon_Venomoth - .4byte gMonIcon_Diglett - .4byte gMonIcon_Dugtrio - .4byte gMonIcon_Meowth - .4byte gMonIcon_Persian - .4byte gMonIcon_Psyduck - .4byte gMonIcon_Golduck - .4byte gMonIcon_Mankey - .4byte gMonIcon_Primeape - .4byte gMonIcon_Growlithe - .4byte gMonIcon_Arcanine - .4byte gMonIcon_Poliwag - .4byte gMonIcon_Poliwhirl - .4byte gMonIcon_Poliwrath - .4byte gMonIcon_Abra - .4byte gMonIcon_Kadabra - .4byte gMonIcon_Alakazam - .4byte gMonIcon_Machop - .4byte gMonIcon_Machoke - .4byte gMonIcon_Machamp - .4byte gMonIcon_Bellsprout - .4byte gMonIcon_Weepinbell - .4byte gMonIcon_Victreebel - .4byte gMonIcon_Tentacool - .4byte gMonIcon_Tentacruel - .4byte gMonIcon_Geodude - .4byte gMonIcon_Graveler - .4byte gMonIcon_Golem - .4byte gMonIcon_Ponyta - .4byte gMonIcon_Rapidash - .4byte gMonIcon_Slowpoke - .4byte gMonIcon_Slowbro - .4byte gMonIcon_Magnemite - .4byte gMonIcon_Magneton - .4byte gMonIcon_Farfetchd - .4byte gMonIcon_Doduo - .4byte gMonIcon_Dodrio - .4byte gMonIcon_Seel - .4byte gMonIcon_Dewgong - .4byte gMonIcon_Grimer - .4byte gMonIcon_Muk - .4byte gMonIcon_Shellder - .4byte gMonIcon_Cloyster - .4byte gMonIcon_Gastly - .4byte gMonIcon_Haunter - .4byte gMonIcon_Gengar - .4byte gMonIcon_Onix - .4byte gMonIcon_Drowzee - .4byte gMonIcon_Hypno - .4byte gMonIcon_Krabby - .4byte gMonIcon_Kingler - .4byte gMonIcon_Voltorb - .4byte gMonIcon_Electrode - .4byte gMonIcon_Exeggcute - .4byte gMonIcon_Exeggutor - .4byte gMonIcon_Cubone - .4byte gMonIcon_Marowak - .4byte gMonIcon_Hitmonlee - .4byte gMonIcon_Hitmonchan - .4byte gMonIcon_Lickitung - .4byte gMonIcon_Koffing - .4byte gMonIcon_Weezing - .4byte gMonIcon_Rhyhorn - .4byte gMonIcon_Rhydon - .4byte gMonIcon_Chansey - .4byte gMonIcon_Tangela - .4byte gMonIcon_Kangaskhan - .4byte gMonIcon_Horsea - .4byte gMonIcon_Seadra - .4byte gMonIcon_Goldeen - .4byte gMonIcon_Seaking - .4byte gMonIcon_Staryu - .4byte gMonIcon_Starmie - .4byte gMonIcon_Mrmime - .4byte gMonIcon_Scyther - .4byte gMonIcon_Jynx - .4byte gMonIcon_Electabuzz - .4byte gMonIcon_Magmar - .4byte gMonIcon_Pinsir - .4byte gMonIcon_Tauros - .4byte gMonIcon_Magikarp - .4byte gMonIcon_Gyarados - .4byte gMonIcon_Lapras - .4byte gMonIcon_Ditto - .4byte gMonIcon_Eevee - .4byte gMonIcon_Vaporeon - .4byte gMonIcon_Jolteon - .4byte gMonIcon_Flareon - .4byte gMonIcon_Porygon - .4byte gMonIcon_Omanyte - .4byte gMonIcon_Omastar - .4byte gMonIcon_Kabuto - .4byte gMonIcon_Kabutops - .4byte gMonIcon_Aerodactyl - .4byte gMonIcon_Snorlax - .4byte gMonIcon_Articuno - .4byte gMonIcon_Zapdos - .4byte gMonIcon_Moltres - .4byte gMonIcon_Dratini - .4byte gMonIcon_Dragonair - .4byte gMonIcon_Dragonite - .4byte gMonIcon_Mewtwo - .4byte gMonIcon_Mew - .4byte gMonIcon_Chikorita - .4byte gMonIcon_Bayleef - .4byte gMonIcon_Meganium - .4byte gMonIcon_Cyndaquil - .4byte gMonIcon_Quilava - .4byte gMonIcon_Typhlosion - .4byte gMonIcon_Totodile - .4byte gMonIcon_Croconaw - .4byte gMonIcon_Feraligatr - .4byte gMonIcon_Sentret - .4byte gMonIcon_Furret - .4byte gMonIcon_Hoothoot - .4byte gMonIcon_Noctowl - .4byte gMonIcon_Ledyba - .4byte gMonIcon_Ledian - .4byte gMonIcon_Spinarak - .4byte gMonIcon_Ariados - .4byte gMonIcon_Crobat - .4byte gMonIcon_Chinchou - .4byte gMonIcon_Lanturn - .4byte gMonIcon_Pichu - .4byte gMonIcon_Cleffa - .4byte gMonIcon_Igglybuff - .4byte gMonIcon_Togepi - .4byte gMonIcon_Togetic - .4byte gMonIcon_Natu - .4byte gMonIcon_Xatu - .4byte gMonIcon_Mareep - .4byte gMonIcon_Flaaffy - .4byte gMonIcon_Ampharos - .4byte gMonIcon_Bellossom - .4byte gMonIcon_Marill - .4byte gMonIcon_Azumarill - .4byte gMonIcon_Sudowoodo - .4byte gMonIcon_Politoed - .4byte gMonIcon_Hoppip - .4byte gMonIcon_Skiploom - .4byte gMonIcon_Jumpluff - .4byte gMonIcon_Aipom - .4byte gMonIcon_Sunkern - .4byte gMonIcon_Sunflora - .4byte gMonIcon_Yanma - .4byte gMonIcon_Wooper - .4byte gMonIcon_Quagsire - .4byte gMonIcon_Espeon - .4byte gMonIcon_Umbreon - .4byte gMonIcon_Murkrow - .4byte gMonIcon_Slowking - .4byte gMonIcon_Misdreavus - .4byte gMonIcon_UnownA - .4byte gMonIcon_Wobbuffet - .4byte gMonIcon_Girafarig - .4byte gMonIcon_Pineco - .4byte gMonIcon_Forretress - .4byte gMonIcon_Dunsparce - .4byte gMonIcon_Gligar - .4byte gMonIcon_Steelix - .4byte gMonIcon_Snubbull - .4byte gMonIcon_Granbull - .4byte gMonIcon_Qwilfish - .4byte gMonIcon_Scizor - .4byte gMonIcon_Shuckle - .4byte gMonIcon_Heracross - .4byte gMonIcon_Sneasel - .4byte gMonIcon_Teddiursa - .4byte gMonIcon_Ursaring - .4byte gMonIcon_Slugma - .4byte gMonIcon_Magcargo - .4byte gMonIcon_Swinub - .4byte gMonIcon_Piloswine - .4byte gMonIcon_Corsola - .4byte gMonIcon_Remoraid - .4byte gMonIcon_Octillery - .4byte gMonIcon_Delibird - .4byte gMonIcon_Mantine - .4byte gMonIcon_Skarmory - .4byte gMonIcon_Houndour - .4byte gMonIcon_Houndoom - .4byte gMonIcon_Kingdra - .4byte gMonIcon_Phanpy - .4byte gMonIcon_Donphan - .4byte gMonIcon_Porygon2 - .4byte gMonIcon_Stantler - .4byte gMonIcon_Smeargle - .4byte gMonIcon_Tyrogue - .4byte gMonIcon_Hitmontop - .4byte gMonIcon_Smoochum - .4byte gMonIcon_Elekid - .4byte gMonIcon_Magby - .4byte gMonIcon_Miltank - .4byte gMonIcon_Blissey - .4byte gMonIcon_Raikou - .4byte gMonIcon_Entei - .4byte gMonIcon_Suicune - .4byte gMonIcon_Larvitar - .4byte gMonIcon_Pupitar - .4byte gMonIcon_Tyranitar - .4byte gMonIcon_Lugia - .4byte gMonIcon_HoOh - .4byte gMonIcon_Celebi - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_QuestionMark - .4byte gMonIcon_Treecko - .4byte gMonIcon_Grovyle - .4byte gMonIcon_Sceptile - .4byte gMonIcon_Torchic - .4byte gMonIcon_Combusken - .4byte gMonIcon_Blaziken - .4byte gMonIcon_Mudkip - .4byte gMonIcon_Marshtomp - .4byte gMonIcon_Swampert - .4byte gMonIcon_Poochyena - .4byte gMonIcon_Mightyena - .4byte gMonIcon_Zigzagoon - .4byte gMonIcon_Linoone - .4byte gMonIcon_Wurmple - .4byte gMonIcon_Silcoon - .4byte gMonIcon_Beautifly - .4byte gMonIcon_Cascoon - .4byte gMonIcon_Dustox - .4byte gMonIcon_Lotad - .4byte gMonIcon_Lombre - .4byte gMonIcon_Ludicolo - .4byte gMonIcon_Seedot - .4byte gMonIcon_Nuzleaf - .4byte gMonIcon_Shiftry - .4byte gMonIcon_Nincada - .4byte gMonIcon_Ninjask - .4byte gMonIcon_Shedinja - .4byte gMonIcon_Taillow - .4byte gMonIcon_Swellow - .4byte gMonIcon_Shroomish - .4byte gMonIcon_Breloom - .4byte gMonIcon_Spinda - .4byte gMonIcon_Wingull - .4byte gMonIcon_Pelipper - .4byte gMonIcon_Surskit - .4byte gMonIcon_Masquerain - .4byte gMonIcon_Wailmer - .4byte gMonIcon_Wailord - .4byte gMonIcon_Skitty - .4byte gMonIcon_Delcatty - .4byte gMonIcon_Kecleon - .4byte gMonIcon_Baltoy - .4byte gMonIcon_Claydol - .4byte gMonIcon_Nosepass - .4byte gMonIcon_Torkoal - .4byte gMonIcon_Sableye - .4byte gMonIcon_Barboach - .4byte gMonIcon_Whiscash - .4byte gMonIcon_Luvdisc - .4byte gMonIcon_Corphish - .4byte gMonIcon_Crawdaunt - .4byte gMonIcon_Feebas - .4byte gMonIcon_Milotic - .4byte gMonIcon_Carvanha - .4byte gMonIcon_Sharpedo - .4byte gMonIcon_Trapinch - .4byte gMonIcon_Vibrava - .4byte gMonIcon_Flygon - .4byte gMonIcon_Makuhita - .4byte gMonIcon_Hariyama - .4byte gMonIcon_Electrike - .4byte gMonIcon_Manectric - .4byte gMonIcon_Numel - .4byte gMonIcon_Camerupt - .4byte gMonIcon_Spheal - .4byte gMonIcon_Sealeo - .4byte gMonIcon_Walrein - .4byte gMonIcon_Cacnea - .4byte gMonIcon_Cacturne - .4byte gMonIcon_Snorunt - .4byte gMonIcon_Glalie - .4byte gMonIcon_Lunatone - .4byte gMonIcon_Solrock - .4byte gMonIcon_Azurill - .4byte gMonIcon_Spoink - .4byte gMonIcon_Grumpig - .4byte gMonIcon_Plusle - .4byte gMonIcon_Minun - .4byte gMonIcon_Mawile - .4byte gMonIcon_Meditite - .4byte gMonIcon_Medicham - .4byte gMonIcon_Swablu - .4byte gMonIcon_Altaria - .4byte gMonIcon_Wynaut - .4byte gMonIcon_Duskull - .4byte gMonIcon_Dusclops - .4byte gMonIcon_Roselia - .4byte gMonIcon_Slakoth - .4byte gMonIcon_Vigoroth - .4byte gMonIcon_Slaking - .4byte gMonIcon_Gulpin - .4byte gMonIcon_Swalot - .4byte gMonIcon_Tropius - .4byte gMonIcon_Whismur - .4byte gMonIcon_Loudred - .4byte gMonIcon_Exploud - .4byte gMonIcon_Clamperl - .4byte gMonIcon_Huntail - .4byte gMonIcon_Gorebyss - .4byte gMonIcon_Absol - .4byte gMonIcon_Shuppet - .4byte gMonIcon_Banette - .4byte gMonIcon_Seviper - .4byte gMonIcon_Zangoose - .4byte gMonIcon_Relicanth - .4byte gMonIcon_Aron - .4byte gMonIcon_Lairon - .4byte gMonIcon_Aggron - .4byte gMonIcon_Castform - .4byte gMonIcon_Volbeat - .4byte gMonIcon_Illumise - .4byte gMonIcon_Lileep - .4byte gMonIcon_Cradily - .4byte gMonIcon_Anorith - .4byte gMonIcon_Armaldo - .4byte gMonIcon_Ralts - .4byte gMonIcon_Kirlia - .4byte gMonIcon_Gardevoir - .4byte gMonIcon_Bagon - .4byte gMonIcon_Shelgon - .4byte gMonIcon_Salamence - .4byte gMonIcon_Beldum - .4byte gMonIcon_Metang - .4byte gMonIcon_Metagross - .4byte gMonIcon_Regirock - .4byte gMonIcon_Regice - .4byte gMonIcon_Registeel - .4byte gMonIcon_Kyogre - .4byte gMonIcon_Groudon - .4byte gMonIcon_Rayquaza - .4byte gMonIcon_Latias - .4byte gMonIcon_Latios - .4byte gMonIcon_Jirachi - .4byte gMonIcon_Deoxys - .4byte gMonIcon_Chimecho - .4byte gMonIcon_Egg - .4byte gMonIcon_UnownB - .4byte gMonIcon_UnownC - .4byte gMonIcon_UnownD - .4byte gMonIcon_UnownE - .4byte gMonIcon_UnownF - .4byte gMonIcon_UnownG - .4byte gMonIcon_UnownH - .4byte gMonIcon_UnownI - .4byte gMonIcon_UnownJ - .4byte gMonIcon_UnownK - .4byte gMonIcon_UnownL - .4byte gMonIcon_UnownM - .4byte gMonIcon_UnownN - .4byte gMonIcon_UnownO - .4byte gMonIcon_UnownP - .4byte gMonIcon_UnownQ - .4byte gMonIcon_UnownR - .4byte gMonIcon_UnownS - .4byte gMonIcon_UnownT - .4byte gMonIcon_UnownU - .4byte gMonIcon_UnownV - .4byte gMonIcon_UnownW - .4byte gMonIcon_UnownX - .4byte gMonIcon_UnownY - .4byte gMonIcon_UnownZ - .4byte gMonIcon_UnownExclamationMark - .4byte gMonIcon_UnownQuestionMark diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s deleted file mode 100644 index ff5aa33dc..000000000 --- a/data/pokemon_icon.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 83BBD20 - .include "data/graphics/pokemon/icon_table.inc" - -@ 83BC400 - .include "data/graphics/pokemon/icon_palette_indices.inc" - -@ 83BC5B8 - .include "data/graphics/pokemon/icon_palette_table.inc" - - .align 2 -gOamData_83BC5E8:: @ 83BC5E8 - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83BC5F0:: @ 83BC5F0 - obj_image_anim_frame 0, 6 - obj_image_anim_frame 1, 6 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC5FC:: @ 83BC5FC - obj_image_anim_frame 0, 8 - obj_image_anim_frame 1, 8 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC608:: @ 83BC608 - obj_image_anim_frame 0, 14 - obj_image_anim_frame 1, 14 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC614:: @ 83BC614 - obj_image_anim_frame 0, 22 - obj_image_anim_frame 1, 22 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnim_83BC620:: @ 83BC620 - obj_image_anim_frame 0, 29 - obj_image_anim_frame 0, 29 - obj_image_anim_jump 0 - - .align 2 -gSpriteAnimTable_83BC62C:: @ 83BC62C - .4byte gSpriteAnim_83BC5F0 - .4byte gSpriteAnim_83BC5FC - .4byte gSpriteAnim_83BC608 - .4byte gSpriteAnim_83BC614 - .4byte gSpriteAnim_83BC620 - - .align 2 -gSpriteAffineAnim_83BC640:: @ 83BC640 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 10 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83BC650:: @ 83BC650 - obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 122 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83BC660:: @ 83BC660 - .4byte gSpriteAffineAnim_83BC640 - .4byte gSpriteAffineAnim_83BC650 - - .align 1 -gSpriteImageSizes:: @ 83BC668 - @ square - .2byte 0x20 @ 1×1 - .2byte 0x80 @ 2×2 - .2byte 0x200 @ 4×4 - .2byte 0x800 @ 8×8 - - @ horizontal rectangle - .2byte 0x40 @ 2×1 - .2byte 0x80 @ 4×1 - .2byte 0x100 @ 4×2 - .2byte 0x400 @ 8×4 - - @ vertical rectangle - .2byte 0x40 @ 1×2 - .2byte 0x80 @ 1×4 - .2byte 0x100 @ 2×4 - .2byte 0x400 @ 4×8 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/contest_painting.h b/include/contest_painting.h index ad1cecfed..48ab95fbc 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -49,11 +49,6 @@ struct ContestEntry /*0x16*/ u8 trainer_name[OT_NAME_LENGTH]; }; -struct Unk3000756 -{ - /*0x00*/ u8 var_0; -}; - struct LabelPair { const u8 *prefix; diff --git a/include/event_data.h b/include/event_data.h index 5cac27cc8..98e4a6da3 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -25,4 +25,20 @@ u8 FlagSet(u16 id); u8 FlagReset(u16 id); bool8 FlagGet(u16 id); +extern u16 gSpecialVar_0x8000; +extern u16 gSpecialVar_0x8001; +extern u16 gSpecialVar_0x8002; +extern u16 gSpecialVar_0x8003; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gSpecialVar_0x8007; +extern u16 gSpecialVar_0x8008; +extern u16 gSpecialVar_0x8009; +extern u16 gSpecialVar_0x800A; +extern u16 gSpecialVar_0x800B; +extern u16 gScriptResult; +extern u16 gScriptLastTalked; +extern u16 gScriptFacing; + #endif // GUARD_EVENT_DATA_H diff --git a/include/field_effect.h b/include/field_effect.h index cd84652b1..bf80ca0dc 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 *); @@ -243,4 +245,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); void sub_80878A8(void); void sub_8087BA8(void); +extern u32 gUnknown_0202FF84[8]; + #endif // GUARD_FIELD_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 6595a51ca..d2a1a9b1f 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -70,8 +70,6 @@ extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; -extern u32 gUnknown_0202FF84[]; - extern const struct Coords16 gDirectionToVector[]; void FieldObjectCB_BerryTree(struct Sprite *); diff --git a/include/field_specials.h b/include/field_specials.h index 710f0a2a0..d61aa3b20 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -8,11 +8,6 @@ struct ElevatorMenu { u8 var3; }; -extern struct ElevatorMenu gUnknown_03000760[20]; -extern struct WarpData gUnknown_020297F0; -extern u8 gBattleOutcome; - -extern u16 gScriptResult; extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u32 gUnknown_02039254; @@ -22,9 +17,6 @@ extern u8 gUnknown_0203925A; extern u8 gUnknown_0203925B; extern u8 gUnknown_0203925C; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; - void ResetCyclingRoadChallengeData(void); bool32 CountSSTidalStep(u16); u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); 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..5632cb831 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2435,6 +2435,10 @@ extern const u8 gMonFrontPic_UnownQuestionMark[]; extern const u8 gMonBackPic_UnownQuestionMark[]; extern const u8 gMonIcon_UnownQuestionMark[]; +extern const u8 gMonIcon_QuestionMark[]; +extern const u8 gMonIcon_Egg[]; +extern const u16 gMonIconPalettes[][16]; + // data/graphics.s extern const u8 gBagMaleTiles[]; extern const u8 gBagFemaleTiles[]; @@ -2549,4 +2553,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/libgncmultiboot.h b/include/libgncmultiboot.h index 33c9f6bfa..23ac64d17 100644 --- a/include/libgncmultiboot.h +++ b/include/libgncmultiboot.h @@ -5,6 +5,7 @@ struct GcmbStruct { u16 gcmb_field_0; u8 gcmb_field_2; + u8 filler3[0x2C - 0x3]; }; void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct); 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/pokeblock.h b/include/pokeblock.h index 0d8e965e4..f78ed40c3 100644 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,11 +1,6 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H -struct YesNoCBTable { - void (*yesFunc)(void); - void (*noFunc)(void); -}; - enum { PBLOCK_CLR_BLACK, PBLOCK_CLR_RED, @@ -15,12 +10,6 @@ enum { PBLOCK_CLR_YELLOW }; -extern u8 ewram[]; -extern u8 gUnknown_02039244; -extern u8 gUnknown_02039248[4]; -extern u8 gUnknown_0203924C; -extern const u8 *gUnknown_03000758; - void sub_810B96C(void); u8 sub_810BA50(s16, s16, u8); u8 sub_810C9B0(struct Pokeblock *); 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/script.h b/include/script.h index e35ec7608..b3d888edf 100644 --- a/include/script.h +++ b/include/script.h @@ -55,7 +55,5 @@ u32 CalculateRamScriptChecksum(void); void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); -u16 gScriptResult; -extern u16 gScriptLastTalked; #endif // GUARD_SCRIPT_H 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/use_pokeblock.h b/include/use_pokeblock.h index 978476d89..f34857cf1 100644 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -5,9 +5,6 @@ #ifndef POKERUBY_USE_POKEBLOCK_H #define POKERUBY_USE_POKEBLOCK_H -extern void *gUnknown_02030400; -extern s16 gUnknown_02039312; - void sub_8136130(struct Pokeblock *, MainCallback); #endif //POKERUBY_USE_POKEBLOCK_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 f268e66f7..829051497 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); @@ -147,7 +147,7 @@ SECTIONS { asm/pokemon_storage_system.o(.text); src/pokemon_storage_system.o(.text); asm/pokemon_storage_system.o(.text_8098A38); - asm/pokemon_icon.o(.text); + src/pokemon_icon.o(.text); asm/pokemon_summary_screen.o(.text); src/pokemon_summary_screen.o(.text); asm/pokemon_summary_screen.o(.text_80A0958); @@ -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); @@ -213,15 +212,13 @@ SECTIONS { src/wallclock.o(.text); src/rom6.o(.text); src/pokeblock.o(.text); - asm/fldeff_flash.o(.text); + src/fldeff_flash.o(.text); src/post_battle_event_funcs.o(.text); src/time_events.o(.text); 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); @@ -378,7 +375,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); @@ -390,10 +387,9 @@ 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); + src/pokemon_icon.o(.rodata); data/pokemon_summary_screen.o(.rodata); data/fldeff_cut.o(.rodata); src/item_menu.o(.rodata); @@ -408,7 +404,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); @@ -428,7 +425,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_ai.c b/src/battle_ai.c index d262e69c8..6f91a104d 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -38,7 +38,7 @@ the number of bytes that the current command had reserved for arguments in order to read the next command correctly. refer to battle_ai_scripts.s for the AI scripts. */ -extern u8 *gAIScriptPtr; +EWRAM_DATA u8 *gAIScriptPtr = NULL; static void BattleAICmd_if_random_less_than(void); static void BattleAICmd_if_random_greater_than(void); diff --git a/src/battle_anim.c b/src/battle_anim.c index 55ede1788..6bd98099a 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -49,9 +49,11 @@ extern u16 gUnknown_03004280; extern u16 gUnknown_03004288; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; -extern u16 gSoundAnimFramesToWait; -extern u16 gAnimSpriteIndexArray[8]; -extern s16 gBattleAnimArgs[8]; + +u16 gSoundAnimFramesToWait; +s16 gBattleAnimArgs[8]; +u16 gAnimSpriteIndexArray[8]; + extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; 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/berry_tag_screen.c b/src/berry_tag_screen.c index 6cbc38ecc..ff430e7b2 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -28,16 +28,12 @@ struct Struct2000000 /*0x1FFFF*/ u8 var_1FFFF; }; -struct BerryTagStatus -{ - s16 circles[5]; -}; - extern struct Struct2000000 unk_2000000; -extern u8 gUnknown_0203932C; -extern struct BerryTagStatus gUnknown_0203932E; extern u16 gUnknown_030041B4; +static EWRAM_DATA u8 gUnknown_0203932C = 0; +static EWRAM_DATA s16 gUnknown_0203932E[5] = {0}; + extern const struct CompressedSpriteSheet gUnknown_083C1F74; extern const struct CompressedSpritePalette gUnknown_083C1F7C; @@ -336,19 +332,19 @@ static void sub_8146600(u8 berry) berryInfo = GetBerryInfo(berry + 1); for (i = 0; i < 5; i++) - gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF; + gUnknown_0203932E[i] = (u16)gUnknown_0203932E[i] | 0xFFFF; // argument is the center of the circle if (berryInfo->spicy) - gUnknown_0203932E.circles[0] = sub_80A7E5C(48); + gUnknown_0203932E[0] = sub_80A7E5C(48); if (berryInfo->dry) - gUnknown_0203932E.circles[1] = sub_80A7E5C(88); + gUnknown_0203932E[1] = sub_80A7E5C(88); if (berryInfo->sweet) - gUnknown_0203932E.circles[2] = sub_80A7E5C(128); + gUnknown_0203932E[2] = sub_80A7E5C(128); if (berryInfo->bitter) - gUnknown_0203932E.circles[3] = sub_80A7E5C(168); + gUnknown_0203932E[3] = sub_80A7E5C(168); if (berryInfo->sour) - gUnknown_0203932E.circles[4] = sub_80A7E5C(208); + gUnknown_0203932E[4] = sub_80A7E5C(208); } void sub_81466A0(void) @@ -357,10 +353,10 @@ void sub_81466A0(void) for (i = 0; i < 5; i++) { - if (gUnknown_0203932E.circles[i] != -1) + if (gUnknown_0203932E[i] != -1) { - DestroySprite(&gSprites[gUnknown_0203932E.circles[i]]); - gUnknown_0203932E.circles[i] = -1; + DestroySprite(&gSprites[gUnknown_0203932E[i]]); + gUnknown_0203932E[i] = -1; } } } diff --git a/src/bike.c b/src/bike.c index f37eb2144..58a4f38f4 100644 --- a/src/bike.c +++ b/src/bike.c @@ -15,8 +15,6 @@ extern u8 sub_80608A4(u8); extern u8 gUnknown_02039250; extern u8 gUnknown_02039251; extern u8 gUnknown_0202E854; -extern u8 gUnknown_0202E86C[]; -extern u8 gUnknown_0202E874[]; static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); @@ -758,12 +756,12 @@ static bool8 sub_80E5BC8(const u8 *a, const u8 *b) for (i = 0; a[i] != 0; i++) { - if (gUnknown_0202E86C[i] > a[i]) + if (gPlayerAvatar.unk14[i] > a[i]) return FALSE; } for (i = 0; b[i] != 0; i++) { - if (gUnknown_0202E874[i] > b[i]) + if (gPlayerAvatar.unk1C[i] > b[i]) return FALSE; } return TRUE; diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 4de945b9c..b8d7cd386 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -19,8 +19,6 @@ extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; -extern u32 gUnknown_0202FF84[]; - extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) diff --git a/src/cable_club.c b/src/cable_club.c index 70b372205..20b087f4e 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -13,7 +13,6 @@ extern u16 gScriptResult; extern struct TrainerCard gTrainerCards[4]; -extern struct LinkPlayer gLinkPlayers[]; extern u8 gUnknown_03004860; extern u8 gFieldLinkPlayerCount; diff --git a/src/choose_party.c b/src/choose_party.c index 63e9c8477..d8df44028 100644 --- a/src/choose_party.c +++ b/src/choose_party.c @@ -31,7 +31,6 @@ struct UnknownPokemonStruct2 /*0x1D*/ u8 language; }; -extern u8 gSelectedOrderFromParty[]; extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_020384F0; @@ -40,6 +39,8 @@ extern u8 gUnknown_0202E8F6; extern struct Pokemon gUnknown_030042FC[]; extern const u16 gBattleTowerBanlist[]; +EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; + extern void OpenPartyMenu(); extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); extern void LoadHeldItemIconGraphics(void); diff --git a/src/contest_painting.c b/src/contest_painting.c index d75947e05..391cbdfaa 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -14,18 +14,20 @@ #include "unknown_task.h" extern u8 unk_2000000[]; -extern u8 gUnknown_03000750; -extern u16 gUnknown_03000752; -extern u16 gUnknown_03000754; -extern u16 (*gUnknown_03005E10)[][32]; -extern u8 gUnknown_03005E40[]; -extern u16 (*gUnknown_03005E90)[]; + +static u8 gUnknown_03000750; +static u16 gUnknown_03000752; +static u16 gUnknown_03000754; +static u8 gUnknown_03000756; + +u16 (*gUnknown_03005E10)[][32]; +struct Unk03005E20 gUnknown_03005E20; +u8 gUnknown_03005E40[0x4C]; +struct ContestEntry *gUnknown_03005E8C; +u16 (*gUnknown_03005E90)[]; extern struct ContestEntry unk_2015de0; extern struct Unk2015E00 unk_2015e00; -extern struct Unk3000756 gUnknown_03000756; -extern struct Unk03005E20 gUnknown_03005E20; -extern struct ContestEntry *gUnknown_03005E8C; static const u16 gPictureFramePalettes[][16] = { @@ -220,7 +222,7 @@ static void HoldContestPainting(void) case 0: if (!gPaletteFade.active) gUnknown_03000750 = 1; - if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 != 0) + if (gUnknown_03000756 != 0 && gUnknown_03000754 != 0) gUnknown_03000754--; break; case 1: @@ -231,13 +233,13 @@ static void HoldContestPainting(void) gUnknown_03000750 = two; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); } - if (gUnknown_03000756.var_0 != 0) + if (gUnknown_03000756 != 0) gUnknown_03000754 = 0; break; case 2: if (!gPaletteFade.active) SetMainCallback2(CB2_QuitContestPainting); - if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 <= 0x1D) + if (gUnknown_03000756 != 0 && gUnknown_03000754 <= 0x1D) gUnknown_03000754++; break; } @@ -311,13 +313,13 @@ static void ContestPaintingInitVars(bool8 arg0) { if (arg0 == FALSE) { - gUnknown_03000756.var_0 = FALSE; + gUnknown_03000756 = FALSE; gUnknown_03000752 = 0; gUnknown_03000754 = 0; } else { - gUnknown_03000756.var_0 = TRUE; + gUnknown_03000756 = TRUE; gUnknown_03000752 = 15; gUnknown_03000754 = 30; } @@ -325,7 +327,7 @@ static void ContestPaintingInitVars(bool8 arg0) static void ContestPaintingMosaic(void) { - if (gUnknown_03000756.var_0 == FALSE) + if (gUnknown_03000756 == FALSE) { REG_MOSAIC = 0; return; diff --git a/src/credits.c b/src/credits.c index 8c4cfb84d..df70674b6 100644 --- a/src/credits.c +++ b/src/credits.c @@ -177,14 +177,15 @@ extern u16 unk_201f800[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern s16 gUnknown_02039320; -extern u16 gUnknown_02039322; // TASK A -extern u8 gUnknown_02039324; -extern u8 gUnknown_02039325; extern u16 gUnknown_02039358; extern s16 gUnknown_0203935A; extern s16 gUnknown_0203935C; +static EWRAM_DATA s16 gUnknown_02039320 = 0; +static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A +EWRAM_DATA u8 gUnknown_02039324 = 0; +static EWRAM_DATA u8 gUnknown_02039325 = 0; + extern u8 gReservedSpritePaletteCount; // data/hall_of_fame 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/decoration.c b/src/decoration.c index e829cb072..da33b3ab7 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -19,6 +19,27 @@ #include "field_weather.h" #include "decoration.h" +EWRAM_DATA u8 *gUnknown_020388D0 = NULL; +EWRAM_DATA u8 gUnknown_020388D4 = 0; +EWRAM_DATA u8 gUnknown_020388D5 = 0; +EWRAM_DATA u8 gUnknown_020388D6[16] = {0}; +EWRAM_DATA u8 gUnknown_020388E6[12] = {0}; +EWRAM_DATA u8 gUnknown_020388F2 = 0; +EWRAM_DATA u8 gUnknown_020388F3 = 0; +EWRAM_DATA u8 gUnknown_020388F4 = 0; +EWRAM_DATA u8 gUnknown_020388F5 = 0; +EWRAM_DATA u8 gUnknown_020388F6 = 0; +EWRAM_DATA u8 gUnknown_020388F7[8] = {0}; +EWRAM_DATA struct UnkStruct_02038900 gUnknown_02038900 = {0}; +EWRAM_DATA u16 gUnknown_020391A4 = 0; +EWRAM_DATA u16 gUnknown_020391A6 = 0; +EWRAM_DATA u8 gUnknown_020391A8 = 0; +EWRAM_DATA u8 gUnknown_020391A9 = 0; +EWRAM_DATA u8 gUnknown_020391AA = 0; +EWRAM_DATA struct OamData gUnknown_020391AC = {0}; +EWRAM_DATA struct UnkStruct_020391B4 gUnknown_020391B4[16] = {0}; +EWRAM_DATA u8 gUnknown_02039234 = 0; + #if ENGLISH const u8 DecorDesc_SMALL_DESK[] = _( "A small desk built\n" diff --git a/src/event_data.c b/src/event_data.c index c6aecf13c..0484bae02 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -6,7 +6,23 @@ #define TEMP_UPPER_FLAGS_SIZE 0x8 #define TEMP_VARS_SIZE 0x20 -extern u8 gUnknown_0202E8E2[16]; +EWRAM_DATA u16 gSpecialVar_0x8000 = 0; +EWRAM_DATA u16 gSpecialVar_0x8001 = 0; +EWRAM_DATA u16 gSpecialVar_0x8002 = 0; +EWRAM_DATA u16 gSpecialVar_0x8003 = 0; +EWRAM_DATA u16 gSpecialVar_0x8004 = 0; +EWRAM_DATA u16 gSpecialVar_0x8005 = 0; +EWRAM_DATA u16 gSpecialVar_0x8006 = 0; +EWRAM_DATA u16 gSpecialVar_0x8007 = 0; +EWRAM_DATA u16 gSpecialVar_0x8008 = 0; +EWRAM_DATA u16 gSpecialVar_0x8009 = 0; +EWRAM_DATA u16 gSpecialVar_0x800A = 0; +EWRAM_DATA u16 gSpecialVar_0x800B = 0; +EWRAM_DATA u16 gScriptResult = 0; +EWRAM_DATA u16 gScriptLastTalked = 0; +EWRAM_DATA u16 gScriptFacing = 0; +EWRAM_DATA u8 gUnknown_0202E8E2[16] = {0}; + extern u16 *gSpecialVars[]; void InitEventData(void) diff --git a/src/field_camera.c b/src/field_camera.c index 1aed1549b..db51cf054 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -7,8 +7,7 @@ #include "sprite.h" #include "text.h" -extern u8 gUnknown_0202E854; - +EWRAM_DATA u8 gUnknown_0202E854 = 0; struct UnknownStruct { @@ -19,15 +18,15 @@ struct UnknownStruct bool8 unk4; }; -extern struct UnknownStruct gUnknown_03000590; -extern u16 gUnknown_03000598; -extern s16 gUnknown_0300059A; -extern u8 gUnknown_0300059C; -extern void (*gUnknown_030005A0)(void); +static struct UnknownStruct gUnknown_03000590; +static u16 gUnknown_03000598; +static s16 gUnknown_0300059A; +static u8 gUnknown_0300059C; +static void (*gUnknown_030005A0)(void); -extern struct CameraSomething gUnknown_03004880; -extern u16 gUnknown_03004898; -extern u16 gUnknown_0300489C; +struct CameraSomething gUnknown_03004880; +u16 gUnknown_03004898; +u16 gUnknown_0300489C; static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData); static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index a4f52f4b9..4795c7396 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -35,8 +35,11 @@ extern u16 gScriptFacing; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; -extern u8 gUnknown_0202E8C0; -extern u16 gUnknown_0202E8C2; + +static EWRAM_DATA u8 gUnknown_0202E8C0 = 0; +static EWRAM_DATA u16 gUnknown_0202E8C2 = 0; + +u8 gSelectedMapObject; //scripts extern u8 gUnknown_081A2C51[]; diff --git a/src/field_effect.c b/src/field_effect.c index 889664dfa..3632d7053 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -28,6 +28,8 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} +EWRAM_DATA u32 gUnknown_0202FF84[8] = {0}; + const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); const u32 gSpriteImage_839E434[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp"); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index d94c97ff3..f60b1b233 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1902,8 +1902,11 @@ extern void CameraObjectReset1(void); extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u8 gReservedSpritePaletteCount; extern struct Camera gUnknown_0202E844; -extern u8 gUnknown_030005A4; -extern u16 gUnknown_030005A6; + +static u8 gUnknown_030005A4; +static u16 gUnknown_030005A6; + +struct MapObject gMapObjects[16]; void npc_clear_ids_and_state(struct MapObject *mapObj) { @@ -3881,8 +3884,6 @@ u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) return gUnknown_083752D0[sprite->data1](mapObject, sprite); } -extern u32 gUnknown_0202FF84[]; - u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) { u8 berryTreeStage; diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index 46784cff3..87be8e011 100644 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -7,8 +7,6 @@ typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir); -extern u32 gUnknown_0202FF84[]; - extern s16 gUnknown_08376194[]; extern SpriteStepFunc *gUnknown_08376180[]; extern s8 *gUnknown_083761D0[]; diff --git a/src/field_message_box.c b/src/field_message_box.c index 2cd2e66ab..35aac7ac9 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -6,7 +6,7 @@ #include "text.h" #include "text_window.h" -extern struct Window gFieldMessageBoxWindow; +static EWRAM_DATA struct Window gFieldMessageBoxWindow = {0}; static u8 sMessageBoxMode; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 3cdb45584..2a7b2f3e0 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -24,7 +24,7 @@ #include "tv.h" #include "wild_encounter.h" -extern u32 gUnknown_0202FF84[]; +EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {0}; //Functions static bool8 sub_8058854(struct MapObject *, u8); 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..79913e1c5 --- /dev/null +++ b/src/field_screen_effect.c @@ -0,0 +1,340 @@ +#include "global.h" +#include "event_data.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..454bd8d96 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -41,8 +41,26 @@ #elif GERMAN #define CHAR_DECIMAL_SEPARATOR CHAR_COMMA #endif + +extern struct WarpData gUnknown_020297F0; +extern u8 gBattleOutcome; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gScriptResult; + +EWRAM_DATA u8 gUnknown_02039250 = 0; +EWRAM_DATA u8 gUnknown_02039251 = 0; +EWRAM_DATA u32 gUnknown_02039254 = 0; +EWRAM_DATA u8 gUnknown_02039258 = 0; +EWRAM_DATA u8 gUnknown_02039259 = 0; +EWRAM_DATA u8 gUnknown_0203925A = 0; +EWRAM_DATA u8 gUnknown_0203925B = 0; +EWRAM_DATA u8 gUnknown_0203925C = 0; + static void RecordCyclingRoadResults(u32, u8); +static struct ElevatorMenu gUnknown_03000760[20]; + void sub_810D6A4(void) { SetMainCallback2(sub_8145D88); ScriptContext2_Enable(); @@ -1761,7 +1779,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/fieldmap.c b/src/fieldmap.c index e573ec13a..0e0ec246c 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -25,6 +25,8 @@ EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gUnknown_0202E844 = {0}; EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0}; +struct BackupMapData gUnknown_03004870; + static const struct ConnectionFlags sDummyConnectionFlags = {0}; struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection) diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index e837dbd45..b394d1e4c 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -27,7 +27,6 @@ extern struct SpriteTemplate gSpriteTemplate_CutGrass; extern struct MapPosition gUnknown_0203923C; extern u8 gLastFieldPokeMenuOpened; -extern u32 gUnknown_0202FF84[]; extern u8 UseCutScript; diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c new file mode 100644 index 000000000..6c2633567 --- /dev/null +++ b/src/fldeff_flash.c @@ -0,0 +1,306 @@ +#include "global.h" +#include "event_data.h" +#include "field_effect.h" +#include "main.h" +#include "palette.h" +#include "pokemon_menu.h" +#include "rom4.h" +#include "rom6.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" + +struct FlashStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + void (*func)(void); +}; + +extern struct FlashStruct gUnknown_083F7FC4[]; +extern u16 gCaveTransitionPalette_White[]; +extern u16 gCaveTransitionPalette_Black[]; +extern u16 gUnknown_083F808C[]; +extern u16 gUnknown_083F809C[]; +extern u16 gCaveTransitionTilemap[]; +extern u8 gCaveTransitionTiles[]; + +extern u8 gLastFieldPokeMenuOpened; +extern void (*gUnknown_03005CE4)(void); + +extern u8 gUnknown_081B694A[]; + +void sub_810CBFC(void); +void sub_810CC34(void); +bool8 sub_810CD5C(void); +void sub_810CE5C(u8); +void sub_810CE78(u8); +void sub_810CF18(u8); +void sub_810CF5C(u8); +void sub_810CFC4(u8); +void sub_810D00C(u8); +void sub_810D028(u8); +void sub_810D0C4(u8); +void sub_810D128(u8); + +bool8 SetUpFieldMove_Flash(void) +{ + if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH)) + { + gFieldCallback = sub_808AB90; + gUnknown_03005CE4 = sub_810CBFC; + return TRUE; + } + + return FALSE; +} + +void sub_810CBFC(void) +{ + u8 taskId = oei_task_add(); + gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened; + gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16; + gTasks[taskId].data[9] = (uintptr_t)sub_810CC34; +} + +void sub_810CC34(void) +{ + PlaySE(SE_W115); + FlagSet(SYS_USE_FLASH); + ScriptContext1_SetupScript(gUnknown_081B694A); +} + +void sub_810CC54(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void VBlankCB(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_810CC80(void) +{ + u16 ime; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + SetVBlankCallback(VBlankCB); + SetMainCallback2(sub_810CC54); + if (!sub_810CD5C()) + SetMainCallback2(gMain.savedCallback); +} + +bool8 sub_810CD5C(void) +{ + u8 i; + u8 v0 = get_map_light_from_warp0(); + u8 v1 = sav1_map_get_light_level(); + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + gUnknown_083F7FC4[i].func(); + return TRUE; + } + } + + return FALSE; +} + +u8 sub_810CDB8(u8 a1, u8 a2) +{ + u8 i; + u8 v0 = a1; + u8 v1 = a2; + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + return gUnknown_083F7FC4[i].unk2; + } + } + + return FALSE; +} + +u8 fade_type_for_given_maplight_pair(u8 a1, u8 a2) +{ + u8 i; + u8 v0 = a1; + u8 v1 = a2; + + for (i = 0; gUnknown_083F7FC4[i].unk0; i++) + { + if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1) + { + return gUnknown_083F7FC4[i].unk3; + } + } + + return FALSE; +} + +void sub_810CE48(void) +{ + CreateTask(sub_810CE5C, 0); +} + +void sub_810CE5C(u8 taskId) +{ + gTasks[taskId].func = sub_810CE78; +} + +void sub_810CE78(u8 taskId) +{ + REG_DISPCNT = 0; + LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); + LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800); + LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20); + LoadPalette(gUnknown_083F809C, 0xE0, 0x10); + REG_BLDCNT = 15937; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG0CNT = 7948; + REG_DISPCNT = 4416; + gTasks[taskId].func = sub_810CF18; + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = 0; +} + +void sub_810CF18(u8 taskId) +{ + u16 count = gTasks[taskId].data[1]; + u16 blend = count + 0x1000; + REG_BLDALPHA = blend; + if (count <= 0x10) + { + gTasks[taskId].data[1]++; + } + else + { + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_810CF5C; + } +} + +void sub_810CF5C(u8 taskId) +{ + u16 count; + + REG_BLDALPHA = 4112; + + count = gTasks[taskId].data[2]; + + if (count < 8) + { + gTasks[taskId].data[2]++; + LoadPalette(&gUnknown_083F809C[count], 0xE0, 16 - 2 * count); + } + else + { + LoadPalette(gCaveTransitionPalette_White, 0, 0x20); + gTasks[taskId].func = sub_810CFC4; + gTasks[taskId].data[2] = 8; + } +} + +void sub_810CFC4(u8 taskId) +{ + if (gTasks[taskId].data[2]) + gTasks[taskId].data[2]--; + else + SetMainCallback2(gMain.savedCallback); +} + +void sub_810CFF8(void) +{ + CreateTask(sub_810D00C, 0); +} + +void sub_810D00C(u8 taskId) +{ + gTasks[taskId].func = sub_810D028; +} + +void sub_810D028(u8 taskId) +{ + REG_DISPCNT = 0; + LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000); + LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG0CNT = 7948; + REG_DISPCNT = 4416; + LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20); + LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); + gTasks[taskId].func = sub_810D0C4; + gTasks[taskId].data[0] = 16; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; +} + +void sub_810D0C4(u8 taskId) +{ + u16 count = gTasks[taskId].data[2]; + if (count < 16) + { + gTasks[taskId].data[2]++; + gTasks[taskId].data[2]++; + LoadPalette(&gUnknown_083F808C[15 - count], 0xE0, 2 * (count + 1)); + } + else + { + REG_BLDALPHA = 4112; + REG_BLDCNT = 15937; + gTasks[taskId].func = sub_810D128; + } +} + +void sub_810D128(u8 taskId) +{ + u16 count = 16 - gTasks[taskId].data[1]; + u16 blend = count + 0x1000; + REG_BLDALPHA = blend; + if (count) + { + gTasks[taskId].data[1]++; + } + else + { + LoadPalette(gCaveTransitionPalette_Black, 0, 0x20); + SetMainCallback2(gMain.savedCallback); + } +} diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index 1edae09d4..81f4f63c6 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -13,8 +13,6 @@ static void sub_811AA18(void); static void sub_811AA38(void); static void sub_811AA9C(void); -extern u32 gUnknown_0202FF84[]; - extern u8 gLastFieldPokeMenuOpened; extern u16 gScriptResult; extern void (*gFieldCallback)(void); diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 6e782f4ac..4c3e6bf4a 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -15,8 +15,6 @@ static void sub_812C01C(void); static void sub_812C084(u8); static void sub_812C118(u8); -extern u32 gUnknown_0202FF84[]; - extern u8 gLastFieldPokeMenuOpened; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index df12d3072..74e68df06 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -7,8 +7,6 @@ #include "rom6.h" #include "task.h" -extern u32 gUnknown_0202FF84[]; - extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); diff --git a/src/intro.c b/src/intro.c index 462a2134d..a43e0356c 100644 --- a/src/intro.c +++ b/src/intro.c @@ -22,12 +22,8 @@ #include "unknown_task.h" extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gUnknown_02039318; -extern u16 gUnknown_0203931A; extern u16 gUnknown_02039358; extern u16 gUnknown_0203935A; -extern u32 gIntroFrameCounter; -extern struct GcmbStruct gMultibootProgramStruct; extern u16 gSaveFileStatus; extern u8 gReservedSpritePaletteCount; extern const u8 gInterfaceGfx_PokeBall[]; @@ -37,6 +33,12 @@ extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; extern void *const gUnknown_0840B5A0[]; +static EWRAM_DATA u16 gUnknown_02039318 = 0; +static EWRAM_DATA u16 gUnknown_0203931A = 0; + +u32 gIntroFrameCounter; +struct GcmbStruct gMultibootProgramStruct; + //-------------------------------------------------- // Graphics Data //-------------------------------------------------- diff --git a/src/load_save.c b/src/load_save.c index 0630f060c..730aea2b8 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -19,7 +19,10 @@ struct LoadedSaveData struct MailStruct mail[16]; }; -extern struct LoadedSaveData gLoadedSaveData[]; +EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {0}; +EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {0}; + +static EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; void CheckForFlashMemory(void) { @@ -112,27 +115,27 @@ void LoadPlayerBag(void) // load player items. for (i = 0; i < 20; i++) - gLoadedSaveData->items[i] = gSaveBlock1.bagPocket_Items[i]; + gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i]; // load player key items. for (i = 0; i < 20; i++) - gLoadedSaveData->keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i]; + gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i]; // load player pokeballs. for (i = 0; i < 16; i++) - gLoadedSaveData->pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i]; + gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i]; // load player TMs and HMs. for (i = 0; i < 64; i++) - gLoadedSaveData->TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i]; + gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i]; // load player berries. for (i = 0; i < 46; i++) - gLoadedSaveData->berries[i] = gSaveBlock1.bagPocket_Berries[i]; + gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i]; // load mail. for (i = 0; i < 16; i++) - gLoadedSaveData->mail[i] = gSaveBlock1.mail[i]; + gLoadedSaveData.mail[i] = gSaveBlock1.mail[i]; } void SavePlayerBag(void) @@ -141,25 +144,25 @@ void SavePlayerBag(void) // save player items. for (i = 0; i < 20; i++) - gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData->items[i]; + gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i]; // save player key items. for (i = 0; i < 20; i++) - gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData->keyItems[i]; + gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i]; // save player pokeballs. for (i = 0; i < 16; i++) - gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData->pokeBalls[i]; + gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i]; // save player TMs and HMs. for (i = 0; i < 64; i++) - gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData->TMsHMs[i]; + gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i]; // save player berries. for (i = 0; i < 46; i++) - gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData->berries[i]; + gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i]; // save mail. for (i = 0; i < 16; i++) - gSaveBlock1.mail[i] = gLoadedSaveData->mail[i]; + gSaveBlock1.mail[i] = gLoadedSaveData.mail[i]; } 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/menu_cursor.c b/src/menu_cursor.c index c007296dc..64ab36573 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -22,13 +22,12 @@ extern const struct Subsprite gUnknown_0842F790; extern u16 gUnknown_0203A360[]; -extern struct Subsprite gMenuCursorSubsprites[]; - -extern u8 gUnknown_0203A3D0; -extern u8 gUnknown_0203A3D1; -extern u8 gUnknown_0203A3D2; -extern u8 gUnknown_0203A3D3; -extern u8 gUnknown_0203A3D4; +EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0}; +EWRAM_DATA u8 gUnknown_0203A3D0 = 0; +EWRAM_DATA u8 gUnknown_0203A3D1 = 0; +EWRAM_DATA u8 gUnknown_0203A3D2 = 0; +EWRAM_DATA u8 gUnknown_0203A3D3 = 0; +EWRAM_DATA u8 gUnknown_0203A3D4 = 0; void sub_814A590(void) { diff --git a/src/money.c b/src/money.c index ab4508a39..5d9d0b689 100644 --- a/src/money.c +++ b/src/money.c @@ -8,7 +8,8 @@ #define SPRITE_TAG_MONEY (0x2722) extern u16 gSpecialVar_0x8005; -extern u8 gUnknown_02038734; + +static EWRAM_DATA u8 gUnknown_02038734 = 0; extern const struct CompressedSpriteSheet gUnknown_083CF584; extern const struct CompressedSpritePalette gUnknown_083CF58C; diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 2d9e3fa6f..273191192 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -12,9 +12,10 @@ #define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) -extern u8 gUnknown_03004DA0[]; extern u8 (*gCallback_03004AE8)(void); +u8 gUnknown_03004DA0[0x20]; + extern u8 gUnknown_0839B22C[][3]; extern u8 gUnknown_0839B24A[]; extern u8 gUnknown_0839B24D[]; diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 4be5dec1c..89978f635 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -15,7 +15,8 @@ #include "text.h" extern u8 unk_2000000[]; -extern u8 gUnknown_02039338; + +static EWRAM_DATA u8 gUnknown_02039338 = 0; static void VBlankCB(void); static bool8 CheckLanguageMatch(void); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 45ef719da..f7a1b633d 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -16,13 +16,13 @@ #define UNK_MASK_2 0x80 #endif -extern struct ScriptContext gUnknown_02039288; - extern ScrCmdFunc gScriptFuncs[]; extern ScrCmdFunc gScriptFuncs_End[]; extern u8 gOtherText_DataCannotUseVersion[]; +static EWRAM_DATA struct ScriptContext gUnknown_02039288 = {0}; + bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4) { if (!(a1 & UNK_MASK_1)) diff --git a/src/new_game.c b/src/new_game.c index 4b6ea1dd2..226ac9bb7 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -26,7 +26,8 @@ #include "secret_base.h" #include "tv.h" -extern u8 gDifferentSaveFile; +EWRAM_DATA u8 gDifferentSaveFile = 0; +EWRAM_DATA u8 gUnknown_020297ED = 0; extern u8 gPlayerPartyCount; extern u8 gUnknown_03005CE8; diff --git a/src/player_pc.c b/src/player_pc.c index adff9971a..6d52c560a 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -32,8 +32,9 @@ extern u8 sub_807D770(void); extern void sub_808B020(void); extern void sub_80F944C(void); -extern u8 *gPcItemMenuOptionOrder; -extern u8 gPcItemMenuOptionsNum; +static EWRAM_DATA u8 *gPcItemMenuOptionOrder = NULL; + +static u8 gPcItemMenuOptionsNum; extern u8 gUnknown_02038561; diff --git a/src/pokeblock.c b/src/pokeblock.c index b7fa5daa8..775280f6e 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -26,8 +26,24 @@ #include "songs.h" #include "safari_zone.h" #include "use_pokeblock.h" +#include "event_data.h" #include "pokeblock.h" +struct UnkPokeblockStruct +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; +}; + +extern u8 ewram[]; + + +static EWRAM_DATA u8 gUnknown_02039244 = 0; +static EWRAM_DATA struct UnkPokeblockStruct gUnknown_02039248 = {0}; +static EWRAM_DATA u8 gUnknown_0203924C = 0; + // function declarations // gUnknown_083F7EF4 @@ -76,6 +92,8 @@ static void sub_810C5EC(u8); // sub_810C610 static void sub_810C704(u8); +static const u8 *gUnknown_03000758; + // rodata #define GFX_TAG_POKEBLOCK_CASE 14800 @@ -313,7 +331,7 @@ static bool8 sub_810B6C0(void) case 15: sub_810BB0C(); sub_810BB30(); - sub_810BC84(gUnknown_02039248[1]); + sub_810BC84(gUnknown_02039248.unk1); gMain.state++; break; case 16: @@ -453,7 +471,7 @@ static void sub_810BB88(u8 a0) for (i=a0; i<=a0+8; i++) { y = (i - a0) << 1; - if (i == gUnknown_02039248[2]) + if (i == gUnknown_02039248.unk2) { buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); MenuPrint(gStringVar1, 15, y + 1); @@ -500,23 +518,23 @@ static void sub_810BC98(void) static void sub_810BD08(void) { u8 i; - gUnknown_02039248[2] = 0; + gUnknown_02039248.unk2 = 0; for (i=0; i<40; i++) { if (gSaveBlock1.pokeblocks[i].color != 0) - gUnknown_02039248[2]++; + gUnknown_02039248.unk2++; } - if (gUnknown_02039248[2] < 8) + if (gUnknown_02039248.unk2 < 8) { - gUnknown_02039248[3] = gUnknown_02039248[2]; + gUnknown_02039248.unk3 = gUnknown_02039248.unk2; } else { - gUnknown_02039248[3] = 8; + gUnknown_02039248.unk3 = 8; } - if (gUnknown_02039248[1] + 8 > gUnknown_02039248[2] && gUnknown_02039248[1] != 0) + if (gUnknown_02039248.unk1 + 8 > gUnknown_02039248.unk2 && gUnknown_02039248.unk1 != 0) { - gUnknown_02039248[1]--; + gUnknown_02039248.unk1--; } } @@ -526,8 +544,8 @@ static void sub_810BD64(u16 a0, u16 a1) int y; for (i=0; i<14; i++) { - gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0; - gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 1) * 32 + (y = i + 15)] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 2) * 32 + y] = a0; } } @@ -543,7 +561,7 @@ static void sub_810BDAC(bool8 flag) { sub_810BD64(0x2005, 0x2014); } - if (gUnknown_02039248[1]) + if (gUnknown_02039248.unk1) { sub_80F979C(0, 0); } @@ -551,7 +569,7 @@ static void sub_810BDAC(bool8 flag) { sub_80F979C(0, 1); } - if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { sub_80F979C(1, 0); } @@ -562,9 +580,9 @@ static void sub_810BDAC(bool8 flag) for (i=0; i<5; i++) { v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6; - if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]], i + 1) > 0) + if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0) { gBGTilemapBuffers[2][v0] = (i << 12) + 23; gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24; @@ -582,9 +600,9 @@ static void sub_810BDAC(bool8 flag) } } BasicInitMenuWindow(&gWindowConfig_81E6E34); - if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]]), 16, 1); + sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); MenuPrint(gStringVar1, 11, 17); } else @@ -606,48 +624,48 @@ static void sub_810BF7C(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (gUnknown_02039248[0] != 0) + if (gUnknown_02039248.unk0 != 0) { sub_810BD64(5, 20); - gUnknown_02039248[0]--; + gUnknown_02039248.unk0--; sub_810BF38(FALSE); } - else if (gUnknown_02039248[1] != 0) + else if (gUnknown_02039248.unk1 != 0) { - gUnknown_02039248[1]--; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1--; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(FALSE); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (gUnknown_02039248[0] != gUnknown_02039248[3]) + if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3) { sub_810BD64(5, 20); - gUnknown_02039248[0]++; + gUnknown_02039248.unk0++; sub_810BF38(FALSE); } - else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { - gUnknown_02039248[1]++; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1++; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(FALSE); } } else if (gMain.newKeys & SELECT_BUTTON) { - if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { PlaySE(SE_SELECT); sub_810BDAC(TRUE); - gTasks[taskId].data[0] = gUnknown_02039248[1] + gUnknown_02039248[0]; + gTasks[taskId].data[0] = gUnknown_02039248.unk1 + gUnknown_02039248.unk0; gTasks[taskId].func = sub_810C0C8; } } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (gUnknown_02039248[1] + gUnknown_02039248[0] == gUnknown_02039248[2]) + if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 == gUnknown_02039248.unk2) { gScriptResult = 0xffff; sub_810C31C(taskId); @@ -670,36 +688,36 @@ static void sub_810C0C8(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (gUnknown_02039248[0] != 0) + if (gUnknown_02039248.unk0 != 0) { sub_810BD64(5, 20); - gUnknown_02039248[0]--; + gUnknown_02039248.unk0--; sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } - else if (gUnknown_02039248[1] != 0) + else if (gUnknown_02039248.unk1 != 0) { sub_810C1C8(taskId, 0); - gUnknown_02039248[1]--; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1--; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (gUnknown_02039248[0] != gUnknown_02039248[3]) + if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3) { sub_810BD64(5, 20); - gUnknown_02039248[0]++; + gUnknown_02039248.unk0++; sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } - else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2) { sub_810C1C8(taskId, 0); - gUnknown_02039248[1]++; - sub_810BB88(gUnknown_02039248[1]); + gUnknown_02039248.unk1++; + sub_810BB88(gUnknown_02039248.unk1); sub_810BF38(TRUE); sub_810C1C8(taskId, 1); } @@ -730,8 +748,8 @@ static void sub_810C1C8(u8 taskId, u8 flag) { v0 = 0x0005; } - y = gTasks[taskId].data[0] - gUnknown_02039248[1]; - if ((u16)y <= 8 && y != gUnknown_02039248[0]) + y = gTasks[taskId].data[0] - gUnknown_02039248.unk1; + if ((u16)y <= 8 && y != gUnknown_02039248.unk0) { for (i=0; i<14; i++) { @@ -744,8 +762,8 @@ static void sub_810C1C8(u8 taskId, u8 flag) static void sub_810C23C(u8 taskId) { struct Pokeblock buf; - u8 selidx = gUnknown_02039248[1] + gUnknown_02039248[0]; - if (selidx == gUnknown_02039248[2]) + u8 selidx = gUnknown_02039248.unk1 + gUnknown_02039248.unk0; + if (selidx == gUnknown_02039248.unk2) { sub_810BDAC(FALSE); } @@ -754,7 +772,7 @@ static void sub_810C23C(u8 taskId) buf = gSaveBlock1.pokeblocks[selidx]; gSaveBlock1.pokeblocks[selidx] = gSaveBlock1.pokeblocks[gTasks[taskId].data[0]]; gSaveBlock1.pokeblocks[gTasks[taskId].data[0]] = buf; - sub_810BB88(gUnknown_02039248[1]); + sub_810BB88(gUnknown_02039248.unk1); sub_810BDAC(FALSE); } } @@ -801,7 +819,7 @@ static void sub_810C368(u8 taskId) MenuDrawTextWindow(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); - gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1]; + gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; } @@ -856,7 +874,7 @@ static void sub_810C540(u8 taskId) BasicInitMenuWindow(&gWindowConfig_81E6E50); HandleDestroyMenuCursors(); MenuZeroFillWindowRect(7, 4, 13, 11); - StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]].color]); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); } @@ -876,7 +894,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 11); - sub_810CA6C((gUnknown_02039248[0] + gUnknown_02039248[1])); + sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); sub_810BC98(); @@ -887,7 +905,7 @@ static void sub_810C668(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); - if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { sub_80F979C(1, 0); } @@ -908,7 +926,7 @@ static void sub_810C6DC(u8 taskId) static void sub_810C704(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E34); - sub_810BC84(gUnknown_02039248[1]); + sub_810BC84(gUnknown_02039248.unk1); sub_80F979C(1, 1); gTasks[taskId].func = sub_810C6DC; } diff --git a/src/pokedex.c b/src/pokedex.c index 2ef91e472..c132635cb 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -143,13 +143,7 @@ struct UnknownStruct4 extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; -extern struct PokedexView *gPokedexView; extern struct SpriteTemplate gUnknown_02024E8C; -extern u16 gUnknown_0202FFB8; -extern u8 gUnknown_0202FFBA; -extern struct PokedexListItem *gUnknown_0202FFBC; -extern u8 gUnknown_03005CE8; -extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_03005E98; extern const u8 gPokedexMenu_Gfx[]; extern const u8 gUnknown_08E96738[]; @@ -171,6 +165,14 @@ extern const u16 gPokedexMenuSearch_Pal[]; extern const u8 gTypeNames[][7]; extern const u8 gPokedexMenu2_Gfx[]; +static EWRAM_DATA struct PokedexView *gPokedexView = NULL; +static EWRAM_DATA u16 gUnknown_0202FFB8 = 0; +static EWRAM_DATA u8 gUnknown_0202FFBA = 0; +static EWRAM_DATA struct PokedexListItem *gUnknown_0202FFBC = NULL; + +u8 gUnknown_03005CE8; +IntrCallback gUnknown_03005CEC; + static u8 sub_8091E3C(void); static const u16 sPokedexSearchPalette[] = INCBIN_U16("graphics/pokedex/search.gbapal"); diff --git a/src/pokemon_1.c b/src/pokemon_1.c index c55105ef3..c65bfa185 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -18,7 +18,13 @@ extern u8 unk_2000000[]; extern u16 word_2024E82; -extern u8 byte_2024E88; + +static EWRAM_DATA u8 byte_2024E88 = 0; + +u8 gPlayerPartyCount; +struct Pokemon gPlayerParty[6]; +u8 gEnemyPartyCount; +struct Pokemon gEnemyParty[6]; void ZeroBoxMonData(struct BoxPokemon *boxMon) { @@ -249,29 +255,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 +450,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/pokemon_2.c b/src/pokemon_2.c index 543b032e2..a77edbdb2 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -31,10 +31,11 @@ extern u8 gXXX_CritRelated; extern u16 gBattleWeather; extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBattleMovePower; -extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; +EWRAM_DATA struct SpriteTemplate gUnknown_02024E8C = {0}; + extern u8 gBadEggNickname[]; extern const struct SpriteTemplate gSpriteTemplate_8208288[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c new file mode 100644 index 000000000..8994ea49e --- /dev/null +++ b/src/pokemon_icon.c @@ -0,0 +1,1276 @@ +#include "global.h" +#include "graphics.h" +#include "mail_data.h" +#include "species.h" +#include "sprite.h" + +#define POKE_ICON_BASE_PAL_TAG 56000 + +struct MonIconSpriteTemplate +{ + const struct OamData *oam; + const u8 *image; + const union AnimCmd *const *anims; + const union AffineAnimCmd *const *affineAnims; + void (*callback)(struct Sprite *); + u16 paletteTag; +}; + +const u8 * const gMonIconTable[] = +{ + gMonIcon_Bulbasaur, + gMonIcon_Bulbasaur, + gMonIcon_Ivysaur, + gMonIcon_Venusaur, + gMonIcon_Charmander, + gMonIcon_Charmeleon, + gMonIcon_Charizard, + gMonIcon_Squirtle, + gMonIcon_Wartortle, + gMonIcon_Blastoise, + gMonIcon_Caterpie, + gMonIcon_Metapod, + gMonIcon_Butterfree, + gMonIcon_Weedle, + gMonIcon_Kakuna, + gMonIcon_Beedrill, + gMonIcon_Pidgey, + gMonIcon_Pidgeotto, + gMonIcon_Pidgeot, + gMonIcon_Rattata, + gMonIcon_Raticate, + gMonIcon_Spearow, + gMonIcon_Fearow, + gMonIcon_Ekans, + gMonIcon_Arbok, + gMonIcon_Pikachu, + gMonIcon_Raichu, + gMonIcon_Sandshrew, + gMonIcon_Sandslash, + gMonIcon_NidoranF, + gMonIcon_Nidorina, + gMonIcon_Nidoqueen, + gMonIcon_NidoranM, + gMonIcon_Nidorino, + gMonIcon_Nidoking, + gMonIcon_Clefairy, + gMonIcon_Clefable, + gMonIcon_Vulpix, + gMonIcon_Ninetales, + gMonIcon_Jigglypuff, + gMonIcon_Wigglytuff, + gMonIcon_Zubat, + gMonIcon_Golbat, + gMonIcon_Oddish, + gMonIcon_Gloom, + gMonIcon_Vileplume, + gMonIcon_Paras, + gMonIcon_Parasect, + gMonIcon_Venonat, + gMonIcon_Venomoth, + gMonIcon_Diglett, + gMonIcon_Dugtrio, + gMonIcon_Meowth, + gMonIcon_Persian, + gMonIcon_Psyduck, + gMonIcon_Golduck, + gMonIcon_Mankey, + gMonIcon_Primeape, + gMonIcon_Growlithe, + gMonIcon_Arcanine, + gMonIcon_Poliwag, + gMonIcon_Poliwhirl, + gMonIcon_Poliwrath, + gMonIcon_Abra, + gMonIcon_Kadabra, + gMonIcon_Alakazam, + gMonIcon_Machop, + gMonIcon_Machoke, + gMonIcon_Machamp, + gMonIcon_Bellsprout, + gMonIcon_Weepinbell, + gMonIcon_Victreebel, + gMonIcon_Tentacool, + gMonIcon_Tentacruel, + gMonIcon_Geodude, + gMonIcon_Graveler, + gMonIcon_Golem, + gMonIcon_Ponyta, + gMonIcon_Rapidash, + gMonIcon_Slowpoke, + gMonIcon_Slowbro, + gMonIcon_Magnemite, + gMonIcon_Magneton, + gMonIcon_Farfetchd, + gMonIcon_Doduo, + gMonIcon_Dodrio, + gMonIcon_Seel, + gMonIcon_Dewgong, + gMonIcon_Grimer, + gMonIcon_Muk, + gMonIcon_Shellder, + gMonIcon_Cloyster, + gMonIcon_Gastly, + gMonIcon_Haunter, + gMonIcon_Gengar, + gMonIcon_Onix, + gMonIcon_Drowzee, + gMonIcon_Hypno, + gMonIcon_Krabby, + gMonIcon_Kingler, + gMonIcon_Voltorb, + gMonIcon_Electrode, + gMonIcon_Exeggcute, + gMonIcon_Exeggutor, + gMonIcon_Cubone, + gMonIcon_Marowak, + gMonIcon_Hitmonlee, + gMonIcon_Hitmonchan, + gMonIcon_Lickitung, + gMonIcon_Koffing, + gMonIcon_Weezing, + gMonIcon_Rhyhorn, + gMonIcon_Rhydon, + gMonIcon_Chansey, + gMonIcon_Tangela, + gMonIcon_Kangaskhan, + gMonIcon_Horsea, + gMonIcon_Seadra, + gMonIcon_Goldeen, + gMonIcon_Seaking, + gMonIcon_Staryu, + gMonIcon_Starmie, + gMonIcon_Mrmime, + gMonIcon_Scyther, + gMonIcon_Jynx, + gMonIcon_Electabuzz, + gMonIcon_Magmar, + gMonIcon_Pinsir, + gMonIcon_Tauros, + gMonIcon_Magikarp, + gMonIcon_Gyarados, + gMonIcon_Lapras, + gMonIcon_Ditto, + gMonIcon_Eevee, + gMonIcon_Vaporeon, + gMonIcon_Jolteon, + gMonIcon_Flareon, + gMonIcon_Porygon, + gMonIcon_Omanyte, + gMonIcon_Omastar, + gMonIcon_Kabuto, + gMonIcon_Kabutops, + gMonIcon_Aerodactyl, + gMonIcon_Snorlax, + gMonIcon_Articuno, + gMonIcon_Zapdos, + gMonIcon_Moltres, + gMonIcon_Dratini, + gMonIcon_Dragonair, + gMonIcon_Dragonite, + gMonIcon_Mewtwo, + gMonIcon_Mew, + gMonIcon_Chikorita, + gMonIcon_Bayleef, + gMonIcon_Meganium, + gMonIcon_Cyndaquil, + gMonIcon_Quilava, + gMonIcon_Typhlosion, + gMonIcon_Totodile, + gMonIcon_Croconaw, + gMonIcon_Feraligatr, + gMonIcon_Sentret, + gMonIcon_Furret, + gMonIcon_Hoothoot, + gMonIcon_Noctowl, + gMonIcon_Ledyba, + gMonIcon_Ledian, + gMonIcon_Spinarak, + gMonIcon_Ariados, + gMonIcon_Crobat, + gMonIcon_Chinchou, + gMonIcon_Lanturn, + gMonIcon_Pichu, + gMonIcon_Cleffa, + gMonIcon_Igglybuff, + gMonIcon_Togepi, + gMonIcon_Togetic, + gMonIcon_Natu, + gMonIcon_Xatu, + gMonIcon_Mareep, + gMonIcon_Flaaffy, + gMonIcon_Ampharos, + gMonIcon_Bellossom, + gMonIcon_Marill, + gMonIcon_Azumarill, + gMonIcon_Sudowoodo, + gMonIcon_Politoed, + gMonIcon_Hoppip, + gMonIcon_Skiploom, + gMonIcon_Jumpluff, + gMonIcon_Aipom, + gMonIcon_Sunkern, + gMonIcon_Sunflora, + gMonIcon_Yanma, + gMonIcon_Wooper, + gMonIcon_Quagsire, + gMonIcon_Espeon, + gMonIcon_Umbreon, + gMonIcon_Murkrow, + gMonIcon_Slowking, + gMonIcon_Misdreavus, + gMonIcon_UnownA, + gMonIcon_Wobbuffet, + gMonIcon_Girafarig, + gMonIcon_Pineco, + gMonIcon_Forretress, + gMonIcon_Dunsparce, + gMonIcon_Gligar, + gMonIcon_Steelix, + gMonIcon_Snubbull, + gMonIcon_Granbull, + gMonIcon_Qwilfish, + gMonIcon_Scizor, + gMonIcon_Shuckle, + gMonIcon_Heracross, + gMonIcon_Sneasel, + gMonIcon_Teddiursa, + gMonIcon_Ursaring, + gMonIcon_Slugma, + gMonIcon_Magcargo, + gMonIcon_Swinub, + gMonIcon_Piloswine, + gMonIcon_Corsola, + gMonIcon_Remoraid, + gMonIcon_Octillery, + gMonIcon_Delibird, + gMonIcon_Mantine, + gMonIcon_Skarmory, + gMonIcon_Houndour, + gMonIcon_Houndoom, + gMonIcon_Kingdra, + gMonIcon_Phanpy, + gMonIcon_Donphan, + gMonIcon_Porygon2, + gMonIcon_Stantler, + gMonIcon_Smeargle, + gMonIcon_Tyrogue, + gMonIcon_Hitmontop, + gMonIcon_Smoochum, + gMonIcon_Elekid, + gMonIcon_Magby, + gMonIcon_Miltank, + gMonIcon_Blissey, + gMonIcon_Raikou, + gMonIcon_Entei, + gMonIcon_Suicune, + gMonIcon_Larvitar, + gMonIcon_Pupitar, + gMonIcon_Tyranitar, + gMonIcon_Lugia, + gMonIcon_HoOh, + gMonIcon_Celebi, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_QuestionMark, + gMonIcon_Treecko, + gMonIcon_Grovyle, + gMonIcon_Sceptile, + gMonIcon_Torchic, + gMonIcon_Combusken, + gMonIcon_Blaziken, + gMonIcon_Mudkip, + gMonIcon_Marshtomp, + gMonIcon_Swampert, + gMonIcon_Poochyena, + gMonIcon_Mightyena, + gMonIcon_Zigzagoon, + gMonIcon_Linoone, + gMonIcon_Wurmple, + gMonIcon_Silcoon, + gMonIcon_Beautifly, + gMonIcon_Cascoon, + gMonIcon_Dustox, + gMonIcon_Lotad, + gMonIcon_Lombre, + gMonIcon_Ludicolo, + gMonIcon_Seedot, + gMonIcon_Nuzleaf, + gMonIcon_Shiftry, + gMonIcon_Nincada, + gMonIcon_Ninjask, + gMonIcon_Shedinja, + gMonIcon_Taillow, + gMonIcon_Swellow, + gMonIcon_Shroomish, + gMonIcon_Breloom, + gMonIcon_Spinda, + gMonIcon_Wingull, + gMonIcon_Pelipper, + gMonIcon_Surskit, + gMonIcon_Masquerain, + gMonIcon_Wailmer, + gMonIcon_Wailord, + gMonIcon_Skitty, + gMonIcon_Delcatty, + gMonIcon_Kecleon, + gMonIcon_Baltoy, + gMonIcon_Claydol, + gMonIcon_Nosepass, + gMonIcon_Torkoal, + gMonIcon_Sableye, + gMonIcon_Barboach, + gMonIcon_Whiscash, + gMonIcon_Luvdisc, + gMonIcon_Corphish, + gMonIcon_Crawdaunt, + gMonIcon_Feebas, + gMonIcon_Milotic, + gMonIcon_Carvanha, + gMonIcon_Sharpedo, + gMonIcon_Trapinch, + gMonIcon_Vibrava, + gMonIcon_Flygon, + gMonIcon_Makuhita, + gMonIcon_Hariyama, + gMonIcon_Electrike, + gMonIcon_Manectric, + gMonIcon_Numel, + gMonIcon_Camerupt, + gMonIcon_Spheal, + gMonIcon_Sealeo, + gMonIcon_Walrein, + gMonIcon_Cacnea, + gMonIcon_Cacturne, + gMonIcon_Snorunt, + gMonIcon_Glalie, + gMonIcon_Lunatone, + gMonIcon_Solrock, + gMonIcon_Azurill, + gMonIcon_Spoink, + gMonIcon_Grumpig, + gMonIcon_Plusle, + gMonIcon_Minun, + gMonIcon_Mawile, + gMonIcon_Meditite, + gMonIcon_Medicham, + gMonIcon_Swablu, + gMonIcon_Altaria, + gMonIcon_Wynaut, + gMonIcon_Duskull, + gMonIcon_Dusclops, + gMonIcon_Roselia, + gMonIcon_Slakoth, + gMonIcon_Vigoroth, + gMonIcon_Slaking, + gMonIcon_Gulpin, + gMonIcon_Swalot, + gMonIcon_Tropius, + gMonIcon_Whismur, + gMonIcon_Loudred, + gMonIcon_Exploud, + gMonIcon_Clamperl, + gMonIcon_Huntail, + gMonIcon_Gorebyss, + gMonIcon_Absol, + gMonIcon_Shuppet, + gMonIcon_Banette, + gMonIcon_Seviper, + gMonIcon_Zangoose, + gMonIcon_Relicanth, + gMonIcon_Aron, + gMonIcon_Lairon, + gMonIcon_Aggron, + gMonIcon_Castform, + gMonIcon_Volbeat, + gMonIcon_Illumise, + gMonIcon_Lileep, + gMonIcon_Cradily, + gMonIcon_Anorith, + gMonIcon_Armaldo, + gMonIcon_Ralts, + gMonIcon_Kirlia, + gMonIcon_Gardevoir, + gMonIcon_Bagon, + gMonIcon_Shelgon, + gMonIcon_Salamence, + gMonIcon_Beldum, + gMonIcon_Metang, + gMonIcon_Metagross, + gMonIcon_Regirock, + gMonIcon_Regice, + gMonIcon_Registeel, + gMonIcon_Kyogre, + gMonIcon_Groudon, + gMonIcon_Rayquaza, + gMonIcon_Latias, + gMonIcon_Latios, + gMonIcon_Jirachi, + gMonIcon_Deoxys, + gMonIcon_Chimecho, + gMonIcon_Egg, + gMonIcon_UnownB, + gMonIcon_UnownC, + gMonIcon_UnownD, + gMonIcon_UnownE, + gMonIcon_UnownF, + gMonIcon_UnownG, + gMonIcon_UnownH, + gMonIcon_UnownI, + gMonIcon_UnownJ, + gMonIcon_UnownK, + gMonIcon_UnownL, + gMonIcon_UnownM, + gMonIcon_UnownN, + gMonIcon_UnownO, + gMonIcon_UnownP, + gMonIcon_UnownQ, + gMonIcon_UnownR, + gMonIcon_UnownS, + gMonIcon_UnownT, + gMonIcon_UnownU, + gMonIcon_UnownV, + gMonIcon_UnownW, + gMonIcon_UnownX, + gMonIcon_UnownY, + gMonIcon_UnownZ, + gMonIcon_UnownExclamationMark, + gMonIcon_UnownQuestionMark, +}; + +const u8 gMonIconPaletteIndices[] = +{ + 0, // ?????????? + 1, // Bulbasaur + 1, // Ivysaur + 1, // Venusaur + 0, // Charmander + 0, // Charmeleon + 0, // Charizard + 0, // Squirtle + 2, // Wartortle + 2, // Blastoise + 1, // Caterpie + 1, // Metapod + 0, // Butterfree + 1, // Weedle + 2, // Kakuna + 2, // Beedrill + 0, // Pidgey + 0, // Pidgeotto + 0, // Pidgeot + 2, // Rattata + 1, // Raticate + 0, // Spearow + 0, // Fearow + 2, // Ekans + 2, // Arbok + 2, // Pikachu + 0, // Raichu + 2, // Sandshrew + 2, // Sandslash + 2, // Nidoran♀ + 2, // Nidorina + 2, // Nidoqueen + 2, // Nidoran♂ + 2, // Nidorino + 2, // Nidoking + 0, // Clefairy + 0, // Clefable + 2, // Vulpix + 1, // Ninetales + 0, // Jigglypuff + 0, // Wigglytuff + 2, // Zubat + 2, // Golbat + 1, // Oddish + 0, // Gloom + 0, // Vileplume + 0, // Paras + 0, // Parasect + 0, // Venonat + 2, // Venomoth + 2, // Diglett + 2, // Dugtrio + 1, // Meowth + 1, // Persian + 1, // Psyduck + 2, // Golduck + 1, // Mankey + 2, // Primeape + 0, // Growlithe + 0, // Arcanine + 0, // Poliwag + 0, // Poliwhirl + 0, // Poliwrath + 2, // Abra + 2, // Kadabra + 2, // Alakazam + 0, // Machop + 2, // Machoke + 0, // Machamp + 1, // Bellsprout + 1, // Weepinbell + 1, // Victreebel + 2, // Tentacool + 2, // Tentacruel + 1, // Geodude + 1, // Graveler + 1, // Golem + 0, // Ponyta + 0, // Rapidash + 0, // Slowpoke + 0, // Slowbro + 0, // Magnemite + 0, // Magneton + 1, // Farfetch'd + 2, // Doduo + 2, // Dodrio + 2, // Seel + 2, // Dewgong + 2, // Grimer + 2, // Muk + 2, // Shellder + 2, // Cloyster + 2, // Gastly + 2, // Haunter + 2, // Gengar + 2, // Onix + 2, // Drowzee + 1, // Hypno + 2, // Krabby + 2, // Kingler + 0, // Voltorb + 0, // Electrode + 0, // Exeggcute + 1, // Exeggutor + 1, // Cubone + 1, // Marowak + 2, // Hitmonlee + 2, // Hitmonchan + 1, // Lickitung + 2, // Koffing + 2, // Weezing + 1, // Rhyhorn + 1, // Rhydon + 0, // Chansey + 0, // Tangela + 1, // Kangaskhan + 0, // Horsea + 0, // Seadra + 0, // Goldeen + 0, // Seaking + 2, // Staryu + 2, // Starmie + 0, // Mr. mime + 1, // Scyther + 2, // Jynx + 1, // Electabuzz + 0, // Magmar + 2, // Pinsir + 2, // Tauros + 0, // Magikarp + 0, // Gyarados + 2, // Lapras + 2, // Ditto + 2, // Eevee + 0, // Vaporeon + 0, // Jolteon + 0, // Flareon + 0, // Porygon + 0, // Omanyte + 0, // Omastar + 2, // Kabuto + 2, // Kabutops + 0, // Aerodactyl + 1, // Snorlax + 0, // Articuno + 0, // Zapdos + 0, // Moltres + 0, // Dratini + 0, // Dragonair + 2, // Dragonite + 2, // Mewtwo + 0, // Mew + 1, // Chikorita + 1, // Bayleef + 1, // Meganium + 1, // Cyndaquil + 1, // Quilava + 1, // Typhlosion + 2, // Totodile + 2, // Croconaw + 2, // Feraligatr + 2, // Sentret + 2, // Furret + 2, // Hoothoot + 2, // Noctowl + 0, // Ledyba + 0, // Ledian + 1, // Spinarak + 0, // Ariados + 2, // Crobat + 2, // Chinchou + 0, // Lanturn + 0, // Pichu + 0, // Cleffa + 1, // Igglybuff + 2, // Togepi + 2, // Togetic + 0, // Natu + 0, // Xatu + 2, // Mareep + 0, // Flaaffy + 0, // Ampharos + 1, // Bellossom + 2, // Marill + 2, // Azumarill + 1, // Sudowoodo + 1, // Politoed + 1, // Hoppip + 1, // Skiploom + 2, // Jumpluff + 2, // Aipom + 1, // Sunkern + 1, // Sunflora + 1, // Yanma + 0, // Wooper + 0, // Quagsire + 2, // Espeon + 2, // Umbreon + 2, // Murkrow + 0, // Slowking + 0, // Misdreavus + 0, // Unown A + 0, // Wobbuffet + 1, // Girafarig + 0, // Pineco + 2, // Forretress + 2, // Dunsparce + 2, // Gligar + 0, // Steelix + 0, // Snubbull + 2, // Granbull + 0, // Qwilfish + 0, // Scizor + 1, // Shuckle + 2, // Heracross + 0, // Sneasel + 0, // Teddiursa + 2, // Ursaring + 0, // Slugma + 0, // Magcargo + 2, // Swinub + 2, // Piloswine + 0, // Corsola + 0, // Remoraid + 0, // Octillery + 0, // Delibird + 2, // Mantine + 0, // Skarmory + 0, // Houndour + 0, // Houndoom + 0, // Kingdra + 0, // Phanpy + 0, // Donphan + 0, // Porygon2 + 2, // Stantler + 1, // Smeargle + 2, // Tyrogue + 2, // Hitmontop + 1, // Smoochum + 1, // Elekid + 1, // Magby + 1, // Miltank + 1, // Blissey + 0, // Raikou + 2, // Entei + 0, // Suicune + 1, // Larvitar + 0, // Pupitar + 1, // Tyranitar + 0, // Lugia + 1, // Ho-Oh + 1, // Celebi + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 0, // ? + 1, // Treecko + 0, // Grovyle + 1, // Sceptile + 0, // Torchic + 0, // Combusken + 0, // Blaziken + 0, // Mudkip + 0, // Marshtomp + 0, // Swampert + 2, // Poochyena + 2, // Mightyena + 2, // Zigzagoon + 2, // Linoone + 0, // Wurmple + 2, // Silcoon + 0, // Beautifly + 2, // Cascoon + 1, // Dustox + 1, // Lotad + 1, // Lombre + 1, // Ludicolo + 1, // Seedot + 1, // Nuzleaf + 0, // Shiftry + 1, // Nincada + 1, // Ninjask + 1, // Shedinja + 2, // Taillow + 2, // Swellow + 1, // Shroomish + 1, // Breloom + 1, // Spinda + 0, // Wingull + 0, // Pelipper + 2, // Surskit + 0, // Masquerain + 2, // Wailmer + 0, // Wailord + 0, // Skitty + 2, // Delcatty + 1, // Kecleon + 1, // Baltoy + 0, // Claydol + 0, // Nosepass + 1, // Torkoal + 2, // Sableye + 0, // Barboach + 0, // Whiscash + 0, // Luvdisc + 0, // Corphish + 0, // Crawdaunt + 2, // Feebas + 0, // Milotic + 0, // Carvanha + 0, // Sharpedo + 1, // Trapinch + 1, // Vibrava + 1, // Flygon + 2, // Makuhita + 1, // Hariyama + 1, // Electrike + 0, // Manectric + 1, // Numel + 0, // Camerupt + 2, // Spheal + 2, // Sealeo + 0, // Walrein + 1, // Cacnea + 1, // Cacturne + 2, // Snorunt + 0, // Glalie + 1, // Lunatone + 0, // Solrock + 2, // Azurill + 0, // Spoink + 2, // Grumpig + 0, // Plusle + 0, // Minun + 2, // Mawile + 0, // Meditite + 0, // Medicham + 0, // Swablu + 0, // Altaria + 0, // Wynaut + 0, // Duskull + 0, // Dusclops + 0, // Roselia + 2, // Slakoth + 2, // Vigoroth + 1, // Slaking + 1, // Gulpin + 2, // Swalot + 1, // Tropius + 0, // Whismur + 2, // Loudred + 2, // Exploud + 0, // Clamperl + 0, // Huntail + 0, // Gorebyss + 0, // Absol + 0, // Shuppet + 0, // Banette + 2, // Seviper + 0, // Zangoose + 1, // Relicanth + 2, // Aron + 2, // Lairon + 2, // Aggron + 0, // Castform + 0, // Volbeat + 2, // Illumise + 2, // Lileep + 0, // Cradily + 0, // Anorith + 0, // Armaldo + 1, // Ralts + 1, // Kirlia + 1, // Gardevoir + 2, // Bagon + 2, // Shelgon + 0, // Salamence + 0, // Beldum + 0, // Metang + 0, // Metagross + 2, // Regirock + 2, // Regice + 2, // Registeel + 2, // Kyogre + 0, // Groudon + 1, // Rayquaza + 0, // Latias + 2, // Latios + 0, // Jirachi + 0, // Deoxys + 0, // Chimecho + 1, // Egg + 0, // Unown B + 0, // Unown C + 0, // Unown D + 0, // Unown E + 0, // Unown F + 0, // Unown G + 0, // Unown H + 0, // Unown I + 0, // Unown J + 0, // Unown K + 0, // Unown L + 0, // Unown M + 0, // Unown N + 0, // Unown O + 0, // Unown P + 0, // Unown Q + 0, // Unown R + 0, // Unown S + 0, // Unown T + 0, // Unown U + 0, // Unown V + 0, // Unown W + 0, // Unown X + 0, // Unown Y + 0, // Unown Z + 0, // Unown Exclamation Mark + 0, // Unown Question Mark +}; + +const struct SpritePalette gMonIconPaletteTable[] = +{ + { gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 }, + { gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 }, + { gMonIconPalettes[2], POKE_ICON_BASE_PAL_TAG + 2 }, + +// There are only 3 actual palettes. The following are unused +// and don't point to valid data. + { gMonIconPalettes[3], POKE_ICON_BASE_PAL_TAG + 3 }, + { gMonIconPalettes[4], POKE_ICON_BASE_PAL_TAG + 4 }, + { gMonIconPalettes[5], POKE_ICON_BASE_PAL_TAG + 5 }, +}; + +static const struct OamData sMonIconOamData = +{ + .size = 2, + .priority = 1, +}; + +// fastest to slowest + +static const union AnimCmd sAnim_0[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_2[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_3[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sAnim_4[] = +{ + ANIMCMD_FRAME(0, 29), + ANIMCMD_FRAME(0, 29), // frame 0 is repeated + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sMonIconAnims[] = +{ + sAnim_0, + sAnim_1, + sAnim_2, + sAnim_3, + sAnim_4, +}; + +static const union AffineAnimCmd sAffineAnim_0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 10), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sAffineAnim_1[] = +{ + AFFINEANIMCMD_FRAME(-2, -2, 0, 122), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const sMonIconAffineAnims[] = +{ + sAffineAnim_0, + sAffineAnim_1, +}; + +const u16 sSpriteImageSizes[3][4] = +{ + // square + { + 0x20, // 1×1 + 0x80, // 2×2 + 0x200, // 4×4 + 0x800, // 8×8 + }, + + // horizontal rectangle + { + 0x40, // 2×1 + 0x80, // 4×1 + 0x100, // 4×2 + 0x400, // 8×4 + }, + + // vertical rectangle + { + 0x40, // 1×2 + 0x80, // 1×4 + 0x100, // 2×4 + 0x400, // 4×8 + }, +}; + +u16 GetUnownLetterByPersonality(u32); +const u8 *GetMonIconPtr(u16, u32 personality); +u8 UpdateMonIconFrame(struct Sprite *); +u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8); +void sub_809D7E8(struct Sprite *); + +// duplicate of sub_809D3A4 +u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate; + struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match + + iconTemplatePtr->oam = &sMonIconOamData; + iconTemplatePtr->image = gMonIconTable[species]; + iconTemplatePtr->anims = sMonIconAnims; + iconTemplatePtr->affineAnims = sMonIconAffineAnims; + iconTemplatePtr->callback = callback; + iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species]; + + spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate = + { + .oam = &sMonIconOamData, + .image = GetMonIconPtr(species, personality), + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + }; + + if (species > SPECIES_EGG) + iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; + + spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + struct MonIconSpriteTemplate iconTemplate; + struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match + + iconTemplatePtr->oam = &sMonIconOamData; + iconTemplatePtr->image = gMonIconTable[species]; + iconTemplatePtr->anims = sMonIconAnims; + iconTemplatePtr->affineAnims = sMonIconAffineAnims; + iconTemplatePtr->callback = callback; + iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species]; + + spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority); + + UpdateMonIconFrame(&gSprites[spriteId]); + + return spriteId; +} + +u16 mon_icon_convert_unown_species_id(u16 species, u32 personality) +{ + u16 result; + + if (species == SPECIES_UNOWN) + { + u16 letter = GetUnownLetterByPersonality(personality); + if (letter == 0) + letter = SPECIES_UNOWN; + else + letter += (SPECIES_UNOWN_B - 1); + result = letter; + } + else + { + if (species > SPECIES_EGG) + result = 260; + else + result = species; + } + + return result; +} + +u16 GetUnownLetterByPersonality(u32 personality) +{ + return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C; +} + +u16 sub_809D4A8(u16 species) +{ + u16 value; + + if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN) + { + if (value == 0) + value += SPECIES_UNOWN; + else + value += (SPECIES_UNOWN_B - 1); + return value; + } + else + { + return mon_icon_convert_unown_species_id(species, 0); + } +} + +const u8 *GetMonIconPtr(u16 species, u32 personality) +{ + u16 convertedSpecies = mon_icon_convert_unown_species_id(species, personality); + return gMonIconTable[convertedSpecies]; +} + +void sub_809D510(struct Sprite *sprite) +{ + sub_809D7E8(sprite); +} + +void sub_809D51C(void) +{ + u8 i; + for (i = 0; i < 6; i++) + LoadSpritePalette(&gMonIconPaletteTable[i]); +} + +// unused +void SafeLoadMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > SPECIES_EGG) + species = 260; + palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +void sub_809D580(u16 species) +{ + u8 palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + +// unused +void FreeMonIconPalettes(void) +{ + u8 i; + for (i = 0; i < 6; i++) + FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag); +} + +// unused +void SafeFreeMonIconPalette(u16 species) +{ + u8 palIndex; + if (species > SPECIES_EGG) + species = 260; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void sub_809D608(u16 species) +{ + u8 palIndex; + palIndex = gMonIconPaletteIndices[species]; + FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); +} + +void sub_809D62C(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); +} + +// TODO: try to find a way to avoid using goto and asm statement +u8 UpdateMonIconFrame(struct Sprite *sprite) +{ + u8 result = 0; + + if (sprite->animDelayCounter == 0) + { + s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue; + + if (frame != -2) + { + if (frame != -1) + goto copy; + goto end; + } + + sprite->animCmdIndex = 0; + goto end; + + copy: + RequestSpriteCopy( + (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame, + (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP, + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]); + { + register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration; + sprite->animDelayCounter = duration; + } + sprite->animCmdIndex++; + result = sprite->animCmdIndex; + } + else + { + sprite->animDelayCounter--; + } + +end: + return result; +} + +u8 CreateMonIconSprite(struct MonIconSpriteTemplate *iconTemplate, s16 x, s16 y, u8 subpriority) +{ + u8 spriteId; + + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[iconTemplate->oam->shape][iconTemplate->oam->size] }; + + struct SpriteTemplate spriteTemplate = + { + .tileTag = 0xFFFF, + .paletteTag = iconTemplate->paletteTag, + .oam = iconTemplate->oam, + .anims = iconTemplate->anims, + .images = &image, + .affineAnims = iconTemplate->affineAnims, + .callback = iconTemplate->callback, + }; + + spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); + gSprites[spriteId].animPaused = TRUE; + gSprites[spriteId].animBeginning = FALSE; + gSprites[spriteId].images = (const struct SpriteFrameImage *)iconTemplate->image; + return spriteId; +} + +void sub_809D7E8(struct Sprite *sprite) +{ + struct SpriteFrameImage image = { NULL, sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] }; + sprite->images = ℑ + DestroySprite(sprite); +} + +void sub_809D824(struct Sprite *sprite, u8 animNum) +{ + sprite->animNum = animNum; + sprite->animDelayCounter = 0; + sprite->animCmdIndex = 0; +} diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 0cab07fc1..5e97523e2 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -12,6 +12,8 @@ extern const struct StorageAction gUnknown_083B6DF4[]; extern const u8 unk_2000000[]; +EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; + #define gUnk2002694 (u8 *)(&unk_2000000[0x2694]) #define gUnk20026A6 (u8 *)(&unk_2000000[0x26a6]) #define gUnk20011fa (u8 *)(&unk_2000000[0x11fa]) diff --git a/src/record_mixing.c b/src/record_mixing.c index e1a72cf2e..9cbcce49c 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,24 +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; + +u32 gUnknown_03005D2C; + +static u8 gUnknown_03000718; +static u8 gUnknown_0300071C[4]; + +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 @@ -46,7 +52,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 +64,6 @@ struct PlayerRecords { u16 filler11C8[0x34]; }; -extern struct PlayerRecords unk_2008000; -extern struct PlayerRecords unk_2018000; - void RecordMixing_PrepareExchangePacket(void) { sub_80BC300(); @@ -67,14 +71,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 +90,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 +175,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 +190,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 +239,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 +273,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 +334,6 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId) } gTasks[task->data[0]].data[0]++; } - //_080B998A if (handledPlayers == GetLinkPlayerCount()) DestroyTask(taskId); } @@ -353,15 +361,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 +387,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 +459,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]); + + r6 += c[d][1]; + *r6 = *(r8 + c[e][1]); + + r8 += c[e][1]; + *r8 = sp0; +} -void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e) +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..076dfecec --- /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, +}; + +static EWRAM_DATA struct RegionMap *gRegionMap = NULL; + +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/rom3.c b/src/rom3.c index 9d8d39f91..02def5dfa 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -24,9 +24,10 @@ extern u16 gBattleTypeFlags; extern u16 gBattleWeather; extern struct BattlePokemon gBattleMons[]; -extern u8 gUnknown_020238C4; -extern u8 gUnknown_020238C5; -extern u8 gUnknown_020238C6; +static EWRAM_DATA u8 gUnknown_020238C4 = 0; +static EWRAM_DATA u8 gUnknown_020238C5 = 0; +static EWRAM_DATA u8 gUnknown_020238C6 = 0; + extern u32 gUnknown_020239FC; extern u8 gBattleBufferA[][0x200]; extern u8 gBattleBufferB[][0x200]; @@ -49,13 +50,14 @@ extern u8 gUnknown_02024C78; extern u8 gBattleOutcome; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; -extern u8 gBattleBuffersTransferData[]; extern u8 gBattleTextBuff1[]; extern u8 gBattleTextBuff2[]; extern u8 gBattleTextBuff3[]; extern void (*gBattleMainFunc)(void); extern void (*gBattleBankFunc[])(void); +u8 gBattleBuffersTransferData[0x170]; + void sub_800B858(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) diff --git a/src/rom4.c b/src/rom4.c index bfc8e0e44..f9006efba 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -60,23 +60,23 @@ struct UnkTVStruct u32 tv_field_4; }; -extern struct WarpData gUnknown_020297F0; -extern struct WarpData gUnknown_020297F8; -extern struct WarpData gUnknown_02029800; -extern struct WarpData gUnknown_02029808; -extern struct UnkPlayerStruct gUnknown_02029810; -extern u16 gUnknown_02029814; -extern bool8 gUnknown_02029816; -extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; - -extern u8 gUnknown_03000580[]; -extern u16 (*gUnknown_03000584)(u32); -extern u8 gUnknown_03000588; - -extern u16 word_3004858; -extern void (*gFieldCallback)(void); -extern u8 gUnknown_03004860; -extern u8 gFieldLinkPlayerCount; +EWRAM_DATA struct WarpData gUnknown_020297F0 = {0}; +EWRAM_DATA struct WarpData gUnknown_020297F8 = {0}; +EWRAM_DATA struct WarpData gUnknown_02029800 = {0}; +EWRAM_DATA struct WarpData gUnknown_02029808 = {0}; +EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; +EWRAM_DATA u16 gUnknown_02029814 = 0; +EWRAM_DATA bool8 gUnknown_02029816 = FALSE; +EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; + +static u8 gUnknown_03000580[4]; +static u16 (*gUnknown_03000584)(u32); +static u8 gUnknown_03000588; + +u16 word_3004858; +void (*gFieldCallback)(void); +u8 gUnknown_03004860; +u8 gFieldLinkPlayerCount; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; @@ -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/rom6.c b/src/rom6.c index 759aed93f..ff032b6c2 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -14,13 +14,13 @@ #include "task.h" extern u16 gScriptLastTalked; -extern u32 gUnknown_0202FF84[]; -extern struct MapPosition gUnknown_0203923C; extern void (*gFieldCallback)(void); extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); extern u8 UseRockSmashScript[]; +EWRAM_DATA struct MapPosition gUnknown_0203923C = {0}; + static void task08_080C9820(u8); static void sub_810B3DC(u8); static void sub_810B428(u8); diff --git a/src/rotating_gate.c b/src/rotating_gate.c index d12a21240..bb3c31dfc 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -565,9 +565,9 @@ static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH }, }; -extern u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX]; -extern const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig; -extern u8 gRotatingGate_PuzzleCount; +static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0}; +static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL; +static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; static int GetCurrentMapRotatingGatePuzzleType(void) { diff --git a/src/save.c b/src/save.c index 570210fb0..adf39268e 100644 --- a/src/save.c +++ b/src/save.c @@ -11,21 +11,23 @@ #define GETBLOCKOFFSET(n) (0xF80 * (n - 1)) #define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum. -extern u32 gLastSaveSectorStatus; // used but in an unferenced function, so unused -extern u16 gLastWrittenSector; -extern u32 gLastSaveCounter; -extern u16 gLastKnownGoodSector; -extern u32 gDamagedSaveSectors; -extern u32 gSaveCounter; extern struct SaveSection unk_2000000; // slow save RAM -extern struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. -extern u16 gUnknown_03005EB4; -extern u16 gSaveFileStatus; -extern u32 gGameContinueCallback; + +u16 gLastWrittenSector; +u32 gLastSaveCounter; +u16 gLastKnownGoodSector; +u32 gDamagedSaveSectors; +u32 gSaveCounter; +struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. +u16 gUnknown_03005EB4; +u16 gSaveFileStatus; +u32 gGameContinueCallback; extern struct PokemonStorage gPokemonStorage; extern struct HallOfFame gHallOfFame; +static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused + const struct SaveSectionLocation gSaveSectionLocations[] = { {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)}, @@ -672,9 +674,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 +686,7 @@ u8 sub_8125E6C(void) else { sub_81257F0(val, gSaveSectionLocations); - retVal = 1; + retVal = TRUE; } if (gDamagedSaveSectors) DoSaveFailedScreen(1); diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index a64b3eb5f..b91e8b5bf 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -22,17 +22,11 @@ #define CLOCK_WIN_TOP (MSG_WIN_TOP - 4) -struct SaveFailedClockStruct -{ - bool16 clockRunning; - u16 timer; // appears to be unused, the only case its "used" cannot be reached normally - u8 unused[0xE]; // appears to be unused space. alternatively, there could have been multiple clock structs. however, neither of these cases are fulfilled, so the purpose of this space is unknown. one theory is that there is room for 3 more clock structs (2 16-bit values), so its possible GF intended there to be support for link-based save failed screens in case the synchronization failed, or it in fact was present in an earlier build but taken out for reasons. -}; - extern u8 unk_2000000[]; -extern u16 gSaveFailedType; -extern struct SaveFailedClockStruct gSaveFailedClockInfo; +static EWRAM_DATA u16 gSaveFailedType = 0; +static EWRAM_DATA u16 gSaveFailedClockInfo[9] = {0}; + extern u32 gDamagedSaveSectors; extern u32 gGameContinueCallback; @@ -83,7 +77,7 @@ void DoSaveFailedScreen(u8 saveType) { SetMainCallback2(CB2_SaveFailedScreen); gSaveFailedType = saveType; - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; } static void VBlankCB(void) @@ -159,7 +153,7 @@ static void CB2_WipeSave(void) { u8 wipeTries = 0; - gSaveFailedClockInfo.clockRunning = TRUE; + gSaveFailedClockInfo[0] = TRUE; while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors. { @@ -208,7 +202,7 @@ static void CB2_WipeSave(void) static void CB2_GameplayCannotBeContinued(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; if (gMain.newKeys & A_BUTTON) { @@ -221,7 +215,7 @@ static void CB2_GameplayCannotBeContinued(void) static void CB2_FadeAndReturnToTitleScreen(void) { - gSaveFailedClockInfo.clockRunning = FALSE; + gSaveFailedClockInfo[0] = FALSE; if (gMain.newKeys & A_BUTTON) { @@ -255,7 +249,7 @@ static void VBlankCB_UpdateClockGraphics(void) gMain.oamBuffer[0].x = 112; gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8; - if (gSaveFailedClockInfo.clockRunning != FALSE) + if (gSaveFailedClockInfo[0] != FALSE) { gMain.oamBuffer[0].tileNum = sClockFrames[n][0]; gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3); @@ -267,8 +261,8 @@ static void VBlankCB_UpdateClockGraphics(void) CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4); - if (gSaveFailedClockInfo.timer) // maybe was used for debugging? - gSaveFailedClockInfo.timer--; + if (gSaveFailedClockInfo[1]) // maybe was used for debugging? + gSaveFailedClockInfo[1]--; } static bool8 VerifySectorWipe(u16 sector) 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/scrcmd.c b/src/scrcmd.c index 45552f2fa..7d719371e 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -48,12 +48,14 @@ typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); extern u32 gUnknown_0202E8AC; -extern u32 gUnknown_0202E8B0; -extern u16 gUnknown_0202E8B4; -extern u16 gUnknown_0202E8B6; -extern u16 gUnknown_0202E8B8; -extern u16 gUnknown_0202E8BA; -extern u16 gUnknown_0202E8BC; + +static EWRAM_DATA u32 gUnknown_0202E8B0 = 0; +static EWRAM_DATA u16 gUnknown_0202E8B4 = 0; +static EWRAM_DATA u16 gUnknown_0202E8B6 = 0; +static EWRAM_DATA u16 gUnknown_0202E8B8 = 0; +static EWRAM_DATA u16 gUnknown_0202E8BA = 0; +static EWRAM_DATA u16 gUnknown_0202E8BC = 0; + extern u16 gSpecialVar_0x8000; extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; @@ -61,8 +63,6 @@ extern u16 gSpecialVar_0x8004; extern u16 gScriptResult; -extern u32 gUnknown_0202FF84[]; - extern u16 gScriptContestCategory; extern SpecialFunc gSpecials[]; diff --git a/src/script.c b/src/script.c index c27eb22fe..e5be913c6 100644 --- a/src/script.c +++ b/src/script.c @@ -4,8 +4,7 @@ #define RAM_SCRIPT_MAGIC 51 -extern u8 *gUnknown_0202E8AC; -extern u32 gUnknown_0202E8B0; +EWRAM_DATA u8 *gUnknown_0202E8AC = NULL; static u8 sScriptContext1Status; static struct ScriptContext sScriptContext1; diff --git a/src/script_movement.c b/src/script_movement.c index 31143ed6f..e25b60a3c 100644 --- a/src/script_movement.c +++ b/src/script_movement.c @@ -5,7 +5,7 @@ #include "task.h" #include "util.h" -extern u8 *gUnknown_020384F8[]; +static EWRAM_DATA u8 *gUnknown_020384F8[16] = {0}; static void sub_80A2198(u8); static u8 sub_80A21E0(void); 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/sound.c b/src/sound.c index c9c4916b0..8d23b7d7a 100644 --- a/src/sound.c +++ b/src/sound.c @@ -17,8 +17,9 @@ struct Fanfare u32 SpeciesToCryId(u32); extern u16 gBattleTypeFlags; -extern struct MusicPlayerInfo *gMPlay_PokemonCry; -extern u8 gPokemonCryBGMDuckingCounter; + +static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL; +static EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; static u16 sCurrentMapMusic; static u16 sNextMapMusic; @@ -26,7 +27,8 @@ static u8 sMapMusicState; static u8 sMapMusicFadeInSpeed; static u16 sFanfareCounter; -extern bool8 gDisableMusic; +bool8 gDisableMusic; + extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 13a6f6f3e..d97ae6d86 100644 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -57,18 +57,19 @@ extern struct ToneData voicegroup_8453190[]; extern struct ToneData voicegroup_84549C0[]; extern struct ToneData voicegroup_8453790[]; -extern int gUnknown_020387B4[9]; - -extern s8 gUnknown_020387B3; -extern u8 gUnknown_020387B1; -extern u8 gUnknown_020387B2; -extern u8 gUnknown_020387D8; -extern u8 gUnknown_020387D9; -extern u8 gUnknown_020387B0; +static EWRAM_DATA u8 gUnknown_020387B0 = 0; +static EWRAM_DATA u8 gUnknown_020387B1 = 0; +static EWRAM_DATA u8 gUnknown_020387B2 = 0; +static EWRAM_DATA s8 gUnknown_020387B3 = 0; +static EWRAM_DATA int gUnknown_020387B4[9] = {0}; +static EWRAM_DATA u8 gUnknown_020387D8 = 0; +static EWRAM_DATA u8 gUnknown_020387D9 = 0; + extern u16 gUnknown_03005D34; extern u8 gUnknown_03005E98; -extern struct MusicPlayerInfo *gUnknown_03005D30; +struct MusicPlayerInfo *gUnknown_03005D30; + extern struct MusicPlayerInfo gMPlay_BGM; void sub_80BA258(u8); diff --git a/src/start_menu.c b/src/start_menu.c index e05f3a999..411690aff 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -51,9 +51,11 @@ static bool8 savingComplete; extern bool8 gDifferentSaveFile; extern u16 gSaveFileStatus; extern u16 gScriptResult; -extern u8 (*gCallback_03004AE8)(void); + extern u8 gUnknown_03004860; +u8 (*gCallback_03004AE8)(void); + EWRAM_DATA static u8 sStartMenuCursorPos = 0; EWRAM_DATA static u8 sNumStartMenuActions = 0; EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0}; diff --git a/src/title_screen.c b/src/title_screen.c index 1ed87ff03..ab0f1d505 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -41,7 +41,6 @@ extern u8 gReservedSpritePaletteCount; extern struct MusicPlayerInfo gMPlay_BGM; -extern u8 gUnknown_0202F7E4; extern u16 gUnknown_030041B4; extern u16 gUnknown_030042C0; extern const u8 gUnknown_08E9D8CC[]; @@ -51,6 +50,8 @@ extern const u8 gVersionTiles[]; extern const u8 gTitleScreenPressStart_Gfx[]; extern const u16 gTitleScreenLogoShinePalette[]; +static EWRAM_DATA u8 gUnknown_0202F7E4 = 0; + #ifdef SAPPHIRE static const u16 sLegendaryMonPalettes[][16] = { diff --git a/src/trainer_card.c b/src/trainer_card.c index 876a3b426..626c5a7bf 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" @@ -50,26 +51,60 @@ extern u8 ewram[]; #define ewram0 (*(struct Struct2000000 *)(ewram)) extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; -extern struct TrainerCard gTrainerCards[4]; + +EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; 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 +206,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 +408,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 +502,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 +522,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 +623,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 +646,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 +661,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 +676,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 +695,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 +741,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 +951,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 +1111,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 +1159,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 +1215,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 +1251,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 +1382,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 +1398,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 +1411,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 +1448,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 +1564,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); } diff --git a/src/trainer_see.c b/src/trainer_see.c index 9b7a47f6b..feb35c67c 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -13,8 +13,6 @@ extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16); extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *); extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *); -extern u32 gUnknown_0202FF84[]; - extern struct SpriteTemplate gSpriteTemplate_839B510; extern struct SpriteTemplate gSpriteTemplate_839B528; @@ -63,14 +63,7 @@ extern u8 gUnknown_02038694; extern struct TVSaleItem gUnknown_02038724[3]; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; -extern u8 gSpecialVar_0x8007; -extern u16 gScriptResult; -extern u8 gUnknown_020387E8; - -extern struct UnkTvStruct gUnknown_03005D38; +struct UnkTvStruct gUnknown_03005D38; extern u8 *gTVBravoTrainerTextGroup[]; extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; @@ -87,8 +80,7 @@ extern u8 *gTVFishingGuruAdviceTextGroup[]; extern u8 *gTVWorldOfMastersTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; -extern u16 gUnknown_020387E0; -extern u16 gUnknown_020387E2; + extern const u8 *gTVNewsTextGroup1[]; extern const u8 *gTVNewsTextGroup2[]; @@ -96,7 +88,6 @@ extern const u8 *gTVNewsTextGroup3[]; extern u16 gScriptLastTalked; - extern u8 gScriptContestCategory; extern u8 gScriptContestRank; extern u8 gUnknown_03004316[11]; @@ -106,10 +97,15 @@ extern u16 gLastUsedItem; extern u8 ewram[]; #define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) -extern u8 gUnknown_020387E4; -extern u8 gUnknown_03000720; -extern s8 gUnknown_03000722; +static EWRAM_DATA u16 gUnknown_020387E0 = 0; +static EWRAM_DATA u16 gUnknown_020387E2 = 0; +static EWRAM_DATA u8 gUnknown_020387E4 = 0; +static EWRAM_DATA ALIGNED(4) u8 gUnknown_020387E8 = 0; // why is this aligned to a 4-byte boundary? + +static u8 gUnknown_03000720; +static u8 gUnknown_03000721; +static s8 gUnknown_03000722; void ClearTVShowData(void) { @@ -365,7 +361,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 +552,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 +581,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 +706,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; @@ -1921,9 +1917,6 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) sub_80C0408(); } -extern u8 gUnknown_03000720; -extern u8 gUnknown_03000721; -extern s8 gUnknown_03000722; s8 sub_80C019C(TVShow tvShows[]); bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); @@ -2720,7 +2713,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 +2971,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 +3126,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 +3142,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 +3239,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/src/use_pokeblock.c b/src/use_pokeblock.c index ce83bc1c2..3aa2f1fa5 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -102,10 +102,11 @@ const struct SpriteTemplate gSpriteTemplate_840618C = { asm(".text\n" ".include \"constants/gba_constants.inc\""); -extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; -extern MainCallback gUnknown_02039308; -extern struct Pokeblock *gUnknown_0203930C; -extern u8 gUnknown_02039310; +static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL; +static EWRAM_DATA MainCallback gUnknown_02039308 = NULL; +static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; +EWRAM_DATA u8 gUnknown_02039310 = 0; +EWRAM_DATA s16 gUnknown_02039312 = 0; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock diff --git a/sym_bss.txt b/sym_bss.txt index 3a00629b5..a6eaeefe1 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -5,6 +5,8 @@ .include "src/link.o" .include "src/rtc.o" +@ daycare + .align 2 gUnknown_03000470: @ 3000470 .space 0x68 @@ -21,9 +23,13 @@ gUnknown_030004E8: @ 30004E8 gUnknown_03000500: @ 3000500 .space 0x8 +@ trade + gUnknown_03000508: @ 3000508 .space 0x8 +@ berry_blender + gUnknown_03000510: @ 3000510 .space 0x10 @@ -49,38 +55,14 @@ gUnknown_03000560: @ 3000560 .space 0x1C .include "src/play_time.o" + .include "src/rom4.o" + @ unused variable? .align 2 -gUnknown_03000580: @ 3000580 - .space 0x4 - -gUnknown_03000584: @ 3000584 - .space 0x4 - -gUnknown_03000588: @ 3000588 - .space 0x8 - -gUnknown_03000590: @ 3000590 - .space 0x8 - -gUnknown_03000598: @ 3000598 - .space 0x2 - -gUnknown_0300059A: @ 300059A - .space 0x2 - -gUnknown_0300059C: @ 300059C - .space 0x4 - -gUnknown_030005A0: @ 30005A0 .space 0x4 -gUnknown_030005A4: @ 30005A4 - .space 0x2 - -gUnknown_030005A6: @ 30005A6 - .space 0x2 - + .include "src/field_camera.o" + .include "src/field_map_obj.o" .include "src/field_message_box.o" .include "src/text_window.o" .include "src/script.o" @@ -89,29 +71,27 @@ gUnknown_030005A6: @ 30005A6 .include "src/tileset_anim.o" .include "src/sound.o" +@ field_weather + gUnknown_030006DC: @ 30006DC .space 0x4 .include "src/field_effect.o" - .include "src/item_menu.o" + .include "src/item_menu.o" + +@ shop gUnknown_03000708: @ 3000708 .space 0x10 -gUnknown_03000718: @ 3000718 - .space 0x4 + .include "src/record_mixing.o" + .include "src/tv.o" -gUnknown_0300071C: @ 300071C + @ unused variable? + .align 2 .space 0x4 -gUnknown_03000720: @ 3000720 - .space 0x1 - -gUnknown_03000721: @ 3000721 - .space 0x1 - -gUnknown_03000722: @ 3000722 - .space 0x6 +@ battle_anim_80CA710 gUnknown_03000728: @ 3000728 .space 0x8 @@ -119,45 +99,39 @@ gUnknown_03000728: @ 3000728 gUnknown_03000730: @ 3000730 .space 0x10 +@ easy_chat + gUnknown_03000740: @ 3000740 .space 0x4 +@ pokenav + gUnknown_03000744: @ 3000744 .space 0x4 +@ mauville_old_man + gUnknown_03000748: @ 3000748 .space 0x4 .include "src/menu_helpers.o" + .include "src/contest_painting.o" + .include "src/pokeblock.o" + @ unused variable? .align 2 -gUnknown_03000750: @ 3000750 - .space 0x2 - -gUnknown_03000752: @ 3000752 - .space 0x2 - -gUnknown_03000754: @ 3000754 - .space 0x2 - -gUnknown_03000756: @ 3000756 - .space 0x2 + .space 0x4 -gUnknown_03000758: @ 3000758 - .space 0x8 + .include "src/field_specials.o" -gUnknown_03000760: @ 3000760 - .space 0x50 +@ learn_move + .align 2 gUnknown_030007B0: @ 30007B0 .space 0x4 -gPcItemMenuOptionsNum: @ 30007B4 - .space 0x4 - -gUnknown_030007B8: @ 30007B8 - .space 0x770 - + .include "src/player_pc.o" + .include "asm/m4a_1.o" .include "src/agb_flash.o" .include "src/siirtc.o" .include "tools/agbcc/lib/libgcc.a:dp-bit.o" diff --git a/sym_common.txt b/sym_common.txt index dc1e62f13..fc729a587 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -3,11 +3,11 @@ .include "string_util.o" .include "link.o" .include "rtc.o" + .include "rom3.o" - .align 4 -gBattleBuffersTransferData: @ 3004040 - .space 0x170 +@ battle + .align 2 gUnknown_030041B0: @ 30041B0 .space 0x4 @@ -104,32 +104,27 @@ gUnknown_03004348: @ 3004348 gUnknown_0300434C: @ 300434C .space 0x4 -gPlayerPartyCount: @ 3004350 - .space 0x10 - -gPlayerParty: @ 3004360 - .space 0x258 - -gEnemyPartyCount: @ 30045B8 - .space 0x8 - -gEnemyParty: @ 30045C0 - .space 0x258 - + .include "pokemon_1.o" .include "rng.o" +@ egg_hatch + .align 2 gUnknown_0300481C: @ 300481C .space 0x4 .include "load_save.o" +@ trade + gUnknown_03004824: @ 3004824 .space 0x4 gUnknown_03004828: @ 3004828 .space 0x8 +@ berry_blender + gUnknown_03004830: @ 3004830 .space 0x4 @@ -142,59 +137,27 @@ gUnknown_03004840: @ 3004840 gUnknown_03004854: @ 3004854 .space 0x4 -word_3004858: @ 3004858 - .space 0x4 - -gFieldCallback: @ 300485C - .space 0x4 - -gUnknown_03004860: @ 3004860 - .space 0x4 - -gFieldLinkPlayerCount: @ 3004864 - .space 0xC - -gUnknown_03004870: @ 3004870 - .space 0x10 - -gUnknown_03004880: @ 3004880 - .space 0x18 - -gUnknown_03004898: @ 3004898 - .space 0x4 - -gUnknown_0300489C: @ 300489C - .space 0x4 - -gMapObjects: @ 30048A0 - .space 0x240 + .include "rom4.o" + .include "fieldmap.o" + .include "field_camera.o" + .include "field_map_obj.o" + .include "field_control_avatar.o" -gSelectedMapObject: @ 3004AE0 - .space 0x4 +@ party_menu? + .align 2 gUnknown_03004AE4: @ 3004AE4 .space 0x4 -gCallback_03004AE8: @ 3004AE8 - .space 0x4 - -gDisableMusic: @ 3004AEC - .space 0x4 - -gSoundAnimFramesToWait: @ 3004AF0 - .space 0x10 - -gBattleAnimArgs: @ 3004B00 - .space 0x10 - -gAnimSpriteIndexArray: @ 3004B10 - .space 0x10 - + .include "start_menu.o" + .include "sound.o" + .include "battle_anim.o" .include "task.o" + .include "mori_debug_menu.o" -gUnknown_03004DA0: @ 3004DA0 - .space 0x20 +@ unknown_task + .align 4 gUnknown_03004DC0: @ 3004DC0 .space 0x20 @@ -216,21 +179,25 @@ gUnknown_03005560: @ 3005560 gUnknown_030056A0: @ 30056A0 .space 0x640 +@ pokemon_menu + gLastFieldPokeMenuOpened: @ 3005CE0 .space 0x4 gUnknown_03005CE4: @ 3005CE4 .space 0x4 -gUnknown_03005CE8: @ 3005CE8 - .space 0x4 + .include "pokedex.o" -gUnknown_03005CEC: @ 3005CEC - .space 0x4 +@ pokemon_summary_screen + .align 4 gUnknown_03005CF0: @ 3005CF0 .space 0x10 +@ item_menu + + .align 4 gUnknown_03005D00: @ 3005D00 .space 0x10 @@ -240,24 +207,31 @@ gBagPocketScrollStates: @ 3005D10 gCurrentBagPocketItemSlots: @ 3005D24 .space 0x4 -gUnknown_03005D28: @ 3005D28 - .space 0x4 +@ contest -gUnknown_03005D2C: @ 3005D2C + .align 2 +gUnknown_03005D28: @ 3005D28 .space 0x4 -gUnknown_03005D30: @ 3005D30 - .space 0x4 + .include "record_mixing.o" + .include "sound_check_menu.o" + .align 2 gUnknown_03005D34: @ 3005D34 .space 0x4 -gUnknown_03005D38: @ 3005D38 - .space 0x68 + .include "tv.o" + + .space 0x64 @ unused variable? +@ mauville_old_man + + .align 4 gUnknown_03005DA0: @ 3005DA0 .space 0x48 +@ cute_sketch + gUnknown_03005DE8: @ 3005DE8 .space 0x4 @@ -288,60 +262,28 @@ gUnknown_03005E08: @ 3005E08 gUnknown_03005E0C: @ 3005E0C .space 0x4 -gUnknown_03005E10: @ 3005E10 - .space 0x10 - -gUnknown_03005E20: @ 3005E20 - .space 0x20 - -gUnknown_03005E40: @ 3005E40 - .space 0x4C + .include "contest_painting.o" -gUnknown_03005E8C: @ 3005E8C - .space 0x4 - -gUnknown_03005E90: @ 3005E90 - .space 0x4 +@ evolution_scene + .align 2 gUnknown_03005E94: @ 3005E94 .space 0x4 -gUnknown_03005E98: @ 3005E98 - .space 0x4 - -gLastWrittenSector: @ 3005E9C - .space 0x4 - -gLastSaveCounter: @ 3005EA0 - .space 0x4 - -gLastKnownGoodSector: @ 3005EA4 - .space 0x4 - -gDamagedSaveSectors: @ 3005EA8 - .space 0x4 +@ pokedex_cry_screen -gSaveCounter: @ 3005EAC - .space 0x4 - -gFastSaveSection: @ 3005EB0 - .space 0x4 - -gUnknown_03005EB4: @ 3005EB4 +gUnknown_03005E98: @ 3005E98 .space 0x4 -gSaveFileStatus: @ 3005EB8 - .space 0x4 + .include "save.o" -gGameContinueCallback: @ 3005EBC - .space 0x14 + .space 0x10 @ unused variable? -gIntroFrameCounter: @ 3005ED0 - .space 0x10 + .include "intro.o" -gMultibootProgramStruct: @ 3005EE0 - .space 0x2C +@ battle_anim_813F0F4 + .align 2 gUnknown_03005F0C: @ 3005F0C .space 0x4 @@ -351,6 +293,8 @@ gUnknown_03005F10: @ 3005F10 gUnknown_03005F14: @ 3005F14 .space 0xC +@ pokeblock_feed + gUnknown_03005F20: @ 3005F20 .space 0x4 diff --git a/sym_ewram.txt b/sym_ewram.txt index ef05e147d..ecf74b07c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -6,17 +6,11 @@ .space 0x2E8 .include "src/link.o" + .include "src/rom3.o" - .align 2 -gUnknown_020238C4: @ 20238C4 - .space 0x1 - -gUnknown_020238C5: @ 20238C5 - .space 0x1 - -gUnknown_020238C6: @ 20238C6 - .space 0x2 +@ battle + .align 2 gUnknown_020238C8: @ 20238C8 .space 0x4 @@ -299,20 +293,11 @@ word_2024E82: @ 2024E82 gBattleMonForms: @ 2024E84 .space 0x4 -byte_2024E88: @ 2024E88 - .space 0x4 + .include "src/pokemon_1.o" + .include "src/pokemon_2.o" + .include "src/load_save.o" -gUnknown_02024E8C: @ 2024E8C - .space 0x18 - -gSaveBlock2: @ 2024EA4 - .space 0x890 - -gSaveBlock1: @ 2025734 - .space 0x3AC0 - -gLoadedSaveData: @ items - .space 0x4D8 +@ trade gUnknown_020296CC: @ 20296CC .space 0x34 @@ -323,6 +308,8 @@ gUnknown_02029700: @ 2029700 gUnknown_020297D8: @ 20297D8 .space 0x4 +@ berry_blender + gUnknown_020297DC: @ 20297DC .space 0x4 @@ -335,128 +322,20 @@ gUnknown_020297E4: @ 20297E4 gUnknown_020297E8: @ 20297E8 .space 0x4 -gDifferentSaveFile: @ 20297EC - .space 0x1 - -gUnknown_020297ED: @ 20297ED - .space 0x3 - -gUnknown_020297F0: @ 20297F0 - .space 0x8 - -gUnknown_020297F8: @ 20297F8 - .space 0x8 - -gUnknown_02029800: @ 2029800 - .space 0x8 - -gUnknown_02029808: @ 2029808 - .space 0x8 - -gUnknown_02029810: @ 2029810 - .space 0x4 - -gUnknown_02029814: @ 2029814 - .space 0x2 - -gUnknown_02029816: @ 2029816 - .space 0x2 - -gLinkPlayerMapObjects: @ 2029818 - .space 0x10 - + .include "src/new_game.o" + .include "src/rom4.o" .include "src/fieldmap.o" + .include "src/field_camera.o" + .include "src/field_player_avatar.o" + .include "src/field_message_box.o" + .include "src/script.o" + .include "src/scrcmd.o" + .include "src/field_control_avatar.o" + .include "src/event_data.o" -gUnknown_0202E854: @ 202E854 - .space 0x4 - -gPlayerAvatar: @ 202E858 - .space 0x14 - -gUnknown_0202E86C: @ 202E86C - .space 0x8 - -gUnknown_0202E874: @ 202E874 - .space 0x8 - -gFieldMessageBoxWindow: @ 202E87C - .space 0x30 - -gUnknown_0202E8AC: @ 202E8AC - .space 0x4 - -gUnknown_0202E8B0: @ 202E8B0 - .space 0x4 - -gUnknown_0202E8B4: @ 202E8B4 - .space 0x2 - -gUnknown_0202E8B6: @ 202E8B6 - .space 0x2 - -gUnknown_0202E8B8: @ 202E8B8 - .space 0x2 - -gUnknown_0202E8BA: @ 202E8BA - .space 0x2 - -gUnknown_0202E8BC: @ 202E8BC - .space 0x4 - -gUnknown_0202E8C0: @ 202E8C0 - .space 0x2 - -gUnknown_0202E8C2: @ 202E8C2 - .space 0x2 - -gSpecialVar_0x8000: @ 202E8C4 - .space 0x2 - -gSpecialVar_0x8001: @ 202E8C6 - .space 0x2 - -gSpecialVar_0x8002: @ 202E8C8 - .space 0x2 - -gSpecialVar_0x8003: @ 202E8CA - .space 0x2 - -gSpecialVar_0x8004: @ 202E8CC - .space 0x2 - -gSpecialVar_0x8005: @ 202E8CE - .space 0x2 - -gSpecialVar_0x8006: @ 202E8D0 - .space 0x2 - -gSpecialVar_0x8007: @ 202E8D2 - .space 0x2 - -gSpecialVar_0x8008: @ 202E8D4 - .space 0x2 - -gSpecialVar_0x8009: @ 202E8D6 - .space 0x2 - -gSpecialVar_0x800A: @ 202E8D8 - .space 0x2 - -gSpecialVar_0x800B: @ 202E8DA - .space 0x2 - -gScriptResult: @ 202E8DC - .space 0x2 - -gScriptLastTalked: @ 202E8DE - .space 0x2 - -gScriptFacing: @ 202E8E0 - .space 0x2 - -gUnknown_0202E8E2: @ 202E8E2 - .space 0x12 +@ party_menu + .align 2 gUnknown_0202E8F4: @ 202E8F4 .space 0x1 @@ -476,20 +355,14 @@ gUnknown_0202E8FA: @ 202E8FA .include "src/menu.o" .include "src/tileset_anim.o" .include "src/palette.o" - - .align 2 -gMPlay_PokemonCry: @ 202F79C - .space 0x4 - -gPokemonCryBGMDuckingCounter: @ 202F7A0 - .space 0x4 - + .include "src/sound.o" .include "src/battle_anim.o" .include "src/rom_8077ABC.o" + .include "src/title_screen.o" -gUnknown_0202F7E4: @ 202F7E4 - .space 0x4 +@ field_weather + .align 2 gUnknown_0202F7E8: @ 202F7E8 .space 0x200 @@ -507,13 +380,15 @@ gUnknown_0202FF58: @ 202FF58 .include "src/battle_setup.o" .include "src/wild_encounter.o" + .include "src/field_effect.o" -gUnknown_0202FF84: @ 202FF84 - .space 0x20 +@ unknown_task gUnknown_0202FFA4: @ 202FFA4 .space 0x4 +@ pokemon_menu + gUnknown_0202FFA8: @ 202FFA8 .space 0x1 @@ -523,27 +398,13 @@ gUnknown_0202FFA9: @ 202FFA9 gUnknown_0202FFAA: @ 202FFAA .space 0xA -gPokedexView: @ 202FFB4 - .space 0x4 - -gUnknown_0202FFB8: @ 202FFB8 - .space 0x2 - -gUnknown_0202FFBA: @ 202FFBA - .space 0x2 - -gUnknown_0202FFBC: @ 202FFBC - .space 0x4 - -gTrainerCards: @ 202FFC0 - .space 0xE0 - -gPokemonStorage: @ 20300A0 - .space 0x360 + .include "src/pokedex.o" + .include "src/trainer_card.o" + .include "src/pokemon_storage_system.o" -gUnknown_02030400: @ 02030400 - .space 0x8070 +@ still pokemon_storage_system + .align 2 gUnknown_02038470: @ 2038470 .space 0x3 @@ -595,19 +456,21 @@ gUnknown_020384EA: @ 20384EA gUnknown_020384EC: @ 20384EC .space 0x4 +@ pokemon_summary_screen + gUnknown_020384F0: @ 20384F0 .space 0x4 gUnknown_020384F4: @ 20384F4 .space 0x4 -gUnknown_020384F8: @ 20384F8 - .space 0x40 - + .include "src/script_movement.o" .include "src/map_name_popup.o" .include "src/item_menu.o" - .align 2 +@ contest + + .align 2 gUnknown_0203856C: @ 203856C .space 0x4 @@ -660,6 +523,8 @@ gScriptContestCategory: @ 203869C gScriptContestRank: @ 203869E .space 0x2 +@ shop + gUnknown_020386A0: @ 20386A0 .space 0x4 @@ -681,65 +546,42 @@ gUnknown_02038730: @ 2038730 gUnknown_02038731: @ 2038731 .space 0x3 -gUnknown_02038734: @ 2038734 - .space 0x4 + .include "src/money.o" +@ record_mixing + + .align 2 gUnknown_02038738: @ 2038738 .space 0x78 -gUnknown_020387B0: @ 20387B0 - .space 0x1 - -gUnknown_020387B1: @ 20387B1 - .space 0x1 - -gUnknown_020387B2: @ 20387B2 - .space 0x1 - -gUnknown_020387B3: @ 20387B3 - .space 0x1 - -gUnknown_020387B4: @ 20387B4 - .space 0x24 - -gUnknown_020387D8: @ 20387D8 - .space 0x1 + .include "src/sound_check_menu.o" -gUnknown_020387D9: @ 20387D9 - .space 0x3 +@ secret_base + .align 2 gUnknown_020387DC: @ 20387DC .space 0x4 -gUnknown_020387E0: @ 20387E0 - .space 0x2 +@ tv -gUnknown_020387E2: @ 20387E2 - .space 0x2 + .include "src/tv.o" -gUnknown_020387E4: @ 20387E4 - .space 0x4 - -gUnknown_020387E8: @ 20387E8 - .space 0x4 +@ fldeff_80C5CD4 + .align 2 gUnknown_020387EC: @ 20387EC .space 0x4 -gRotatingGate_GateSpriteIds: @ 20387F0 - .space 0x10 - -gRotatingGate_PuzzleConfig: @ 2038800 - .space 0x4 - -gRotatingGate_PuzzleCount: @ 2038804 - .space 0x4 - + .include "src/rotating_gate.o" .include "src/safari_zone.o" +@ easy_chat + gUnknown_020388AC: @ 20388AC .space 0x4 +@ pokenav + gUnknown_020388B0: @ 20388B0 .space 0x4 @@ -748,115 +590,23 @@ gUnknown_020388B4: @ 20388B4 .include "src/mon_markings.o" +@ mauville_old_man + .align 2 gUnknown_020388BC: @ 20388BC .space 0x4 .include "src/menu_helpers.o" + .include "src/region_map.o" + .include "src/decoration.o" + .include "src/battle_ai.o" + .include "src/rom6.o" + .include "src/pokeblock.o" + .include "src/field_specials.o" - .align 2 -gUnknown_020388CC: @ 20388CC - .space 0x4 - -gUnknown_020388D0: @ 20388D0 - .space 0x4 - -gUnknown_020388D4: @ 20388D4 - .space 0x1 - -gUnknown_020388D5: @ 20388D5 - .space 0x1 - -gUnknown_020388D6: @ 20388D6 - .space 0x10 - -gUnknown_020388E6: @ 20388E6 - .space 0xC - -gUnknown_020388F2: @ 20388F2 - .space 0x1 - -gUnknown_020388F3: @ 20388F3 - .space 0x1 - -gUnknown_020388F4: @ 20388F4 - .space 0x1 - -gUnknown_020388F5: @ 20388F5 - .space 0x1 - -gUnknown_020388F6: @ 20388F6 - .space 0x1 - -gUnknown_020388F7: @ 20388F7 - .space 0x9 - -gUnknown_02038900: @ 2038900 - .space 0x8A4 - -gUnknown_020391A4: @ 20391A4 - .space 0x2 - -gUnknown_020391A6: @ 20391A6 - .space 0x2 - -gUnknown_020391A8: @ 20391A8 - .space 0x1 - -gUnknown_020391A9: @ 20391A9 - .space 0x1 - -gUnknown_020391AA: @ 20391AA - .space 0x2 - -gUnknown_020391AC: @ 20391AC - .space 0x8 - -gUnknown_020391B4: @ 20391B4 - .space 0x80 - -gUnknown_02039234: @ 2039234 - .space 0x4 - -gAIScriptPtr: @ 2039238 - .space 0x4 - -gUnknown_0203923C: @ 203923C - .space 0x8 - -gUnknown_02039244: @ 2039244 - .space 0x4 - -gUnknown_02039248: @ 2039248 - .space 0x4 - -gUnknown_0203924C: @ 203924C - .space 0x4 - -gUnknown_02039250: @ 2039250 - .space 0x1 - -gUnknown_02039251: @ 2039251 - .space 0x3 - -gUnknown_02039254: @ 2039254 - .space 0x4 - -gUnknown_02039258: @ 2039258 - .space 0x1 - -gUnknown_02039259: @ 2039259 - .space 0x1 - -gUnknown_0203925A: @ 203925A - .space 0x1 - -gUnknown_0203925B: @ 203925B - .space 0x1 - -gUnknown_0203925C: @ 203925C - .space 0x4 +@ pokedex_area_screen + .align 2 gUnknown_02039260: @ 2039260 .space 0x2 @@ -875,12 +625,16 @@ gUnknown_02039268: @ 2039268 gUnknown_0203926A: @ 203926A .space 0x2 +@ battle_message + gAbilitiesPerBank: @ 203926C .space 0x4 -gSelectedOrderFromParty: @ 2039270 - .space 0x4 + .include "src/choose_party.o" + +@ cable_car + .align 2 gUnknown_02039274: @ 2039274 .space 0x4 @@ -902,75 +656,33 @@ gUnknown_0203927C: @ 203927C gUnknown_0203927D: @ 203927D .space 0x7 -gLastSaveSectorStatus: @ 2039284 - .space 0x4 - -gUnknown_02039288: @ 2039288 - .space 0x74 - + .include "src/save.o" + .include "src/mystery_event_script.o" .include "src/roamer.o" + .include "src/use_pokeblock.o" + .include "src/player_pc.o" + .include "src/intro.o" - .align 2 -gUnknown_02039304: @ 2039304 - .space 0x4 - -gUnknown_02039308: @ 2039308 - .space 0x4 - -gUnknown_0203930C: @ 203930C - .space 0x4 - -gUnknown_02039310: @ 2039310 - .space 0x2 - -gUnknown_02039312: @ 2039312 - .space 0x2 - -gPcItemMenuOptionOrder: @ 2039314 - .space 0x4 - -gUnknown_02039318: @ 2039318 - .space 0x2 - -gUnknown_0203931A: @ 203931A - .space 0x2 +@ hall_of_fame + .align 2 gUnknown_0203931C: @ 203931C .space 0x4 -gUnknown_02039320: @ 2039320 - .space 0x2 - -gUnknown_02039322: @ 2039322 - .space 0x2 - -gUnknown_02039324: @ 2039324 - .space 0x1 - -gUnknown_02039325: @ 2039325 - .space 0x3 - + .include "src/credits.o" .include "src/lottery_corner.o" + .include "src/berry_tag_screen.o" + .include "src/mystery_event_menu.o" + .include "src/save_failed_screen.o" -gUnknown_0203932C: @ 203932C - .space 0x2 - -gUnknown_0203932E: @ 203932E - .space 0xA - -gUnknown_02039338: @ 2039338 - .space 0x4 - -gSaveFailedType: @ 203933C - .space 0x2 - -gSaveFailedClockInfo: @ 203933E - .space 0x12 +@ pokeblock_feed .align 2 gUnknown_02039350: @ 2039350 .space 0x8 +@ intro_credits_graphics + gUnknown_02039358: @ 2039358 .space 0x2 @@ -980,6 +692,8 @@ gUnknown_0203935A: @ 203935A gUnknown_0203935C: @ 203935C .space 0x4 +@ ??? + gTileBuffer: @ 2039360 .space 0x100 @@ -992,19 +706,4 @@ gUnknown_02039760: @ 2039760 gUnknown_0203A360: @ 203A360 .space 0x20 -gMenuCursorSubsprites: @ 203A380 - .space 0x50 - -gUnknown_0203A3D0: @ 203A3D0 - .space 0x1 - -gUnknown_0203A3D1: @ 203A3D1 - .space 0x1 - -gUnknown_0203A3D2: @ 203A3D2 - .space 0x1 - -gUnknown_0203A3D3: @ 203A3D3 - .space 0x1 - -gUnknown_0203A3D4: @ 203A3D4 + .include "src/menu_cursor.o" |