diff options
-rw-r--r-- | asm/battle_9.s | 171 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 884 | ||||
-rw-r--r-- | src/battle/battle_controller_opponent.c | 548 | ||||
-rw-r--r-- | src/engine/cable_club.c | 65 | ||||
-rw-r--r-- | src/field/party_menu.c | 492 | ||||
-rw-r--r-- | src/pokemon/pokemon_menu.c | 92 | ||||
-rw-r--r-- | src/scene/berry_blender.c | 21 |
7 files changed, 2262 insertions, 11 deletions
diff --git a/asm/battle_9.s b/asm/battle_9.s index 9dbb7c619..62e2baae6 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -1387,6 +1387,176 @@ _08036AFE: bx r1 thumb_func_end AI_ShouldSwitch +.if DEBUG + thumb_func_start sub_8036B0C +sub_8036B0C: +.syntax divided + push {r4, r5, r6, lr} + ldr r5, ._205 + ldrh r1, [r5] + mov r0, #0x8 + and r0, r0, r1 + cmp r0, #0 + bne ._197 @cond_branch + b ._216 +._197: + bl AI_ShouldSwitch + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._199 @cond_branch + b ._200 +._199: + ldr r4, ._205 + 4 + ldr r0, ._205 + 8 + ldrb r0, [r0] + bl GetBankIdentity + lsl r0, r0, #0x18 + lsr r0, r0, #0x19 + ldr r1, ._205 + 12 + add r0, r0, r1 + add r0, r0, r4 + ldrb r0, [r0] + cmp r0, #0x6 + bne ._201 @cond_branch + bl sub_8036CD4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + bne ._211 @cond_branch + ldrh r1, [r5] + mov r0, #0x1 + and r0, r0, r1 + cmp r0, #0 + bne ._203 @cond_branch + mov r0, #0x1 + bl GetBankByIdentity + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r6, r5, #0 + b ._204 +._206: + .align 2, 0 +._205: + .word gBattleTypeFlags + .word +0x2000000 + .word gActiveBank + .word 0x160c8 +._203: + mov r0, #0x1 + bl GetBankByIdentity + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + mov r0, #0x3 + bl GetBankByIdentity + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +._204: + mov r4, #0x0 +._212: + mov r0, #0x64 + mul r0, r0, r4 + ldr r1, ._214 + add r0, r0, r1 + mov r1, #0x39 + bl GetMonData + cmp r0, #0 + beq ._210 @cond_branch + ldr r1, ._214 + 4 + lsl r0, r6, #0x1 + add r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq ._210 @cond_branch + lsl r0, r5, #0x1 + add r0, r0, r1 + ldrh r0, [r0] + cmp r4, r0 + beq ._210 @cond_branch + ldr r1, ._214 + 8 + ldr r2, ._214 + 12 + add r0, r6, r2 + add r0, r0, r1 + ldrb r0, [r0] + cmp r4, r0 + beq ._210 @cond_branch + add r0, r5, r2 + add r0, r0, r1 + ldrb r0, [r0] + cmp r4, r0 + bne ._211 @cond_branch +._210: + add r4, r4, #0x1 + cmp r4, #0x5 + ble ._212 @cond_branch +._211: + ldr r0, ._214 + 16 + ldrb r0, [r0] + bl GetBankIdentity + ldr r1, ._214 + 8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x19 + ldr r3, ._214 + 20 + add r0, r0, r3 + add r0, r0, r1 + strb r4, [r0] +._201: + ldr r4, ._214 + 16 + ldrb r0, [r4] + bl GetBankIdentity + ldr r2, ._214 + 8 + ldrb r1, [r4] + ldr r3, ._214 + 12 + add r1, r1, r3 + add r1, r1, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x19 + add r3, r3, #0x60 + add r0, r0, r3 + add r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + b ._217 +._215: + .align 2, 0 +._214: + .word gEnemyParty + .word gBattlePartyID + .word +0x2000000 + .word 0x16068 + .word gActiveBank + .word 0x160c8 +._200: + ldr r0, ._218 + ldrb r1, [r0] + mov r0, #0x20 + and r0, r0, r1 + cmp r0, #0 + bne ._216 @cond_branch + bl AI_ShouldUseItem + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._217 @cond_branch +._216: + ldr r0, ._218 + 4 + ldrb r0, [r0] + mov r2, #0x1 + eor r2, r2, r0 + lsl r2, r2, #0x8 + mov r0, #0x1 + mov r1, #0x0 + bl Emitcmd33 +._217: + pop {r4, r5, r6} + pop {r0} + bx r0 +._219: + .align 2, 0 +._218: + .word gUnknown_02023A14+0x50 + .word gActiveBank +.syntax unified + thumb_func_end sub_8036B0C +.else thumb_func_start sub_8036B0C sub_8036B0C: @ 8036B0C push {r4-r6,lr} @@ -1540,6 +1710,7 @@ _08036C40: .align 2, 0 _08036C48: .4byte gActiveBank thumb_func_end sub_8036B0C +.endif thumb_func_start sub_8036C4C sub_8036C4C: @ 8036C4C diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 14b86a3d1..24117bc8c 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1978,6 +1978,144 @@ sub_8096874: @ 8096874 bx lr thumb_func_end sub_8096874 +.if DEBUG + thumb_func_start sub_8096884 +sub_8096884: +.syntax divided + push {r4, lr} + ldr r0, ._223 + ldr r1, ._223 + 4 + add r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x9 + bls ._221 @cond_branch + b ._222 +._221: + lsl r0, r0, #0x2 + ldr r1, ._223 + 8 + add r0, r0, r1 + ldr r0, [r0] + mov pc, r0 +._224: + .align 2, 0 +._223: + .word gMain + .word 0x43c + .word ._225 +._225: + .word ._226 + .word ._227 + .word ._228 + .word ._229 + .word ._230 + .word ._231 + .word ._232 + .word ._233 + .word ._234 + .word ._235 +._226: + mov r0, #0x0 + bl SetVBlankCallback + mov r0, #0x80 + lsl r0, r0, #0x13 + mov r4, #0x0 + strh r4, [r0] + bl sub_8096804 + ldr r0, ._237 + strb r4, [r0] + b ._250 +._238: + .align 2, 0 +._237: + .word unk_2038790 +._227: + ldr r0, ._240 + bl Text_LoadWindowTemplate + b ._250 +._241: + .align 2, 0 +._240: + .word gWindowTemplate_81E6D00 +._228: + ldr r0, ._243 + bl InitMenuWindow + bl Menu_EraseScreen + b ._250 +._244: + .align 2, 0 +._243: + .word gWindowTemplate_81E6D00 +._229: + bl sub_80967DC + bl sub_8096848 + b ._250 +._230: + bl sub_8098B48 + bl sub_809AA24 + b ._250 +._231: + bl sub_8097DE0 + b ._250 +._232: + bl sub_8097E70 + b ._250 +._233: + bl sub_8098400 + b ._250 +._234: + ldr r0, ._251 + ldrb r0, [r0] + bl sub_8099BF8 + ldr r2, ._251 + 4 + ldr r1, ._251 + 8 + add r0, r2, r1 + mov r1, #0xa + strh r1, [r0] + ldr r1, ._251 + 12 + add r2, r2, r1 + ldr r1, ._251 + 16 + strh r1, [r2] + bl sub_80F727C + bl sub_80F7404 + b ._250 +._252: + .align 2, 0 +._251: + .word gPokemonStorage + .word +0x2000000 + .word 0x12bc + .word 0x12be + .word 0xdacb +._235: + bl sub_8096874 + ldr r0, ._253 + bl sub_8096BE0 + ldr r0, ._253 + 4 + bl SetMainCallback2 + ldr r0, ._253 + 8 + bl SetVBlankCallback +._250: + ldr r1, ._253 + 12 + ldr r0, ._253 + 16 + add r1, r1, r0 + ldrb r0, [r1] + add r0, r0, #0x1 + strb r0, [r1] +._222: + pop {r4} + pop {r0} + bx r0 +._254: + .align 2, 0 +._253: + .word sub_8096BF0+1 + .word sub_8096B38+1 + .word sub_8096AFC+1 + .word gMain + .word 0x43c +.syntax unified + thumb_func_end sub_8096884 +.else thumb_func_start sub_8096884 sub_8096884: @ 8096884 push {lr} @@ -2096,6 +2234,7 @@ _08096994: .4byte sub_8096AFC _08096998: .4byte gMain _0809699C: .4byte 0x0000043c thumb_func_end sub_8096884 +.endif thumb_func_start sub_80969A0 sub_80969A0: @ 80969A0 @@ -2556,6 +2695,438 @@ _08096C7A: _08096C80: .4byte sub_8096C84 thumb_func_end sub_8096C68 +.if DEBUG + thumb_func_start sub_8096C84 +sub_8096C84: +.syntax divided + push {r4, lr} + ldr r0, ._347 + ldrb r0, [r0, #0x4] + cmp r0, #0x6 + bls ._345 @cond_branch + b ._466 +._345: + lsl r0, r0, #0x2 + ldr r1, ._347 + 4 + add r0, r0, r1 + ldr r0, [r0] + mov pc, r0 +._348: + .align 2, 0 +._347: + .word +0x2000000 + .word ._349 +._349: + .word ._350 + .word ._351 + .word ._352 + .word ._353 + .word ._354 + .word ._355 + .word ._356 +._350: + bl sub_809CA40 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r0, r0, #0x1 + cmp r0, #0xf + bls ._357 @cond_branch + b ._466 +._357: + lsl r0, r0, #0x2 + ldr r1, ._360 + add r0, r0, r1 + ldr r0, [r0] + mov pc, r0 +._361: + .align 2, 0 +._360: + .word ._359 +._359: + .word ._362 + .word ._466 + .word ._466 + .word ._365 + .word ._366 + .word ._367 + .word ._368 + .word ._369 + .word ._370 + .word ._371 + .word ._372 + .word ._373 + .word ._374 + .word ._375 + .word ._376 + .word ._377 +._362: + mov r0, #0x5 + bl PlaySE + ldr r1, ._379 + mov r0, #0x1 + strb r0, [r1, #0x4] + b ._466 +._380: + .align 2, 0 +._379: + .word +0x2000000 +._366: + ldr r4, ._383 + ldrb r0, [r4, #0x5] + cmp r0, #0x2 + beq ._381 @cond_branch + mov r0, #0x10 + bl sub_8098898 + mov r0, #0x3 + strb r0, [r4, #0x4] + b ._466 +._384: + .align 2, 0 +._383: + .word +0x2000000 +._381: + bl sub_809B0D4 + ldr r0, ._386 + bl sub_8096BE0 + b ._466 +._387: + .align 2, 0 +._386: + .word sub_8096FC8+1 +._367: + ldr r4, ._394 + ldrb r0, [r4, #0x5] + cmp r0, #0x2 + beq ._388 @cond_branch + b ._466 +._388: + bl sub_809BF20 + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._391 @cond_branch + ldr r1, ._394 + 4 + add r0, r4, r1 + ldrh r0, [r0] + bl ItemIsMail + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._391 @cond_branch + b ._392 +._391: + ldr r0, ._394 + 8 + bl sub_8096BE0 + b ._466 +._395: + .align 2, 0 +._394: + .word +0x2000000 + .word 0x11f2 + .word sub_8097004+1 +._365: + ldr r0, ._399 + ldrb r0, [r0] + cmp r0, #0 + beq ._396 @cond_branch + b ._466 +._396: + ldr r0, ._399 + 4 + bl sub_8096BE0 + b ._466 +._400: + .align 2, 0 +._399: + .word unk_2038790 + .word sub_8097BA0+1 +._377: + ldr r0, ._404 + ldrb r0, [r0] + cmp r0, #0 + beq ._401 @cond_branch + b ._466 +._401: + ldr r0, ._404 + 4 + bl sub_8096BE0 + b ._466 +._405: + .align 2, 0 +._404: + .word unk_2038790 + .word sub_8097CC0+1 +._368: + mov r0, #0x5 + bl PlaySE + ldr r0, ._407 + bl sub_8096BE0 + b ._466 +._408: + .align 2, 0 +._407: + .word sub_809789C+1 +._369: + mov r0, #0x5 + bl PlaySE + ldr r0, ._410 + bl sub_8096BE0 + b ._466 +._411: + .align 2, 0 +._410: + .word sub_8097078+1 +._370: + mov r0, #0x5 + bl PlaySE + ldr r4, ._414 + ldr r0, ._414 + 4 + ldrb r0, [r0] + add r0, r0, #0x1 + ldr r2, ._414 + 8 + add r1, r4, r2 + strh r0, [r1] + cmp r0, #0xd + ble ._416 @cond_branch + mov r0, #0x0 + b ._413 +._415: + .align 2, 0 +._414: + .word +0x2000000 + .word gPokemonStorage + .word 0x8b2 +._371: + mov r0, #0x5 + bl PlaySE + ldr r4, ._418 + ldr r0, ._418 + 4 + ldrb r0, [r0] + sub r0, r0, #0x1 + ldr r2, ._418 + 8 + add r1, r4, r2 + strh r0, [r1] + cmp r0, #0 + bge ._416 @cond_branch + mov r0, #0xd +._413: + strh r0, [r1] +._416: + ldrb r0, [r1] + bl sub_8099C70 + mov r0, #0x2 + strb r0, [r4, #0x4] + b ._466 +._419: + .align 2, 0 +._418: + .word +0x2000000 + .word gPokemonStorage + .word 0x8b2 +._372: + bl sub_809BE80 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._428 @cond_branch + ldr r4, ._423 + ldr r1, ._423 + 4 + add r0, r4, r1 + ldrh r0, [r0] + bl ItemIsMail + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._421 @cond_branch +._392: + mov r0, #0x5 + strb r0, [r4, #0x4] + b ._466 +._424: + .align 2, 0 +._423: + .word +0x2000000 + .word 0x11f2 +._421: + mov r0, #0x5 + bl PlaySE + ldr r0, ._426 + bl sub_8096BE0 + b ._466 +._427: + .align 2, 0 +._426: + .word sub_809746C+1 +._374: + bl sub_809BE80 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._428 @cond_branch + mov r0, #0x5 + bl PlaySE + ldr r0, ._430 + bl sub_8096BE0 + b ._466 +._431: + .align 2, 0 +._430: + .word sub_80972A8+1 +._375: + bl sub_809BEBC + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._432 @cond_branch +._428: + ldr r1, ._434 + mov r0, #0x4 + strb r0, [r1, #0x4] + b ._466 +._435: + .align 2, 0 +._434: + .word +0x2000000 +._432: + mov r0, #0x5 + bl PlaySE + ldr r0, ._437 + bl sub_8096BE0 + b ._466 +._438: + .align 2, 0 +._437: + .word c3_0808DC50+1 +._373: + mov r0, #0x5 + bl PlaySE + ldr r0, ._440 + bl sub_8096BE0 + b ._466 +._441: + .align 2, 0 +._440: + .word sub_8097390+1 +._376: + mov r0, #0x5 + bl PlaySE + ldr r0, ._443 + bl sub_8096BE0 + b ._466 +._444: + .align 2, 0 +._443: + .word sub_80972FC+1 +._351: + bl sub_809AC00 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._466 @cond_branch + bl sub_809BF48 + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._446 @cond_branch + bl sub_80986E8 + b ._447 +._446: + bl sub_8098710 +._447: + ldr r4, ._450 + ldr r2, ._450 + 4 + add r0, r4, r2 + ldrb r0, [r0] + cmp r0, #0 + beq ._448 @cond_branch + bl BoxSetMosaic +._448: + mov r0, #0x0 + strb r0, [r4, #0x4] + b ._466 +._451: + .align 2, 0 +._450: + .word +0x2000000 + .word 0x11f6 +._352: + bl sub_8099D34 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._466 @cond_branch + ldr r1, ._456 + ldr r0, ._456 + 4 + ldr r2, ._456 + 8 + add r0, r0, r2 + ldrh r0, [r0] + strb r0, [r1] + ldr r0, ._456 + 12 + ldrb r0, [r0] + cmp r0, #0 + bne ._455 @cond_branch + bl sub_809BF20 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._455 @cond_branch + bl sub_809B440 + bl BoxSetMosaic + b ._455 +._457: + .align 2, 0 +._456: + .word gPokemonStorage + .word +0x2000000 + .word 0x8b2 + .word gUnknown_0203847C +._353: + ldr r0, ._460 + ldrh r1, [r0, #0x2e] + mov r0, #0xf3 + and r0, r0, r1 + cmp r0, #0 + beq ._466 @cond_branch + bl sub_8098A5C +._455: + ldr r1, ._460 + 4 + mov r0, #0x0 + strb r0, [r1, #0x4] + b ._466 +._461: + .align 2, 0 +._460: + .word gMain + .word +0x2000000 +._354: + mov r0, #0x20 + bl PlaySE + mov r0, #0xd + b ._462 +._355: + mov r0, #0x20 + bl PlaySE + mov r0, #0x16 +._462: + bl sub_8098898 + ldr r1, ._464 + mov r0, #0x6 + strb r0, [r1, #0x4] + b ._466 +._465: + .align 2, 0 +._464: + .word +0x2000000 +._356: + ldr r0, ._467 + ldrh r1, [r0, #0x2e] + mov r0, #0xf3 + and r0, r0, r1 + cmp r0, #0 + beq ._466 @cond_branch + bl sub_8098A5C + ldr r0, ._467 + 4 + bl sub_8096BE0 +._466: + pop {r4} + pop {r0} + bx r0 +._468: + .align 2, 0 +._467: + .word gMain + .word sub_8096C84+1 +.syntax unified + thumb_func_end sub_8096C84 +.else thumb_func_start sub_8096C84 sub_8096C84: @ 8096C84 push {r4,lr} @@ -2923,6 +3494,7 @@ _08096FBA: _08096FC0: .4byte gMain _08096FC4: .4byte sub_8096C84 thumb_func_end sub_8096C84 +.endif thumb_func_start sub_8096FC8 sub_8096FC8: @ 8096FC8 @@ -3017,6 +3589,317 @@ _08097070: .4byte 0x000011f6 _08097074: .4byte sub_8096C84 thumb_func_end sub_8097004 +.if DEBUG + thumb_func_start sub_8097078 +sub_8097078: +.syntax divided + push {r4, lr} + ldr r0, ._495 + ldrb r0, [r0, #0x4] + cmp r0, #0x5 + bls ._493 @cond_branch + b ._597 +._493: + lsl r0, r0, #0x2 + ldr r1, ._495 + 4 + add r0, r0, r1 + ldr r0, [r0] + mov pc, r0 +._496: + .align 2, 0 +._495: + .word +0x2000000 + .word ._497 +._497: + .word ._498 + .word ._499 + .word ._500 + .word ._501 + .word ._502 + .word ._503 +._498: + mov r0, #0x4 + bl sub_8098898 + bl sub_809CE84 + ldr r1, ._505 + mov r0, #0x1 + strb r0, [r1, #0x4] + b ._597 +._506: + .align 2, 0 +._505: + .word +0x2000000 +._499: + bl sub_809CF30 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + cmp r0, #0x21 + bls ._507 @cond_branch + b ._597 +._507: + lsl r0, r0, #0x2 + ldr r1, ._510 + add r0, r0, r1 + ldr r0, [r0] + mov pc, r0 +._511: + .align 2, 0 +._510: + .word ._509 +._509: + .word ._513 + .word ._513 + .word ._514 + .word ._515 + .word ._516 + .word ._517 + .word ._518 + .word ._519 + .word ._520 + .word ._521 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._597 + .word ._545 +._513: + bl sub_8098A5C + ldr r0, ._547 + bl sub_8096BE0 + b ._597 +._548: + .align 2, 0 +._547: + .word sub_8096C84+1 +._516: + bl sub_809BE80 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._563 @cond_branch + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._551 + bl sub_8096BE0 + b ._597 +._552: + .align 2, 0 +._551: + .word sub_80972A8+1 +._518: + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._554 + bl sub_8096BE0 + b ._597 +._555: + .align 2, 0 +._554: + .word sub_80972FC+1 +._517: + bl sub_809BEBC + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._563 @cond_branch + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._558 + bl sub_8096BE0 + b ._597 +._559: + .align 2, 0 +._558: + .word c3_0808DC50+1 +._515: + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._561 + bl sub_8096BE0 + b ._597 +._562: + .align 2, 0 +._561: + .word sub_8097390+1 +._514: + bl sub_809BE80 + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._563 @cond_branch + ldr r4, ._566 + ldr r1, ._566 + 4 + add r0, r4, r1 + ldrh r0, [r0] + bl ItemIsMail + lsl r0, r0, #0x18 + cmp r0, #0 + bne ._564 @cond_branch + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._566 + 8 + bl sub_8096BE0 + b ._597 +._567: + .align 2, 0 +._566: + .word +0x2000000 + .word 0x11f2 + .word sub_809746C+1 +._520: + bl sub_809BE80 + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._568 @cond_branch +._563: + ldr r1, ._570 + mov r0, #0x2 + strb r0, [r1, #0x4] + b ._597 +._571: + .align 2, 0 +._570: + .word +0x2000000 +._568: + ldr r4, ._574 + ldr r1, ._574 + 4 + add r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq ._572 @cond_branch + mov r0, #0x4 + strb r0, [r4, #0x4] + b ._597 +._575: + .align 2, 0 +._574: + .word +0x2000000 + .word 0x11f9 +._572: + ldr r1, ._578 + add r0, r4, r1 + ldrh r0, [r0] + bl ItemIsMail + lsl r0, r0, #0x18 + cmp r0, #0 + beq ._576 @cond_branch +._564: + mov r0, #0x3 + strb r0, [r4, #0x4] + b ._597 +._579: + .align 2, 0 +._578: + .word 0x11f2 +._576: + mov r0, #0x5 + bl PlaySE + ldr r0, ._581 + bl sub_8096BE0 + b ._597 +._582: + .align 2, 0 +._581: + .word sub_8097594+1 +._519: + mov r0, #0x5 + bl PlaySE + ldr r0, ._584 + bl sub_8096BE0 + b ._597 +._585: + .align 2, 0 +._584: + .word sub_8097788+1 +._521: + mov r0, #0x5 + bl PlaySE + ldr r0, ._587 + bl sub_8096BE0 + b ._597 +._588: + .align 2, 0 +._587: + .word sub_80977E4+1 +._545: + mov r0, #0x5 + bl PlaySE + bl sub_8098A5C + ldr r0, ._590 + bl sub_8096BE0 + b ._597 +._591: + .align 2, 0 +._590: + .word debug_sub_80A435C+1 +._500: + mov r0, #0x20 + bl PlaySE + mov r0, #0xd + b ._593 +._502: + mov r0, #0x20 + bl PlaySE + mov r0, #0x11 + b ._593 +._501: + mov r0, #0x20 + bl PlaySE + mov r0, #0x16 +._593: + bl sub_8098898 + ldr r1, ._595 + mov r0, #0x5 + strb r0, [r1, #0x4] + b ._597 +._596: + .align 2, 0 +._595: + .word +0x2000000 +._503: + ldr r0, ._598 + ldrh r1, [r0, #0x2e] + mov r0, #0xf3 + and r0, r0, r1 + cmp r0, #0 + beq ._597 @cond_branch + bl sub_8098A5C + ldr r0, ._598 + 4 + bl sub_8096BE0 +._597: + pop {r4} + pop {r0} + bx r0 +._599: + .align 2, 0 +._598: + .word gMain + .word sub_8096C84+1 +.syntax unified + thumb_func_end sub_8097078 +.else thumb_func_start sub_8097078 sub_8097078: @ 8097078 push {r4,lr} @@ -3257,6 +4140,7 @@ _0809729A: _080972A0: .4byte gMain _080972A4: .4byte sub_8096C84 thumb_func_end sub_8097078 +.endif thumb_func_start sub_80972A8 sub_80972A8: @ 80972A8 diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 5947053b6..cc69c0120 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1209,6 +1209,243 @@ 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+0x50\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; @@ -1238,6 +1475,7 @@ void OpponentHandleTrainerThrow(void) gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B4C; } +#endif void OpponentHandleTrainerSlide(void) { @@ -1427,6 +1665,315 @@ void OpponentHandlecmd19(void) OpponentBufferExecCompleted(); } +#if DEBUG +__attribute__((naked)) +void OpponentHandlecmd20(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\ + ldr r6, ._549\n\ + ldrb r0, [r6]\n\ + lsl r0, r0, #0x9\n\ + ldr r1, ._549 + 4\n\ + add r5, r0, r1\n\ + ldr r2, ._549 + 8\n\ + ldrb r1, [r2]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + mov sl, r6\n\ + cmp r0, #0\n\ + beq ._546 @cond_branch\n\ + ldr r0, ._549 + 12\n\ + mov r9, r0\n\ + ldr r1, ._549 + 16\n\ + mov ip, r1\n\ + add r7, r6, #0\n\ + mov r0, #0x2\n\ + mov r8, r0\n\ + ldr r6, ._549 + 20\n\ +._552:\n\ + ldrb r1, [r7]\n\ + mov r0, r8\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x19\n\ + add r0, r0, r6\n\ + mov r1, ip\n\ + add r3, r0, r1\n\ + ldrb r1, [r3]\n\ + lsl r0, r1, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + add r4, r1, #0\n\ + cmp r2, #0\n\ + beq ._547 @cond_branch\n\ + add r0, r4, #1\n\ + strb r0, [r3]\n\ + b ._548\n\ +._550:\n\ + .align 2, 0\n\ +._549:\n\ + .word gActiveBank\n\ + .word gUnknown_02023A64\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoves\n\ + .word +0x2000000\n\ + .word 0x1609e\n\ +._547:\n\ + strb r2, [r3]\n\ +._548:\n\ + ldrb r0, [r7]\n\ + mov r1, r8\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x19\n\ + add r1, r1, r6\n\ + add r1, r1, ip\n\ + ldrb r0, [r1]\n\ + cmp r0, #0x3\n\ + bls ._551 @cond_branch\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ +._551:\n\ + cmp r2, #0\n\ + beq ._552 @cond_branch\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r9\n\ + ldrb r3, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r3\n\ + cmp r0, #0\n\ + beq ._553 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + b ._561\n\ +._553:\n\ + ldr r0, ._559\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._557 @cond_branch\n\ + ldr r0, ._559 + 4\n\ + ldrb r1, [r0]\n\ + mov r5, #0x2\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._556 @cond_branch\n\ + cmp r3, #0\n\ + bne ._557 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + mov r1, #0x2\n\ + eor r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._558\n\ +._560:\n\ + .align 2, 0\n\ +._559:\n\ + .word gBattleTypeFlags\n\ + .word gUnknown_02023A14+0x50\n\ +._556:\n\ + bl Random\n\ + add r1, r5, #0\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x10\n\ + lsr r0, r1, #0x10\n\ + b ._561\n\ +._557:\n\ + mov r0, #0x0\n\ +._558:\n\ + bl GetBankByIdentity\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ +._561:\n\ + lsl r2, r0, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ +._569:\n\ + bl Emitcmd33\n\ +._573:\n\ + bl OpponentBufferExecCompleted\n\ + b ._562\n\ +._546:\n\ + ldr r0, ._567\n\ + ldrh r1, [r0]\n\ + mov r0, #0x93\n\ + lsl r0, r0, #0x3\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._563 @cond_branch\n\ + bl BattleAI_SetupAIData\n\ + bl BattleAI_GetAIActionToUse\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0x4\n\ + beq ._564 @cond_branch\n\ + cmp r4, #0x5\n\ + bne ._565 @cond_branch\n\ + mov r0, #0x1\n\ + mov r1, #0x4\n\ + b ._566\n\ +._568:\n\ + .align 2, 0\n\ +._567:\n\ + .word gBattleTypeFlags\n\ +._564:\n\ + mov r0, #0x1\n\ + mov r1, #0x3\n\ +._566:\n\ + mov r2, #0x0\n\ + b ._569\n\ +._565:\n\ + ldr r3, ._574\n\ + lsl r0, r4, #0x1\n\ + add r2, r5, r0\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._570 @cond_branch\n\ + ldr r1, ._574 + 4\n\ + ldrb r0, [r6]\n\ + strb r0, [r1]\n\ +._570:\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + ldr r5, ._574 + 4\n\ + strb r0, [r5]\n\ + ldr r0, ._574 + 8\n\ + ldrb r1, [r0]\n\ + ldr r2, ._574 + 12\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x2\n\ + bl GetBankByIdentity\n\ + strb r0, [r5]\n\ +._572:\n\ + ldr r0, ._574 + 4\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._573\n\ +._575:\n\ + .align 2, 0\n\ +._574:\n\ + .word gBattleMoves\n\ + .word gBankTarget\n\ + .word gAbsentBankFlags\n\ + .word gBitTable\n\ +._563:\n\ + mov r6, #0x3\n\ +._576:\n\ + bl Random\n\ + add r4, r0, #0\n\ + and r4, r4, r6\n\ + lsl r0, r4, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + cmp r2, #0\n\ + beq ._576 @cond_branch\n\ + ldr r1, ._579\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._577 @cond_branch\n\ + ldr r0, ._579 + 4\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + b ._578\n\ +._580:\n\ + .align 2, 0\n\ +._579:\n\ + .word gBattleMoves\n\ + .word gActiveBank\n\ +._577:\n\ + ldr r0, ._583\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._581 @cond_branch\n\ + bl Random\n\ + mov r1, #0x2\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + add r0, r1, #0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ +._578:\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._582\n\ +._584:\n\ + .align 2, 0\n\ +._583:\n\ + .word gBattleTypeFlags\n\ +._581:\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ +._582:\n\ + bl OpponentBufferExecCompleted\n\ +._562:\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"); +} +#else #ifdef NONMATCHING void OpponentHandlecmd20(void) { @@ -1670,6 +2217,7 @@ _0803558A:\n\ .syntax divided\n"); } #endif +#endif void OpponentHandleOpenBag(void) { diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 4063aee3a..d40c31b1b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -41,7 +41,7 @@ extern struct u8 field1; } gUnknown_020297D8; -static void sub_8082F20(u8 taskId); +/*static*/ void sub_8082F20(u8 taskId); static void sub_8082F68(u8 taskId); static void sub_8082FEC(u8 taskId); static void sub_808303C(u8 taskId); @@ -414,6 +414,63 @@ void debug_sub_808A55C() } #endif +#if DEBUG +__attribute__((naked)) +static void sub_8082CD4(u8 arg0, u8 arg1) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + lsl r1, r1, #0x18\n\ + lsr r6, r1, #0x18\n\ + mov r0, #0xc\n\ + mov r1, #0x0\n\ + mov r2, #0x1f\n\ + mov r3, #0x2\n\ + bl InitLinkTestBG_Unused\n\ + ldr r4, ._40\n\ + add r0, r4, #0\n\ + bl FindTaskIdByFunc\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._39 @cond_branch\n\ + add r0, r4, #0\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + add r4, r0, #0\n\ + lsl r4, r4, #0x18\n\ + lsr r4, r4, #0x18\n\ + ldr r5, ._40 + 4\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r4\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r5\n\ + strh r7, [r0, #0xa]\n\ + strh r6, [r0, #0xc]\n\ + ldr r0, ._40 + 8\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r5\n\ + strh r4, [r1, #0x8]\n\ +._39:\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._41:\n\ + .align 2, 0\n\ +._40:\n\ + .word sub_8082F20+1\n\ + .word gTasks\n\ + .word debug_sub_808A55C+1"); +} +#else static void sub_8082CD4(u8 arg0, u8 arg1) { if (FindTaskIdByFunc(sub_8082F20) == 0xFF) @@ -424,6 +481,7 @@ static void sub_8082CD4(u8 arg0, u8 arg1) gTasks[taskId].data[2] = arg1; } } +#endif static void sub_8082D18(u32 value) { @@ -526,7 +584,7 @@ void unref_sub_8082EEC(u8 taskId) } } -static void sub_8082F20(u8 taskId) +/*static*/ void sub_8082F20(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1316,6 +1374,7 @@ void unref_sub_8083CC8(u8 taskId) #if DEBUG +__attribute__((naked)) void debug_sub_808B82C() { asm("\ @@ -1329,6 +1388,7 @@ void debug_sub_808B82C() .word unk_2030220"); } +__attribute__((naked)) void debug_sub_808B838(u8 a) { asm("\ @@ -1347,6 +1407,7 @@ void debug_sub_808B838(u8 a) .word unk_2030220"); } +__attribute__((naked)) int debug_sub_808B850() { asm("\ diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 75c0cba78..e26b801bc 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -94,9 +94,9 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite); static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId); static void ItemUseMoveMenu_HandleCancel(u8 taskId); static bool8 SetupDefaultPartyMenu(void); -static void sub_806B4A8(void); -static void VBlankCB_PartyMenu(void); -static bool8 LoadPartyMenuGraphics(u8 a); +/*static*/ void sub_806B4A8(void); +/*static*/ void VBlankCB_PartyMenu(void); +/*static*/ bool8 LoadPartyMenuGraphics(u8 a); static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d); static void sub_806BB9C(u8 a); static void sub_806BBEC(u8 a); @@ -493,6 +493,71 @@ extern const u8 gStatusPal_Icons[]; #define WINDOW_RIGHT (29) #endif +#if DEBUG +__attribute__((naked)) +void CB2_PartyMenuMain(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + add sp, sp, #0xfffffffc\n\ + bl AnimateSprites\n\ + bl BuildOamBuffer\n\ + ldr r0, ._3\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x4\n\ + ldr r1, ._3 + 4\n\ + add r5, r0, r1\n\ + mov r6, #0x0\n\ +._1:\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x3\n\ + ldrb r1, [r5, #0x1]\n\ + lsl r1, r1, #0x3\n\ + ldr r2, [r5, #0x4]\n\ + lsl r3, r6, #0x5\n\ + mov r4, #0x80\n\ + lsl r4, r4, #0x2\n\ + orr r3, r3, r4\n\ + str r3, [sp]\n\ + mov r3, #0x0\n\ + bl DrawPartyMenuMonText\n\ + add r5, r5, #0x8\n\ + add r6, r6, #0x1\n\ + cmp r6, #0x5\n\ + ble ._1 @cond_branch\n\ + bl RunTasks\n\ + bl UpdatePaletteFade\n\ + ldr r0, ._3 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._2 @cond_branch\n\ + ldr r0, ._3 + 12\n\ + ldr r1, ._3 + 16\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x2\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x1\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._2:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word gPartyMenuType\n\ + .word PartyMonTextSettings\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void CB2_PartyMenuMain(void) { const struct PartyMonTextSettingsStruct *textSettings; @@ -517,6 +582,7 @@ void CB2_PartyMenuMain(void) RunTasks(); UpdatePaletteFade(); } +#endif void VBlankCB_PartyMenu(void) { @@ -621,6 +687,425 @@ bool8 SetupDefaultPartyMenu(void) return FALSE; } +#if DEBUG +__attribute__((naked)) +bool8 InitPartyMenu(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + add sp, sp, #0xfffffff4\n\ + ldr r0, ._55\n\ + ldr r1, ._55 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x11\n\ + bls ._53 @cond_branch\n\ + b ._125\n\ +._53:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._55 + 8\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._56:\n\ + .align 2, 0\n\ +._55:\n\ + .word gMain\n\ + .word 0x43c\n\ + .word ._57\n\ +._57:\n\ + .word ._58\n\ + .word ._59\n\ + .word ._60\n\ + .word ._61\n\ + .word ._62\n\ + .word ._63\n\ + .word ._64\n\ + .word ._65\n\ + .word ._66\n\ + .word ._67\n\ + .word ._68\n\ + .word ._69\n\ + .word ._70\n\ + .word ._71\n\ + .word ._72\n\ + .word ._73\n\ + .word ._74\n\ + .word ._75\n\ +._58:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + mov r3, #0xc0\n\ + lsl r3, r3, #0x13\n\ + mov r4, #0xc0\n\ + lsl r4, r4, #0x9\n\ + add r2, sp, #0x8\n\ + mov r8, r2\n\ + add r2, sp, #0x4\n\ + mov r6, #0x0\n\ + ldr r1, ._78\n\ + mov r5, #0x80\n\ + lsl r5, r5, #0x5\n\ + ldr r7, ._78 + 4\n\ + mov r0, #0x81\n\ + lsl r0, r0, #0x18\n\ + mov ip, r0\n\ +._76:\n\ + strh r6, [r2]\n\ + add r0, sp, #0x4\n\ + str r0, [r1]\n\ + str r3, [r1, #0x4]\n\ + str r7, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + add r3, r3, r5\n\ + sub r4, r4, r5\n\ + cmp r4, r5\n\ + bhi ._76 @cond_branch\n\ + strh r6, [r2]\n\ + add r2, sp, #0x4\n\ + str r2, [r1]\n\ + str r3, [r1, #0x4]\n\ + lsr r0, r4, #0x1\n\ + mov r3, ip\n\ + orr r0, r0, r3\n\ + str r0, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + mov r0, #0xe0\n\ + lsl r0, r0, #0x13\n\ + mov r3, #0x80\n\ + lsl r3, r3, #0x3\n\ + mov r4, #0x0\n\ + str r4, [sp, #0x8]\n\ + ldr r2, ._78\n\ + mov r1, r8\n\ + str r1, [r2]\n\ + str r0, [r2, #0x4]\n\ + lsr r0, r3, #0x2\n\ + mov r1, #0x85\n\ + lsl r1, r1, #0x18\n\ + orr r0, r0, r1\n\ + str r0, [r2, #0x8]\n\ + ldr r0, [r2, #0x8]\n\ + mov r1, #0xa0\n\ + lsl r1, r1, #0x13\n\ + add r0, sp, #0x4\n\ + strh r4, [r0]\n\ + str r0, [r2]\n\ + str r1, [r2, #0x4]\n\ + lsr r3, r3, #0x1\n\ + mov r0, #0x81\n\ + lsl r0, r0, #0x18\n\ + orr r3, r3, r0\n\ + str r3, [r2, #0x8]\n\ + ldr r0, [r2, #0x8]\n\ + ldr r2, ._78 + 8\n\ + ldrb r0, [r2, #0x8]\n\ + mov r1, #0x80\n\ + orr r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ + ldr r1, ._78 + 12\n\ + ldr r2, ._78 + 16\n\ + add r1, r1, r2\n\ + b ._122\n\ +._79:\n\ + .align 2, 0\n\ +._78:\n\ + .word 0x40000d4\n\ + .word 0x81000800\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._59:\n\ + bl ScanlineEffect_Stop\n\ + b ._115\n\ +._60:\n\ + bl sub_806B4A8\n\ + ldr r1, ._82\n\ + mov r2, #0x99\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + mov r2, #0x0\n\ + strh r2, [r0]\n\ + ldr r3, ._82 + 4\n\ + add r0, r1, r3\n\ + strh r2, [r0]\n\ + mov r0, #0x9a\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + strh r2, [r1]\n\ + ldr r1, ._82 + 8\n\ + ldr r2, ._82 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._83:\n\ + .align 2, 0\n\ +._82:\n\ + .word +0x201b000\n\ + .word 0x266\n\ + .word gMain\n\ + .word 0x43c\n\ +._61:\n\ + bl ResetSpriteData\n\ + b ._115\n\ +._62:\n\ + ldr r0, ._88\n\ + mov r1, #0x96\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._86 @cond_branch\n\ + cmp r0, #0x5\n\ + beq ._86 @cond_branch\n\ + bl ResetTasks\n\ +._86:\n\ + ldr r1, ._88 + 4\n\ + ldr r2, ._88 + 8\n\ + add r1, r1, r2\n\ + b ._122\n\ +._89:\n\ + .align 2, 0\n\ +._88:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._63:\n\ + bl FreeAllSpritePalettes\n\ + b ._115\n\ +._64:\n\ + ldr r4, ._92\n\ + mov r1, #0x97\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x0\n\ + bl CreateTask\n\ + mov r2, #0x98\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + strb r0, [r1]\n\ + b ._115\n\ +._93:\n\ + .align 2, 0\n\ +._92:\n\ + .word +0x201b000\n\ +._65:\n\ + ldr r0, ._95\n\ + bl Text_LoadWindowTemplate\n\ + ldr r1, ._95 + 4\n\ + ldr r0, ._95 + 8\n\ + add r1, r1, r0\n\ + b ._122\n\ +._96:\n\ + .align 2, 0\n\ +._95:\n\ + .word gWindowTemplate_81E6C90\n\ + .word gMain\n\ + .word 0x43c\n\ +._66:\n\ + ldr r4, ._98\n\ + ldr r1, ._98 + 4\n\ + add r0, r4, #0\n\ + bl Text_InitWindowWithTemplate\n\ + add r0, r4, #0\n\ + mov r1, #0x1\n\ + bl MultistepInitWindowTileData\n\ + ldr r1, ._98 + 8\n\ + ldr r2, ._98 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._99:\n\ + .align 2, 0\n\ +._98:\n\ + .word gUnknown_03004210\n\ + .word gWindowTemplate_81E6C90\n\ + .word gMain\n\ + .word 0x43c\n\ +._67:\n\ + bl MultistepLoadFont\n\ + cmp r0, #0\n\ + bne ._100 @cond_branch\n\ + b ._125\n\ +._100:\n\ + ldr r0, ._103\n\ + mov r3, #0x99\n\ + lsl r3, r3, #0x2\n\ + add r0, r0, r3\n\ + mov r1, #0x1\n\ + strh r1, [r0]\n\ + ldr r1, ._103 + 4\n\ + ldr r0, ._103 + 8\n\ + add r1, r1, r0\n\ + b ._122\n\ +._104:\n\ + .align 2, 0\n\ +._103:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._68:\n\ + ldr r0, ._107\n\ + mov r1, #0x99\n\ + lsl r1, r1, #0x2\n\ + add r4, r0, r1\n\ + ldrb r0, [r4]\n\ + bl LoadPartyMenuGraphics\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._105 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r4]\n\ + ldr r1, ._107 + 4\n\ + ldr r2, ._107 + 8\n\ + add r1, r1, r2\n\ + b ._122\n\ +._108:\n\ + .align 2, 0\n\ +._107:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._105:\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._125\n\ +._69:\n\ + bl sub_809D51C\n\ + b ._115\n\ +._70:\n\ + ldr r2, ._113\n\ + ldr r0, ._113 + 4\n\ + mov r1, #0x96\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r2, r2, #0x4\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._125 @cond_branch\n\ + ldr r1, ._113 + 8\n\ + ldr r2, ._113 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._114:\n\ + .align 2, 0\n\ +._113:\n\ + .word PartyMenuHandlers\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._71:\n\ + ldr r0, ._116\n\ + bl MultistepInitMenuWindowBegin\n\ + b ._115\n\ +._117:\n\ + .align 2, 0\n\ +._116:\n\ + .word gWindowTemplate_81E6CC8\n\ +._72:\n\ + bl MultistepInitMenuWindowContinue\n\ + cmp r0, #0\n\ + beq ._125 @cond_branch\n\ + ldr r1, ._120\n\ + ldr r0, ._120 + 4\n\ + add r1, r1, r0\n\ + b ._122\n\ +._121:\n\ + .align 2, 0\n\ +._120:\n\ + .word gMain\n\ + .word 0x43c\n\ +._73:\n\ + ldr r0, ._123\n\ + ldr r1, ._123 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x0\n\ + bl PrintPartyMenuPromptText\n\ + ldr r1, ._123 + 8\n\ + ldr r2, ._123 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._124:\n\ + .align 2, 0\n\ +._123:\n\ + .word +0x201b000\n\ + .word 0x259\n\ + .word gMain\n\ + .word 0x43c\n\ +._74:\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r2, ._126\n\ + ldrb r1, [r2, #0x8]\n\ + mov r0, #0x7f\n\ + and r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ +._115:\n\ + ldr r1, ._126 + 4\n\ + ldr r3, ._126 + 8\n\ + add r1, r1, r3\n\ +._122:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._125\n\ +._127:\n\ + .align 2, 0\n\ +._126:\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._75:\n\ + ldr r0, ._130\n\ + bl SetVBlankCallback\n\ + ldr r0, ._130 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._128 @cond_branch\n\ + ldr r0, ._130 + 8\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x8\n\ + ldr r2, ._130 + 12\n\ + mov r3, #0x2\n\ + bl debug_sub_8008218\n\ +._128:\n\ + mov r0, #0x1\n\ + b ._129\n\ +._131:\n\ + .align 2, 0\n\ +._130:\n\ + .word VBlankCB_PartyMenu+1\n\ + .word gLinkOpen\n\ + .word 0x600e5e0\n\ + .word 0x6007800\n\ +._125:\n\ + mov r0, #0x0\n\ +._129:\n\ + add sp, sp, #0xc\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1"); +} +#else bool8 InitPartyMenu(void) { u8 *addr; @@ -744,6 +1229,7 @@ bool8 InitPartyMenu(void) return FALSE; } +#endif void CB2_InitPartyMenu(void) { diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 2b3405640..34d816387 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -954,6 +954,97 @@ void debug_sub_80986AC() } #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; @@ -972,6 +1063,7 @@ static void sub_808AE8C(void) } } } +#endif static void sub_808AF20(void) { diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index b59d02939..a93313e37 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -278,8 +278,8 @@ static bool8 Blender_PrintBlendingResults(void); static void sub_80510E8(void); static void sub_8050E30(void); static void sub_805197C(u16 a0, u16 a1); -static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); -static void sub_8052BD0(u8 taskID); +/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +/*static*/ void sub_8052BD0(u8 taskID); static void sub_8052AF8(void); static void sub_804F8C8(u8 taskID); static void sub_804F9F4(u8 taskID); @@ -2446,7 +2446,7 @@ static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); } -static void sub_8050760(void) +/*static*/ void sub_8050760(void) { u32 frames = (u16)(gBerryBlenderData->gameFrameTime); u16 max_RPM = gBerryBlenderData->max_RPM; @@ -3305,12 +3305,20 @@ static void sub_8051C04(struct Sprite* sprite) sprite->pos2.y = -(gBerryBlenderData->field_146); } -static void Blender_TrySettingRecord(void) +/*static*/ void Blender_TrySettingRecord(void) { if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; } +#if DEBUG +__attribute__((naked)) +static bool8 Blender_PrintBlendingResults(void) +{ + // TODO: disassemble this! + asm(".incbin \"baserom_de_debug.gba\", 0x56178, 0x5655C-0x56178"); +} +#else static bool8 Blender_PrintBlendingResults(void) { u16 i; @@ -3445,8 +3453,9 @@ static bool8 Blender_PrintBlendingResults(void) } return FALSE; } +#endif -static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) { u8 text[12]; u8 flavourLvl, feel; @@ -3869,7 +3878,7 @@ void ShowBerryBlenderRecordWindow(void) } } -static void sub_8052BD0(u8 taskID) +/*static*/ void sub_8052BD0(u8 taskID) { if (gTasks[taskID].data[0] == 0) { |