;;; Power bomb explosion ;;; 080683B4 (T) push r4-r7,r14 080683B6 (T) lsl r0,r0,10h ;\ 080683B8 (T) lsr r7,r0,10h ;} r7 = X-position 080683BA (T) lsl r1,r1,10h ;\ 080683BC (T) lsr r6,r1,10h ;} r6 = Y-position 080683BE (T) lsl r2,r2,18h ;\ 080683C0 (T) lsr r5,r2,18h ;} r5 = 0 080683C2 (T) ldr r0,=SubGameMode2 ;\ 080683C4 (T) mov r1,0h ;| 080683C6 (T) ldsh r4,[r0,r1] ;} If not in active in-game: Return 080683C8 (T) cmp r4,2h ;| 080683CA (T) bne 80683F4h ;/ 080683CC (T) bl 80683FCh ; Clears 03000122 080683D0 (T) ldr r1,=3000110h ;\ 080683D2 (T) ldrb r0,[r1] ;| 080683D4 (T) cmp r0,0h ;} If 03000110 != 0: Return 080683D6 (T) bne 80683F4h ;/ 080683D8 (T) strh r7,[r1,4h] ; Store x-position 080683DA (T) strh r6,[r1,6h] ; Store y-position 080683DC (T) strb r5,[r1,11h] ; Clear 03000121 080683DE (T) ldrb r0,[r1,12h] ;\ 080683E0 (T) cmp r0,0h ;} If 03000122 != 0: 080683E2 (T) beq 80683F0h ;/ 080683E4 (T) strb r4,[r1] ; Detonate power bomb 080683E6 (T) b 80683F4h 080683E8 dd 003000BE0h,003000110h 080683F0 (T) bl 8068408h ; Else: Execute subroutine 08068408 080683F4 (T) pop r4-r7 080683F6 (T) pop r0 080683F8 (T) bx r0 ;;; Subroutine - clear 03000122 ;;; 080683FC (T) ldr r1,=3000110h 080683FE (T) mov r0,0h 08068400 (T) strb r0,[r1,12h] 08068402 (T) bx r14 08068404 dd 003000110h ;;; Subroutine - 08068408 ;;; 08068408 (T) push r4-r6,r14 0806840A (T) ldr r4,=3000110h 0806840C (T) mov r6,0h 0806840E (T) mov r0,3h ;\ 08068410 (T) strb r0,[r4] ;} Animation frame = 3 08068412 (T) strb r6,[r4,10h] ; Clear 03000120 08068414 (T) ldr r1,=40000D4h ;\ 08068416 (T) mov r0,0A0h ;| 08068418 (T) lsl r0,r0,13h ;| 0806841A (T) str r0,[r1] ;| 0806841C (T) ldr r2,=2035400h ;} DMA the palette RAM to 02035400 0806841E (T) str r2,[r1,4h] ;| 08068420 (T) ldr r0,=80000100h ;| 08068422 (T) str r0,[r1,8h] ;| 08068424 (T) ldr r0,[r1,8h] ;/ 08068426 (T) mov r5,0h ;\ 08068428 (T) strh r6,[r2] ;} Set transparent colour to 0x0000 0806842A (T) mov r0,8h ; r0 parameter = 8 0806842C (T) bl 806EF08h ; Execute subroutine 0806EF08 08068430 (T) strb r5,[r4,1h] ; Clear animation counter 08068432 (T) mov r0,4h ;\ 08068434 (T) strb r0,[r4,2h] ;} Semi-major axis = 4 08068436 (T) strh r6,[r4,8h] ; Clear left boundary offset 08068438 (T) strh r6,[r4,0Ah] ; Clear right boundary offset 0806843A (T) strh r6,[r4,0Ch] ; Clear top boundary offset 0806843C (T) strh r6,[r4,0Eh] ; Clear bottom boundary offset 0806843E (T) strb r5,[r4,12h] ; Clear 03000122 08068440 (T) strb r5,[r4,3h] ; Clear 03000113 08068442 (T) mov r0,78h ;\ 08068444 (T) mov r1,80h ;} Set horizontal screen shaking, type 0x80, for 0x78 frames 08068446 (T) bl 80625C0h ;/ 0806844A (T) mov r0,0E0h ;\ 0806844C (T) bl 800270Ch ;} Play sound effect E0h 08068450 (T) pop r4-r6 08068452 (T) pop r0 08068454 (T) bx r0 08068456 dw 00000h 08068458 dd 003000110h,0040000D4h,002035400h,080000100h