diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-01-25 19:36:54 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-01-25 19:36:54 -0600 |
commit | e50f5e906776a799ec69418168f032880e16384c (patch) | |
tree | 9887680e36304f843f6e04d8d6b0864011417d06 | |
parent | 9f7fa5781e8de8e23faea3785e8b3aebde79c8c6 (diff) |
more debug integrations
-rw-r--r-- | asm/battle_1.s | 2 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 262 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 764 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c | 243 | ||||
-rw-r--r-- | src/battle/battle_interface.c | 668 | ||||
-rw-r--r-- | src/pokemon/pokemon_1.c | 359 | ||||
-rw-r--r-- | src/pokemon/pokemon_menu.c | 151 |
7 files changed, 150 insertions, 2299 deletions
diff --git a/asm/battle_1.s b/asm/battle_1.s index 24553e020..8ed743677 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -809,7 +809,7 @@ sub_800DAB8: mov r2, #0x80 lsl r2, r2, #0x4 add r1, r4, #0 - bl gMysteryEventScriptCmdTableEnd+0x3cb4 @ uh, what? + bl CpuSet ldr r0, ._113 + 12 mov r1, #0x0 mov r2, #0x40 diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index d2045b6c4..5382738f7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -30,6 +30,7 @@ struct MovePpInfo u8 ppBonuses; }; +extern u8 gUnknown_02023A14_50; extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; extern u16 gBattlePartyID[]; @@ -1209,255 +1210,27 @@ void sub_8034B74(void) } } -#if DEBUG -__attribute__((naked)) -void OpponentHandleTrainerThrow(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6}\n\ - ldr r0, ._480\n\ - ldrb r1, [r0]\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._478 @cond_branch\n\ - ldr r0, ._480 + 4\n\ - ldr r1, ._480 + 8\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - b ._491\n\ -._481:\n\ - .align 2, 0\n\ -._480:\n\ - .word gUnknown_02023A14_50\n\ - .word +0x2000000\n\ - .word 0x160a3\n\ -._478:\n\ - ldr r3, ._484\n\ - ldrh r1, [r3]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x3\n\ - cmp r1, r0\n\ - bne ._482 @cond_branch\n\ - bl GetSecretBaseTrainerPicIndex\n\ - b ._487\n\ -._485:\n\ - .align 2, 0\n\ -._484:\n\ - .word gTrainerBattleOpponent\n\ -._482:\n\ - ldr r0, ._488\n\ - ldrh r1, [r0]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._486 @cond_branch\n\ - bl get_trainer_class_pic_index\n\ - b ._487\n\ -._489:\n\ - .align 2, 0\n\ -._488:\n\ - .word gBattleTypeFlags\n\ -._486:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._490 @cond_branch\n\ - bl GetEReaderTrainerPicIndex\n\ -._487:\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - b ._491\n\ -._490:\n\ - ldr r2, ._492\n\ - ldrh r1, [r3]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldrb r0, [r0, #0x3]\n\ -._491:\n\ - mov r9, r0\n\ - ldr r2, ._492 + 4\n\ - mov r8, r2\n\ - ldrb r1, [r2]\n\ - bl sub_8031A6C\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - bl GetBankIdentity\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - mov r0, r9\n\ - bl GetMonSpriteTemplate_803C5A0\n\ - ldr r5, ._492 + 8\n\ - ldr r1, ._492 + 12\n\ - mov r2, r9\n\ - lsl r0, r2, #0x2\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r4, #0x8\n\ - sub r4, r4, r0\n\ - lsl r4, r4, #0x12\n\ - mov r0, #0xa0\n\ - lsl r0, r0, #0xe\n\ - add r4, r4, r0\n\ - asr r4, r4, #0x10\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - bl sub_8079E90\n\ - add r3, r0, #0\n\ - lsl r3, r3, #0x18\n\ - lsr r3, r3, #0x18\n\ - add r0, r5, #0\n\ - mov r1, #0xb0\n\ - add r2, r4, #0\n\ - bl CreateSprite\n\ - ldr r5, ._492 + 16\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - strb r0, [r1]\n\ - ldr r4, ._492 + 20\n\ - ldrb r0, [r2]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - ldr r1, ._492 + 24\n\ - strh r1, [r0, #0x24]\n\ - ldrb r0, [r2]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - mov r1, #0x2\n\ - strh r1, [r0, #0x2e]\n\ - ldr r0, ._492 + 28\n\ - mov r1, r9\n\ - lsl r6, r1, #0x3\n\ - add r0, r6, r0\n\ - ldrh r0, [r0, #0x4]\n\ - bl IndexOfSpritePaletteTag\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - ldrb r1, [r1]\n\ - lsl r2, r1, #0x4\n\ - add r2, r2, r1\n\ - lsl r2, r2, #0x2\n\ - add r2, r2, r4\n\ - lsl r0, r0, #0x4\n\ - ldrb r3, [r2, #0x5]\n\ - mov r1, #0xf\n\ - and r1, r1, r3\n\ - orr r1, r1, r0\n\ - strb r1, [r2, #0x5]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - lsl r1, r0, #0x4\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r4\n\ - ldrh r0, [r1, #0x4]\n\ - lsl r0, r0, #0x16\n\ - lsr r0, r0, #0x16\n\ - strh r0, [r1, #0x38]\n\ - ldr r0, ._492 + 32\n\ - add r6, r6, r0\n\ - ldrh r0, [r6, #0x6]\n\ - bl GetSpriteTileStartByTag\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - ldrb r2, [r1]\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r2\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r4\n\ - ldr r2, ._492 + 36\n\ - and r2, r2, r0\n\ - ldrh r3, [r1, #0x4]\n\ - ldr r0, ._492 + 40\n\ - and r0, r0, r3\n\ - orr r0, r0, r2\n\ - strh r0, [r1, #0x4]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - mov r2, r9\n\ - strh r2, [r0, #0x6]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r4, r4, #0x1c\n\ - add r0, r0, r4\n\ - ldr r1, ._492 + 44\n\ - str r1, [r0]\n\ - ldr r1, ._492 + 48\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._492 + 52\n\ - str r1, [r0]\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._493:\n\ - .align 2, 0\n\ -._492:\n\ - .word gTrainers\n\ - .word gActiveBank\n\ - .word gUnknown_02024E8C\n\ - .word gTrainerFrontPicCoords\n\ - .word gObjectBankIDs\n\ - .word gSprites\n\ - .word 0xff10\n\ - .word gTrainerFrontPicPaletteTable\n\ - .word gTrainerFrontPicTable\n\ - .word 0x3ff\n\ - .word 0xfffffc00\n\ - .word sub_80313A0+1\n\ - .word gBattleBankFunc\n\ - .word sub_8032B4C+1"); -} -#else void OpponentHandleTrainerThrow(void) { u32 trainerPicIndex; - if (gTrainerBattleOpponent == 0x400) - trainerPicIndex = GetSecretBaseTrainerPicIndex(); - else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) - trainerPicIndex = get_trainer_class_pic_index(); - else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) - trainerPicIndex = GetEReaderTrainerPicIndex(); +#if DEBUG + if (gUnknown_02023A14_50 & 0x10) + { + trainerPicIndex = gSharedMem[0x160A3]; + } else - trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; +#endif + { + if (gTrainerBattleOpponent == 0x400) + trainerPicIndex = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicIndex = get_trainer_class_pic_index(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicIndex = GetEReaderTrainerPicIndex(); + else + trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; + } sub_8031A6C(trainerPicIndex, gActiveBank); GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); @@ -1475,7 +1248,6 @@ void OpponentHandleTrainerThrow(void) gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B4C; } -#endif void OpponentHandleTrainerSlide(void) { diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 8875d5148..d4b4da6f2 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -42,6 +42,8 @@ extern struct Window gUnknown_03004210; extern void (*gBattleBankFunc[])(void); +extern u32 gOamMatrixAllocBitmap; +extern u8 gUnknown_020297ED; extern u8 gActiveBank; extern u8 gActionSelectionCursor[]; extern u8 gDisplayedStringBattle[]; @@ -617,728 +619,14 @@ struct ChooseMoveStruct const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); -#if DEBUG -__attribute__((naked)) -void sub_802C68C(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - add sp, sp, #0xfffffff8\n\ - mov r0, #0x0\n\ - mov r8, r0\n\ - mov r7, #0x0\n\ - ldr r1, ._131\n\ - ldrb r2, [r1]\n\ - lsl r1, r2, #0x9\n\ - ldr r0, ._131 + 4\n\ - add r6, r1, r0\n\ - ldr r0, ._131 + 8\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r5, #0x1\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._126 @cond_branch\n\ - b ._127\n\ -._126:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._131 + 12\n\ - ldr r2, ._131\n\ - ldrb r0, [r2]\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x1\n\ - add r1, r6, r0\n\ - ldrh r0, [r1]\n\ - cmp r0, #0xae\n\ - bne ._128 @cond_branch\n\ - ldrb r0, [r6, #0x12]\n\ - mov r4, #0x0\n\ - cmp r0, #0x7\n\ - beq ._130 @cond_branch\n\ - ldrb r1, [r6, #0x13]\n\ - mov r0, #0x7\n\ - eor r1, r1, r0\n\ - neg r0, r1\n\ - orr r0, r0, r1\n\ - asr r4, r0, #0x1f\n\ - mov r0, #0x10\n\ - and r4, r4, r0\n\ - b ._130\n\ -._132:\n\ - .align 2, 0\n\ -._131:\n\ - .word gActiveBank\n\ - .word gBattleBufferA+4\n\ - .word gMain\n\ - .word gMoveSelectionCursor\n\ -._128:\n\ - ldr r2, ._135\n\ - ldrh r1, [r1]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r2\n\ - ldrb r4, [r0, #0x6]\n\ -._130:\n\ - mov r0, #0x10\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - beq ._133 @cond_branch\n\ - ldr r0, ._135 + 4\n\ - ldr r1, ._135 + 8\n\ - ldrb r1, [r1]\n\ - strb r1, [r0]\n\ - b ._134\n\ -._136:\n\ - .align 2, 0\n\ -._135:\n\ - .word gBattleMoves\n\ - .word gUnknown_03004344\n\ - .word gActiveBank\n\ -._133:\n\ - ldr r0, ._141\n\ - ldrb r0, [r0]\n\ - bl GetBankIdentity\n\ - add r1, r0, #0\n\ - mov r2, #0x1\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - eor r0, r0, r2\n\ - bl GetBankByIdentity\n\ - ldr r1, ._141 + 4\n\ - strb r0, [r1]\n\ -._134:\n\ - ldr r3, ._141 + 8\n\ - ldr r5, ._141\n\ - ldrb r2, [r5]\n\ - lsl r1, r2, #0x9\n\ - add r0, r3, #1\n\ - add r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._137 @cond_branch\n\ - mov r0, #0x2\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - beq ._146 @cond_branch\n\ - add r0, r3, #2\n\ - add r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._146 @cond_branch\n\ - mov r0, #0x1\n\ - add r8, r8, r0\n\ - b ._146\n\ -._142:\n\ - .align 2, 0\n\ -._141:\n\ - .word gActiveBank\n\ - .word gUnknown_03004344\n\ - .word gBattleBufferA\n\ -._137:\n\ - mov r0, #0x7d\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - bne ._143 @cond_branch\n\ - mov r1, #0x1\n\ - add r8, r8, r1\n\ -._143:\n\ - ldr r0, ._149\n\ - add r0, r2, r0\n\ - add r1, r6, #0\n\ - add r1, r1, #0x8\n\ - ldrb r0, [r0]\n\ - add r1, r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, #0\n\ - beq ._144 @cond_branch\n\ - mov r0, #0x12\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - bne ._146 @cond_branch\n\ - mov r0, #0x0\n\ - bl CountAliveMons\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bhi ._146 @cond_branch\n\ - ldrb r0, [r5]\n\ - bl sub_803C434\n\ - ldr r1, ._149 + 4\n\ - strb r0, [r1]\n\ - mov r2, #0x0\n\ - mov r8, r2\n\ -._146:\n\ - mov r0, r8\n\ - cmp r0, #0\n\ - bne ._147 @cond_branch\n\ -._144:\n\ - bl DestroyMenuCursor\n\ - ldr r1, ._149\n\ - ldr r0, ._149 + 8\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r2, [r0]\n\ - ldr r0, ._149 + 4\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x8\n\ - orr r2, r2, r0\n\ - b ._148\n\ -._150:\n\ - .align 2, 0\n\ -._149:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004344\n\ - .word gActiveBank\n\ -._147:\n\ - ldr r1, ._153\n\ - ldr r2, ._153 + 4\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._153 + 8\n\ - str r1, [r0]\n\ - mov r0, #0x12\n\ - and r4, r4, r0\n\ - cmp r4, #0\n\ - beq ._151 @cond_branch\n\ - ldr r1, ._153 + 12\n\ - ldrb r0, [r2]\n\ - b ._152\n\ -._154:\n\ - .align 2, 0\n\ -._153:\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ - .word sub_802C2EC+1\n\ - .word gUnknown_03004344\n\ -._151:\n\ - mov r0, #0x1\n\ - bl GetBankByIdentity\n\ - ldr r1, ._157\n\ - ldrb r1, [r1]\n\ - ldr r2, ._157 + 4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x16\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - and r1, r1, r0\n\ - cmp r1, #0\n\ - beq ._155 @cond_branch\n\ - mov r0, #0x3\n\ - b ._156\n\ -._158:\n\ - .align 2, 0\n\ -._157:\n\ - .word gAbsentBankFlags\n\ - .word gBitTable\n\ -._155:\n\ - mov r0, #0x1\n\ -._156:\n\ - bl GetBankByIdentity\n\ - ldr r1, ._160\n\ -._152:\n\ - strb r0, [r1]\n\ - ldr r2, ._160 + 4\n\ - ldr r1, ._160 + 8\n\ - ldr r0, ._160\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r2, r2, #0x1c\n\ - add r0, r0, r2\n\ - ldr r1, ._160 + 12\n\ - b ._203\n\ -._161:\n\ - .align 2, 0\n\ -._160:\n\ - .word gUnknown_03004344\n\ - .word gSprites\n\ - .word gObjectBankIDs\n\ - .word sub_8010520+1\n\ -._127:\n\ - mov r6, #0x2\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._162 @cond_branch\n\ - bl DestroyMenuCursor\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._164\n\ - strh r7, [r0]\n\ - ldr r1, ._164 + 4\n\ - mov r2, #0xa0\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - ldr r2, ._164 + 8\n\ -._148:\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ - bl Emitcmd33\n\ - bl PlayerBufferExecCompleted\n\ - b ._209\n\ -._165:\n\ - .align 2, 0\n\ -._164:\n\ - .word gBattle_BG0_X\n\ - .word gBattle_BG0_Y\n\ - .word 0xffff\n\ -._162:\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._166 @cond_branch\n\ - ldr r4, ._170\n\ - add r2, r2, r4\n\ - ldrb r1, [r2]\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._167 @cond_branch\n\ - b ._209\n\ -._167:\n\ - ldrb r0, [r2]\n\ - bl nullsub_7\n\ - ldr r0, ._170 + 4\n\ - ldrb r1, [r0]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - eor r0, r0, r2\n\ - b ._183\n\ -._171:\n\ - .align 2, 0\n\ -._170:\n\ - .word gMoveSelectionCursor\n\ - .word gActiveBank\n\ -._166:\n\ - mov r3, #0x10\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._172 @cond_branch\n\ - ldr r4, ._178\n\ - add r3, r2, r4\n\ - ldrb r2, [r3]\n\ - mov r6, #0x1\n\ - add r0, r5, #0\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._173 @cond_branch\n\ - b ._209\n\ -._173:\n\ - ldr r1, ._178 + 4\n\ - add r0, r6, #0\n\ - eor r0, r0, r2\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._175 @cond_branch\n\ - b ._209\n\ -._175:\n\ - ldrb r0, [r3]\n\ - bl nullsub_7\n\ - ldr r2, ._178 + 8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - eor r0, r0, r6\n\ - b ._183\n\ -._179:\n\ - .align 2, 0\n\ -._178:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004348\n\ - .word gActiveBank\n\ -._172:\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._180 @cond_branch\n\ - ldr r4, ._184\n\ - add r2, r2, r4\n\ - ldrb r1, [r2]\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._181 @cond_branch\n\ - b ._209\n\ -._181:\n\ - ldrb r0, [r2]\n\ - bl nullsub_7\n\ - ldr r2, ._184 + 4\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - mov r2, #0x2\n\ - eor r0, r0, r2\n\ - b ._183\n\ -._185:\n\ - .align 2, 0\n\ -._184:\n\ - .word gMoveSelectionCursor\n\ - .word gActiveBank\n\ -._180:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._186 @cond_branch\n\ - ldr r4, ._192\n\ - add r3, r2, r4\n\ - ldrb r2, [r3]\n\ - mov r5, #0x2\n\ - add r0, r6, #0\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._187 @cond_branch\n\ - b ._209\n\ -._187:\n\ - ldr r1, ._192 + 4\n\ - add r0, r5, #0\n\ - eor r0, r0, r2\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._189 @cond_branch\n\ - b ._209\n\ -._189:\n\ - ldrb r0, [r3]\n\ - bl nullsub_7\n\ - ldr r2, ._192 + 8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - eor r0, r0, r5\n\ -._183:\n\ - strb r0, [r1]\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._192 + 8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - bl sub_802E3B4\n\ - bl sub_802E220\n\ - bl sub_802E2D4\n\ - b ._209\n\ -._193:\n\ - .align 2, 0\n\ -._192:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004348\n\ - .word gActiveBank\n\ -._186:\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._194 @cond_branch\n\ - ldr r0, ._201\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bhi ._195 @cond_branch\n\ - b ._209\n\ -._195:\n\ - ldr r0, ._201 + 4\n\ - ldrh r1, [r0]\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._197 @cond_branch\n\ - b ._209\n\ -._197:\n\ - ldr r4, ._201 + 8\n\ - add r0, r2, r4\n\ - ldrb r0, [r0]\n\ - ldr r1, ._201 + 12\n\ - bl sub_802E12C\n\ - ldr r2, ._201 + 16\n\ - ldrb r0, [r2]\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._199 @cond_branch\n\ - ldr r0, ._201 + 20\n\ - strb r7, [r0]\n\ - b ._200\n\ -._202:\n\ - .align 2, 0\n\ -._201:\n\ - .word gUnknown_03004348\n\ - .word gBattleTypeFlags\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_081FAE80\n\ - .word gActiveBank\n\ - .word gUnknown_03004344\n\ -._199:\n\ - ldr r1, ._204\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - add r0, r1, #0\n\ -._200:\n\ - ldrb r0, [r0]\n\ - mov r1, #0x1b\n\ - bl sub_802E3B4\n\ - ldr r4, ._204 + 4\n\ - ldr r1, ._204 + 8\n\ - mov r0, #0x1c\n\ - str r0, [sp]\n\ - mov r0, #0x3a\n\ - str r0, [sp, #0x4]\n\ - add r0, r4, #0\n\ - mov r2, #0x17\n\ - mov r3, #0x37\n\ - bl Text_FillWindowRect\n\ - ldr r1, ._204 + 12\n\ - mov r2, #0xa4\n\ - lsl r2, r2, #0x2\n\ - mov r0, #0x37\n\ - str r0, [sp]\n\ - add r0, r4, #0\n\ - mov r3, #0x17\n\ - bl Text_InitWindow\n\ - add r0, r4, #0\n\ - bl Text_PrintWindow8002F44\n\ - ldr r1, ._204 + 16\n\ - ldr r0, ._204 + 20\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._204 + 24\n\ - b ._203\n\ -._205:\n\ - .align 2, 0\n\ -._204:\n\ - .word gUnknown_03004344\n\ - .word gUnknown_03004210\n\ - .word 0x1016\n\ - .word BattleText_SwitchWhich\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ - .word sub_802CA60+1\n\ -._194:\n\ - ldr r0, ._214\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._206 @cond_branch\n\ - b ._209\n\ -._206:\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._208 @cond_branch\n\ - b ._209\n\ -._208:\n\ - ldr r6, ._214 + 4\n\ - ldr r1, ._214 + 8\n\ - str r3, [sp]\n\ - mov r0, #0x3a\n\ - str r0, [sp, #0x4]\n\ - add r0, r6, #0\n\ - mov r2, #0x1\n\ - mov r3, #0x37\n\ - bl Text_FillWindowRect\n\ - ldr r0, ._214 + 12\n\ - mov sl, r0\n\ - ldr r1, ._214 + 16\n\ - ldrb r0, [r1]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, sl\n\ - ldrh r0, [r0]\n\ - mov r2, #0x64\n\ - mov r9, r2\n\ - mov r1, r9\n\ - mul r1, r1, r0\n\ - add r0, r1, #0\n\ - ldr r5, ._214 + 20\n\ - add r0, r0, r5\n\ - mov r1, #0xd\n\ - bl GetMonData\n\ - mov r1, #0xd\n\ - mul r1, r1, r0\n\ - ldr r0, ._214 + 24\n\ - add r1, r1, r0\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x1\n\ - mov r0, #0x37\n\ - mov r8, r0\n\ - str r0, [sp]\n\ - add r0, r6, #0\n\ - mov r3, #0x2\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r4, ._214 + 28\n\ - ldr r1, ._214 + 16\n\ - ldrb r0, [r1]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, sl\n\ - ldrh r0, [r0]\n\ - mov r2, r9\n\ - mul r2, r2, r0\n\ - add r0, r2, #0\n\ - add r0, r0, r5\n\ - mov r1, #0xd\n\ - bl GetMonData\n\ - add r1, r0, #0\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x88\n\ - lsl r2, r2, #0x1\n\ - mov r0, r8\n\ - str r0, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xa\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r1, ._214 + 32\n\ - mov r2, #0x8b\n\ - lsl r2, r2, #0x1\n\ - mov r5, #0x39\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - mov r3, #0x1\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r0, ._214 + 36\n\ - ldrb r1, [r0]\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x8e\n\ - lsl r2, r2, #0x1\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0x4\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r0, ._214 + 40\n\ - add r2, r0, #0\n\ - add r2, r2, #0x3e\n\ - mov r1, #0x3f\n\ -._211:\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._210 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._210:\n\ - add r2, r2, #0x44\n\ - sub r1, r1, #0x1\n\ - cmp r1, #0\n\ - bge ._211 @cond_branch\n\ - ldr r4, ._214 + 28\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r6, ._214 + 4\n\ - mov r2, #0x91\n\ - lsl r2, r2, #0x1\n\ - mov r5, #0x39\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0x8\n\ - bl Text_InitWindowAndPrintText\n\ - bl GetTaskCount\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x93\n\ - lsl r2, r2, #0x1\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xb\n\ - bl Text_InitWindowAndPrintText\n\ - mov r1, #0x0\n\ - mov r7, #0x0\n\ - ldr r0, ._214 + 44\n\ - mov r3, #0x1\n\ - ldr r2, [r0]\n\ -._213:\n\ - add r0, r3, #0\n\ - LSL r0, r1\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._212 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._212:\n\ - add r1, r1, #0x1\n\ - cmp r1, #0x1f\n\ - ble ._213 @cond_branch\n\ - ldr r4, ._214 + 28\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._214 + 4\n\ - mov r2, #0x95\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x39\n\ - str r1, [sp]\n\ - add r1, r4, #0\n\ - mov r3, #0xe\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r1, ._214 + 48\n\ - ldr r0, ._214 + 16\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._214 + 52\n\ -._203:\n\ - str r1, [r0]\n\ -._209:\n\ - add sp, sp, #0x8\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._215:\n\ - .align 2, 0\n\ -._214:\n\ - .word gUnknown_020297ED\n\ - .word gUnknown_03004210\n\ - .word 0x1016\n\ - .word gBattlePartyID\n\ - .word gActiveBank\n\ - .word gPlayerParty\n\ - .word gMoveNames\n\ - .word gDisplayedStringBattle\n\ - .word gString_TurnJP\n\ - .word gAnimMoveTurn\n\ - .word gSprites\n\ - .word gOamMatrixAllocBitmap\n\ - .word gBattleBankFunc\n\ - .word debug_sub_8030C24+1"); -} -#else +void debug_sub_8030C24(void); + void sub_802C68C(void) { u32 r8 = 0; +#if DEBUG + u8 count = 0; +#endif struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4); if (gMain.newKeys & A_BUTTON) @@ -1469,8 +757,44 @@ void sub_802C68C(void) gBattleBankFunc[gActiveBank] = sub_802CA60; } } -} +#if DEBUG + else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON)) + { + const u8 *moveName; + s32 i; + + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A); + moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)]; + Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37); + ConvertIntToDecimalStringN( + gDisplayedStringBattle, + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1), + 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37); + Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39); + ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39); + for (i = 0; i < 64; i++) + { + if (gSprites[i].inUse) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39); + count = GetTaskCount(); + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39); + for (i = 0, count = 0; i < 32; i++) + { + if (gOamMatrixAllocBitmap & (1 << i)) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39); + gBattleBankFunc[gActiveBank] = debug_sub_8030C24; + } #endif +} extern const u8 BattleText_Format[]; diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 4af8adbbb..5896e5e18 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_anim_81258BC.h" #include "battle.h" +#include "battle_interface.h" #include "battle_message.h" #include "data2.h" #include "link.h" @@ -207,236 +208,6 @@ void SafariBufferRunCommand(void) } } -#if DEBUG -__attribute__((naked)) -void bx_battle_menu_t6_2(void) -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._94\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._89 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl DestroyMenuCursor\n\ - ldr r1, ._94 + 4\n\ - ldr r0, ._94 + 8\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._90 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._91 @cond_branch\n\ - cmp r0, #0\n\ - beq ._92 @cond_branch\n\ - b ._101\n\ -._95:\n\ - .align 2, 0\n\ -._94:\n\ - .word gMain\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._91:\n\ - cmp r0, #0x2\n\ - beq ._96 @cond_branch\n\ - cmp r0, #0x3\n\ - beq ._97 @cond_branch\n\ - b ._101\n\ -._92:\n\ - mov r0, #0x1\n\ - mov r1, #0x5\n\ - b ._100\n\ -._90:\n\ - mov r0, #0x1\n\ - mov r1, #0x6\n\ - b ._100\n\ -._96:\n\ - mov r0, #0x1\n\ - mov r1, #0x7\n\ -._100:\n\ - mov r2, #0x0\n\ - bl Emitcmd33\n\ - b ._101\n\ -._97:\n\ - mov r0, #0x1\n\ - mov r1, #0x8\n\ - mov r2, #0x0\n\ - bl Emitcmd33\n\ -._101:\n\ - bl SafariBufferExecCompleted\n\ - b ._129\n\ -._89:\n\ - mov r3, #0x20\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._103 @cond_branch\n\ - ldr r5, ._107\n\ - ldr r4, ._107 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._104 @cond_branch\n\ - b ._129\n\ -._104:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - b ._111\n\ -._108:\n\ - .align 2, 0\n\ -._107:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._103:\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._109 @cond_branch\n\ - ldr r5, ._112\n\ - ldr r4, ._112 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - b ._111\n\ -._113:\n\ - .align 2, 0\n\ -._112:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._109:\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._114 @cond_branch\n\ - ldr r5, ._117\n\ - ldr r4, ._117 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._129 @cond_branch\n\ - b ._116\n\ -._118:\n\ - .align 2, 0\n\ -._117:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._114:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._119 @cond_branch\n\ - ldr r5, ._122\n\ - ldr r4, ._122 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ -._116:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x2\n\ -._111:\n\ - eor r0, r0, r2\n\ - strb r0, [r1]\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - bl sub_802E3E4\n\ - b ._129\n\ -._123:\n\ - .align 2, 0\n\ -._122:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._119:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._124 @cond_branch\n\ - ldr r0, ._127\n\ - ldrb r2, [r0]\n\ - lsl r0, r2, #0x1\n\ - add r0, r0, r2\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._127 + 4\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ - str r0, [sp]\n\ - add r0, r2, #0\n\ - add r1, r2, #0\n\ - mov r3, #0x4\n\ - bl move_anim_start_t3\n\ - b ._129\n\ -._128:\n\ - .align 2, 0\n\ -._127:\n\ - .word gActiveBank\n\ - .word +0x2017810\n\ -._124:\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._129 @cond_branch\n\ - bl sub_804454C\n\ -._129:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0"); -} -#else void bx_battle_menu_t6_2(void) { if (gMain.newKeys & A_BUTTON) @@ -502,8 +273,18 @@ void bx_battle_menu_t6_2(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); } } -} +#if DEBUG + else if (gMain.newKeys & R_BUTTON) + { + if (!ewram17810[gActiveBank].unk0_5) + move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0); + } + else if (gMain.newKeys & START_BUTTON) + { + sub_804454C(); + } #endif +} void sub_812B65C(void) { diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index b703bc7b8..9be026d53 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1277,353 +1277,8 @@ _08044548: .4byte 0x04000008\n\ } #endif -#if DEBUG -__attribute__((naked)) -void sub_804454C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " ldr r0, ._150\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " blt ._133 @cond_branch\n" - " b ._164\n" - "._133:\n" - " ldr r1, ._150 + 4\n" - " mov r9, r1\n" - " mov r2, #0x64\n" - " mov sl, r2\n" - " ldr r7, ._150 + 8\n" - "._165:\n" - " ldr r0, ._150 + 12\n" - " mov r6, r8\n" - " add r5, r6, r0\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, r9\n" - " add r1, r1, #0x1c\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " ldr r0, ._150 + 16\n" - " cmp r1, r0\n" - " beq ._135 @cond_branch\n" - " b ._147\n" - "._135:\n" - " ldr r0, ._150 + 20\n" - " ldrb r0, [r0]\n" - " lsl r4, r6, #0x18\n" - " cmp r0, #0\n" - " bne ._138 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._138 @cond_branch\n" - " b ._147\n" - "._138:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " b ._147\n" - "._141:\n" - " mov r0, r8\n" - " lsl r3, r0, #0x2\n" - " ldr r0, ._150 + 24\n" - " add r3, r3, r0\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r0, r0, #0x1f\n" - " mov r2, #0x1\n" - " eor r2, r2, r0\n" - " lsl r2, r2, #0x4\n" - " ldrb r0, [r3]\n" - " mov r6, #0x11\n" - " neg r6, r6\n" - " add r1, r6, #0\n" - " and r0, r0, r1\n" - " orr r0, r0, r2\n" - " strb r0, [r3]\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r6, r0, #0x1f\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._143 @cond_branch\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._144 @cond_branch\n" - " b ._147\n" - "._144:\n" - " ldr r0, ._150 + 28\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._146 @cond_branch\n" - " b ._147\n" - "._146:\n" - " cmp r6, #0x1\n" - " bne ._148 @cond_branch\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r0, ._150 + 32\n" - " add r1, r1, r0\n" - " mov r0, sp\n" - " ldr r2, ._150 + 36\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._150 + 40\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._150 + 40\n" - " b ._149\n" - "._151:\n" - " .align 2, 0\n" - "._150:\n" - " .word gNoOfAllBanks\n" - " .word gSprites\n" - " .word gBattlePartyID\n" - " .word gHealthboxIDs\n" - " .word SpriteCallbackDummy+1\n" - " .word gUnknown_020297ED\n" - " .word +0x2017800\n" - " .word gBattleTypeFlags\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gPlayerParty\n" - "._148:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r2, sl\n" - " mul r2, r2, r1\n" - " add r1, r2, #0\n" - " ldr r6, ._153\n" - " add r1, r1, r6\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " mov r0, #0x75\n" - " bl sub_8043CDC\n" - " ldrb r2, [r5]\n" - " lsl r1, r2, #0x4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r9\n" - " ldrh r1, [r1, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r2, ._153 + 4\n" - " add r1, r1, r2\n" - " ldr r2, ._153 + 8\n" - " bl CpuSet\n" - " b ._163\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gPlayerParty\n" - " .word 0x6010680\n" - " .word 0x4000008\n" - "._143:\n" - " cmp r6, #0x1\n" - " bne ._155 @cond_branch\n" - " ldr r0, ._158\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._156 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r1\n" - " add r1, r6, #0\n" - " ldr r2, ._158 + 4\n" - " add r1, r1, r2\n" - " bl sub_8044338\n" - " b ._163\n" - "._159:\n" - " .align 2, 0\n" - "._158:\n" - " .word gBattleTypeFlags\n" - " .word gEnemyParty\n" - "._156:\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r6, ._161\n" - " add r1, r1, r6\n" - " mov r0, sp\n" - " ldr r2, ._161 + 4\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._161 + 8\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._161 + 8\n" - "._149:\n" - " add r0, r0, r1\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl sub_8044210\n" - " b ._163\n" - "._162:\n" - " .align 2, 0\n" - "._161:\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gEnemyParty\n" - "._155:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, #0x64\n" - " mul r1, r1, r6\n" - " ldr r4, ._166\n" - " add r1, r1, r4\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " ldr r0, ._166 + 4\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._163 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mul r1, r1, r6\n" - " add r1, r1, r4\n" - " mov r2, #0x4\n" - " bl sub_8045A5C\n" - "._163:\n" - " ldr r0, ._166 + 8\n" - " add r0, r0, r8\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x3c]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strh r1, [r0, #0x3c]\n" - "._147:\n" - " add r7, r7, #0x2\n" - " mov r2, #0x1\n" - " add r8, r8, r2\n" - " ldr r0, ._166 + 12\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " bge ._164 @cond_branch\n" - " b ._165\n" - "._164:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word gEnemyParty\n" - " .word gBattleTypeFlags\n" - " .word gHealthboxIDs\n" - " .word gNoOfAllBanks\n" - "\n" - ); -} -#else +extern u8 gUnknown_020297ED; + void sub_804454C(void) { s32 i; @@ -1632,7 +1287,11 @@ void sub_804454C(void) for (i = 0; i < gNoOfAllBanks; i++) { if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy +#if DEBUG + && (gUnknown_020297ED != 0 || GetBankSide(i) != 1) +#else && GetBankSide(i) != 1 +#endif && (IsDoubleBattle() || GetBankSide(i) != 0)) { u8 r6; @@ -1691,7 +1350,6 @@ void sub_804454C(void) } } } -#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -3045,310 +2703,6 @@ static u8 sub_80457E8(u8 a, u8 b) } } -#if DEBUG -__attribute__((naked)) -void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff8\n" - " mov r9, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " lsl r2, r2, #0x18\n" - " lsr r7, r2, #0x18\n" - " ldr r1, ._429\n" - " lsl r0, r0, #0x4\n" - " add r0, r0, r8\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrh r0, [r0, #0x3a]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._410 @cond_branch\n" - " b ._411\n" - "._410:\n" - " cmp r7, #0x3\n" - " beq ._412 @cond_branch\n" - " cmp r7, #0\n" - " bne ._413 @cond_branch\n" - "._412:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._413:\n" - " cmp r7, #0x1\n" - " bhi ._414 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._414:\n" - " cmp r7, #0x2\n" - " beq ._415 @cond_branch\n" - " cmp r7, #0\n" - " bne ._416 @cond_branch\n" - "._415:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._416:\n" - " cmp r7, #0x5\n" - " beq ._417 @cond_branch\n" - " cmp r7, #0\n" - " bne ._418 @cond_branch\n" - "._417:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._418:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp, #0x4]\n" - " cmp r0, #0\n" - " bne ._421 @cond_branch\n" - " cmp r7, #0x6\n" - " beq ._420 @cond_branch\n" - " cmp r7, #0\n" - " bne ._421 @cond_branch\n" - "._420:\n" - " mov r0, #0x3\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r0, r9\n" - " mov r1, #0x19\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " ldr r6, ._429 + 4\n" - " lsl r1, r4, #0x2\n" - " ldr r2, ._429 + 8\n" - " lsl r0, r5, #0x3\n" - " sub r0, r0, r5\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r2, [r0, #0x13]\n" - " mov r0, #0xca\n" - " lsl r0, r0, #0x1\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r6\n" - " ldr r1, [r1]\n" - " sub r3, r3, r1\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x2\n" - " add r4, r4, r0\n" - " add r4, r4, r6\n" - " ldr r2, [r4]\n" - " sub r2, r2, r1\n" - " ldr r0, [sp, #0x4]\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x1\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._421:\n" - " cmp r7, #0x4\n" - " beq ._422 @cond_branch\n" - " cmp r7, #0\n" - " bne ._423 @cond_branch\n" - "._422:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._423:\n" - " cmp r7, #0x9\n" - " beq ._424 @cond_branch\n" - " cmp r7, #0\n" - " bne ._425 @cond_branch\n" - "._424:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._425:\n" - " cmp r7, #0xa\n" - " bne ._426 @cond_branch\n" - " mov r0, r8\n" - " bl sub_80458B0\n" - "._426:\n" - " add r0, r7, #0\n" - " sub r0, r0, #0xa\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bhi ._442 @cond_branch\n" - " mov r0, r8\n" - " bl sub_8045998\n" - " b ._442\n" - "._430:\n" - " .align 2, 0\n" - "._429:\n" - " .word gSprites\n" - " .word gExperienceTables\n" - " .word gBaseStats\n" - "._411:\n" - " cmp r7, #0x3\n" - " beq ._431 @cond_branch\n" - " cmp r7, #0\n" - " bne ._432 @cond_branch\n" - "._431:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._432:\n" - " ldr r0, ._443\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x1\n" - " bne ._436 @cond_branch\n" - " cmp r7, #0x1\n" - " bhi ._434 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._434:\n" - " cmp r7, #0x2\n" - " beq ._435 @cond_branch\n" - " cmp r7, #0\n" - " bne ._436 @cond_branch\n" - "._435:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._436:\n" - " cmp r7, #0x5\n" - " beq ._437 @cond_branch\n" - " cmp r7, #0\n" - " bne ._438 @cond_branch\n" - "._437:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._438:\n" - " cmp r7, #0x4\n" - " beq ._439 @cond_branch\n" - " cmp r7, #0\n" - " bne ._440 @cond_branch\n" - "._439:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._440:\n" - " cmp r7, #0x9\n" - " beq ._441 @cond_branch\n" - " cmp r7, #0\n" - " bne ._442 @cond_branch\n" - "._441:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._442:\n" - " add sp, sp, #0x8\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._444:\n" - " .align 2, 0\n" - "._443:\n" - " .word gUnknown_020297ED\n" - "\n" - ); -} -#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -3404,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { if (c == 3 || c == 0) sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL)); +#if DEBUG + if (gUnknown_020297ED == 1) + { + if (c == 1 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0); + if (c == 2 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1); + } +#endif if (c == 5 || c == 0) { load_gfxc_health_bar(0); @@ -3418,7 +2781,6 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } -#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 6f187ad71..41579fa28 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -525,324 +525,49 @@ void CalculateMonStats(struct Pokemon *mon) } #if DEBUG -__attribute__((naked)) -void debug_sub_803F55C() +void debug_sub_803F55C(struct Pokemon *mon) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffc4\n" - " add r5, r0, #0\n" - " mov r1, #0x39\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x1c]\n" - " add r0, r5, #0\n" - " mov r1, #0x27\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r7, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x1a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x28\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r9, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x1b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r8, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x29\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x20]\n" - " add r0, r5, #0\n" - " mov r1, #0x1c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov sl, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x2a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x24]\n" - " add r0, r5, #0\n" - " mov r1, #0x1d\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x28]\n" - " add r0, r5, #0\n" - " mov r1, #0x2b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x2c]\n" - " add r0, r5, #0\n" - " mov r1, #0x1e\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x30]\n" - " add r0, r5, #0\n" - " mov r1, #0x2c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x34]\n" - " add r0, r5, #0\n" - " mov r1, #0x1f\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x38]\n" - " add r0, r5, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " add r0, r5, #0\n" - " bl GetLevelFromMonExp\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " mov r1, #0x38\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, ._71\n" - " cmp r6, r0\n" - " bne ._69 @cond_branch\n" - " mov r0, #0x1\n" - " str r0, [sp, #0x4]\n" - " lsl r7, r6, #0x3\n" - " b ._70\n" - "._72:\n" - " .align 2, 0\n" - "._71:\n" - " .word 0x12f\n" - "._69:\n" - " ldr r1, ._80\n" - " lsl r2, r6, #0x3\n" - " sub r0, r2, r6\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1\n" - " add r1, r0, r7\n" - " add r0, r4, #0\n" - " add r7, r2, #0\n" - " cmp r0, #0\n" - " bge ._73 @cond_branch\n" - " add r0, r0, #0x3\n" - "._73:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r4, [sp]\n" - " mul r0, r0, r4\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, r4\n" - " add r0, r0, #0xa\n" - " str r0, [sp, #0x4]\n" - "._70:\n" - " add r2, sp, #0x4\n" - " add r0, r5, #0\n" - " mov r1, #0x3a\n" - " bl SetMonData\n" - " ldr r1, ._80\n" - " sub r0, r7, r6\n" - " lsl r0, r0, #0x2\n" - " add r6, r0, r1\n" - " ldrb r0, [r6, #0x1]\n" - " lsl r0, r0, #0x1\n" - " mov r2, r9\n" - " add r1, r0, r2\n" - " mov r0, r8\n" - " cmp r0, #0\n" - " bge ._74 @cond_branch\n" - " add r0, r0, #0x3\n" - "._74:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x8\n" - " ldrh r1, [r4]\n" - " mov r2, #0x1\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " mov r1, #0x3b\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x20]\n" - " add r1, r0, r2\n" - " mov r0, sl\n" - " cmp r0, #0\n" - " bge ._75 @cond_branch\n" - " add r0, r0, #0x3\n" - "._75:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0xc\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " mov r1, #0x3c\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x3]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x24]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x28]\n" - " cmp r0, #0\n" - " bge ._76 @cond_branch\n" - " add r0, r0, #0x3\n" - "._76:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x10\n" - " ldrh r1, [r4]\n" - " mov r2, #0x3\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " mov r1, #0x3d\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x4]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x2c]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x30]\n" - " cmp r0, #0\n" - " bge ._77 @cond_branch\n" - " add r0, r0, #0x3\n" - "._77:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x14\n" - " ldrh r1, [r4]\n" - " mov r2, #0x4\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " mov r1, #0x3e\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x5]\n" - " lsl r0, r0, #0x1\n" - " ldr r1, [sp, #0x34]\n" - " add r2, r0, r1\n" - " ldr r0, [sp, #0x38]\n" - " cmp r0, #0\n" - " bge ._78 @cond_branch\n" - " add r0, r0, #0x3\n" - "._78:\n" - " asr r0, r0, #0x2\n" - " add r0, r2, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x18\n" - " ldrh r1, [r4]\n" - " mov r2, #0x5\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " mov r1, #0x3f\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0x4]\n" - " ldr r0, [sp, #0x1c]\n" - " cmp r1, r0\n" - " bge ._79 @cond_branch\n" - " str r1, [sp, #0x1c]\n" - "._79:\n" - " add r2, sp, #0x1c\n" - " add r0, r5, #0\n" - " mov r1, #0x39\n" - " bl SetMonData\n" - " add sp, sp, #0x3c\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._81:\n" - " .align 2, 0\n" - "._80:\n" - " .word gBaseStats\n" - "\n" - ); + s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); + s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); + s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL); + s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL); + s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL); + s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); + s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL); + s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); + s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL); + s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); + s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL); + s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); + s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL); + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + s32 level = GetLevelFromMonExp(mon); + s32 newMaxHP; + + SetMonData(mon, MON_DATA_LEVEL, &level); + + if (species == SPECIES_SHEDINJA) + { + newMaxHP = 1; + } + else + { + s32 n = 2 * gBaseStats[species].baseHP + hpIV; + newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10; + } + + SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP); + + CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK) + CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF) + CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED) + CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK) + CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF) + + if (newMaxHP < currentHP) + currentHP = newMaxHP; + + SetMonData(mon, MON_DATA_HP, ¤tHP); } #endif diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 8e1bd1671..532340ce4 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -31,6 +31,7 @@ #include "item_menu.h" #include "player_pc.h" #include "ewram.h" +#include "script.h" /* Pokemon menu: @@ -45,6 +46,7 @@ struct PokeMenuFieldMoveFunc u8 field_1; }; +extern u8 gUnknown_020297ED; extern u8 gUnknown_020384F0; extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F5; @@ -900,9 +902,10 @@ static void sub_808AE08(void) static bool8 SetUpFieldMove_Waterfall(void) { s16 x, y; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE - && IsPlayerSurfingNorth() == TRUE) + && IsPlayerSurfingNorth() == TRUE) { gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_808AE08; @@ -913,138 +916,19 @@ static bool8 SetUpFieldMove_Waterfall(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_80986AC() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - mov r4, sp\n\ - add r4, r4, #0x2\n\ - mov r0, sp\n\ - add r1, r4, #0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r0, sp\n\ - mov r1, #0x0\n\ - ldsh r0, [r0, r1]\n\ - mov r2, #0x0\n\ - ldsh r1, [r4, r2]\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl MetatileBehavior_IsWaterfall\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl IsPlayerSurfingNorth\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl sub_808AE08\n\ - b ._275\n\ -._274:\n\ - bl ScriptContext2_Disable\n\ -._275:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0"); +void debug_sub_80986AC(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE + && IsPlayerSurfingNorth() == TRUE) + sub_808AE08(); + else + ScriptContext2_Disable(); } #endif -#if DEBUG -__attribute__((naked)) -static void sub_808AE8C(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - ldr r0, ._281\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x21\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - mov r5, #0x0\n\ -._287:\n\ - mov r0, #0x64\n\ - add r1, r5, #0\n\ - mul r1, r1, r0\n\ - ldr r0, ._281 + 4\n\ - add r4, r1, r0\n\ - add r0, r4, #0\n\ - mov r1, #0xb\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - beq ._284 @cond_branch\n\ - add r0, r5, #0\n\ - bl sub_806D668\n\ - ldr r0, ._281 + 8\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x2d\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - bne ._278 @cond_branch\n\ - add r0, r4, #0\n\ - add r1, r6, #0\n\ - bl CanMonLearnTMHM\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ -._278:\n\ - add r0, r5, #0\n\ - mov r1, #0x9a\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._282:\n\ - .align 2, 0\n\ -._281:\n\ - .word gSpecialVar_ItemId\n\ - .word gPlayerParty\n\ - .word gUnknown_020297ED\n\ -._279:\n\ - mov r0, #0x64\n\ - add r4, r5, #0\n\ - mul r4, r4, r0\n\ - ldr r0, ._285\n\ - add r4, r4, r0\n\ - ldr r0, ._285 + 4\n\ - ldrh r0, [r0]\n\ - bl ItemIdToBattleMoveId\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x10\n\ - lsr r1, r1, #0x10\n\ - add r0, r4, #0\n\ - bl pokemon_has_move\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._283 @cond_branch\n\ - add r0, r5, #0\n\ - mov r1, #0xa8\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._286:\n\ - .align 2, 0\n\ -._285:\n\ - .word gPlayerParty\n\ - .word gSpecialVar_ItemId\n\ -._283:\n\ - add r0, r5, #0\n\ - mov r1, #0x8c\n\ - bl sub_806BC3C\n\ -._284:\n\ - add r0, r5, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - cmp r5, #0x5\n\ - bls ._287 @cond_branch\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0"); -} -#else static void sub_808AE8C(void) { u8 i; @@ -1054,7 +938,11 @@ static void sub_808AE8C(void) if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { sub_806D668(i); - if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) + if ( +#if DEBUG + gUnknown_020297ED == 0 && +#endif + (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))) sub_806BC3C(i, 0x9A); else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId))) sub_806BC3C(i, 0xA8); @@ -1063,7 +951,6 @@ static void sub_808AE8C(void) } } } -#endif static void sub_808AF20(void) { |