summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_9.s171
-rw-r--r--asm/pokemon_storage_system.s884
-rw-r--r--src/battle/battle_controller_opponent.c548
-rw-r--r--src/engine/cable_club.c65
-rw-r--r--src/field/party_menu.c492
-rw-r--r--src/pokemon/pokemon_menu.c92
-rw-r--r--src/scene/berry_blender.c21
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)
{