1170 lines
36 KiB
Plaintext
1170 lines
36 KiB
Plaintext
// Full title screen
|
|
// ----
|
|
// Jump table:
|
|
// $80113F5
|
|
// $80115A9
|
|
// $8011499
|
|
// $8011495
|
|
|
|
// 0x2E0 struct: (2028028)
|
|
// Offset Length Description Value for long title screen
|
|
// ------------------------------------------------------------------------------------------------------------
|
|
// 0 4 Palette A pointer (WRAM) -- background? x3 0x2011400
|
|
// 4 4 Palette B pointer (WRAM) -- text or orb? x5 0x2011600
|
|
// 8 4 Palette C pointer (WRAM) -- copyright or bg? x4 0x2011800
|
|
// C 4 Palette D pointer (WRAM) -- text or orb? x4 0x2011A00
|
|
// 10 4 Palette E pointer (WRAM) -- buffer? 0x2011C00
|
|
|
|
// Sequences:
|
|
// ##: [dur] [dur]
|
|
// M2GBA EBGBA
|
|
// ----- -----
|
|
// 00: start-up (play sound, etc.)
|
|
// 01: [ 48] earth fade-in [] B fade-in
|
|
// 02: [ 45] pause [] pause
|
|
// 03: [104] text flies in [] text flies in
|
|
// 04: [ 1] pause [] pause
|
|
// 05: [] flash text [] flash text
|
|
// 06: [] pause [] pause
|
|
// 07: [] text moves up [] do nothing
|
|
// 08: [] pause [] pause
|
|
// 09: [] background fade-in [] copyright fade-in
|
|
// 0A: [] pause [] pause
|
|
// 0B: [] flash all [] glow
|
|
// 0C: [] pause [] pause
|
|
// 0D: [] long pause [] do nothing
|
|
// 0E: [] flash all [] do nothing
|
|
// 0F: [] pause [] do nothing
|
|
// 10: [] long pause [] do nothing
|
|
// 11: [] quick fade-out all [] quick fade-out all
|
|
|
|
//=============================================================================
|
|
// $80113F5: (Start)
|
|
080113F4 (T) push r4,r5,r14
|
|
080113F6 (T) add sp,-4h
|
|
|
|
// malloc 0x2E0 bytes
|
|
080113F8 (T) movs r0,0B8h
|
|
080113FA (T) lsls r0,r0,2h
|
|
080113FC (T) bl 8005B9Ch
|
|
08011400 (T) adds r4,r0,0
|
|
08011402 (T) ldr r0,=3000370h
|
|
08011404 (T) ldr r0,[r0]
|
|
08011406 (T) str r4,[r0,14h]
|
|
|
|
// Initialize struct
|
|
// Five palette buffers
|
|
08011408 (T) ldr r0,=2011400h
|
|
0801140A (T) str r0,[r4]
|
|
0801140C (T) ldr r0,=2011600h
|
|
0801140E (T) str r0,[r4,4h]
|
|
08011410 (T) ldr r1,=2011800h
|
|
08011412 (T) str r1,[r4,8h]
|
|
08011414 (T) ldr r0,=2011A00h
|
|
08011416 (T) str r0,[r4,0Ch]
|
|
08011418 (T) ldr r0,=2011C00h
|
|
0801141A (T) str r0,[r4,10h]
|
|
|
|
// Load first four palettes into buffers
|
|
0801141C (T) ldr r0,=8712754h
|
|
0801141E (T) movs r5,80h
|
|
08011420 (T) lsls r5,r5,2h
|
|
08011422 (T) adds r2,r5,0
|
|
08011424 (T) bl 8005D34h
|
|
08011428 (T) ldr r0,=8712868h
|
|
0801142A (T) ldr r1,[r4,0Ch]
|
|
0801142C (T) adds r2,r5,0
|
|
0801142E (T) bl 8005D34h
|
|
08011432 (T) ldr r0,=87126CCh
|
|
08011434 (T) ldr r1,[r4]
|
|
08011436 (T) adds r2,r5,0
|
|
08011438 (T) bl 8005D34h
|
|
0801143C (T) ldr r0,=87127E8h
|
|
0801143E (T) ldr r1,[r4,4h]
|
|
08011440 (T) adds r2,r5,0
|
|
08011442 (T) bl 8005D34h
|
|
|
|
// Zero out fifth buffer
|
|
08011446 (T) movs r0,0h
|
|
08011448 (T) str r0,[sp]
|
|
0801144A (T) ldr r1,=40000D4h
|
|
0801144C (T) mov r0,r13
|
|
0801144E (T) str r0,[r1]
|
|
08011450 (T) ldr r0,[r4,10h]
|
|
08011452 (T) str r0,[r1,4h]
|
|
08011454 (T) ldr r0,=85000080h
|
|
08011456 (T) str r0,[r1,8h]
|
|
08011458 (T) ldr r0,[r1,8h]
|
|
|
|
// Return 0
|
|
0801145A (T) movs r0,0h
|
|
0801145C (T) add sp,4h
|
|
0801145E (T) pop r4,r5
|
|
08011460 (T) pop r1
|
|
08011462 (T) bx r1
|
|
|
|
//=============================================================================
|
|
// $80115A9: (Setup)
|
|
|
|
// Load a bunch of constants to the stack ([80FCB74..80FCBFF] to [sp..sp+8B])
|
|
080115A8 (T) push r4-r7,r14
|
|
080115AA (T) mov r7,r10
|
|
080115AC (T) mov r6,r9
|
|
080115AE (T) mov r5,r8
|
|
080115B0 (T) push r5-r7
|
|
080115B2 (T) add sp,-94h // damn...
|
|
080115B4 (T) mov r1,r13
|
|
080115B6 (T) ldr r0,=80FCB74h
|
|
080115B8 (T) ldmia [r0]!,r2-r4
|
|
080115BA (T) stmia [r1]!,r2-r4
|
|
080115BC (T) add r7,sp,0Ch
|
|
080115BE (T) mov r8,r7
|
|
080115C0 (T) mov r1,r8
|
|
080115C2 (T) ldr r0,=80FCB80h
|
|
080115C4 (T) ldmia [r0]!,r2-r4
|
|
080115C6 (T) stmia [r1]!,r2-r4
|
|
080115C8 (T) ldmia [r0]!,r2,r3,r7
|
|
080115CA (T) stmia [r1]!,r2,r3,r7
|
|
080115CC (T) ldmia [r0]!,r4,r7
|
|
080115CE (T) stmia [r1]!,r4,r7
|
|
080115D0 (T) add r6,sp,2Ch
|
|
080115D2 (T) mov r1,r6
|
|
080115D4 (T) ldr r0,=80FCBA0h
|
|
080115D6 (T) ldmia [r0]!,r2-r4
|
|
080115D8 (T) stmia [r1]!,r2-r4
|
|
080115DA (T) ldmia [r0]!,r2,r3,r7
|
|
080115DC (T) stmia [r1]!,r2,r3,r7
|
|
080115DE (T) ldmia [r0]!,r4,r7
|
|
080115E0 (T) stmia [r1]!,r4,r7
|
|
080115E2 (T) add r5,sp,4Ch
|
|
080115E4 (T) mov r1,r5
|
|
080115E6 (T) ldr r0,=80FCBC0h
|
|
080115E8 (T) ldmia [r0]!,r2-r4
|
|
080115EA (T) stmia [r1]!,r2-r4
|
|
080115EC (T) ldmia [r0]!,r2,r3,r7
|
|
080115EE (T) stmia [r1]!,r2,r3,r7
|
|
080115F0 (T) ldmia [r0]!,r4,r7
|
|
080115F2 (T) stmia [r1]!,r4,r7
|
|
080115F4 (T) add r4,sp,6Ch
|
|
080115F6 (T) mov r1,r4
|
|
080115F8 (T) ldr r0,=80FCBE0h
|
|
080115FA (T) ldmia [r0]!,r2,r3,r7
|
|
080115FC (T) stmia [r1]!,r2,r3,r7
|
|
080115FE (T) ldmia [r0]!,r2,r3,r7
|
|
08011600 (T) stmia [r1]!,r2,r3,r7
|
|
08011602 (T) ldmia [r0]!,r2,r3
|
|
08011604 (T) stmia [r1]!,r2,r3
|
|
|
|
08011606 (T) ldr r3,=3000370h
|
|
08011608 (T) ldr r7,[r3]
|
|
0801160A (T) mov r12,r7 // r7 = r12 = 2028008
|
|
0801160C (T) mov r0,r12
|
|
0801160E (T) ldr r0,[r0,14h]
|
|
08011610 (T) mov r9,r0
|
|
08011612 (T) mov r7,r9 // r7 = r9 = 2028028
|
|
|
|
08011614 (T) add r7,14h
|
|
08011616 (T) ldr r0,=3002570h
|
|
08011618 (T) ldr r1,[r0] // seems to always be 2?
|
|
0801161A (T) ldr r0,=3002A30h
|
|
0801161C (T) ldr r2,[r0]
|
|
0801161E (T) lsl r0,r1,1h
|
|
08011620 (T) add r0,r0,r1
|
|
08011622 (T) lsl r0,r0,4h
|
|
08011624 (T) add r0,r0,r2
|
|
08011626 (T) ldrb r1,[r0,8h] // appears to be a has-this-been-run-yet flag
|
|
08011628 (T) cmp r1,0h
|
|
0801162A (T) beq 801162Eh
|
|
0801162C (T) b 8011730h
|
|
|
|
// If this is the first run:
|
|
// Set sequence index to 0
|
|
0801162E (T) mov r0,r9 // 2028028
|
|
08011630 (T) add r0,84h
|
|
08011632 (T) str r1,[r0]
|
|
|
|
08011634 (T) mov r1,0A2h
|
|
08011636 (T) lsl r1,r1,2h
|
|
08011638 (T) add r1,r9
|
|
0801163A (T) mov r0,88h
|
|
0801163C (T) lsl r0,r0,4h
|
|
0801163E (T) str r0,[r1] // [20282B0] = 0x00000880
|
|
|
|
08011640 (T) mov r2,0B2h
|
|
08011642 (T) lsl r2,r2,2h
|
|
08011644 (T) add r2,r9
|
|
|
|
08011646 (T) ldr r1,[sp,54h] // r1 = 0x68 (X coordinate of the R)
|
|
08011648 (T) mov r0,0F0h
|
|
0801164A (T) sub r0,r0,r1
|
|
0801164C (T) str r0,[r2] // [20282F0] = 0xF0 - 0x68 = 0x88
|
|
|
|
0801164E (T) mov r1,0AEh
|
|
08011650 (T) lsl r1,r1,2h
|
|
08011652 (T) add r1,r9
|
|
08011654 (T) mov r0,0C0h
|
|
08011656 (T) lsl r0,r0,0Ah
|
|
08011658 (T) str r0,[r1] // [20282E0] = 0x30000
|
|
|
|
0801165A (T) mov r6,1h
|
|
0801165C (T) mov r7,0B2h
|
|
0801165E (T) lsl r7,r7,2h
|
|
08011660 (T) add r7,r9 // r7 = 20282F0
|
|
08011662 (T) mov r5,0B3h
|
|
08011664 (T) lsl r5,r5,2h
|
|
08011666 (T) add r5,r9 // r5 = 20282F4
|
|
|
|
// Looks like sp+58 and sp+78 are important variables; store their
|
|
// locations to sp+8C and sp+90. Let's call them X and Y respectively.
|
|
// sp+58: pointer to end X coordinate of T
|
|
// sp+78: pointer to start X coordinate of T
|
|
08011668 (T) mov r1,r13
|
|
0801166A (T) add r1,58h
|
|
0801166C (T) str r1,[sp,8Ch]
|
|
0801166E (T) mov r2,r13
|
|
08011670 (T) add r2,78h
|
|
08011672 (T) str r2,[sp,90h]
|
|
|
|
08011674 (T) mov r3,0A2h
|
|
08011676 (T) lsl r3,r3,2h
|
|
08011678 (T) add r3,r9
|
|
0801167A (T) mov r10,r3 // r3 = r10 = 20282B0
|
|
0801167C (T) mov r4,0A3h
|
|
0801167E (T) lsl r4,r4,2h
|
|
08011680 (T) add r4,r9
|
|
08011682 (T) mov r8,r4 // r4 = r8 = 20282B4
|
|
|
|
// So:
|
|
// r3 = 20282B0
|
|
// r4 = 20282B4
|
|
// r5 = 20282F4
|
|
// r6 = loop index
|
|
// r7 = 20282F0
|
|
// r8 = 20282B4
|
|
// r9 = 2028028
|
|
// r10 = 20282B0
|
|
|
|
// For r6 = 1 to 3:
|
|
// Load Y into r1 and increment Y
|
|
08011684 (T) lsl r4,r6,2h
|
|
08011686 (T) ldr r0,[sp,90h]
|
|
08011688 (T) ldmia [r0]!,r1
|
|
0801168A (T) str r0,[sp,90h]
|
|
|
|
// Load X into r0 and increment X
|
|
0801168C (T) ldr r2,[sp,8Ch]
|
|
0801168E (T) ldmia [r2]!,r0
|
|
08011690 (T) str r2,[sp,8Ch]
|
|
|
|
08011692 (T) sub r1,r1,r0
|
|
08011694 (T) str r1,[r5] // delta between start and end X coordinates of the T
|
|
08011696 (T) mov r0,0AEh
|
|
08011698 (T) lsl r0,r0,2h
|
|
0801169A (T) add r0,r9
|
|
0801169C (T) add r4,r0,r4
|
|
0801169E (T) ldr r0,[r0]
|
|
080116A0 (T) mul r0,r1
|
|
080116A2 (T) ldr r1,[r7]
|
|
080116A4 (T) bl m2_div
|
|
080116A8 (T) str r0,[r4] // r0 = increment per frame?
|
|
080116AA (T) ldmia [r5]!,r1 // r1 = delta
|
|
080116AC (T) mov r3,r10
|
|
080116AE (T) ldr r0,[r3]
|
|
080116B0 (T) mul r0,r1
|
|
080116B2 (T) ldr r1,[r7]
|
|
080116B4 (T) bl m2_div
|
|
080116B8 (T) mov r4,r8
|
|
080116BA (T) add r4,4h
|
|
080116BC (T) mov r8,r4
|
|
080116BE (T) sub r4,4h
|
|
080116C0 (T) stmia [r4]!,r0
|
|
080116C2 (T) add r6,1h
|
|
080116C4 (T) cmp r6,3h
|
|
080116C6 (T) ble 8011684h
|
|
|
|
|
|
080116C8 (T) mov r6,0h
|
|
080116CA (T) mov r10,r6
|
|
080116CC (T) add r7,sp,2Ch
|
|
080116CE (T) mov r8,r7
|
|
080116D0 (T) add r7,sp,6Ch
|
|
080116D2 (T) mov r5,r9
|
|
080116D4 (T) add r5,0A8h
|
|
080116D6 (T) mov r4,r9
|
|
080116D8 (T) add r4,88h
|
|
080116DA (T) mov r0,r4
|
|
080116DC (T) ldr r1,=8712FB0h
|
|
080116DE (T) bl 80088E0h
|
|
080116E2 (T) strb r6,[r5]
|
|
080116E4 (T) mov r0,r4
|
|
080116E6 (T) bl 8008A28h
|
|
080116EA (T) mov r0,r10
|
|
080116EC (T) strb r0,[r5,0Eh]
|
|
080116EE (T) ldmia [r7]!,r0
|
|
080116F0 (T) str r0,[r5,4h]
|
|
080116F2 (T) mov r1,r8
|
|
080116F4 (T) add r1,4h
|
|
080116F6 (T) mov r8,r1
|
|
080116F8 (T) sub r1,4h
|
|
080116FA (T) ldmia [r1]!,r0
|
|
080116FC (T) str r0,[r5,8h]
|
|
080116FE (T) add r5,40h
|
|
08011700 (T) add r4,40h
|
|
08011702 (T) add r6,1h
|
|
08011704 (T) cmp r6,7h
|
|
08011706 (T) ble 80116DAh
|
|
08011708 (T) b 8011BE4h
|
|
0801170A (T) lsl r0,r0,0h
|
|
0801170C (T) ldmia [r3]!,r2,r4-r6
|
|
0801170E (T) lsr r7,r1,20h
|
|
08011710 (T) ldmia [r3]!,r7
|
|
08011712 (T) lsr r7,r1,20h
|
|
08011714 (T) ldmia [r3]!,r5,r7
|
|
08011716 (T) lsr r7,r1,20h
|
|
08011718 (T) ldmia [r3]!,r6,r7
|
|
0801171A (T) lsr r7,r1,20h
|
|
0801171C (T) ldmia [r3]!,r5-r7
|
|
0801171E (T) lsr r7,r1,20h
|
|
08011720 (T) lsl r0,r6,0Dh
|
|
08011722 (T) lsl r0,r0,0Ch
|
|
08011724 (T) mov r5,70h
|
|
08011726 (T) lsl r0,r0,0Ch
|
|
08011728 (T) cmp r2,30h
|
|
0801172A (T) lsl r0,r0,0Ch
|
|
0801172C (T) cmp r7,0B0h
|
|
0801172E (T) lsr r1,r6,1h
|
|
|
|
08011730 (T) ldrb r0,[r0,0Bh] // appears to be an are-we-on-the-last-run flag
|
|
08011732 (T) cmp r0,1h
|
|
08011734 (T) bne 801173Ch
|
|
|
|
// If this is the last run:
|
|
08011736 (T) bl 8000C28h // tear-down
|
|
0801173A (T) b 8011BE4h
|
|
|
|
// Else: check for input
|
|
0801173C (T) ldr r0,=3002500h
|
|
0801173E (T) ldrh r1,[r0] // pad input
|
|
08011740 (T) mov r0,9h
|
|
08011742 (T) and r0,r1
|
|
08011744 (T) cmp r0,0h
|
|
08011746 (T) beq 8011774h
|
|
|
|
// A/Start is pressed
|
|
08011748 (T) mov r0,r9
|
|
0801174A (T) add r0,84h
|
|
0801174C (T) ldr r0,[r0]
|
|
0801174E (T) cmp r0,0Ah
|
|
08011750 (T) ble 8011764h
|
|
|
|
// If we're on the final sequence:
|
|
08011752 (T) ldr r1,=30012D0h
|
|
08011754 (T) ldr r0,=8001825h
|
|
08011756 (T) b 8011B7Ah // store r0 to [r1] and return -1
|
|
08011758 (T) mov r5,0h
|
|
0801175A (T) lsl r0,r0,0Ch
|
|
0801175C (T) asr r0,r2,0Bh
|
|
0801175E (T) lsl r0,r0,0Ch
|
|
08011760 (T) add r5,r4,r0
|
|
08011762 (T) lsr r0,r0,20h
|
|
|
|
// If we're not on the final sequence:
|
|
08011764 (T) ldr r1,=30012D0h
|
|
08011766 (T) ldr r0,=8010F95h
|
|
08011768 (T) b 8011B7Ah // same
|
|
0801176A (T) lsl r0,r0,0h
|
|
0801176C (T) asr r0,r2,0Bh
|
|
0801176E (T) lsl r0,r0,0Ch
|
|
08011770 (T) lsr r5,r2,1Eh
|
|
08011772 (T) lsr r1,r0,20h
|
|
|
|
// Increment frame counter
|
|
08011774 (T) mov r2,r12
|
|
08011776 (T) ldr r0,[r2,4h]
|
|
08011778 (T) add r0,1h
|
|
0801177A (T) str r0,[r2,4h]
|
|
|
|
// Check sequence number
|
|
0801177C (T) mov r0,r9
|
|
0801177E (T) add r0,84h
|
|
08011780 (T) ldr r1,[r0]
|
|
08011782 (T) mov r10,r0
|
|
08011784 (T) cmp r1,11h
|
|
08011786 (T) bls 801178Ah
|
|
08011788 (T) b 8011B8Ch
|
|
|
|
// Should always end up here (sequence number only goes up to 11)
|
|
// Jump table!
|
|
// [00]: 080117E0
|
|
// [01]: 08011802
|
|
// [02]: 0801182A
|
|
// [03]: 08011858
|
|
// [04]: 080118FA
|
|
// [05]: 080118FE
|
|
// [06]: 0801195C
|
|
// [07]: 08011972
|
|
// [08]: 080119BA
|
|
// [09]: 080119DE
|
|
// [0A]: 08011A02
|
|
// [0B]: 08011A1A
|
|
// [0C]: 08011A80
|
|
// [0D]: 08011A8A
|
|
// [0E]: 08011AAA
|
|
// [0F]: 08011B58
|
|
// [10]: 08011B66
|
|
// [11]: 08011B76
|
|
0801178A (T) lsl r0,r1,2h
|
|
0801178C (T) ldr r1,=8011798h
|
|
0801178E (T) add r0,r0,r1
|
|
08011790 (T) ldr r0,[r0]
|
|
08011792 (T) mov r15,r0
|
|
08011794 (T) asr r0,r3,1Eh
|
|
08011796 (T) lsr r1,r0,20h
|
|
08011798 (T) asr r0,r4,1Fh
|
|
0801179A (T) lsr r1,r0,20h
|
|
0801179C (T) add r2,r0,r0
|
|
0801179E (T) lsr r1,r0,20h
|
|
080117A0 (T) add r2,r5,r0
|
|
080117A2 (T) lsr r1,r0,20h
|
|
080117A4 (T) add r0,r3,r1
|
|
080117A6 (T) lsr r1,r0,20h
|
|
080117A8 (T) add r2,r7,r3
|
|
080117AA (T) lsr r1,r0,20h
|
|
080117AC (T) add r6,r7,r3
|
|
080117AE (T) lsr r1,r0,20h
|
|
080117B0 (T) add r4,r3,r5
|
|
080117B2 (T) lsr r1,r0,20h
|
|
080117B4 (T) add r2,r6,r5
|
|
080117B6 (T) lsr r1,r0,20h
|
|
080117B8 (T) add r2,r7,r6
|
|
080117BA (T) lsr r1,r0,20h
|
|
080117BC (T) add r6,r3,r7
|
|
080117BE (T) lsr r1,r0,20h
|
|
080117C0 (T) sub r2,r0,r0
|
|
080117C2 (T) lsr r1,r0,20h
|
|
080117C4 (T) sub r2,r3,r0
|
|
080117C6 (T) lsr r1,r0,20h
|
|
080117C8 (T) sub r0,r0,r2
|
|
080117CA (T) lsr r1,r0,20h
|
|
080117CC (T) sub r2,r1,r2
|
|
080117CE (T) lsr r1,r0,20h
|
|
080117D0 (T) sub r2,r5,r2
|
|
080117D2 (T) lsr r1,r0,20h
|
|
080117D4 (T) sub r0,r3,r5
|
|
080117D6 (T) lsr r1,r0,20h
|
|
080117D8 (T) sub r6,r4,r5
|
|
080117DA (T) lsr r1,r0,20h
|
|
080117DC (T) sub r6,r6,r5
|
|
080117DE (T) lsr r1,r0,20h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 00
|
|
080117E0 (T) mov r1,r9
|
|
080117E2 (T) add r1,7Ah
|
|
080117E4 (T) mov r2,0h
|
|
080117E6 (T) mov r0,0D0h // BLDCNT
|
|
080117E8 (T) strh r0,[r1]
|
|
080117EA (T) add r1,2h
|
|
080117EC (T) mov r0,10h // BLDY
|
|
080117EE (T) strh r0,[r1]
|
|
080117F0 (T) ldr r0,[r3]
|
|
080117F2 (T) str r2,[r0,4h] // reset frame index
|
|
080117F4 (T) mov r0,1h
|
|
080117F6 (T) mov r3,r10
|
|
080117F8 (T) str r0,[r3] // move to next sequence
|
|
080117FA (T) mov r0,0AFh
|
|
080117FC (T) bl m2_soundeffect // play title music
|
|
08011800 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 01
|
|
08011802 (T) ldr r3,[r3]
|
|
08011804 (T) ldr r0,[r3,4h]
|
|
08011806 (T) cmp r0,2h // Every 3 frames, bump the brightness
|
|
08011808 (T) bgt 801180Ch
|
|
0801180A (T) b 8011B8Ch
|
|
0801180C (T) mov r1,r9
|
|
0801180E (T) add r1,7Ch
|
|
08011810 (T) ldrh r0,[r1]
|
|
08011812 (T) sub r0,1h
|
|
08011814 (T) mov r2,0h
|
|
08011816 (T) strh r0,[r1]
|
|
08011818 (T) str r2,[r3,4h]
|
|
0801181A (T) ldrh r0,[r1]
|
|
0801181C (T) cmp r0,0h
|
|
0801181E (T) beq 8011822h
|
|
08011820 (T) b 8011B8Ch
|
|
08011822 (T) mov r0,2h
|
|
08011824 (T) mov r4,r10
|
|
08011826 (T) str r0,[r4]
|
|
08011828 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 02
|
|
0801182A (T) ldr r3,[r3]
|
|
0801182C (T) ldr r0,[r3,4h]
|
|
0801182E (T) cmp r0,2Ch
|
|
08011830 (T) bgt 8011834h
|
|
08011832 (T) b 8011B8Ch
|
|
08011834 (T) mov r0,0h
|
|
08011836 (T) str r0,[r3,4h]
|
|
08011838 (T) mov r1,0A6h
|
|
0801183A (T) lsl r1,r1,2h
|
|
0801183C (T) add r1,r9
|
|
0801183E (T) mov r2,0h
|
|
08011840 (T) mov r6,3h
|
|
08011842 (T) ldr r0,[r1,20h]
|
|
08011844 (T) str r0,[r1]
|
|
08011846 (T) str r2,[r1,10h]
|
|
08011848 (T) add r1,4h
|
|
0801184A (T) sub r6,1h
|
|
0801184C (T) cmp r6,0h
|
|
0801184E (T) bge 8011842h
|
|
08011850 (T) mov r0,3h
|
|
08011852 (T) mov r7,r10
|
|
08011854 (T) str r0,[r7]
|
|
08011856 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 03
|
|
08011858 (T) mov r6,0h
|
|
0801185A (T) mov r7,r13
|
|
0801185C (T) sub r7,4h
|
|
0801185E (T) mov r8,r9
|
|
08011860 (T) mov r3,0A2h
|
|
08011862 (T) lsl r3,r3,2h
|
|
08011864 (T) add r3,r9
|
|
08011866 (T) mov r5,r9
|
|
08011868 (T) add r5,88h
|
|
0801186A (T) ldr r0,[r3,10h]
|
|
0801186C (T) ldr r1,[r3]
|
|
0801186E (T) sub r0,r0,r1
|
|
08011870 (T) str r0,[r3,10h]
|
|
08011872 (T) ldr r1,=2FFFh
|
|
08011874 (T) cmp r0,r1
|
|
08011876 (T) bgt 801187Eh
|
|
08011878 (T) mov r0,0C0h
|
|
0801187A (T) lsl r0,r0,6h
|
|
0801187C (T) str r0,[r3,10h]
|
|
0801187E (T) ldr r1,[r3,20h]
|
|
08011880 (T) ldr r0,[r3,10h]
|
|
08011882 (T) add r1,r1,r0
|
|
08011884 (T) asr r2,r1,10h
|
|
08011886 (T) ldr r0,=0FFFFh
|
|
08011888 (T) and r1,r0
|
|
0801188A (T) str r1,[r3,20h]
|
|
0801188C (T) mov r4,84h
|
|
0801188E (T) lsl r4,r4,1h
|
|
08011890 (T) add r4,r8
|
|
08011892 (T) ldr r0,[r4,24h]
|
|
08011894 (T) sub r1,r0,r2
|
|
08011896 (T) str r1,[r4,24h]
|
|
08011898 (T) cmp r6,0h
|
|
0801189A (T) bne 80118ACh
|
|
0801189C (T) ldr r0,[r5,24h]
|
|
0801189E (T) add r0,r0,r2
|
|
080118A0 (T) str r0,[r5,24h]
|
|
080118A2 (T) b 80118C0h
|
|
080118A4 (T) cmp r7,0FFh
|
|
080118A6 (T) lsl r0,r0,0h
|
|
080118A8 (T) bl lr+0FFEh
|
|
080118AA (T) lsl r0,r0,0h
|
|
080118AC (T) mov r0,84h
|
|
080118AE (T) lsl r0,r0,1h
|
|
080118B0 (T) add r0,r9
|
|
080118B2 (T) ldr r2,[r0,24h]
|
|
080118B4 (T) sub r0,r1,r2
|
|
080118B6 (T) ldr r1,[r7]
|
|
080118B8 (T) cmp r0,r1
|
|
080118BA (T) bgt 80118C0h
|
|
080118BC (T) add r0,r2,r1
|
|
080118BE (T) str r0,[r4,24h]
|
|
080118C0 (T) add r7,4h
|
|
080118C2 (T) mov r0,40h
|
|
080118C4 (T) add r8,r0
|
|
080118C6 (T) add r3,4h
|
|
080118C8 (T) add r6,1h
|
|
080118CA (T) cmp r6,3h
|
|
080118CC (T) ble 801186Ah
|
|
080118CE (T) add r0,0C8h
|
|
080118D0 (T) add r0,r9
|
|
080118D2 (T) ldr r1,[r0,24h]
|
|
080118D4 (T) ldr r0,[sp,54h]
|
|
080118D6 (T) cmp r1,r0
|
|
080118D8 (T) blt 80118DCh
|
|
080118DA (T) b 8011B8Ch
|
|
080118DC (T) add r2,sp,2Ch
|
|
080118DE (T) mov r1,r9
|
|
080118E0 (T) add r1,0ACh
|
|
080118E2 (T) add r5,sp,4Ch
|
|
080118E4 (T) mov r6,7h
|
|
080118E6 (T) ldmia [r5]!,r0
|
|
080118E8 (T) str r0,[r1]
|
|
080118EA (T) ldmia [r2]!,r0
|
|
080118EC (T) str r0,[r1,4h]
|
|
080118EE (T) add r1,40h
|
|
080118F0 (T) sub r6,1h
|
|
080118F2 (T) cmp r6,0h
|
|
080118F4 (T) bge 80118E6h
|
|
080118F6 (T) mov r0,4h
|
|
080118F8 (T) b 80119D8h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 04
|
|
080118FA (T) mov r0,5h
|
|
080118FC (T) b 8011B60h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 05
|
|
080118FE (T) ldr r3,[r3]
|
|
08011900 (T) ldr r0,[r3,4h]
|
|
08011902 (T) cmp r0,3h
|
|
08011904 (T) bgt 8011908h
|
|
08011906 (T) b 8011B8Ch
|
|
08011908 (T) mov r0,0h
|
|
0801190A (T) str r0,[r3,4h]
|
|
0801190C (T) mov r2,r9
|
|
0801190E (T) add r2,7Eh
|
|
08011910 (T) ldrh r0,[r2]
|
|
08011912 (T) add r1,r0,1
|
|
08011914 (T) strh r1,[r2]
|
|
08011916 (T) lsl r0,r1,10h
|
|
08011918 (T) asr r0,r0,10h
|
|
0801191A (T) cmp r0,7h
|
|
0801191C (T) ble 801193Ch
|
|
0801191E (T) mov r0,6h
|
|
08011920 (T) mov r3,r10
|
|
08011922 (T) str r0,[r3]
|
|
08011924 (T) mov r4,r9
|
|
08011926 (T) ldr r0,[r4,4h]
|
|
08011928 (T) str r0,[r7,8h]
|
|
0801192A (T) ldr r0,=5000200h
|
|
0801192C (T) str r0,[r7,0Ch]
|
|
0801192E (T) mov r0,20h
|
|
08011930 (T) str r0,[r7,10h]
|
|
08011932 (T) mov r0,1h
|
|
08011934 (T) str r0,[r7,4h]
|
|
08011936 (T) b 8011B4Ch
|
|
08011938 (T) lsl r0,r0,8h
|
|
0801193A (T) lsl r0,r0,14h
|
|
0801193C (T) mov r0,3h
|
|
0801193E (T) and r1,r0
|
|
08011940 (T) lsl r1,r1,5h
|
|
08011942 (T) mov r2,r9
|
|
08011944 (T) ldr r0,[r2,0Ch]
|
|
08011946 (T) add r0,r0,r1
|
|
08011948 (T) str r0,[r7,8h]
|
|
0801194A (T) ldr r0,=5000200h
|
|
0801194C (T) str r0,[r7,0Ch]
|
|
0801194E (T) mov r0,20h
|
|
08011950 (T) str r0,[r7,10h]
|
|
08011952 (T) mov r0,1h
|
|
08011954 (T) str r0,[r7,4h]
|
|
08011956 (T) b 8011B4Ch
|
|
08011958 (T) lsl r0,r0,8h
|
|
0801195A (T) lsl r0,r0,14h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 06
|
|
0801195C (T) ldr r3,[r3]
|
|
0801195E (T) ldr r0,[r3,4h]
|
|
08011960 (T) cmp r0,2Ch
|
|
08011962 (T) bgt 8011966h
|
|
08011964 (T) b 8011B8Ch
|
|
08011966 (T) mov r0,7h
|
|
08011968 (T) mov r4,r10
|
|
0801196A (T) str r0,[r4]
|
|
0801196C (T) mov r0,0h
|
|
0801196E (T) str r0,[r3,4h]
|
|
08011970 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 07
|
|
08011972 (T) ldr r0,[r3]
|
|
08011974 (T) ldr r0,[r0,4h]
|
|
08011976 (T) cmp r0,1h
|
|
08011978 (T) bgt 801197Ch
|
|
0801197A (T) b 8011B8Ch
|
|
0801197C (T) mov r2,r9
|
|
0801197E (T) add r2,88h
|
|
08011980 (T) mov r1,r9
|
|
08011982 (T) add r1,0B0h
|
|
08011984 (T) mov r6,7h
|
|
08011986 (T) ldr r0,[r1]
|
|
08011988 (T) sub r0,1h
|
|
0801198A (T) str r0,[r1]
|
|
0801198C (T) add r1,40h
|
|
0801198E (T) sub r6,1h
|
|
08011990 (T) cmp r6,0h
|
|
08011992 (T) bge 8011986h
|
|
08011994 (T) ldr r1,[r2,28h]
|
|
08011996 (T) ldr r0,[sp,0Ch]
|
|
08011998 (T) cmp r1,r0
|
|
0801199A (T) ble 801199Eh
|
|
0801199C (T) b 8011B8Ch
|
|
0801199E (T) mov r2,r8
|
|
080119A0 (T) mov r1,r9
|
|
080119A2 (T) add r1,88h
|
|
080119A4 (T) mov r6,7h
|
|
080119A6 (T) ldmia [r2]!,r0
|
|
080119A8 (T) str r0,[r1,28h]
|
|
080119AA (T) add r1,40h
|
|
080119AC (T) sub r6,1h
|
|
080119AE (T) cmp r6,0h
|
|
080119B0 (T) bge 80119A6h
|
|
080119B2 (T) mov r6,8h
|
|
080119B4 (T) mov r7,r10
|
|
080119B6 (T) str r6,[r7]
|
|
080119B8 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 08
|
|
|
|
// Clear BLDCNT
|
|
080119BA (T) mov r1,r9
|
|
080119BC (T) add r1,7Ah
|
|
080119BE (T) mov r2,0h
|
|
080119C0 (T) mov r0,0C3h
|
|
080119C2 (T) strh r0,[r1]
|
|
|
|
// Enable BG0/OBJ
|
|
080119C4 (T) sub r1,2h
|
|
080119C6 (T) mov r0,88h
|
|
080119C8 (T) lsl r0,r0,5h
|
|
080119CA (T) strh r0,[r1]
|
|
|
|
080119CC (T) add r1,4h
|
|
080119CE (T) mov r0,10h
|
|
080119D0 (T) strh r0,[r1]
|
|
080119D2 (T) ldr r0,[r3]
|
|
080119D4 (T) str r2,[r0,4h]
|
|
080119D6 (T) mov r0,9h
|
|
080119D8 (T) mov r1,r10
|
|
080119DA (T) str r0,[r1]
|
|
080119DC (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 09
|
|
080119DE (T) ldr r3,[r3]
|
|
080119E0 (T) ldr r0,[r3,4h]
|
|
080119E2 (T) cmp r0,9h
|
|
080119E4 (T) bgt 80119E8h
|
|
080119E6 (T) b 8011B8Ch
|
|
080119E8 (T) mov r1,r9
|
|
080119EA (T) add r1,7Ch
|
|
080119EC (T) ldrh r0,[r1]
|
|
080119EE (T) sub r0,1h
|
|
080119F0 (T) mov r2,0h
|
|
080119F2 (T) strh r0,[r1]
|
|
080119F4 (T) str r2,[r3,4h]
|
|
080119F6 (T) ldrh r0,[r1]
|
|
080119F8 (T) cmp r0,0h
|
|
080119FA (T) beq 80119FEh
|
|
080119FC (T) b 8011B8Ch
|
|
080119FE (T) mov r0,0Ah
|
|
08011A00 (T) b 8011B60h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0A
|
|
08011A02 (T) mov r0,0Bh
|
|
08011A04 (T) mov r4,r10
|
|
08011A06 (T) str r0,[r4]
|
|
08011A08 (T) mov r0,r9
|
|
08011A0A (T) add r0,7Eh
|
|
08011A0C (T) mov r1,0h
|
|
08011A0E (T) strh r1,[r0]
|
|
08011A10 (T) add r0,2h
|
|
08011A12 (T) strh r1,[r0]
|
|
08011A14 (T) ldr r0,[r3]
|
|
08011A16 (T) str r1,[r0,4h]
|
|
08011A18 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0B
|
|
08011A1A (T) ldr r3,[r3]
|
|
08011A1C (T) ldr r0,[r3,4h]
|
|
08011A1E (T) cmp r0,3h
|
|
08011A20 (T) bgt 8011A24h
|
|
08011A22 (T) b 8011B8Ch
|
|
08011A24 (T) mov r0,0h
|
|
08011A26 (T) str r0,[r3,4h]
|
|
08011A28 (T) mov r0,7Eh
|
|
08011A2A (T) add r0,r9
|
|
08011A2C (T) mov r8,r0
|
|
08011A2E (T) ldrh r0,[r0]
|
|
08011A30 (T) add r0,1h
|
|
08011A32 (T) mov r1,r8
|
|
08011A34 (T) strh r0,[r1]
|
|
08011A36 (T) mov r1,r9
|
|
08011A38 (T) add r1,80h
|
|
08011A3A (T) ldrh r0,[r1]
|
|
08011A3C (T) add r2,r0,1
|
|
08011A3E (T) strh r2,[r1]
|
|
08011A40 (T) mov r3,r8
|
|
08011A42 (T) mov r4,0h
|
|
08011A44 (T) ldsh r0,[r3,r4]
|
|
08011A46 (T) cmp r0,7h
|
|
08011A48 (T) ble 8011B10h
|
|
08011A4A (T) mov r0,0Ch
|
|
08011A4C (T) mov r1,r10
|
|
08011A4E (T) str r0,[r1]
|
|
08011A50 (T) mov r2,r9
|
|
08011A52 (T) ldr r0,[r2]
|
|
08011A54 (T) str r0,[r7,8h]
|
|
08011A56 (T) mov r0,0A0h
|
|
08011A58 (T) lsl r0,r0,13h
|
|
08011A5A (T) str r0,[r7,0Ch]
|
|
08011A5C (T) mov r5,20h
|
|
08011A5E (T) str r5,[r7,10h]
|
|
08011A60 (T) mov r4,1h
|
|
08011A62 (T) str r4,[r7,4h]
|
|
08011A64 (T) mov r0,r7
|
|
08011A66 (T) bl 8005D5Ch
|
|
08011A6A (T) add r7,14h
|
|
08011A6C (T) mov r3,r9
|
|
08011A6E (T) ldr r0,[r3,4h]
|
|
08011A70 (T) str r0,[r7,8h]
|
|
08011A72 (T) ldr r0,=5000200h
|
|
08011A74 (T) str r0,[r7,0Ch]
|
|
08011A76 (T) str r5,[r7,10h]
|
|
08011A78 (T) str r4,[r7,4h]
|
|
08011A7A (T) b 8011B4Ch
|
|
08011A7C (T) lsl r0,r0,8h
|
|
08011A7E (T) lsl r0,r0,14h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0C
|
|
08011A80 (T) ldr r0,[r3]
|
|
08011A82 (T) mov r1,0h
|
|
08011A84 (T) str r1,[r0,4h]
|
|
08011A86 (T) mov r0,0Dh
|
|
08011A88 (T) b 8011B60h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0D
|
|
08011A8A (T) ldr r3,[r3]
|
|
08011A8C (T) ldr r0,[r3,4h]
|
|
08011A8E (T) cmp r0,0EFh
|
|
08011A90 (T) bgt 8011A94h
|
|
08011A92 (T) b 8011B8Ch
|
|
08011A94 (T) mov r0,0Eh
|
|
08011A96 (T) mov r4,r10
|
|
08011A98 (T) str r0,[r4]
|
|
08011A9A (T) mov r1,r9
|
|
08011A9C (T) add r1,7Eh
|
|
08011A9E (T) mov r0,0h
|
|
08011AA0 (T) strh r0,[r1]
|
|
08011AA2 (T) add r1,2h
|
|
08011AA4 (T) strh r0,[r1]
|
|
08011AA6 (T) str r0,[r3,4h]
|
|
08011AA8 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0E
|
|
08011AAA (T) ldr r3,[r3]
|
|
08011AAC (T) ldr r0,[r3,4h]
|
|
08011AAE (T) cmp r0,3h
|
|
08011AB0 (T) ble 8011B8Ch
|
|
08011AB2 (T) mov r0,0h
|
|
08011AB4 (T) str r0,[r3,4h]
|
|
08011AB6 (T) mov r0,7Eh
|
|
08011AB8 (T) add r0,r9
|
|
08011ABA (T) mov r8,r0
|
|
08011ABC (T) ldrh r0,[r0]
|
|
08011ABE (T) add r0,1h
|
|
08011AC0 (T) mov r1,r8
|
|
08011AC2 (T) strh r0,[r1]
|
|
08011AC4 (T) mov r1,r9
|
|
08011AC6 (T) add r1,80h
|
|
08011AC8 (T) ldrh r0,[r1]
|
|
08011ACA (T) add r2,r0,1
|
|
08011ACC (T) strh r2,[r1]
|
|
08011ACE (T) mov r3,r8
|
|
08011AD0 (T) mov r4,0h
|
|
08011AD2 (T) ldsh r0,[r3,r4]
|
|
08011AD4 (T) cmp r0,7h
|
|
08011AD6 (T) ble 8011B10h
|
|
08011AD8 (T) mov r0,0Fh
|
|
08011ADA (T) mov r1,r10
|
|
08011ADC (T) str r0,[r1]
|
|
08011ADE (T) mov r2,r9
|
|
08011AE0 (T) ldr r0,[r2]
|
|
08011AE2 (T) str r0,[r7,8h]
|
|
08011AE4 (T) mov r0,0A0h
|
|
08011AE6 (T) lsl r0,r0,13h
|
|
08011AE8 (T) str r0,[r7,0Ch]
|
|
08011AEA (T) mov r5,20h
|
|
08011AEC (T) str r5,[r7,10h]
|
|
08011AEE (T) mov r4,1h
|
|
08011AF0 (T) str r4,[r7,4h]
|
|
08011AF2 (T) mov r0,r7
|
|
08011AF4 (T) bl 8005D5Ch
|
|
08011AF8 (T) add r7,14h
|
|
08011AFA (T) mov r3,r9
|
|
08011AFC (T) ldr r0,[r3,4h]
|
|
08011AFE (T) str r0,[r7,8h]
|
|
08011B00 (T) ldr r0,=5000200h
|
|
08011B02 (T) str r0,[r7,0Ch]
|
|
08011B04 (T) str r5,[r7,10h]
|
|
08011B06 (T) str r4,[r7,4h]
|
|
08011B08 (T) b 8011B4Ch
|
|
08011B0A (T) lsl r0,r0,0h
|
|
08011B0C (T) lsl r0,r0,8h
|
|
08011B0E (T) lsl r0,r0,14h
|
|
08011B10 (T) mov r4,3h
|
|
08011B12 (T) and r2,r4
|
|
08011B14 (T) lsl r1,r2,5h
|
|
08011B16 (T) mov r2,r9
|
|
08011B18 (T) ldr r0,[r2,8h]
|
|
08011B1A (T) add r0,r0,r1
|
|
08011B1C (T) str r0,[r7,8h]
|
|
08011B1E (T) mov r0,0A0h
|
|
08011B20 (T) lsl r0,r0,13h
|
|
08011B22 (T) str r0,[r7,0Ch]
|
|
08011B24 (T) mov r6,20h
|
|
08011B26 (T) str r6,[r7,10h]
|
|
08011B28 (T) mov r5,1h
|
|
08011B2A (T) str r5,[r7,4h]
|
|
08011B2C (T) mov r0,r7
|
|
08011B2E (T) bl 8005D5Ch
|
|
08011B32 (T) add r7,14h
|
|
08011B34 (T) mov r3,r8
|
|
08011B36 (T) ldrh r0,[r3]
|
|
08011B38 (T) and r4,r0
|
|
08011B3A (T) lsl r4,r4,5h
|
|
08011B3C (T) mov r1,r9
|
|
08011B3E (T) ldr r0,[r1,0Ch]
|
|
08011B40 (T) add r0,r0,r4
|
|
08011B42 (T) str r0,[r7,8h]
|
|
08011B44 (T) ldr r0,=5000200h
|
|
08011B46 (T) str r0,[r7,0Ch]
|
|
08011B48 (T) str r6,[r7,10h]
|
|
08011B4A (T) str r5,[r7,4h]
|
|
08011B4C (T) mov r0,r7
|
|
08011B4E (T) bl 8005D5Ch
|
|
08011B52 (T) b 8011B8Ch
|
|
08011B54 (T) lsl r0,r0,8h
|
|
08011B56 (T) lsl r0,r0,14h
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 0F
|
|
08011B58 (T) ldr r0,[r3]
|
|
08011B5A (T) mov r1,0h
|
|
08011B5C (T) str r1,[r0,4h]
|
|
08011B5E (T) mov r0,10h
|
|
08011B60 (T) mov r2,r10
|
|
08011B62 (T) str r0,[r2]
|
|
08011B64 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 10
|
|
08011B66 (T) ldr r0,[r3]
|
|
08011B68 (T) ldr r0,[r0,4h]
|
|
08011B6A (T) cmp r0,63h
|
|
08011B6C (T) ble 8011B8Ch
|
|
08011B6E (T) mov r0,11h
|
|
08011B70 (T) mov r3,r10
|
|
08011B72 (T) str r0,[r3]
|
|
08011B74 (T) b 8011B8Ch
|
|
|
|
// --------------------------------------------------------
|
|
// Sequence 11
|
|
08011B76 (T) ldr r1,=30012D0h
|
|
08011B78 (T) ldr r0,=80B6F81h
|
|
08011B7A (T) str r0,[r1]
|
|
08011B7C (T) mov r0,1h
|
|
08011B7E (T) neg r0,r0
|
|
08011B80 (T) b 8011BE6h
|
|
|
|
08011B82 (T) lsl r0,r0,0h
|
|
08011B84 (T) asr r0,r2,0Bh
|
|
08011B86 (T) lsl r0,r0,0Ch
|
|
08011B88 (T) ldr r1,[r0,78h]
|
|
08011B8A (T) lsr r3,r1,20h
|
|
08011B8C (T) mov r5,r9
|
|
08011B8E (T) add r5,7Ch
|
|
08011B90 (T) mov r4,r9
|
|
08011B92 (T) add r4,88h
|
|
08011B94 (T) mov r6,5h
|
|
08011B96 (T) mov r0,r4
|
|
08011B98 (T) bl 8008BB0h
|
|
08011B9C (T) mov r0,r4
|
|
08011B9E (T) mov r1,0h
|
|
08011BA0 (T) bl 8008C54h
|
|
08011BA4 (T) add r4,40h
|
|
08011BA6 (T) sub r6,1h
|
|
08011BA8 (T) cmp r6,0h
|
|
08011BAA (T) bge 8011B96h
|
|
08011BAC (T) mov r4,r10
|
|
08011BAE (T) ldr r0,[r4]
|
|
08011BB0 (T) cmp r0,9h
|
|
08011BB2 (T) ble 8011BDCh
|
|
08011BB4 (T) mov r4,82h
|
|
08011BB6 (T) lsl r4,r4,2h
|
|
08011BB8 (T) add r4,r9
|
|
08011BBA (T) mov r0,r4
|
|
08011BBC (T) bl 8008BB0h
|
|
08011BC0 (T) mov r0,r4
|
|
08011BC2 (T) mov r1,0h
|
|
08011BC4 (T) bl 8008C54h
|
|
08011BC8 (T) mov r4,92h
|
|
08011BCA (T) lsl r4,r4,2h
|
|
08011BCC (T) add r4,r9
|
|
08011BCE (T) mov r0,r4
|
|
08011BD0 (T) bl 8008BB0h
|
|
08011BD4 (T) mov r0,r4
|
|
08011BD6 (T) mov r1,0h
|
|
08011BD8 (T) bl 8008C54h
|
|
08011BDC (T) ldr r0,=3000370h
|
|
08011BDE (T) ldr r1,[r0]
|
|
08011BE0 (T) ldrh r0,[r5]
|
|
08011BE2 (T) str r0,[r1,0Ch]
|
|
08011BE4 (T) mov r0,0h
|
|
08011BE6 (T) add sp,94h
|
|
08011BE8 (T) pop r3-r5
|
|
08011BEA (T) mov r8,r3
|
|
08011BEC (T) mov r9,r4
|
|
08011BEE (T) mov r10,r5
|
|
08011BF0 (T) pop r4-r7
|
|
08011BF2 (T) pop r1
|
|
08011BF4 (T) bx r1
|
|
|
|
//=============================================================================
|
|
// $8011499: (Commit)
|
|
08011498 (T) push r4,r14
|
|
0801149A (T) add sp,-4h
|
|
0801149C (T) ldr r0,=3000370h
|
|
0801149E (T) ldr r0,[r0]
|
|
080114A0 (T) ldr r4,[r0,14h]
|
|
080114A2 (T) ldr r0,=3002570h
|
|
080114A4 (T) ldr r1,[r0]
|
|
080114A6 (T) ldr r0,=3002A30h
|
|
080114A8 (T) ldr r2,[r0]
|
|
080114AA (T) lsl r0,r1,1h
|
|
080114AC (T) add r0,r0,r1
|
|
080114AE (T) lsl r0,r0,4h
|
|
080114B0 (T) add r1,r0,r2
|
|
080114B2 (T) ldrb r0,[r1,8h] // already-executed flag
|
|
080114B4 (T) cmp r0,0h
|
|
080114B6 (T) bne 80114D0h
|
|
|
|
// If first run:
|
|
080114B8 (T) bl 8000454h // check pad input
|
|
080114BC (T) bl 8005D50h // clears some flag
|
|
080114C0 (T) b 801156Eh // return
|
|
080114C2 (T) lsl r0,r0,0h
|
|
080114C4 (T) lsl r0,r6,0Dh
|
|
080114C6 (T) lsl r0,r0,0Ch
|
|
080114C8 (T) mov r5,70h
|
|
080114CA (T) lsl r0,r0,0Ch
|
|
080114CC (T) cmp r2,30h
|
|
080114CE (T) lsl r0,r0,0Ch
|
|
|
|
// If not the first run:
|
|
080114D0 (T) ldrb r0,[r1,0Bh]
|
|
080114D2 (T) cmp r0,1h
|
|
080114D4 (T) bne 80114DCh
|
|
|
|
// If last run:
|
|
080114D6 (T) bl 8000C28h // tear-down
|
|
080114DA (T) b 801156Eh // return
|
|
|
|
// If neither first nor last run:
|
|
080114DC (T) bl 80F47E4h // wait for vblank
|
|
|
|
// Set BG0 and BG1 scrolling offsets
|
|
080114E0 (T) ldr r1,=4000010h
|
|
080114E2 (T) ldr r0,=3001B20h
|
|
080114E4 (T) ldrh r0,[r0]
|
|
080114E6 (T) strh r0,[r1] // BG0OFSa
|
|
080114E8 (T) add r1,2h
|
|
080114EA (T) ldr r0,=30012DCh
|
|
080114EC (T) ldrh r0,[r0]
|
|
080114EE (T) strh r0,[r1] // BG0OFSb
|
|
080114F0 (T) add r1,2h
|
|
080114F2 (T) ldr r0,=3001D30h
|
|
080114F4 (T) ldrh r0,[r0]
|
|
080114F6 (T) strh r0,[r1] // BG1OFSa
|
|
080114F8 (T) add r1,2h
|
|
080114FA (T) ldr r0,=30012E8h
|
|
080114FC (T) ldrh r0,[r0]
|
|
080114FE (T) strh r0,[r1] // BG1OFSb
|
|
|
|
08011500 (T) mov r0,r4
|
|
08011502 (T) add r0,84h // r0 = 0x20280AC
|
|
08011504 (T) ldr r0,[r0] // sequence number
|
|
08011506 (T) cmp r0,1h
|
|
08011508 (T) blt 8011536h
|
|
0801150A (T) cmp r0,2h
|
|
0801150C (T) ble 8011522h
|
|
0801150E (T) cmp r0,0Ah
|
|
08011510 (T) bgt 8011536h
|
|
08011512 (T) cmp r0,9h
|
|
08011514 (T) blt 8011536h
|
|
|
|
// If on sequence 9-A:
|
|
// Copy DISPCNT
|
|
08011516 (T) mov r1,80h
|
|
08011518 (T) lsl r1,r1,13h // r1 = 0x4000000 (DISPCNT)
|
|
0801151A (T) mov r0,r4
|
|
0801151C (T) add r0,78h // r0 = 0x20280A0
|
|
0801151E (T) ldrh r0,[r0]
|
|
08011520 (T) strh r0,[r1]
|
|
|
|
// If on sequence 1-2 or 9-A:
|
|
// Copy BLDCNT and BLDY
|
|
08011522 (T) ldr r1,=4000050h // BLDCNT (special effects)
|
|
08011524 (T) mov r0,r4
|
|
08011526 (T) add r0,7Ah // r0 = 0x20280A2
|
|
08011528 (T) ldrh r0,[r0]
|
|
0801152A (T) strh r0,[r1]
|
|
0801152C (T) add r1,4h // BLDY (brightness amount)
|
|
0801152E (T) mov r0,r4
|
|
08011530 (T) add r0,7Ch // r0 = 0x20280A4
|
|
08011532 (T) ldrh r0,[r0]
|
|
08011534 (T) strh r0,[r1]
|
|
|
|
// For all sequences:
|
|
// Copy OAM data
|
|
08011536 (T) ldr r1,=40000D4h
|
|
08011538 (T) ldr r2,=30033A0h // OAM buffer
|
|
0801153A (T) str r2,[r1]
|
|
0801153C (T) mov r0,0E0h
|
|
0801153E (T) lsl r0,r0,13h // r0 = 0x7000000
|
|
08011540 (T) str r0,[r1,4h]
|
|
08011542 (T) ldr r0,=84000100h
|
|
08011544 (T) str r0,[r1,8h]
|
|
08011546 (T) ldr r0,[r1,8h]
|
|
|
|
// Blank out OAM data
|
|
08011548 (T) mov r0,0A0h
|
|
0801154A (T) str r0,[sp]
|
|
0801154C (T) mov r0,r13
|
|
0801154E (T) str r0,[r1]
|
|
08011550 (T) str r2,[r1,4h]
|
|
08011552 (T) ldr r0,=85000100h
|
|
08011554 (T) str r0,[r1,8h]
|
|
08011556 (T) ldr r0,[r1,8h]
|
|
|
|
// ?
|
|
08011558 (T) ldr r0,=3003390h
|
|
0801155A (T) mov r1,0h
|
|
0801155C (T) str r1,[r0]
|
|
0801155E (T) ldr r0,=3003394h
|
|
08011560 (T) str r1,[r0]
|
|
|
|
08011562 (T) bl 8005D6Ch // perform DMAs
|
|
08011566 (T) bl 800E5E4h // something with input
|
|
0801156A (T) bl 8000454h // something else with input
|
|
|
|
0801156E (T) mov r0,0h
|
|
08011570 (T) add sp,4h
|
|
08011572 (T) pop r4
|
|
08011574 (T) pop r1
|
|
08011576 (T) bx r1
|
|
|
|
//=============================================================================
|
|
// $8011495: (End)
|
|
08011494 (T) movs r0,0h
|
|
08011496 (T) bx r14
|