.section  ".init"
 .global   _start
 Â
 @.align
 @.arm
 .code  32
 Â
@---------------------------------------------------------------------------------
_start:
@---------------------------------------------------------------------------------
 b  rom_header_end
 .fill  156,1,0         Â@ Nintendo Logo Character Data (8000004h)
 .fill  16,1,0         Â@ Game Title
 .byte  0x30,0x31        @ Maker Code (80000B0h)
 .byte  0x96         Â@ Fixed Value (80000B2h)
 .byte  0x00         Â@ Main Unit Code (80000B3h)
 .byte  0x00         Â@ Device Type (80000B4h)
 .fill  7,1,0         Â@ unused
 .byte  0x00         Â@ Software Version No (80000BCh)
 .byte  0xf0         Â@ Complement Check (80000BDh)
 .byte  0x00,0x00          @ Checksum (80000BEh)
@---------------------------------------------------------------------------------
rom_header_end:
@---------------------------------------------------------------------------------
#define ARM9_ENTRY_ORIGINAL Â Â Â Â Â Â0x02000800
#define  ARM7_ENTRY_ORIGINAL      Â0x02380000
@  bl  DisableInterrupts
 Â
 Â
 @ Boot ARM9 with: *(volatile unsigned int *)0x027FFE24 = 0x02004000;
 ldr  r2, =ARM9_ENTRY_ORIGINAL
 ldr  r4, =ARM7_ENTRY_ORIGINAL
 ldr  r3, =0x027FFE24
 str  r2, [r3]     @ redirect ARM9
 Â
 ldr  r0, =0x400000
delayLoop:
 nop
 subs  r0, r0, #1
 bgt  delayLoop
 Â
 Â
 @ New Courses on WFC
 ldr  r0, =0x02153A4C
 adr  r1, CourseList
 mov  r2, #12
listLoop:
 ldrb  r3, [r1],#1
 str  r3, [r0],#4
 subs  r2, r2, #1
 bgt  listLoop
 Â
 Â
  Âmov  pc, r4     @ redirect ARM7
 Â
infin:
 b  infin
 Â
 Â.pool
Â
CourseList:
 .byte 0x0C, 0x0F, 0x11, 0x13, 0x17, 0x18, 0x1A, 0x20, 0x21, 0x23, 0x25, 0x26
 .align 2  Â
 Â
//////////////////////////////////////////////////////////////////////////////
// DisableInterrupts
//////////////////////////////////////////////////////////////////////////////
DisableInterrupts:
 // disable IRQ/FIQ interrupts
 mrs   Âr0, CPSR
 orr   Âr0, r0, #0xC0
 msr   ÂCPSR_fsxc, r0
 mov   Âpc, lr
 .align
 .pool
 .end